[xml/sgml-commit] [xmlsec1] 03/32: Imported Upstream version 1.2.9

Rene Engelhard rene at moszumanska.debian.org
Sun Jun 25 17:46:21 UTC 2017


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

rene pushed a commit to branch experimental
in repository xmlsec1.

commit 0dfc77c1139a519ff03239b1cbd7511d08279ae5
Author: Rene Engelhard <rene at rene-engelhard.de>
Date:   Fri Jun 23 12:54:52 2017 +0200

    Imported Upstream version 1.2.9
---
 ChangeLog                                          |  193 ++-
 Makefile.in                                        |   85 +-
 aclocal.m4                                         |  219 ++-
 apps/Makefile.in                                   |   49 +-
 apps/xmlsec.c                                      |    2 +-
 config.h.in                                        |    6 +
 configure                                          | 1416 +++++++++++++-------
 configure.in                                       |  249 ++--
 docs/Makefile.in                                   |   58 +-
 docs/api/Makefile.in                               |   32 +-
 docs/api/index.html                                |   10 +-
 docs/api/xmlsec-app.html                           |   10 +-
 docs/api/xmlsec-base64.html                        |   10 +-
 docs/api/xmlsec-bn.html                            |   10 +-
 docs/api/xmlsec-buffer.html                        |   10 +-
 docs/api/xmlsec-custom-keys-manager.html           |   10 +-
 docs/api/xmlsec-decrypt-with-keys-mngr.html        |   10 +-
 docs/api/xmlsec-decrypt-with-signle-key.html       |   10 +-
 docs/api/xmlsec-dl.html                            |   10 +-
 docs/api/xmlsec-encrypt-dynamic-template.html      |   10 +-
 docs/api/xmlsec-encrypt-template-file.html         |   10 +-
 docs/api/xmlsec-encrypt-with-session-key.html      |   10 +-
 docs/api/xmlsec-encryption-klasses.html            |   10 +-
 docs/api/xmlsec-errors.html                        |   10 +-
 .../xmlsec-examples-sign-dynamimc-template.html    |   10 +-
 docs/api/xmlsec-examples-sign-template-file.html   |   10 +-
 docs/api/xmlsec-examples-sign-x509.html            |   10 +-
 docs/api/xmlsec-examples.html                      |   10 +-
 docs/api/xmlsec-gnutls-app.html                    |   10 +-
 docs/api/xmlsec-gnutls-crypto.html                 |   10 +-
 docs/api/xmlsec-gnutls-ref.html                    |   10 +-
 docs/api/xmlsec-index.html                         |   93 +-
 docs/api/xmlsec-index.sgml                         |   83 ++
 docs/api/xmlsec-io.html                            |   10 +-
 docs/api/xmlsec-keyinfo.html                       |   10 +-
 docs/api/xmlsec-keys.html                          |   10 +-
 docs/api/xmlsec-keysdata.html                      |   10 +-
 docs/api/xmlsec-keysmngr.html                      |   10 +-
 docs/api/xmlsec-list.html                          |   10 +-
 docs/api/xmlsec-membuf.html                        |   10 +-
 docs/api/xmlsec-mscrypto-app.html                  |   12 +-
 docs/api/xmlsec-mscrypto-certkeys.html             |   10 +-
 docs/api/xmlsec-mscrypto-crypto.html               |   10 +-
 docs/api/xmlsec-mscrypto-keysstore.html            |   10 +-
 docs/api/xmlsec-mscrypto-ref.html                  |   10 +-
 docs/api/xmlsec-mscrypto-x509.html                 |   10 +-
 docs/api/xmlsec-nodeset.html                       |   10 +-
 docs/api/xmlsec-notes-compiling-others.html        |   10 +-
 docs/api/xmlsec-notes-compiling-unix.html          |   10 +-
 docs/api/xmlsec-notes-compiling-windows.html       |   10 +-
 docs/api/xmlsec-notes-compiling.html               |   10 +-
 docs/api/xmlsec-notes-contexts.html                |   10 +-
 docs/api/xmlsec-notes-custom-keys-store.html       |   10 +-
 docs/api/xmlsec-notes-decrypt.html                 |   10 +-
 .../xmlsec-notes-dynamic-encryption-templates.html |   10 +-
 .../xmlsec-notes-dynamic-signature-templates.html  |   10 +-
 docs/api/xmlsec-notes-encrypt.html                 |   10 +-
 docs/api/xmlsec-notes-include-files.html           |   10 +-
 docs/api/xmlsec-notes-init-shutdown.html           |   10 +-
 docs/api/xmlsec-notes-keys-manager-sign-enc.html   |   10 +-
 .../api/xmlsec-notes-keys-mngr-verify-decrypt.html |   10 +-
 docs/api/xmlsec-notes-keys.html                    |   10 +-
 docs/api/xmlsec-notes-keysmngr.html                |   10 +-
 docs/api/xmlsec-notes-new-crypto-functions.html    |   10 +-
 docs/api/xmlsec-notes-new-crypto-key-stores.html   |   10 +-
 docs/api/xmlsec-notes-new-crypto-keys.html         |   10 +-
 docs/api/xmlsec-notes-new-crypto-klasses.html      |   10 +-
 .../xmlsec-notes-new-crypto-sharing-results.html   |   10 +-
 .../xmlsec-notes-new-crypto-simple-keys-mngr.html  |   10 +-
 docs/api/xmlsec-notes-new-crypto-skeleton.html     |   10 +-
 docs/api/xmlsec-notes-new-crypto-transforms.html   |   10 +-
 docs/api/xmlsec-notes-new-crypto.html              |   10 +-
 docs/api/xmlsec-notes-overview.html                |   10 +-
 docs/api/xmlsec-notes-sign-encrypt.html            |   10 +-
 docs/api/xmlsec-notes-sign-x509.html               |   10 +-
 docs/api/xmlsec-notes-sign.html                    |   10 +-
 docs/api/xmlsec-notes-simple-keys-store.html       |   10 +-
 docs/api/xmlsec-notes-structure.html               |   10 +-
 docs/api/xmlsec-notes-templates.html               |   10 +-
 docs/api/xmlsec-notes-transforms.html              |   10 +-
 docs/api/xmlsec-notes-verify-decrypt.html          |   10 +-
 docs/api/xmlsec-notes-verify-x509.html             |   10 +-
 docs/api/xmlsec-notes-verify.html                  |   10 +-
 docs/api/xmlsec-notes-x509.html                    |   10 +-
 docs/api/xmlsec-notes.html                         |   10 +-
 docs/api/xmlsec-nss-app.html                       |   10 +-
 docs/api/xmlsec-nss-bignum.html                    |   10 +-
 docs/api/xmlsec-nss-crypto.html                    |   10 +-
 docs/api/xmlsec-nss-keysstore.html                 |   10 +-
 docs/api/xmlsec-nss-pkikeys.html                   |   10 +-
 docs/api/xmlsec-nss-ref.html                       |   10 +-
 docs/api/xmlsec-nss-x509.html                      |   10 +-
 docs/api/xmlsec-openssl-app.html                   |   10 +-
 docs/api/xmlsec-openssl-bn.html                    |   10 +-
 docs/api/xmlsec-openssl-crypto.html                |   10 +-
 docs/api/xmlsec-openssl-evp.html                   |   10 +-
 docs/api/xmlsec-openssl-ref.html                   |   10 +-
 docs/api/xmlsec-openssl-x509.html                  |   10 +-
 docs/api/xmlsec-parser.html                        |   10 +-
 docs/api/xmlsec-ref.html                           |   10 +-
 docs/api/xmlsec-reference.html                     |   10 +-
 docs/api/xmlsec-signature-klasses.html             |   10 +-
 docs/api/xmlsec-templates.html                     |   12 +-
 docs/api/xmlsec-transforms.html                    |   10 +-
 docs/api/xmlsec-verify-with-key.html               |   10 +-
 docs/api/xmlsec-verify-with-keys-mngr.html         |   10 +-
 docs/api/xmlsec-verify-with-restrictions.html      |   10 +-
 docs/api/xmlsec-verify-with-x509.html              |   10 +-
 docs/api/xmlsec-version.html                       |   16 +-
 docs/api/xmlsec-x509.html                          |   10 +-
 docs/api/xmlsec-xmldsig.html                       |   10 +-
 docs/api/xmlsec-xmlenc.html                        |   10 +-
 docs/api/xmlsec-xmlsec.html                        |   10 +-
 docs/api/xmlsec-xmltree.html                       |   10 +-
 docs/authors.html                                  |   10 +-
 docs/bugs.html                                     |   13 +-
 docs/c14n.html                                     |   10 +-
 docs/documentation.html                            |   10 +-
 docs/download.html                                 |   32 +-
 docs/faq.html                                      |  128 +-
 docs/index.html                                    |  269 +---
 docs/news.html                                     |   44 +-
 docs/related.html                                  |   14 +-
 docs/xmldsig-verifier.html                         |   18 +-
 docs/xmldsig.html                                  |  936 +++++++++----
 docs/xmlenc.html                                   |  800 +++++------
 docs/xmlsec-man.html                               |   14 +-
 include/Makefile.in                                |   50 +-
 include/xmlsec/Makefile.in                         |   64 +-
 include/xmlsec/app.h                               |  123 +-
 include/xmlsec/gnutls/Makefile.in                  |   48 +-
 include/xmlsec/gnutls/crypto.h                     |   23 +-
 include/xmlsec/gnutls/symbols.h                    |    4 +-
 include/xmlsec/keysmngr.h                          |    1 +
 include/xmlsec/mscrypto/app.h                      |   70 +-
 include/xmlsec/mscrypto/symbols.h                  |    4 +-
 include/xmlsec/mscrypto/x509.h                     |   18 +
 include/xmlsec/nss/Makefile.in                     |   48 +-
 include/xmlsec/nss/crypto.h                        |   37 +-
 include/xmlsec/nss/symbols.h                       |    4 +-
 include/xmlsec/openssl/Makefile.in                 |   48 +-
 include/xmlsec/openssl/crypto.h                    |  240 +++-
 include/xmlsec/openssl/symbols.h                   |   19 +-
 include/xmlsec/private.h                           |   67 +-
 include/xmlsec/private/Makefile.in                 |   48 +-
 include/xmlsec/skeleton/symbols.h                  |   17 +-
 include/xmlsec/strings.h                           |   58 +-
 include/xmlsec/templates.h                         |   13 +-
 include/xmlsec/version.h                           |    6 +-
 man/Makefile.in                                    |   26 +-
 man/xmlsec1-config.1                               |    2 +-
 man/xmlsec1.1                                      |    2 +-
 scripts/push_release.sh                            |   18 +-
 src/Makefile.in                                    |   92 +-
 src/app.c                                          |  373 +++++-
 src/bn.c                                           |  341 +++--
 src/dl.c                                           |  149 +-
 src/gnutls/Makefile.in                             |   64 +-
 src/gnutls/crypto.c                                |    2 +-
 src/keysmngr.c                                     |   19 +
 src/mscrypto/app.c                                 |  209 ++-
 src/mscrypto/certkeys.c                            |  618 ++++++---
 src/mscrypto/crypto.c                              |    8 +-
 src/mscrypto/x509.c                                |  164 ++-
 src/mscrypto/x509vfy.c                             |  465 +++++--
 src/nss/Makefile.am                                |    2 +-
 src/nss/Makefile.in                                |   75 +-
 src/nss/app.c                                      |   10 +-
 src/nss/crypto.c                                   |   56 +-
 src/nss/digests.c                                  |   10 +-
 src/nss/hmac.c                                     |   10 +-
 src/nss/keytrans.c                                 |  744 ++++++++++
 src/nss/kt_rsa.c                                   |  363 -----
 src/nss/pkikeys.c                                  |   69 +-
 src/nss/signatures.c                               |   16 +-
 src/nss/x509.c                                     |   30 +-
 src/nss/x509vfy.c                                  |   13 +-
 src/openssl/Makefile.in                            |   68 +-
 src/openssl/app.c                                  |   34 +-
 src/openssl/ciphers.c                              |    6 -
 src/openssl/crypto.c                               |   90 +-
 src/openssl/digests.c                              |  314 ++++-
 src/openssl/evp.c                                  |   18 +
 src/openssl/hmac.c                                 |  336 ++++-
 src/openssl/signatures.c                           |  424 +++++-
 src/openssl/x509vfy.c                              |  146 +-
 src/skeleton/crypto.c                              |    2 +-
 src/strings.c                                      |   58 +-
 src/templates.c                                    |  208 ++-
 src/xmltree.c                                      |   79 +-
 .../xpath2filterOmitComments.tmpl                  |   49 -
 .../xpath2filterOmitComments.xml                   |   49 -
 .../xpath2filterWithComments.tmpl                  |   50 -
 .../xpath2filterWithComments.xml                   |   50 -
 .../enveloping-dsa-x509chain.xml                   |  122 +-
 .../aleksey-xmldsig-01/enveloping-expired-cert.xml |  114 +-
 ...md5-64.tmpl => enveloping-md5-hmac-md5-64.tmpl} |    2 +-
 ...c-md5-64.xml => enveloping-md5-hmac-md5-64.xml} |    6 +-
 ...-hmac-md5.tmpl => enveloping-md5-hmac-md5.tmpl} |    2 +-
 ...ng-hmac-md5.xml => enveloping-md5-hmac-md5.xml} |    6 +-
 ...g-hmac-md5.tmpl => enveloping-md5-rsa-md5.tmpl} |    7 +-
 .../aleksey-xmldsig-01/enveloping-md5-rsa-md5.xml  |   85 ++
 ...=> enveloping-ripemd160-hmac-ripemd160-64.tmpl} |    2 +-
 ... => enveloping-ripemd160-hmac-ripemd160-64.xml} |    6 +-
 ...pl => enveloping-ripemd160-hmac-ripemd160.tmpl} |    2 +-
 ...xml => enveloping-ripemd160-hmac-ripemd160.xml} |    6 +-
 ...mpl => enveloping-ripemd160-rsa-ripemd160.tmpl} |    7 +-
 .../enveloping-ripemd160-rsa-ripemd160.xml         |   85 ++
 .../enveloping-rsa-x509chain.xml                   |  114 +-
 ...5-64.tmpl => enveloping-sha1-hmac-sha1-64.tmpl} |    4 +-
 ...md5-64.xml => enveloping-sha1-hmac-sha1-64.xml} |    4 +-
 ...mac-md5.tmpl => enveloping-sha1-hmac-sha1.tmpl} |    4 +-
 ...-hmac-md5.xml => enveloping-sha1-hmac-sha1.xml} |    4 +-
 ...hmac-md5.tmpl => enveloping-sha1-rsa-sha1.tmpl} |    7 +-
 .../enveloping-sha1-rsa-sha1.xml                   |   85 ++
 ....tmpl => enveloping-sha224-hmac-sha224-64.tmpl} |    4 +-
 ...64.xml => enveloping-sha224-hmac-sha224-64.xml} |    8 +-
 ...md5.tmpl => enveloping-sha224-hmac-sha224.tmpl} |    4 +-
 ...md160.xml => enveloping-sha224-hmac-sha224.xml} |    8 +-
 ...-md5.tmpl => enveloping-sha224-rsa-sha224.tmpl} |    7 +-
 .../enveloping-sha224-rsa-sha224.xml               |   85 ++
 ....tmpl => enveloping-sha256-hmac-sha256-64.tmpl} |    4 +-
 ...64.xml => enveloping-sha256-hmac-sha256-64.xml} |    8 +-
 ...md5.tmpl => enveloping-sha256-hmac-sha256.tmpl} |    4 +-
 ...md160.xml => enveloping-sha256-hmac-sha256.xml} |    8 +-
 ...-md5.tmpl => enveloping-sha256-rsa-sha256.tmpl} |    7 +-
 .../enveloping-sha256-rsa-sha256.xml               |   85 ++
 ....tmpl => enveloping-sha384-hmac-sha384-64.tmpl} |    4 +-
 ...64.xml => enveloping-sha384-hmac-sha384-64.xml} |    8 +-
 ...md5.tmpl => enveloping-sha384-hmac-sha384.tmpl} |    4 +-
 ...60-64.xml => enveloping-sha384-hmac-sha384.xml} |   10 +-
 ...-md5.tmpl => enveloping-sha384-rsa-sha384.tmpl} |    7 +-
 .../enveloping-sha384-rsa-sha384.xml               |  103 ++
 ....tmpl => enveloping-sha512-hmac-sha512-64.tmpl} |    4 +-
 ...64.xml => enveloping-sha512-hmac-sha512-64.xml} |    9 +-
 ...md5.tmpl => enveloping-sha512-hmac-sha512.tmpl} |    4 +-
 ...60-64.xml => enveloping-sha512-hmac-sha512.xml} |   12 +-
 ...-md5.tmpl => enveloping-sha512-rsa-sha512.tmpl} |    7 +-
 .../enveloping-sha512-rsa-sha512.xml               |  104 ++
 tests/aleksey-xmldsig-01/x509data-sn-test.tmpl     |   27 +
 tests/aleksey-xmldsig-01/x509data-sn-test.xml      |   40 +
 tests/aleksey-xmldsig-01/x509data-test.xml         |  136 +-
 tests/keys/README                                  |   86 +-
 tests/keys/ca2cert.der                             |  Bin 1051 -> 1049 bytes
 tests/keys/ca2cert.pem                             |   86 +-
 tests/keys/ca2key.p12                              |  Bin 1706 -> 0 bytes
 tests/keys/ca2key.p8-der                           |  Bin 389 -> 0 bytes
 tests/keys/ca2key.p8-pem                           |   11 -
 tests/keys/ca2key.pem                              |   14 +-
 tests/keys/cacert.der                              |  Bin 1088 -> 1105 bytes
 tests/keys/cacert.pem                              |   93 +-
 tests/keys/cakey.pem                               |   28 +-
 tests/keys/demoCA/cacert.pem                       |   72 +
 tests/keys/demoCA/careq.pem                        |   14 +
 tests/keys/demoCA/index.txt                        |   11 +-
 tests/keys/demoCA/private/cakey.pem                |   28 +-
 tests/keys/demoCA/serial                           |    2 +-
 tests/keys/dsacert.der                             |  Bin 1325 -> 1144 bytes
 tests/keys/dsacert.pem                             |  104 +-
 tests/keys/dsakey.der                              |  Bin 446 -> 250 bytes
 tests/keys/dsakey.p12                              |  Bin 3226 -> 4047 bytes
 tests/keys/dsakey.p8-der                           |  Bin 373 -> 243 bytes
 tests/keys/dsakey.p8-pem                           |   14 +-
 tests/keys/dsakey.pem                              |   22 +-
 tests/keys/dsaparam.txt                            |   21 -
 tests/keys/expired.key                             |   12 -
 tests/keys/expired.pem                             |   23 -
 tests/keys/expiredcert.der                         |  Bin 0 -> 991 bytes
 tests/keys/expiredcert.pem                         |   61 +
 tests/keys/expiredkey.der                          |  Bin 0 -> 317 bytes
 tests/keys/expiredkey.p12                          |  Bin 0 -> 4056 bytes
 tests/keys/expiredkey.pem                          |    9 +
 tests/keys/expiredreq.pem                          |   11 +
 tests/keys/largersacert.der                        |  Bin 0 -> 1437 bytes
 tests/keys/largersacert.pem                        |  100 ++
 tests/keys/largersakey.der                         |  Bin 0 -> 2348 bytes
 tests/keys/largersakey.p12                         |  Bin 0 -> 6532 bytes
 tests/keys/largersakey.p8-der                      |  Bin 0 -> 2413 bytes
 tests/keys/largersakey.p8-pem                      |   53 +
 tests/keys/largersakey.pem                         |   51 +
 tests/keys/largersareq.pem                         |   30 +
 tests/keys/openssl.cnf                             |  316 +++++
 tests/keys/rsacert.der                             |  Bin 977 -> 995 bytes
 tests/keys/rsacert.pem                             |   80 +-
 tests/keys/rsakey.der                              |  Bin 318 -> 320 bytes
 tests/keys/rsakey.p12                              |  Bin 2890 -> 4042 bytes
 tests/keys/rsakey.p8-der                           |  Bin 389 -> 389 bytes
 tests/keys/rsakey.p8-pem                           |   18 +-
 tests/keys/rsakey.pem                              |   14 +-
 tests/merlin-xmldsig-twenty-three/signature.tmpl   |   60 +-
 tests/testDSig.sh                                  |  228 +++-
 tests/testEnc.sh                                   |   17 +-
 win32/.cvsignore                                   |    2 +
 win32/Makefile.msvc                                |   33 +-
 win32/configure.js                                 |   70 +-
 win32/mycfg.bat                                    |    6 +-
 xmlsec1-config                                     |   12 +-
 xmlsec1-nss.pc                                     |    6 +-
 xmlsec1-openssl.pc                                 |    6 +-
 xmlsec1.pc                                         |    6 +-
 xmlsec1.spec                                       |   16 +-
 xmlsec1Conf.sh                                     |    4 +-
 302 files changed, 11183 insertions(+), 4806 deletions(-)

diff --git a/ChangeLog b/ChangeLog
index 79b346b..19ddbf0 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,195 @@
+2005-07-12  Aleksey Sanin  <aleksey at aleksey.com>
+
+	* configure.in docs/download.html docs/index.html docs/news.html:
+	preparation for new 1.2.9 release 
+
+2005-07-12  Aleksey Sanin  <aleksey at aleksey.com>
+
+	* src/xmltree.c: fixing a problem with namespaces in the
+	nodes created by "template" functions
+
+2005-07-10  Aleksey Sanin  <aleksey at aleksey.com>
+
+	* src/openssl/evp.c: added hack from Erwann ABALEA: 
+	OpenSSL ENGINE keys are always private since we can't query
+	engine and do real check
+
+2005-07-10  Aleksey Sanin  <aleksey at aleksey.com>
+
+	* docs/* include/* src/* tests/*: added support for 
+	RSA-MD5/RIPEMD160/SHA224/SHA256/SHA384/SHA512 for OpenSSL 0.9.8
+
+2005-07-10  Aleksey Sanin  <aleksey at aleksey.com>
+
+	* configure.in docs/ include/ src/ tests/: implemented
+	SHA224/256/384/512, HMAC-SHA224/256/384/512, MD5 for OpenSSL 0.9.8
+
+2005-07-10  Aleksey Sanin  <aleksey at aleksey.com>
+
+	* configure.in docs/xmldsig.html docs/xmlenc.html
+	include/xmlsec/app.h include/xmlsec/private.h include/xmlsec/strings.h
+	include/xmlsec/openssl/crypto.h include/xmlsec/openssl/symbols.h
+	src/app.c src/dl.c src/strings.c: preparations for SHA224/256/384/512
+	and friends
+
+2005-07-09  Aleksey Sanin  <aleksey at aleksey.com>
+
+	* configure.in tests/aleksey-xmldsig-01/* tests/keys/* 
+	tests/merlin-xmldsig-twenty-three/signature.tmpl 
+	tests/testDSig.sh: updating test certificates for picky
+	OpenSSL 0.9.8
+	
+
+2005-07-08  Aleksey Sanin  <aleksey at aleksey.com>
+	* configure.in src/openssl/x509vfy.c: initial support 
+	for OpenSSL 0.9.8
+
+2005-05-12  Aleksey Sanin  <aleksey at aleksey.com>
+	
+	* src/openssl/app.c: fixed "disable-x509" build option 
+	(patch from Bernd Becker)
+
+2005-05-11  Aleksey Sanin  <aleksey at aleksey.com>
+	
+	* src/openssl/signatures.c: fixed "disable-dsa" build option 
+	(patch from Bernd Becker)
+
+Wed  6 Apr 2005 00:18:21 CEST Igor Zlatkovic <igor at zlatkovic.com>
+
+	* .cvsignore: added Eclipse project files
+
+2005-03-31  Aleksey Sanin  <aleksey at aleksey.com>
+
+	* src/xmltree.c: fixing warning from Solaris (bug #172201)
+
+2005-03-30  Aleksey Sanin  <aleksey at aleksey.com>
+
+	* configure.in docs/download.html docs/index.html docs/news.html
+	include/xmlsec/version.h: preparing new release 1.2.8
+
+Tue 22 Mar 2005 20:10:19 CET Igor Zlatkovic <igor at zlatkovic.com>
+
+	* apps/xmlsec.c: changed the type of the --depth parameter to
+	number.
+
+2005-03-06  Aleksey Sanin  <aleksey at aleksey.com>
+
+	* include/xmlsec/nss/crypto.h src/nss/Makefile.am src/nss/crypto.c 
+	src/nss/keytrans.c src/nss/kt_rsa.c: better rsa pkcs transform
+	using nss wrap/unwrap code (based on the OO.org patch)
+
+2005-03-06  Aleksey Sanin  <aleksey at aleksey.com>
+	
+	* include/xmlsec/nss/crypto.h src/nss/app.c 
+	src/nss/crypto.c src/nss/x509.c: fixed nss initialization
+	problem
+
+2005-03-05  Aleksey Sanin  <aleksey at aleksey.com>
+
+	* src/nss/pkikeys.c: check that input public and private 
+	keys have the same type (based on the OO.org patch) 
+
+2005-03-05  Aleksey Sanin  <aleksey at aleksey.com>
+
+	* src/nss/digests.c src/nss/hmac.c src/nss/pkikeys.c 
+	  src/nss/signatures.c src/nss/x509.c src/nss/x509vfy.c: 
+	  print more detailed error message (based on the OO.org patch)
+
+2005-03-04  Aleksey Sanin  <aleksey at aleksey.com>
+
+	* src/mscrypto/x509vfy.c: fixed cert search (based on the OO.org patch)
+
+2005-03-01  Aleksey Sanin  <aleksey at aleksey.com>
+
+	* src/mscrypto/app.c: added stubs for adding keys to mscrypto
+  	keys manager from ms key handle
+
+2005-02-28  Aleksey Sanin  <aleksey at aleksey.com>
+
+	* src/mscrypto/certkeys.c: WinNT 4.0 support (based on the OO.org patch)
+
+2005-02-28  Aleksey Sanin  <aleksey at aleksey.com>
+
+	* src/mscrypto/certkeys.c: preparation for WinNT 4.0 support
+
+2005-02-28  Aleksey Sanin  <aleksey at aleksey.com>
+
+	* src/mscrypto/x509.c: enable private key search for
+	a given certificate (based on the OO.org patch)
+
+2005-02-27  Aleksey Sanin  <aleksey at aleksey.com>
+
+	* src/mscrypto/certkeys.c: use default context when 
+	getting public key from a cert (based on the OO.org patch)
+	* src/mscrypto/x509vfy.c: search both trusted and untrusted 
+	cert stores when cert with given parameters is needed or
+	when certs chain is constructed (based on the OO.org patch)
+
+2005-02-27  Aleksey Sanin  <aleksey at aleksey.com>
+
+	* include/xmlsec/mscrypto/app.h include/xmlsec/mscrypto/x509.h
+	src/mscrypto/app.c src/mscrypto/x509vfy.c:
+	added function to add custom MS cert stores
+	to the xmlsec-mscrypto default keys manager
+	(based on the OO.org patch).
+
+2005-02-22  Aleksey Sanin  <aleksey at aleksey.com>
+
+	* docs/*: updated docs
+
+2005-02-22  Aleksey Sanin  <aleksey at aleksey.com>
+
+	* docs/index.html docs/news.html include/xmlsec/templates.h
+	src/templates.c: added functions to create <X509Data/> node 
+	children in the signature template
+
+2005-02-22  Aleksey Sanin  <aleksey at aleksey.com>
+	
+	* src/bn.c src/mscrypto/crypto.c src/mscrypto/x509.c 
+        src/mscrypto/x509vfy.c tests/testDSig.sh 
+	tests/aleksey-xmldsig-01/x509data-sn-test.tmpl
+	tests/aleksey-xmldsig-01/x509data-sn-test.xml
+	tests/keys/README tests/keys/*: support for 
+	negative serial numbers, mscrypto cleanup
+
+2005-02-21  Aleksey Sanin  <aleksey at aleksey.com>
+
+	* docs/* docs/api/*  man/*: updated docs
+
+2005-02-21  Aleksey Sanin  <aleksey at aleksey.com>
+
+	* configure.in, docs/download.html, docs/index.html, docs/news.html,
+	include/xmlsec/version.h: preparing new release 1.2.7
+
+2005-01-26  Aleksey Sanin  <aleksey at aleksey.com>
+
+	* src/bn.c: fixed xmlSecBnFromString function (patch from Michael Mi)
+
+2004-11-08  Aleksey Sanin  <aleksey at aleksey.com>
+
+	* include/xmlsec/keysmngr.h src/keysmngr.c: added 
+	xmlSecSimpleKeysStoreGetKeys() function
+
+2004-11-07  Aleksey Sanin  <aleksey at aleksey.com>
+	
+	* src/xmltree.c: fixed xmlSecGenerateID
+
+2004-10-27  Aleksey Sanin  <aleksey at aleksey.com>
+
+	* src/dl.c: set dl memory functions before initialization (from 
+	Daniel Vogelheim patch)
+
+2004-10-14  Aleksey Sanin  <aleksey at aleksey.com>
+
+	* src/openssl/x509vfy.c: fixed bug #155329 (parsing quoted values
+    	in the certificate subject)
+
+2004-09-18  Aleksey Sanin  <aleksey at aleksey.com>
+	* config.h.in configure.in inlude/xmlsec/private.h src/xmltree.c:
+	use xmlParseInNodeContext function to parse encrypted text in 
+	xmlSecReplaceNodeBuffer, this bumps libxml2 requirements to 2.6.12 
+	(bug #142358)
+
 2004-08-25  Aleksey Sanin  <aleksey at aleksey.com>
 
 	* configure.in docs/download.html docs/index.html 
@@ -1294,4 +1486,3 @@ Tue 26 Mar 2002 06:30:10 PM PST Aleksey Sanin <aleksey at aleksey.com>
 	  adter the first change because both are based on Transforms)
         *: Added XSLT support (based on libxslt from Daniel Veillard)
     
-      
diff --git a/Makefile.in b/Makefile.in
index 5cedce8..5415115 100644
--- a/Makefile.in
+++ b/Makefile.in
@@ -1,4 +1,4 @@
-# Makefile.in generated by automake 1.8.3 from Makefile.am.
+# Makefile.in generated by automake 1.9.2 from Makefile.am.
 # @configure_input@
 
 # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
@@ -35,6 +35,7 @@ POST_INSTALL = :
 NORMAL_UNINSTALL = :
 PRE_UNINSTALL = :
 POST_UNINSTALL = :
+build_triplet = @build@
 host_triplet = @host@
 DIST_COMMON = README $(am__configure_deps) $(srcdir)/Makefile.am \
 	$(srcdir)/Makefile.in $(srcdir)/config.h.in \
@@ -55,7 +56,8 @@ mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs
 CONFIG_HEADER = config.h
 CONFIG_CLEAN_FILES = xmlsec1Conf.sh xmlsec1-config xmlsec1-openssl.pc \
 	xmlsec1-gnutls.pc xmlsec1-nss.pc xmlsec1.spec xmlsec1.pc
-am__installdirs = "$(DESTDIR)$(bindir)" "$(DESTDIR)$(confexecdir)" "$(DESTDIR)$(pkgconfigdir)"
+am__installdirs = "$(DESTDIR)$(bindir)" "$(DESTDIR)$(confexecdir)" \
+	"$(DESTDIR)$(pkgconfigdir)"
 binSCRIPT_INSTALL = $(INSTALL_SCRIPT)
 SCRIPTS = $(bin_SCRIPTS)
 SOURCES =
@@ -66,6 +68,12 @@ RECURSIVE_TARGETS = all-recursive check-recursive dvi-recursive \
 	install-recursive installcheck-recursive installdirs-recursive \
 	pdf-recursive ps-recursive uninstall-info-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 = `echo $$p | sed -e 's|^.*/||'`;
 confexecDATA_INSTALL = $(INSTALL_DATA)
 pkgconfigDATA_INSTALL = $(INSTALL_DATA)
 DATA = $(confexec_DATA) $(pkgconfig_DATA)
@@ -131,8 +139,6 @@ LIBADD_DL = @LIBADD_DL@
 LIBOBJS = @LIBOBJS@
 LIBS = @LIBS@
 LIBTOOL = @LIBTOOL@
-LIBXML262_CFLAGS = @LIBXML262_CFLAGS@
-LIBXML262_LIBS = @LIBXML262_LIBS@
 LIBXML_CFLAGS = @LIBXML_CFLAGS@
 LIBXML_CONFIG = @LIBXML_CONFIG@
 LIBXML_LIBS = @LIBXML_LIBS@
@@ -156,8 +162,6 @@ NSS_CRYPTO_LIB = @NSS_CRYPTO_LIB@
 NSS_LIBS = @NSS_LIBS@
 NSS_MIN_VERSION = @NSS_MIN_VERSION@
 OBJEXT = @OBJEXT@
-OPENSSL097_CFLAGS = @OPENSSL097_CFLAGS@
-OPENSSL097_LIBS = @OPENSSL097_LIBS@
 OPENSSL_CFLAGS = @OPENSSL_CFLAGS@
 OPENSSL_CRYPTO_LIB = @OPENSSL_CRYPTO_LIB@
 OPENSSL_LIBS = @OPENSSL_LIBS@
@@ -220,6 +224,9 @@ XMLSEC_NO_HMAC = @XMLSEC_NO_HMAC@
 XMLSEC_NO_HMAC_FALSE = @XMLSEC_NO_HMAC_FALSE@
 XMLSEC_NO_HMAC_TRUE = @XMLSEC_NO_HMAC_TRUE@
 XMLSEC_NO_LIBXSLT = @XMLSEC_NO_LIBXSLT@
+XMLSEC_NO_MD5 = @XMLSEC_NO_MD5@
+XMLSEC_NO_MD5_FALSE = @XMLSEC_NO_MD5_FALSE@
+XMLSEC_NO_MD5_TRUE = @XMLSEC_NO_MD5_TRUE@
 XMLSEC_NO_NSS = @XMLSEC_NO_NSS@
 XMLSEC_NO_NSS_FALSE = @XMLSEC_NO_NSS_FALSE@
 XMLSEC_NO_NSS_TRUE = @XMLSEC_NO_NSS_TRUE@
@@ -235,6 +242,18 @@ XMLSEC_NO_RSA_TRUE = @XMLSEC_NO_RSA_TRUE@
 XMLSEC_NO_SHA1 = @XMLSEC_NO_SHA1@
 XMLSEC_NO_SHA1_FALSE = @XMLSEC_NO_SHA1_FALSE@
 XMLSEC_NO_SHA1_TRUE = @XMLSEC_NO_SHA1_TRUE@
+XMLSEC_NO_SHA224 = @XMLSEC_NO_SHA224@
+XMLSEC_NO_SHA224_FALSE = @XMLSEC_NO_SHA224_FALSE@
+XMLSEC_NO_SHA224_TRUE = @XMLSEC_NO_SHA224_TRUE@
+XMLSEC_NO_SHA256 = @XMLSEC_NO_SHA256@
+XMLSEC_NO_SHA256_FALSE = @XMLSEC_NO_SHA256_FALSE@
+XMLSEC_NO_SHA256_TRUE = @XMLSEC_NO_SHA256_TRUE@
+XMLSEC_NO_SHA384 = @XMLSEC_NO_SHA384@
+XMLSEC_NO_SHA384_FALSE = @XMLSEC_NO_SHA384_FALSE@
+XMLSEC_NO_SHA384_TRUE = @XMLSEC_NO_SHA384_TRUE@
+XMLSEC_NO_SHA512 = @XMLSEC_NO_SHA512@
+XMLSEC_NO_SHA512_FALSE = @XMLSEC_NO_SHA512_FALSE@
+XMLSEC_NO_SHA512_TRUE = @XMLSEC_NO_SHA512_TRUE@
 XMLSEC_NO_X509 = @XMLSEC_NO_X509@
 XMLSEC_NO_X509_FALSE = @XMLSEC_NO_X509_FALSE@
 XMLSEC_NO_X509_TRUE = @XMLSEC_NO_X509_TRUE@
@@ -272,6 +291,8 @@ am__fastdepCXX_TRUE = @am__fastdepCXX_TRUE@
 am__include = @am__include@
 am__leading_dot = @am__leading_dot@
 am__quote = @am__quote@
+am__tar = @am__tar@
+am__untar = @am__untar@
 bindir = @bindir@
 build = @build@
 build_alias = @build_alias@
@@ -468,7 +489,7 @@ install-confexecDATA: $(confexec_DATA)
 	test -z "$(confexecdir)" || $(mkdir_p) "$(DESTDIR)$(confexecdir)"
 	@list='$(confexec_DATA)'; for p in $$list; do \
 	  if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
-	  f="`echo $$p | sed -e 's|^.*/||'`"; \
+	  f=$(am__strip_dir) \
 	  echo " $(confexecDATA_INSTALL) '$$d$$p' '$(DESTDIR)$(confexecdir)/$$f'"; \
 	  $(confexecDATA_INSTALL) "$$d$$p" "$(DESTDIR)$(confexecdir)/$$f"; \
 	done
@@ -476,7 +497,7 @@ install-confexecDATA: $(confexec_DATA)
 uninstall-confexecDATA:
 	@$(NORMAL_UNINSTALL)
 	@list='$(confexec_DATA)'; for p in $$list; do \
-	  f="`echo $$p | sed -e 's|^.*/||'`"; \
+	  f=$(am__strip_dir) \
 	  echo " rm -f '$(DESTDIR)$(confexecdir)/$$f'"; \
 	  rm -f "$(DESTDIR)$(confexecdir)/$$f"; \
 	done
@@ -485,7 +506,7 @@ install-pkgconfigDATA: $(pkgconfig_DATA)
 	test -z "$(pkgconfigdir)" || $(mkdir_p) "$(DESTDIR)$(pkgconfigdir)"
 	@list='$(pkgconfig_DATA)'; for p in $$list; do \
 	  if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
-	  f="`echo $$p | sed -e 's|^.*/||'`"; \
+	  f=$(am__strip_dir) \
 	  echo " $(pkgconfigDATA_INSTALL) '$$d$$p' '$(DESTDIR)$(pkgconfigdir)/$$f'"; \
 	  $(pkgconfigDATA_INSTALL) "$$d$$p" "$(DESTDIR)$(pkgconfigdir)/$$f"; \
 	done
@@ -493,7 +514,7 @@ install-pkgconfigDATA: $(pkgconfig_DATA)
 uninstall-pkgconfigDATA:
 	@$(NORMAL_UNINSTALL)
 	@list='$(pkgconfig_DATA)'; for p in $$list; do \
-	  f="`echo $$p | sed -e 's|^.*/||'`"; \
+	  f=$(am__strip_dir) \
 	  echo " rm -f '$(DESTDIR)$(pkgconfigdir)/$$f'"; \
 	  rm -f "$(DESTDIR)$(pkgconfigdir)/$$f"; \
 	done
@@ -571,14 +592,16 @@ TAGS: tags-recursive $(HEADERS) $(SOURCES) config.h.in $(TAGS_DEPENDENCIES) \
 		$(TAGS_FILES) $(LISP)
 	tags=; \
 	here=`pwd`; \
-	if (etags --etags-include --version) >/dev/null 2>&1; then \
+	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 && \
+	    test ! -f $$subdir/TAGS || \
 	      tags="$$tags $$include_option=$$here/$$subdir/TAGS"; \
 	  fi; \
 	done; \
@@ -588,9 +611,11 @@ TAGS: tags-recursive $(HEADERS) $(SOURCES) config.h.in $(TAGS_DEPENDENCIES) \
 	  done | \
 	  $(AWK) '    { files[$$0] = 1; } \
 	       END { for (i in files) print i; }'`; \
-	test -z "$(ETAGS_ARGS)$$tags$$unique" \
-	  || $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
-	     $$tags $$unique
+	if test -z "$(ETAGS_ARGS)$$tags$$unique"; then :; else \
+	  test -n "$$unique" || unique=$$empty_fix; \
+	  $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+	    $$tags $$unique; \
+	fi
 ctags: CTAGS
 CTAGS: ctags-recursive $(HEADERS) $(SOURCES) config.h.in $(TAGS_DEPENDENCIES) \
 		$(TAGS_FILES) $(LISP)
@@ -644,15 +669,17 @@ distdir: $(DISTFILES)
 	    || exit 1; \
 	  fi; \
 	done
-	list='$(SUBDIRS)'; for subdir in $$list; do \
+	list='$(DIST_SUBDIRS)'; for subdir in $$list; do \
 	  if test "$$subdir" = .; then :; else \
 	    test -d "$(distdir)/$$subdir" \
-	    || mkdir "$(distdir)/$$subdir" \
+	    || $(mkdir_p) "$(distdir)/$$subdir" \
 	    || exit 1; \
+	    distdir=`$(am__cd) $(distdir) && pwd`; \
+	    top_distdir=`$(am__cd) $(top_distdir) && pwd`; \
 	    (cd $$subdir && \
 	      $(MAKE) $(AM_MAKEFLAGS) \
-	        top_distdir="../$(top_distdir)" \
-	        distdir="../$(distdir)/$$subdir" \
+	        top_distdir="$$top_distdir" \
+	        distdir="$$distdir/$$subdir" \
 	        distdir) \
 	      || exit 1; \
 	  fi; \
@@ -666,15 +693,15 @@ distdir: $(DISTFILES)
 	  ! -type d ! -perm -444 -exec $(SHELL) $(install_sh) -c -m a+r {} {} \; \
 	|| chmod -R a+r $(distdir)
 dist-gzip: distdir
-	$(AMTAR) chof - $(distdir) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).tar.gz
+	tardir=$(distdir) && $(am__tar) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).tar.gz
 	$(am__remove_distdir)
 
 dist-bzip2: distdir
-	$(AMTAR) chof - $(distdir) | bzip2 -9 -c >$(distdir).tar.bz2
+	tardir=$(distdir) && $(am__tar) | bzip2 -9 -c >$(distdir).tar.bz2
 	$(am__remove_distdir)
 
 dist-tarZ: distdir
-	$(AMTAR) chof - $(distdir) | compress -c >$(distdir).tar.Z
+	tardir=$(distdir) && $(am__tar) | compress -c >$(distdir).tar.Z
 	$(am__remove_distdir)
 
 dist-shar: distdir
@@ -687,7 +714,7 @@ dist-zip: distdir
 	$(am__remove_distdir)
 
 dist dist-all: distdir
-	$(AMTAR) chof - $(distdir) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).tar.gz
+	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
@@ -696,13 +723,13 @@ dist dist-all: distdir
 distcheck: dist
 	case '$(DIST_ARCHIVES)' in \
 	*.tar.gz*) \
-	  GZIP=$(GZIP_ENV) gunzip -c $(distdir).tar.gz | $(AMTAR) xf - ;;\
+	  GZIP=$(GZIP_ENV) gunzip -c $(distdir).tar.gz | $(am__untar) ;;\
 	*.tar.bz2*) \
-	  bunzip2 -c $(distdir).tar.bz2 | $(AMTAR) xf - ;;\
+	  bunzip2 -c $(distdir).tar.bz2 | $(am__untar) ;;\
 	*.tar.Z*) \
-	  uncompress -c $(distdir).tar.Z | $(AMTAR) xf - ;;\
+	  uncompress -c $(distdir).tar.Z | $(am__untar) ;;\
 	*.shar.gz*) \
-	  GZIP=$(GZIP_ENV) gunzip -c $(distdir).tar.gz | unshar ;;\
+	  GZIP=$(GZIP_ENV) gunzip -c $(distdir).shar.gz | unshar ;;\
 	*.zip*) \
 	  unzip $(distdir).zip ;;\
 	esac
@@ -784,7 +811,7 @@ mostlyclean-generic:
 clean-generic:
 
 distclean-generic:
-	-rm -f $(CONFIG_CLEAN_FILES)
+	-test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
 	-test -z "$(DISTCLEANFILES)" || rm -f $(DISTCLEANFILES)
 
 maintainer-clean-generic:
@@ -846,7 +873,7 @@ uninstall-info: uninstall-info-recursive
 .PHONY: $(RECURSIVE_TARGETS) CTAGS GTAGS all all-am am--refresh check \
 	check-am clean clean-generic clean-libtool clean-recursive \
 	ctags ctags-recursive dist dist-all dist-bzip2 dist-gzip \
-	dist-shar dist-tarZ dist-zip distcheck distclean \
+	dist-hook dist-shar dist-tarZ dist-zip distcheck distclean \
 	distclean-generic distclean-hdr distclean-libtool \
 	distclean-recursive distclean-tags distcleancheck distdir \
 	distuninstallcheck dvi dvi-am html html-am info info-am \
diff --git a/aclocal.m4 b/aclocal.m4
index 917e18e..6477116 100644
--- a/aclocal.m4
+++ b/aclocal.m4
@@ -1,4 +1,4 @@
-# generated automatically by aclocal 1.8.3 -*- Autoconf -*-
+# generated automatically by aclocal 1.9.2 -*- Autoconf -*-
 
 # Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004
 # Free Software Foundation, Inc.
@@ -6350,7 +6350,7 @@ AC_CHECK_FUNCS([argz_append argz_create_sep argz_insert argz_next argz_stringify
 dnl PKG_CHECK_MODULES(GSTUFF, gtk+-2.0 >= 1.3 glib = 1.3.4, action-if, action-not)
 dnl defines GSTUFF_LIBS, GSTUFF_CFLAGS, see pkg-config man page
 dnl also defines GSTUFF_PKG_ERRORS on error
-AC_DEFUN(PKG_CHECK_MODULES, [
+AC_DEFUN([PKG_CHECK_MODULES], [
   succeeded=no
 
   if test -z "$PKG_CONFIG"; then
@@ -6426,14 +6426,14 @@ AC_DEFUN(PKG_CHECK_MODULES, [
 # ----------------------------
 # Automake X.Y traces this macro to ensure aclocal.m4 has been
 # generated from the m4 files accompanying Automake X.Y.
-AC_DEFUN([AM_AUTOMAKE_VERSION], [am__api_version="1.8"])
+AC_DEFUN([AM_AUTOMAKE_VERSION], [am__api_version="1.9"])
 
 # AM_SET_CURRENT_AUTOMAKE_VERSION
 # -------------------------------
 # Call AM_AUTOMAKE_VERSION so it can be traced.
 # This function is AC_REQUIREd by AC_INIT_AUTOMAKE.
 AC_DEFUN([AM_SET_CURRENT_AUTOMAKE_VERSION],
-	 [AM_AUTOMAKE_VERSION([1.8.3])])
+	 [AM_AUTOMAKE_VERSION([1.9.2])])
 
 # AM_AUX_DIR_EXPAND
 
@@ -6501,7 +6501,7 @@ am_aux_dir=`cd $ac_aux_dir && pwd`
 
 # AM_CONDITIONAL                                              -*- Autoconf -*-
 
-# Copyright (C) 1997, 2000, 2001, 2003 Free Software Foundation, Inc.
+# Copyright (C) 1997, 2000, 2001, 2003, 2004 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
@@ -6538,8 +6538,8 @@ else
 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.])
+  AC_MSG_ERROR([[conditional "$1" was never defined.
+Usually this means the macro was only invoked conditionally.]])
 fi])])
 
 # serial 7						-*- Autoconf -*-
@@ -6659,9 +6659,14 @@ AC_CACHE_CHECK([dependency style of $depcc],
        grep sub/conftest.${OBJEXT-o} 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
-      # (even with -Werror).  So we grep stderr for any message
-      # that says an option was ignored.
-      if grep 'ignoring option' conftest.err >/dev/null 2>&1; then :; else
+      # 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
@@ -6707,7 +6712,8 @@ AC_SUBST([AMDEPBACKSLASH])
 
 # Generate code to set up dependency tracking.   -*- Autoconf -*-
 
-# Copyright (C) 1999, 2000, 2001, 2002, 2003, 2004 Free Software Foundation, Inc.
+# Copyright (C) 1999, 2000, 2001, 2002, 2003, 2004
+#   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
@@ -6743,27 +6749,21 @@ AC_DEFUN([_AM_OUTPUT_DEPENDENCY_COMMANDS],
   else
     continue
   fi
-  grep '^DEP_FILES *= *[[^ @%:@]]' < "$mf" > /dev/null || continue
-  # Extract the definition of DEP_FILES from the Makefile without
-  # running `make'.
+  # 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"`
-  test -d "$dirpart/$DEPDIR" || mkdir "$dirpart/$DEPDIR"
-  # 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 '
-    /^DEP_FILES = .*\\\\$/ {
-      s/^DEP_FILES = //
-      :loop
-	s/\\\\$//
-	p
-	n
-	/\\\\$/ b loop
-      p
-    }
-    /^DEP_FILES = / s/^DEP_FILES = //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
@@ -6818,7 +6818,7 @@ AU_DEFUN([AM_CONFIG_HEADER], [AC_CONFIG_HEADERS($@)])
 # 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.
 
-# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003
+# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004
 # Free Software Foundation, Inc.
 
 # This program is free software; you can redistribute it and/or modify
@@ -6894,7 +6894,6 @@ AM_MISSING_PROG(AUTOCONF, autoconf)
 AM_MISSING_PROG(AUTOMAKE, automake-${am__api_version})
 AM_MISSING_PROG(AUTOHEADER, autoheader)
 AM_MISSING_PROG(MAKEINFO, makeinfo)
-AM_MISSING_PROG(AMTAR, tar)
 AM_PROG_INSTALL_SH
 AM_PROG_INSTALL_STRIP
 AC_REQUIRE([AM_PROG_MKDIR_P])dnl
@@ -6903,7 +6902,9 @@ AC_REQUIRE([AM_PROG_MKDIR_P])dnl
 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)],
@@ -7186,13 +7187,21 @@ fi
 # this.)
 AC_DEFUN([AM_PROG_MKDIR_P],
 [if mkdir -p --version . >/dev/null 2>&1 && test ! -d ./--version; then
-  # Keeping the `.' argument allows $(mkdir_p) to be used without
-  # argument.  Indeed, we sometimes output rules like
+  # We used to keeping the `.' as first argument, in order to
+  # allow $(mkdir_p) to be used without argument.  As in
   #   $(mkdir_p) $(somedir)
-  # where $(somedir) is conditionally defined.
-  # (`test -n '$(somedir)' && $(mkdir_p) $(somedir)' is a more
-  # expensive solution, as it forces Make to start a sub-shell.)
-  mkdir_p='mkdir -p -- .'
+  # where $(somedir) is conditionally defined.  However this is wrong
+  # for two reasons:
+  #  1. if the package is installed by a user who cannot write `.'
+  #     make install will fail,
+  #  2. the above comment should most certainly read
+  #     $(mkdir_p) $(DESTDIR)$(somedir)
+  #     so it does not work when $(somedir) is undefined and
+  #     $(DESTDIR) is not.
+  #  To support the latter case, we have to write
+  #     test -z "$(somedir)" || $(mkdir_p) $(DESTDIR)$(somedir),
+  #  so the `.' trick is pointless.
+  mkdir_p='mkdir -p --'
 else
   # On NextStep and OpenStep, the `mkdir' command does not
   # recognize any option.  It will interpret all options as
@@ -7292,6 +7301,34 @@ AC_SUBST(ANSI2KNR)dnl
 
 AU_DEFUN([fp_C_PROTOTYPES], [AM_C_PROTOTYPES])
 
+# Copyright (C) 2001, 2003 Free Software Foundation, Inc.     -*- Autoconf -*-
+
+# 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, write to the Free Software
+# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
+# 02111-1307, USA.
+
+# AM_RUN_LOG(COMMAND)
+# -------------------
+# Run COMMAND, save the exit status in ac_status, and log it.
+# (This has been adapted from Autoconf's _AC_RUN_LOG macro.)
+AC_DEFUN([AM_RUN_LOG],
+[{ echo "$as_me:$LINENO: $1" >&AS_MESSAGE_LOG_FD
+   ($1) >&AS_MESSAGE_LOG_FD 2>&AS_MESSAGE_LOG_FD
+   ac_status=$?
+   echo "$as_me:$LINENO: \$? = $ac_status" >&AS_MESSAGE_LOG_FD
+   (exit $ac_status); }])
+
 #
 # Check to make sure that the build environment is sane.
 #
@@ -7395,3 +7432,111 @@ fi
 INSTALL_STRIP_PROGRAM="\${SHELL} \$(install_sh) -c -s"
 AC_SUBST([INSTALL_STRIP_PROGRAM])])
 
+# Check how to create a tarball.                            -*- Autoconf -*-
+
+# Copyright (C) 2004  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, write to the Free Software
+# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
+# 02111-1307, USA.
+
+# serial 1
+
+
+# _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
+
diff --git a/apps/Makefile.in b/apps/Makefile.in
index c4f033a..66f34a6 100644
--- a/apps/Makefile.in
+++ b/apps/Makefile.in
@@ -1,4 +1,4 @@
-# Makefile.in generated by automake 1.8.3 from Makefile.am.
+# Makefile.in generated by automake 1.9.2 from Makefile.am.
 # @configure_input@
 
 # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
@@ -36,6 +36,7 @@ POST_INSTALL = :
 NORMAL_UNINSTALL = :
 PRE_UNINSTALL = :
 POST_UNINSTALL = :
+build_triplet = @build@
 host_triplet = @host@
 bin_PROGRAMS = xmlsec1$(EXEEXT)
 subdir = apps
@@ -68,15 +69,13 @@ am__DEPENDENCIES_1 =
 DEFAULT_INCLUDES = -I. -I$(srcdir) -I$(top_builddir)
 depcomp = $(SHELL) $(top_srcdir)/depcomp
 am__depfiles_maybe = depfiles
- at AMDEP_TRUE@DEP_FILES = ./$(DEPDIR)/cmdline.Po ./$(DEPDIR)/crypto.Po \
- at AMDEP_TRUE@	./$(DEPDIR)/xmlsec.Po
 COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \
 	$(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
-LTCOMPILE = $(LIBTOOL) --mode=compile $(CC) $(DEFS) \
+LTCOMPILE = $(LIBTOOL) --mode=compile --tag=CC $(CC) $(DEFS) \
 	$(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \
 	$(AM_CFLAGS) $(CFLAGS)
 CCLD = $(CC)
-LINK = $(LIBTOOL) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \
+LINK = $(LIBTOOL) --mode=link --tag=CC $(CCLD) $(AM_CFLAGS) $(CFLAGS) \
 	$(AM_LDFLAGS) $(LDFLAGS) -o $@
 SOURCES = $(xmlsec1_SOURCES)
 DIST_SOURCES = $(xmlsec1_SOURCES)
@@ -131,8 +130,6 @@ LIBADD_DL = @LIBADD_DL@
 LIBOBJS = @LIBOBJS@
 LIBS = @LIBS@
 LIBTOOL = @LIBTOOL@
-LIBXML262_CFLAGS = @LIBXML262_CFLAGS@
-LIBXML262_LIBS = @LIBXML262_LIBS@
 LIBXML_CFLAGS = @LIBXML_CFLAGS@
 LIBXML_CONFIG = @LIBXML_CONFIG@
 LIBXML_LIBS = @LIBXML_LIBS@
@@ -156,8 +153,6 @@ NSS_CRYPTO_LIB = @NSS_CRYPTO_LIB@
 NSS_LIBS = @NSS_LIBS@
 NSS_MIN_VERSION = @NSS_MIN_VERSION@
 OBJEXT = @OBJEXT@
-OPENSSL097_CFLAGS = @OPENSSL097_CFLAGS@
-OPENSSL097_LIBS = @OPENSSL097_LIBS@
 OPENSSL_CFLAGS = @OPENSSL_CFLAGS@
 OPENSSL_CRYPTO_LIB = @OPENSSL_CRYPTO_LIB@
 OPENSSL_LIBS = @OPENSSL_LIBS@
@@ -220,6 +215,9 @@ XMLSEC_NO_HMAC = @XMLSEC_NO_HMAC@
 XMLSEC_NO_HMAC_FALSE = @XMLSEC_NO_HMAC_FALSE@
 XMLSEC_NO_HMAC_TRUE = @XMLSEC_NO_HMAC_TRUE@
 XMLSEC_NO_LIBXSLT = @XMLSEC_NO_LIBXSLT@
+XMLSEC_NO_MD5 = @XMLSEC_NO_MD5@
+XMLSEC_NO_MD5_FALSE = @XMLSEC_NO_MD5_FALSE@
+XMLSEC_NO_MD5_TRUE = @XMLSEC_NO_MD5_TRUE@
 XMLSEC_NO_NSS = @XMLSEC_NO_NSS@
 XMLSEC_NO_NSS_FALSE = @XMLSEC_NO_NSS_FALSE@
 XMLSEC_NO_NSS_TRUE = @XMLSEC_NO_NSS_TRUE@
@@ -235,6 +233,18 @@ XMLSEC_NO_RSA_TRUE = @XMLSEC_NO_RSA_TRUE@
 XMLSEC_NO_SHA1 = @XMLSEC_NO_SHA1@
 XMLSEC_NO_SHA1_FALSE = @XMLSEC_NO_SHA1_FALSE@
 XMLSEC_NO_SHA1_TRUE = @XMLSEC_NO_SHA1_TRUE@
+XMLSEC_NO_SHA224 = @XMLSEC_NO_SHA224@
+XMLSEC_NO_SHA224_FALSE = @XMLSEC_NO_SHA224_FALSE@
+XMLSEC_NO_SHA224_TRUE = @XMLSEC_NO_SHA224_TRUE@
+XMLSEC_NO_SHA256 = @XMLSEC_NO_SHA256@
+XMLSEC_NO_SHA256_FALSE = @XMLSEC_NO_SHA256_FALSE@
+XMLSEC_NO_SHA256_TRUE = @XMLSEC_NO_SHA256_TRUE@
+XMLSEC_NO_SHA384 = @XMLSEC_NO_SHA384@
+XMLSEC_NO_SHA384_FALSE = @XMLSEC_NO_SHA384_FALSE@
+XMLSEC_NO_SHA384_TRUE = @XMLSEC_NO_SHA384_TRUE@
+XMLSEC_NO_SHA512 = @XMLSEC_NO_SHA512@
+XMLSEC_NO_SHA512_FALSE = @XMLSEC_NO_SHA512_FALSE@
+XMLSEC_NO_SHA512_TRUE = @XMLSEC_NO_SHA512_TRUE@
 XMLSEC_NO_X509 = @XMLSEC_NO_X509@
 XMLSEC_NO_X509_FALSE = @XMLSEC_NO_X509_FALSE@
 XMLSEC_NO_X509_TRUE = @XMLSEC_NO_X509_TRUE@
@@ -272,6 +282,8 @@ am__fastdepCXX_TRUE = @am__fastdepCXX_TRUE@
 am__include = @am__include@
 am__leading_dot = @am__leading_dot@
 am__quote = @am__quote@
+am__tar = @am__tar@
+am__untar = @am__untar@
 bindir = @bindir@
 build = @build@
 build_alias = @build_alias@
@@ -449,24 +461,21 @@ distclean-compile:
 @am__fastdepCC_TRUE@	if $(COMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" -c -o $@ $<; \
 @am__fastdepCC_TRUE@	then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Po"; else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; fi
 @AMDEP_TRUE@@am__fastdepCC_FALSE@	source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	depfile='$(DEPDIR)/$*.Po' tmpdepfile='$(DEPDIR)/$*.TPo' @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	$(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @am__fastdepCC_FALSE@	$(COMPILE) -c $<
 
 .c.obj:
 @am__fastdepCC_TRUE@	if $(COMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" -c -o $@ `$(CYGPATH_W) '$<'`; \
 @am__fastdepCC_TRUE@	then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Po"; else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; fi
 @AMDEP_TRUE@@am__fastdepCC_FALSE@	source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	depfile='$(DEPDIR)/$*.Po' tmpdepfile='$(DEPDIR)/$*.TPo' @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	$(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @am__fastdepCC_FALSE@	$(COMPILE) -c `$(CYGPATH_W) '$<'`
 
 .c.lo:
 @am__fastdepCC_TRUE@	if $(LTCOMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" -c -o $@ $<; \
 @am__fastdepCC_TRUE@	then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Plo"; else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; fi
 @AMDEP_TRUE@@am__fastdepCC_FALSE@	source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	depfile='$(DEPDIR)/$*.Plo' tmpdepfile='$(DEPDIR)/$*.TPlo' @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	$(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @am__fastdepCC_FALSE@	$(LTCOMPILE) -c -o $@ $<
 
 mostlyclean-libtool:
@@ -499,9 +508,11 @@ TAGS:  $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
 	  done | \
 	  $(AWK) '    { files[$$0] = 1; } \
 	       END { for (i in files) print i; }'`; \
-	test -z "$(ETAGS_ARGS)$$tags$$unique" \
-	  || $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
-	     $$tags $$unique
+	if test -z "$(ETAGS_ARGS)$$tags$$unique"; then :; else \
+	  test -n "$$unique" || unique=$$empty_fix; \
+	  $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+	    $$tags $$unique; \
+	fi
 ctags: CTAGS
 CTAGS:  $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
 		$(TAGS_FILES) $(LISP)
@@ -578,7 +589,7 @@ mostlyclean-generic:
 clean-generic:
 
 distclean-generic:
-	-rm -f $(CONFIG_CLEAN_FILES)
+	-test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
 
 maintainer-clean-generic:
 	@echo "This command is intended for maintainers to use"
diff --git a/apps/xmlsec.c b/apps/xmlsec.c
index 0f0f0ce..dd0f4d4 100644
--- a/apps/xmlsec.c
+++ b/apps/xmlsec.c
@@ -801,7 +801,7 @@ static xmlSecAppCmdLineParam depthParam = {
     NULL,    
     "--depth <number>"
     "\n\tmaximum certificates chain depth",
-    xmlSecAppCmdLineParamTypeTime,
+    xmlSecAppCmdLineParamTypeNumber,
     xmlSecAppCmdLineParamFlagNone,
     NULL
 };
diff --git a/config.h.in b/config.h.in
index 5f5a517..2d434ce 100644
--- a/config.h.in
+++ b/config.h.in
@@ -197,6 +197,9 @@
 /* Define if dlsym() requires a leading underscore in symbol names. */
 #undef NEED_USCORE
 
+/* Name of package */
+#undef PACKAGE
+
 /* Define to the address where bug reports for this package should be sent. */
 #undef PACKAGE_BUGREPORT
 
@@ -221,6 +224,9 @@
 /* Define to 1 if you have the ANSI C header files. */
 #undef STDC_HEADERS
 
+/* Version number of package */
+#undef VERSION
+
 /* Define like PROTOTYPES; this can be used by system headers. */
 #undef __PROTOTYPES
 
diff --git a/configure b/configure
index 747a61c..7cb2f8b 100755
--- a/configure
+++ b/configure
@@ -1,6 +1,8 @@
 #! /bin/sh
 # Guess values for system-dependent variables and create Makefiles.
-# Generated by GNU Autoconf 2.59.
+# Generated by GNU Autoconf 2.59 for xmlsec1 1.2.9.
+#
+# Report bugs to <http://www.aleksey.com/xmlsec>.
 #
 # Copyright (C) 2003 Free Software Foundation, Inc.
 # This configure script is free software; the Free Software Foundation
@@ -419,13 +421,12 @@ SHELL=${CONFIG_SHELL-/bin/sh}
 : ${ac_max_here_lines=38}
 
 # Identity of this package.
-PACKAGE_NAME=
-PACKAGE_TARNAME=
-PACKAGE_VERSION=
-PACKAGE_STRING=
-PACKAGE_BUGREPORT=
+PACKAGE_NAME='xmlsec1'
+PACKAGE_TARNAME='xmlsec1'
+PACKAGE_VERSION='1.2.9'
+PACKAGE_STRING='xmlsec1 1.2.9'
+PACKAGE_BUGREPORT='http://www.aleksey.com/xmlsec'
 
-ac_unique_file="src/xmlsec.c"
 # Factoring default headers for most tests.
 ac_includes_default="\
 #include <stdio.h>
@@ -463,7 +464,7 @@ ac_includes_default="\
 # include <unistd.h>
 #endif"
 
-ac_subst_vars='SHELL PATH_SEPARATOR PACKAGE_NAME PACKAGE_TARNAME PACKAGE_VERSION PACKAGE_STRING PACKAGE_BUGREPORT exec_prefix prefix program_transform_name bindir sbindir libexecdir datadir sysconfdir sharedstatedir localstatedir libdir includedir oldincludedir infodir mandir build_alias host_alias target_alias DEFS ECHO_C ECHO_N ECHO_T LIBS build build_cpu build_vendor build_os host host_cpu host_vendor host_os XMLSEC_VERSION XMLSEC_PACKAGE XMLSEC_VERSION_SAFE XMLSEC_VERSION_MAJOR XMLSE [...]
+ac_subst_vars='SHELL PATH_SEPARATOR PACKAGE_NAME PACKAGE_TARNAME PACKAGE_VERSION PACKAGE_STRING PACKAGE_BUGREPORT exec_prefix prefix program_transform_name bindir sbindir libexecdir datadir sysconfdir sharedstatedir localstatedir libdir includedir oldincludedir infodir mandir build_alias host_alias target_alias DEFS ECHO_C ECHO_N ECHO_T LIBS build build_cpu build_vendor build_os host host_cpu host_vendor host_os XMLSEC_VERSION XMLSEC_PACKAGE XMLSEC_VERSION_SAFE XMLSEC_VERSION_MAJOR XMLSE [...]
 ac_subst_files=''
 
 # Initialize some variables set by options.
@@ -952,7 +953,7 @@ if test "$ac_init_help" = "long"; then
   # Omit some internal or obsolete options to make the list less imposing.
   # This message is too long to be a string in the A/UX 3.1 sh.
   cat <<_ACEOF
-\`configure' configures this package to adapt to many kinds of systems.
+\`configure' configures xmlsec1 1.2.9 to adapt to many kinds of systems.
 
 Usage: $0 [OPTION]... [VAR=VALUE]...
 
@@ -1017,7 +1018,9 @@ _ACEOF
 fi
 
 if test -n "$ac_init_help"; then
-
+  case $ac_init_help in
+     short | recursive ) echo "Configuration of xmlsec1 1.2.9:";;
+   esac
   cat <<\_ACEOF
 
 Optional Features:
@@ -1037,8 +1040,13 @@ Optional Features:
   --enable-ltdl-install   install libltdl
   --enable-development    enable development environment (no)
   --enable-pkgconfig      enable pkgconfig for configuration (yes)
-  --enable-sha1           enable SHA1 support (yes)
+  --enable-md5            enable MD5 support (yes)
   --enable-ripemd160      enable RIPEMD-160 support (yes)
+  --enable-sha1           enable SHA1 support (yes)
+  --enable-sha224         enable SHA224 support (yes)
+  --enable-sha256         enable SHA256 support (yes)
+  --enable-sha384         enable SHA384 support (yes)
+  --enable-sha512         enable SHA512 support (yes)
   --enable-hmac           enable HMAC support (yes)
   --enable-dsa            enable DSA support (yes)
   --enable-rsa            enable RSA support (yes)
@@ -1091,6 +1099,7 @@ Some influential environment variables:
 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 <http://www.aleksey.com/xmlsec>.
 _ACEOF
 fi
 
@@ -1186,6 +1195,8 @@ fi
 test -n "$ac_init_help" && exit 0
 if $ac_init_version; then
   cat <<\_ACEOF
+xmlsec1 configure 1.2.9
+generated by GNU Autoconf 2.59
 
 Copyright (C) 2003 Free Software Foundation, Inc.
 This configure script is free software; the Free Software Foundation
@@ -1198,7 +1209,7 @@ cat >&5 <<_ACEOF
 This file contains any messages produced by compilers while
 running configure, to aid debugging if configure makes a mistake.
 
-It was created by $as_me, which was
+It was created by xmlsec1 $as_me 1.2.9, which was
 generated by GNU Autoconf 2.59.  Invocation command line was
 
   $ $0 $@
@@ -1526,6 +1537,24 @@ ac_compiler_gnu=$ac_cv_c_compiler_gnu
 
 
 
+
+
+
+
+
+
+
+
+
+XMLSEC_PACKAGE=xmlsec1
+XMLSEC_VERSION_MAJOR=1
+XMLSEC_VERSION_MINOR=2
+XMLSEC_VERSION_SUBMINOR=9
+XMLSEC_VERSION="$XMLSEC_VERSION_MAJOR.$XMLSEC_VERSION_MINOR.$XMLSEC_VERSION_SUBMINOR"
+XMLSEC_VERSION_INFO=`echo $XMLSEC_VERSION | awk -F. '{ printf "%d:%d:%d", $1+$2, $3, $2 }'`
+XMLSEC_VERSION_SAFE=`echo $XMLSEC_VERSION | sed 's/\./_/g'`
+
+
           ac_config_headers="$ac_config_headers config.h"
 
 ac_aux_dir=
@@ -1608,17 +1637,6 @@ host_os=`echo $ac_cv_host | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\3/'`
 
 
 
-XMLSEC_PACKAGE=xmlsec1
-XMLSEC_VERSION_MAJOR=1
-XMLSEC_VERSION_MINOR=2
-XMLSEC_VERSION_SUBMINOR=6
-XMLSEC_VERSION="$XMLSEC_VERSION_MAJOR.$XMLSEC_VERSION_MINOR.$XMLSEC_VERSION_SUBMINOR"
-XMLSEC_VERSION_INFO=`echo $XMLSEC_VERSION | awk -F. '{ printf "%d:%d:%d", $1+$2, $3, $2 }'`
-XMLSEC_VERSION_SAFE=`echo $XMLSEC_VERSION | sed 's/\./_/g'`
-
-PACKAGE=$XMLSEC_PACKAGE
-VERSION=$XMLSEC_VERSION
-
 
 
 
@@ -1627,7 +1645,7 @@ VERSION=$XMLSEC_VERSION
 
 
 
-am__api_version="1.8"
+am__api_version="1.9"
 # 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:
@@ -1779,13 +1797,21 @@ echo "$as_me: WARNING: \`missing' script is too old or missing" >&2;}
 fi
 
 if mkdir -p --version . >/dev/null 2>&1 && test ! -d ./--version; then
-  # Keeping the `.' argument allows $(mkdir_p) to be used without
-  # argument.  Indeed, we sometimes output rules like
+  # We used to keeping the `.' as first argument, in order to
+  # allow $(mkdir_p) to be used without argument.  As in
   #   $(mkdir_p) $(somedir)
-  # where $(somedir) is conditionally defined.
-  # (`test -n '$(somedir)' && $(mkdir_p) $(somedir)' is a more
-  # expensive solution, as it forces Make to start a sub-shell.)
-  mkdir_p='mkdir -p -- .'
+  # where $(somedir) is conditionally defined.  However this is wrong
+  # for two reasons:
+  #  1. if the package is installed by a user who cannot write `.'
+  #     make install will fail,
+  #  2. the above comment should most certainly read
+  #     $(mkdir_p) $(DESTDIR)$(somedir)
+  #     so it does not work when $(somedir) is undefined and
+  #     $(DESTDIR) is not.
+  #  To support the latter case, we have to write
+  #     test -z "$(somedir)" || $(mkdir_p) $(DESTDIR)$(somedir),
+  #  so the `.' trick is pointless.
+  mkdir_p='mkdir -p --'
 else
   # On NextStep and OpenStep, the `mkdir' command does not
   # recognize any option.  It will interpret all options as
@@ -1900,9 +1926,18 @@ fi
 
 
 # Define the identity of the package.
- PACKAGE=$PACKAGE
- VERSION=$VERSION
+ PACKAGE='xmlsec1'
+ VERSION='1.2.9'
+
+
+cat >>confdefs.h <<_ACEOF
+#define PACKAGE "$PACKAGE"
+_ACEOF
+
 
+cat >>confdefs.h <<_ACEOF
+#define VERSION "$VERSION"
+_ACEOF
 
 # Some tools Automake needs.
 
@@ -1920,9 +1955,6 @@ AUTOHEADER=${AUTOHEADER-"${am_missing_run}autoheader"}
 
 MAKEINFO=${MAKEINFO-"${am_missing_run}makeinfo"}
 
-
-AMTAR=${AMTAR-"${am_missing_run}tar"}
-
 install_sh=${install_sh-"$am_aux_dir/install-sh"}
 
 # Installed binaries are usually stripped using `strip' when the user
@@ -2015,6 +2047,94 @@ INSTALL_STRIP_PROGRAM="\${SHELL} \$(install_sh) -c -s"
 
 # 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"}
+
+
+echo "$as_me:$LINENO: checking how to create a ustar tar archive" >&5
+echo $ECHO_N "checking how to create a ustar tar archive... $ECHO_C" >&6
+# Loop over all known methods to create a tar archive until one works.
+_am_tools='gnutar plaintar pax cpio none'
+_am_tools=${am_cv_prog_tar_ustar-$_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
+      { echo "$as_me:$LINENO: $_am_tar --version" >&5
+   ($_am_tar --version) >&5 2>&5
+   ac_status=$?
+   echo "$as_me:$LINENO: \$? = $ac_status" >&5
+   (exit $ac_status); } && break
+    done
+    am__tar="$_am_tar --format=ustar -chf - "'"$$tardir"'
+    am__tar_="$_am_tar --format=ustar -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 ustar -w "$$tardir"'
+    am__tar_='pax -L -x ustar -w "$tardir"'
+    am__untar='pax -r'
+    ;;
+  cpio)
+    am__tar='find "$$tardir" -print | cpio -o -H ustar -L'
+    am__tar_='find "$tardir" -print | cpio -o -H ustar -L'
+    am__untar='cpio -i -H ustar -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_ustar}" && break
+
+  # tar/untar a dummy directory, and stop if the command works
+  rm -rf conftest.dir
+  mkdir conftest.dir
+  echo GrepMe > conftest.dir/file
+  { echo "$as_me:$LINENO: tardir=conftest.dir && eval $am__tar_ >conftest.tar" >&5
+   (tardir=conftest.dir && eval $am__tar_ >conftest.tar) >&5 2>&5
+   ac_status=$?
+   echo "$as_me:$LINENO: \$? = $ac_status" >&5
+   (exit $ac_status); }
+  rm -rf conftest.dir
+  if test -s conftest.tar; then
+    { echo "$as_me:$LINENO: $am__untar <conftest.tar" >&5
+   ($am__untar <conftest.tar) >&5 2>&5
+   ac_status=$?
+   echo "$as_me:$LINENO: \$? = $ac_status" >&5
+   (exit $ac_status); }
+    grep GrepMe conftest.dir/file >/dev/null 2>&1 && break
+  fi
+done
+rm -rf conftest.dir
+
+if test "${am_cv_prog_tar_ustar+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  am_cv_prog_tar_ustar=$_am_tool
+fi
+
+echo "$as_me:$LINENO: result: $am_cv_prog_tar_ustar" >&5
+echo "${ECHO_T}$am_cv_prog_tar_ustar" >&6
+
+
 
 
 
@@ -3109,9 +3229,14 @@ else
        grep sub/conftest.${OBJEXT-o} 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
-      # (even with -Werror).  So we grep stderr for any message
-      # that says an option was ignored.
-      if grep 'ignoring option' conftest.err >/dev/null 2>&1; then :; else
+      # 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
@@ -3696,7 +3821,7 @@ ia64-*-hpux*)
   ;;
 *-*-irix6*)
   # Find out which ABI we are using.
-  echo '#line 3699 "configure"' > conftest.$ac_ext
+  echo '#line 3824 "configure"' > conftest.$ac_ext
   if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
   (eval $ac_compile) 2>&5
   ac_status=$?
@@ -4453,9 +4578,9 @@ echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&
 echo "$as_me: WARNING: $ac_header: in the future, the compiler will take precedence" >&2;}
     (
       cat <<\_ASBOX
-## ------------------------------------------ ##
-## Report this to the AC_PACKAGE_NAME lists.  ##
-## ------------------------------------------ ##
+## -------------------------------------------- ##
+## Report this to http://www.aleksey.com/xmlsec ##
+## -------------------------------------------- ##
 _ASBOX
     ) |
       sed "s/^/$as_me: WARNING:     /" >&2
@@ -4907,9 +5032,14 @@ else
        grep sub/conftest.${OBJEXT-o} 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
-      # (even with -Werror).  So we grep stderr for any message
-      # that says an option was ignored.
-      if grep 'ignoring option' conftest.err >/dev/null 2>&1; then :; else
+      # 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_CXX_dependencies_compiler_type=$depmode
         break
       fi
@@ -5263,7 +5393,7 @@ fi
 
 
 # Provide some information about the compiler.
-echo "$as_me:5266:" \
+echo "$as_me:5396:" \
      "checking for Fortran 77 compiler version" >&5
 ac_compiler=`set X $ac_compile; echo $2`
 { (eval echo "$as_me:$LINENO: \"$ac_compiler --version </dev/null >&5\"") >&5
@@ -6297,11 +6427,11 @@ else
    -e 's:.*FLAGS}? :&$lt_compiler_flag :; t' \
    -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
    -e 's:$: $lt_compiler_flag:'`
-   (eval echo "\"\$as_me:6300: $lt_compile\"" >&5)
+   (eval echo "\"\$as_me:6430: $lt_compile\"" >&5)
    (eval "$lt_compile" 2>conftest.err)
    ac_status=$?
    cat conftest.err >&5
-   echo "$as_me:6304: \$? = $ac_status" >&5
+   echo "$as_me:6434: \$? = $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
@@ -6530,11 +6660,11 @@ else
    -e 's:.*FLAGS}? :&$lt_compiler_flag :; t' \
    -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
    -e 's:$: $lt_compiler_flag:'`
-   (eval echo "\"\$as_me:6533: $lt_compile\"" >&5)
+   (eval echo "\"\$as_me:6663: $lt_compile\"" >&5)
    (eval "$lt_compile" 2>conftest.err)
    ac_status=$?
    cat conftest.err >&5
-   echo "$as_me:6537: \$? = $ac_status" >&5
+   echo "$as_me:6667: \$? = $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
@@ -6590,11 +6720,11 @@ else
    -e 's:.*FLAGS}? :&$lt_compiler_flag :; t' \
    -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
    -e 's:$: $lt_compiler_flag:'`
-   (eval echo "\"\$as_me:6593: $lt_compile\"" >&5)
+   (eval echo "\"\$as_me:6723: $lt_compile\"" >&5)
    (eval "$lt_compile" 2>out/conftest.err)
    ac_status=$?
    cat out/conftest.err >&5
-   echo "$as_me:6597: \$? = $ac_status" >&5
+   echo "$as_me:6727: \$? = $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
@@ -7924,7 +8054,7 @@ linux*)
   libsuff=
   case "$host_cpu" in
   x86_64*|s390x*|powerpc64*)
-    echo '#line 7927 "configure"' > conftest.$ac_ext
+    echo '#line 8057 "configure"' > conftest.$ac_ext
     if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
   (eval $ac_compile) 2>&5
   ac_status=$?
@@ -8795,7 +8925,7 @@ else
   lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
   lt_status=$lt_dlunknown
   cat > conftest.$ac_ext <<EOF
-#line 8798 "configure"
+#line 8928 "configure"
 #include "confdefs.h"
 
 #if HAVE_DLFCN_H
@@ -8893,7 +9023,7 @@ else
   lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
   lt_status=$lt_dlunknown
   cat > conftest.$ac_ext <<EOF
-#line 8896 "configure"
+#line 9026 "configure"
 #include "confdefs.h"
 
 #if HAVE_DLFCN_H
@@ -11072,11 +11202,11 @@ else
    -e 's:.*FLAGS}? :&$lt_compiler_flag :; t' \
    -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
    -e 's:$: $lt_compiler_flag:'`
-   (eval echo "\"\$as_me:11075: $lt_compile\"" >&5)
+   (eval echo "\"\$as_me:11205: $lt_compile\"" >&5)
    (eval "$lt_compile" 2>conftest.err)
    ac_status=$?
    cat conftest.err >&5
-   echo "$as_me:11079: \$? = $ac_status" >&5
+   echo "$as_me:11209: \$? = $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
@@ -11132,11 +11262,11 @@ else
    -e 's:.*FLAGS}? :&$lt_compiler_flag :; t' \
    -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
    -e 's:$: $lt_compiler_flag:'`
-   (eval echo "\"\$as_me:11135: $lt_compile\"" >&5)
+   (eval echo "\"\$as_me:11265: $lt_compile\"" >&5)
    (eval "$lt_compile" 2>out/conftest.err)
    ac_status=$?
    cat out/conftest.err >&5
-   echo "$as_me:11139: \$? = $ac_status" >&5
+   echo "$as_me:11269: \$? = $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
@@ -11643,7 +11773,7 @@ linux*)
   libsuff=
   case "$host_cpu" in
   x86_64*|s390x*|powerpc64*)
-    echo '#line 11646 "configure"' > conftest.$ac_ext
+    echo '#line 11776 "configure"' > conftest.$ac_ext
     if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
   (eval $ac_compile) 2>&5
   ac_status=$?
@@ -12514,7 +12644,7 @@ else
   lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
   lt_status=$lt_dlunknown
   cat > conftest.$ac_ext <<EOF
-#line 12517 "configure"
+#line 12647 "configure"
 #include "confdefs.h"
 
 #if HAVE_DLFCN_H
@@ -12612,7 +12742,7 @@ else
   lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
   lt_status=$lt_dlunknown
   cat > conftest.$ac_ext <<EOF
-#line 12615 "configure"
+#line 12745 "configure"
 #include "confdefs.h"
 
 #if HAVE_DLFCN_H
@@ -13439,11 +13569,11 @@ else
    -e 's:.*FLAGS}? :&$lt_compiler_flag :; t' \
    -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
    -e 's:$: $lt_compiler_flag:'`
-   (eval echo "\"\$as_me:13442: $lt_compile\"" >&5)
+   (eval echo "\"\$as_me:13572: $lt_compile\"" >&5)
    (eval "$lt_compile" 2>conftest.err)
    ac_status=$?
    cat conftest.err >&5
-   echo "$as_me:13446: \$? = $ac_status" >&5
+   echo "$as_me:13576: \$? = $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
@@ -13499,11 +13629,11 @@ else
    -e 's:.*FLAGS}? :&$lt_compiler_flag :; t' \
    -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
    -e 's:$: $lt_compiler_flag:'`
-   (eval echo "\"\$as_me:13502: $lt_compile\"" >&5)
+   (eval echo "\"\$as_me:13632: $lt_compile\"" >&5)
    (eval "$lt_compile" 2>out/conftest.err)
    ac_status=$?
    cat out/conftest.err >&5
-   echo "$as_me:13506: \$? = $ac_status" >&5
+   echo "$as_me:13636: \$? = $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
@@ -14813,7 +14943,7 @@ linux*)
   libsuff=
   case "$host_cpu" in
   x86_64*|s390x*|powerpc64*)
-    echo '#line 14816 "configure"' > conftest.$ac_ext
+    echo '#line 14946 "configure"' > conftest.$ac_ext
     if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
   (eval $ac_compile) 2>&5
   ac_status=$?
@@ -15554,11 +15684,11 @@ else
    -e 's:.*FLAGS}? :&$lt_compiler_flag :; t' \
    -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
    -e 's:$: $lt_compiler_flag:'`
-   (eval echo "\"\$as_me:15557: $lt_compile\"" >&5)
+   (eval echo "\"\$as_me:15687: $lt_compile\"" >&5)
    (eval "$lt_compile" 2>conftest.err)
    ac_status=$?
    cat conftest.err >&5
-   echo "$as_me:15561: \$? = $ac_status" >&5
+   echo "$as_me:15691: \$? = $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
@@ -15787,11 +15917,11 @@ else
    -e 's:.*FLAGS}? :&$lt_compiler_flag :; t' \
    -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
    -e 's:$: $lt_compiler_flag:'`
-   (eval echo "\"\$as_me:15790: $lt_compile\"" >&5)
+   (eval echo "\"\$as_me:15920: $lt_compile\"" >&5)
    (eval "$lt_compile" 2>conftest.err)
    ac_status=$?
    cat conftest.err >&5
-   echo "$as_me:15794: \$? = $ac_status" >&5
+   echo "$as_me:15924: \$? = $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
@@ -15847,11 +15977,11 @@ else
    -e 's:.*FLAGS}? :&$lt_compiler_flag :; t' \
    -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
    -e 's:$: $lt_compiler_flag:'`
-   (eval echo "\"\$as_me:15850: $lt_compile\"" >&5)
+   (eval echo "\"\$as_me:15980: $lt_compile\"" >&5)
    (eval "$lt_compile" 2>out/conftest.err)
    ac_status=$?
    cat out/conftest.err >&5
-   echo "$as_me:15854: \$? = $ac_status" >&5
+   echo "$as_me:15984: \$? = $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
@@ -17181,7 +17311,7 @@ linux*)
   libsuff=
   case "$host_cpu" in
   x86_64*|s390x*|powerpc64*)
-    echo '#line 17184 "configure"' > conftest.$ac_ext
+    echo '#line 17314 "configure"' > conftest.$ac_ext
     if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
   (eval $ac_compile) 2>&5
   ac_status=$?
@@ -18052,7 +18182,7 @@ else
   lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
   lt_status=$lt_dlunknown
   cat > conftest.$ac_ext <<EOF
-#line 18055 "configure"
+#line 18185 "configure"
 #include "confdefs.h"
 
 #if HAVE_DLFCN_H
@@ -18150,7 +18280,7 @@ else
   lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
   lt_status=$lt_dlunknown
   cat > conftest.$ac_ext <<EOF
-#line 18153 "configure"
+#line 18283 "configure"
 #include "confdefs.h"
 
 #if HAVE_DLFCN_H
@@ -19798,9 +19928,9 @@ echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&
 echo "$as_me: WARNING: $ac_header: in the future, the compiler will take precedence" >&2;}
     (
       cat <<\_ASBOX
-## ------------------------------------------ ##
-## Report this to the AC_PACKAGE_NAME lists.  ##
-## ------------------------------------------ ##
+## -------------------------------------------- ##
+## Report this to http://www.aleksey.com/xmlsec ##
+## -------------------------------------------- ##
 _ASBOX
     ) |
       sed "s/^/$as_me: WARNING:     /" >&2
@@ -20449,9 +20579,9 @@ echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&
 echo "$as_me: WARNING: $ac_header: in the future, the compiler will take precedence" >&2;}
     (
       cat <<\_ASBOX
-## ------------------------------------------ ##
-## Report this to the AC_PACKAGE_NAME lists.  ##
-## ------------------------------------------ ##
+## -------------------------------------------- ##
+## Report this to http://www.aleksey.com/xmlsec ##
+## -------------------------------------------- ##
 _ASBOX
     ) |
       sed "s/^/$as_me: WARNING:     /" >&2
@@ -20599,9 +20729,9 @@ echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&
 echo "$as_me: WARNING: $ac_header: in the future, the compiler will take precedence" >&2;}
     (
       cat <<\_ASBOX
-## ------------------------------------------ ##
-## Report this to the AC_PACKAGE_NAME lists.  ##
-## ------------------------------------------ ##
+## -------------------------------------------- ##
+## Report this to http://www.aleksey.com/xmlsec ##
+## -------------------------------------------- ##
 _ASBOX
     ) |
       sed "s/^/$as_me: WARNING:     /" >&2
@@ -20749,9 +20879,9 @@ echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&
 echo "$as_me: WARNING: $ac_header: in the future, the compiler will take precedence" >&2;}
     (
       cat <<\_ASBOX
-## ------------------------------------------ ##
-## Report this to the AC_PACKAGE_NAME lists.  ##
-## ------------------------------------------ ##
+## -------------------------------------------- ##
+## Report this to http://www.aleksey.com/xmlsec ##
+## -------------------------------------------- ##
 _ASBOX
     ) |
       sed "s/^/$as_me: WARNING:     /" >&2
@@ -20899,9 +21029,9 @@ echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&
 echo "$as_me: WARNING: $ac_header: in the future, the compiler will take precedence" >&2;}
     (
       cat <<\_ASBOX
-## ------------------------------------------ ##
-## Report this to the AC_PACKAGE_NAME lists.  ##
-## ------------------------------------------ ##
+## -------------------------------------------- ##
+## Report this to http://www.aleksey.com/xmlsec ##
+## -------------------------------------------- ##
 _ASBOX
     ) |
       sed "s/^/$as_me: WARNING:     /" >&2
@@ -21049,9 +21179,9 @@ echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&
 echo "$as_me: WARNING: $ac_header: in the future, the compiler will take precedence" >&2;}
     (
       cat <<\_ASBOX
-## ------------------------------------------ ##
-## Report this to the AC_PACKAGE_NAME lists.  ##
-## ------------------------------------------ ##
+## -------------------------------------------- ##
+## Report this to http://www.aleksey.com/xmlsec ##
+## -------------------------------------------- ##
 _ASBOX
     ) |
       sed "s/^/$as_me: WARNING:     /" >&2
@@ -21199,9 +21329,9 @@ echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&
 echo "$as_me: WARNING: $ac_header: in the future, the compiler will take precedence" >&2;}
     (
       cat <<\_ASBOX
-## ------------------------------------------ ##
-## Report this to the AC_PACKAGE_NAME lists.  ##
-## ------------------------------------------ ##
+## -------------------------------------------- ##
+## Report this to http://www.aleksey.com/xmlsec ##
+## -------------------------------------------- ##
 _ASBOX
     ) |
       sed "s/^/$as_me: WARNING:     /" >&2
@@ -21349,9 +21479,9 @@ echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&
 echo "$as_me: WARNING: $ac_header: in the future, the compiler will take precedence" >&2;}
     (
       cat <<\_ASBOX
-## ------------------------------------------ ##
-## Report this to the AC_PACKAGE_NAME lists.  ##
-## ------------------------------------------ ##
+## -------------------------------------------- ##
+## Report this to http://www.aleksey.com/xmlsec ##
+## -------------------------------------------- ##
 _ASBOX
     ) |
       sed "s/^/$as_me: WARNING:     /" >&2
@@ -22479,7 +22609,7 @@ else
   lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
   lt_status=$lt_dlunknown
   cat > conftest.$ac_ext <<EOF
-#line 22482 "configure"
+#line 22612 "configure"
 #include "confdefs.h"
 
 #if HAVE_DLFCN_H
@@ -22783,9 +22913,9 @@ echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&
 echo "$as_me: WARNING: $ac_header: in the future, the compiler will take precedence" >&2;}
     (
       cat <<\_ASBOX
-## ------------------------------------------ ##
-## Report this to the AC_PACKAGE_NAME lists.  ##
-## ------------------------------------------ ##
+## -------------------------------------------- ##
+## Report this to http://www.aleksey.com/xmlsec ##
+## -------------------------------------------- ##
 _ASBOX
     ) |
       sed "s/^/$as_me: WARNING:     /" >&2
@@ -23142,9 +23272,9 @@ echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&
 echo "$as_me: WARNING: $ac_header: in the future, the compiler will take precedence" >&2;}
     (
       cat <<\_ASBOX
-## ------------------------------------------ ##
-## Report this to the AC_PACKAGE_NAME lists.  ##
-## ------------------------------------------ ##
+## -------------------------------------------- ##
+## Report this to http://www.aleksey.com/xmlsec ##
+## -------------------------------------------- ##
 _ASBOX
     ) |
       sed "s/^/$as_me: WARNING:     /" >&2
@@ -23295,9 +23425,9 @@ echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&
 echo "$as_me: WARNING: $ac_header: in the future, the compiler will take precedence" >&2;}
     (
       cat <<\_ASBOX
-## ------------------------------------------ ##
-## Report this to the AC_PACKAGE_NAME lists.  ##
-## ------------------------------------------ ##
+## -------------------------------------------- ##
+## Report this to http://www.aleksey.com/xmlsec ##
+## -------------------------------------------- ##
 _ASBOX
     ) |
       sed "s/^/$as_me: WARNING:     /" >&2
@@ -23446,9 +23576,9 @@ echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&
 echo "$as_me: WARNING: $ac_header: in the future, the compiler will take precedence" >&2;}
     (
       cat <<\_ASBOX
-## ------------------------------------------ ##
-## Report this to the AC_PACKAGE_NAME lists.  ##
-## ------------------------------------------ ##
+## -------------------------------------------- ##
+## Report this to http://www.aleksey.com/xmlsec ##
+## -------------------------------------------- ##
 _ASBOX
     ) |
       sed "s/^/$as_me: WARNING:     /" >&2
@@ -24597,12 +24727,11 @@ fi
     fi
 fi
 
-LIBXML_MIN_VERSION="2.4.2"
+LIBXML_MIN_VERSION="2.6.12"
 LIBXML_CONFIG="xml2-config"
 LIBXML_CFLAGS=""
 LIBXML_LIBS=""
 LIBXML_FOUND="no"
-LIBXML262_FOUND="no"
 
 # Check whether --with-libxml or --without-libxml was given.
 if test "${with_libxml+set}" = set; then
@@ -24612,8 +24741,8 @@ fi;
 if test "z$with_libxml" = "zno" ; then
     echo "$as_me:$LINENO: checking for libxml2 libraries >= $LIBXML_MIN_VERSION" >&5
 echo $ECHO_N "checking for libxml2 libraries >= $LIBXML_MIN_VERSION... $ECHO_C" >&6
-    { { echo "$as_me:$LINENO: error: libxml2 >= $LIBXML_MIN_VERSION is required for $PACKAGE" >&5
-echo "$as_me: error: libxml2 >= $LIBXML_MIN_VERSION is required for $PACKAGE" >&2;}
+    { { echo "$as_me:$LINENO: error: libxml2 >= $LIBXML_MIN_VERSION is required for $XMLSEC_PACKAGE" >&5
+echo "$as_me: error: libxml2 >= $LIBXML_MIN_VERSION is required for $XMLSEC_PACKAGE" >&2;}
    { (exit 1); exit 1; }; }
 elif test "z$with_libxml" = "z" -a "z$PKG_CONFIG_ENABLED" = "zyes" ; then
 
@@ -24712,102 +24841,6 @@ echo "${ECHO_T}$LIBXML_LIBS" >&6
      LIBXML_FOUND=no
   fi
 
-
-  succeeded=no
-
-  if test -z "$PKG_CONFIG"; then
-    # Extract the first word of "pkg-config", so it can be a program name with args.
-set dummy pkg-config; ac_word=$2
-echo "$as_me:$LINENO: checking for $ac_word" >&5
-echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
-if test "${ac_cv_path_PKG_CONFIG+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&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 $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
-    ac_cv_path_PKG_CONFIG="$as_dir/$ac_word$ac_exec_ext"
-    echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
-    break 2
-  fi
-done
-done
-
-  test -z "$ac_cv_path_PKG_CONFIG" && ac_cv_path_PKG_CONFIG="no"
-  ;;
-esac
-fi
-PKG_CONFIG=$ac_cv_path_PKG_CONFIG
-
-if test -n "$PKG_CONFIG"; then
-  echo "$as_me:$LINENO: result: $PKG_CONFIG" >&5
-echo "${ECHO_T}$PKG_CONFIG" >&6
-else
-  echo "$as_me:$LINENO: result: no" >&5
-echo "${ECHO_T}no" >&6
-fi
-
-  fi
-
-  if test "$PKG_CONFIG" = "no" ; then
-     echo "*** The pkg-config script could not be found. Make sure it is"
-     echo "*** in your path, or set the PKG_CONFIG environment variable"
-     echo "*** to the full path to pkg-config."
-     echo "*** Or see http://www.freedesktop.org/software/pkgconfig to get pkg-config."
-  else
-     PKG_CONFIG_MIN_VERSION=0.9.0
-     if $PKG_CONFIG --atleast-pkgconfig-version $PKG_CONFIG_MIN_VERSION; then
-        echo "$as_me:$LINENO: checking for libxml-2.0 >= 2.6.2" >&5
-echo $ECHO_N "checking for libxml-2.0 >= 2.6.2... $ECHO_C" >&6
-
-        if $PKG_CONFIG --exists "libxml-2.0 >= 2.6.2" ; then
-            echo "$as_me:$LINENO: result: yes" >&5
-echo "${ECHO_T}yes" >&6
-            succeeded=yes
-
-            echo "$as_me:$LINENO: checking LIBXML262_CFLAGS" >&5
-echo $ECHO_N "checking LIBXML262_CFLAGS... $ECHO_C" >&6
-            LIBXML262_CFLAGS=`$PKG_CONFIG --cflags "libxml-2.0 >= 2.6.2"`
-            echo "$as_me:$LINENO: result: $LIBXML262_CFLAGS" >&5
-echo "${ECHO_T}$LIBXML262_CFLAGS" >&6
-
-            echo "$as_me:$LINENO: checking LIBXML262_LIBS" >&5
-echo $ECHO_N "checking LIBXML262_LIBS... $ECHO_C" >&6
-            LIBXML262_LIBS=`$PKG_CONFIG --libs "libxml-2.0 >= 2.6.2"`
-            echo "$as_me:$LINENO: result: $LIBXML262_LIBS" >&5
-echo "${ECHO_T}$LIBXML262_LIBS" >&6
-        else
-            LIBXML262_CFLAGS=""
-            LIBXML262_LIBS=""
-            ## If we have a custom action on failure, don't print errors, but
-            ## do set a variable so people can do so.
-            LIBXML262_PKG_ERRORS=`$PKG_CONFIG --errors-to-stdout --print-errors "libxml-2.0 >= 2.6.2"`
-
-        fi
-
-
-
-     else
-        echo "*** Your version of pkg-config is too old. You need version $PKG_CONFIG_MIN_VERSION or newer."
-        echo "*** See http://www.freedesktop.org/software/pkgconfig"
-     fi
-  fi
-
-  if test $succeeded = yes; then
-     LIBXML262_FOUND=yes
-  else
-     LIBXML262_FOUND=no
-  fi
-
 fi
 echo "$as_me:$LINENO: checking libxml2 $with_libxml  $LIBXML_FOUND  " >&5
 echo $ECHO_N "checking libxml2 $with_libxml  $LIBXML_FOUND  ... $ECHO_C" >&6
@@ -24830,27 +24863,15 @@ echo "$as_me: error: Could not find libxml2 anywhere (see config.log for details
         LIBXML_LIBS="`$LIBXML_CONFIG --libs`"
         LIBXML_CFLAGS="`$LIBXML_CONFIG --cflags`"
 	LIBXML_FOUND="yes"
-	if test "$vers" -ge "2006002" ;  then
-	    LIBXML262_FOUND="yes"
-	fi
         echo "$as_me:$LINENO: result: yes ('$LIBXML_VERSION')" >&5
 echo "${ECHO_T}yes ('$LIBXML_VERSION')" >&6
     else
-        { { echo "$as_me:$LINENO: error: You need at least libxml2 $LIBXML_MIN_VERSION for this version of $PACKAGE" >&5
-echo "$as_me: error: You need at least libxml2 $LIBXML_MIN_VERSION for this version of $PACKAGE" >&2;}
+        { { echo "$as_me:$LINENO: error: You need at least libxml2 $LIBXML_MIN_VERSION for this version of $XMLSEC_PACKAGE" >&5
+echo "$as_me: error: You need at least libxml2 $LIBXML_MIN_VERSION for this version of $XMLSEC_PACKAGE" >&2;}
    { (exit 1); exit 1; }; }
     fi
 fi
 
-if test "z$LIBXML_FOUND" = "zyes" ; then
-    if test "z$LIBXML262_FOUND" = "zyes" ; then
-	XMLSEC_DEFINES="-DXMLSEC_LIBXML_260=1 $XMLSEC_DEFINES"
-    elif test "z$ac_cv_func_snprintf" != "zyes" -o "z$ac_cv_func_vsnprintf" != "zyes" ; then
-	{ { echo "$as_me:$LINENO: error: Functions snprintf and/or vsnprintf are not available on your platform. You need at least libxml2 2.6.2 for this version of $PACKAGE" >&5
-echo "$as_me: error: Functions snprintf and/or vsnprintf are not available on your platform. You need at least libxml2 2.6.2 for this version of $PACKAGE" >&2;}
-   { (exit 1); exit 1; }; }
-    fi
-fi
 
 
 
@@ -24998,8 +25019,8 @@ echo "${ECHO_T}no" >&6
     	    echo "$as_me:$LINENO: result: \"yes ('$LIBXSLT_VERSION')\"" >&5
 echo "${ECHO_T}\"yes ('$LIBXSLT_VERSION')\"" >&6
 	else
-    	    { { echo "$as_me:$LINENO: error: You need at least libxslt $LIBXSLT_MIN_VERSION for this version of $PACKAGE" >&5
-echo "$as_me: error: You need at least libxslt $LIBXSLT_MIN_VERSION for this version of $PACKAGE" >&2;}
+    	    { { echo "$as_me:$LINENO: error: You need at least libxslt $LIBXSLT_MIN_VERSION for this version of $XMLSEC_PACKAGE" >&5
+echo "$as_me: error: You need at least libxslt $LIBXSLT_MIN_VERSION for this version of $XMLSEC_PACKAGE" >&2;}
    { (exit 1); exit 1; }; }
 	fi
     fi
@@ -25033,7 +25054,7 @@ OPENSSL_MIN_VERSION="0.9.6"
 OPENSSL_VERSION=""
 OPENSSL_CFLAGS=""
 OPENSSL_LIBS=""
-OPENSSL_CRYPTO_LIB="$PACKAGE-openssl"
+OPENSSL_CRYPTO_LIB="$XMLSEC_PACKAGE-openssl"
 OPENSSL_FOUND=no
 
 # Check whether --with-openssl or --without-openssl was given.
@@ -25049,13 +25070,14 @@ echo $ECHO_N "checking for openssl libraries >= $OPENSSL_MIN_VERSION... $ECHO_C"
 echo "${ECHO_T}no" >&6
 elif test "z$with_openssl" != "z" ; then
     OPENSSL_CFLAGS="$OPENSSL_CFLAGS -I$with_openssl/include"
-    if test -f "$with_openssl/lib/libcrypto.so" ; then
-	OPENSSL_LIBS="-L$with_openssl/lib -lcrypto"
+    if test -f "$with_openssl/lib/libcrypto$shrext" ; then
+	OPENSSL_LIBS="-L$with_openssl/lib -lcrypto -ldl"
     else
-	OPENSSL_LIBS="$with_openssl/lib/libcrypto.a"
+	OPENSSL_LIBS="$with_openssl/lib/libcrypto.a -ldl"
     fi
     OPENSSL_FOUND="yes"
 elif test "z$PKG_CONFIG_ENABLED" = "zyes" ; then
+    if test "z$OPENSSL_VERSION" = "z" ; then
 
   succeeded=no
 
@@ -25110,23 +25132,23 @@ fi
   else
      PKG_CONFIG_MIN_VERSION=0.9.0
      if $PKG_CONFIG --atleast-pkgconfig-version $PKG_CONFIG_MIN_VERSION; then
-        echo "$as_me:$LINENO: checking for openssl >= $OPENSSL_MIN_VERSION" >&5
-echo $ECHO_N "checking for openssl >= $OPENSSL_MIN_VERSION... $ECHO_C" >&6
+        echo "$as_me:$LINENO: checking for openssl >= 0.9.8" >&5
+echo $ECHO_N "checking for openssl >= 0.9.8... $ECHO_C" >&6
 
-        if $PKG_CONFIG --exists "openssl >= $OPENSSL_MIN_VERSION" ; then
+        if $PKG_CONFIG --exists "openssl >= 0.9.8" ; then
             echo "$as_me:$LINENO: result: yes" >&5
 echo "${ECHO_T}yes" >&6
             succeeded=yes
 
             echo "$as_me:$LINENO: checking OPENSSL_CFLAGS" >&5
 echo $ECHO_N "checking OPENSSL_CFLAGS... $ECHO_C" >&6
-            OPENSSL_CFLAGS=`$PKG_CONFIG --cflags "openssl >= $OPENSSL_MIN_VERSION"`
+            OPENSSL_CFLAGS=`$PKG_CONFIG --cflags "openssl >= 0.9.8"`
             echo "$as_me:$LINENO: result: $OPENSSL_CFLAGS" >&5
 echo "${ECHO_T}$OPENSSL_CFLAGS" >&6
 
             echo "$as_me:$LINENO: checking OPENSSL_LIBS" >&5
 echo $ECHO_N "checking OPENSSL_LIBS... $ECHO_C" >&6
-            OPENSSL_LIBS=`$PKG_CONFIG --libs "openssl >= $OPENSSL_MIN_VERSION"`
+            OPENSSL_LIBS=`$PKG_CONFIG --libs "openssl >= 0.9.8"`
             echo "$as_me:$LINENO: result: $OPENSSL_LIBS" >&5
 echo "${ECHO_T}$OPENSSL_LIBS" >&6
         else
@@ -25134,7 +25156,7 @@ echo "${ECHO_T}$OPENSSL_LIBS" >&6
             OPENSSL_LIBS=""
             ## If we have a custom action on failure, don't print errors, but
             ## do set a variable so people can do so.
-            OPENSSL_PKG_ERRORS=`$PKG_CONFIG --errors-to-stdout --print-errors "openssl >= $OPENSSL_MIN_VERSION"`
+            OPENSSL_PKG_ERRORS=`$PKG_CONFIG --errors-to-stdout --print-errors "openssl >= 0.9.8"`
 
         fi
 
@@ -25147,11 +25169,14 @@ echo "${ECHO_T}$OPENSSL_LIBS" >&6
   fi
 
   if test $succeeded = yes; then
-     OPENSSL_FOUND=yes
+     OPENSSL_VERSION="0.9.8"
   else
-     OPENSSL_FOUND=no
+     OPENSSL_VERSION=""
   fi
 
+    fi
+
+    if test "z$OPENSSL_VERSION" = "z" ; then
 
   succeeded=no
 
@@ -25214,23 +25239,23 @@ echo $ECHO_N "checking for openssl >= 0.9.7... $ECHO_C" >&6
 echo "${ECHO_T}yes" >&6
             succeeded=yes
 
-            echo "$as_me:$LINENO: checking OPENSSL097_CFLAGS" >&5
-echo $ECHO_N "checking OPENSSL097_CFLAGS... $ECHO_C" >&6
-            OPENSSL097_CFLAGS=`$PKG_CONFIG --cflags "openssl >= 0.9.7"`
-            echo "$as_me:$LINENO: result: $OPENSSL097_CFLAGS" >&5
-echo "${ECHO_T}$OPENSSL097_CFLAGS" >&6
-
-            echo "$as_me:$LINENO: checking OPENSSL097_LIBS" >&5
-echo $ECHO_N "checking OPENSSL097_LIBS... $ECHO_C" >&6
-            OPENSSL097_LIBS=`$PKG_CONFIG --libs "openssl >= 0.9.7"`
-            echo "$as_me:$LINENO: result: $OPENSSL097_LIBS" >&5
-echo "${ECHO_T}$OPENSSL097_LIBS" >&6
+            echo "$as_me:$LINENO: checking OPENSSL_CFLAGS" >&5
+echo $ECHO_N "checking OPENSSL_CFLAGS... $ECHO_C" >&6
+            OPENSSL_CFLAGS=`$PKG_CONFIG --cflags "openssl >= 0.9.7"`
+            echo "$as_me:$LINENO: result: $OPENSSL_CFLAGS" >&5
+echo "${ECHO_T}$OPENSSL_CFLAGS" >&6
+
+            echo "$as_me:$LINENO: checking OPENSSL_LIBS" >&5
+echo $ECHO_N "checking OPENSSL_LIBS... $ECHO_C" >&6
+            OPENSSL_LIBS=`$PKG_CONFIG --libs "openssl >= 0.9.7"`
+            echo "$as_me:$LINENO: result: $OPENSSL_LIBS" >&5
+echo "${ECHO_T}$OPENSSL_LIBS" >&6
         else
-            OPENSSL097_CFLAGS=""
-            OPENSSL097_LIBS=""
+            OPENSSL_CFLAGS=""
+            OPENSSL_LIBS=""
             ## If we have a custom action on failure, don't print errors, but
             ## do set a variable so people can do so.
-            OPENSSL097_PKG_ERRORS=`$PKG_CONFIG --errors-to-stdout --print-errors "openssl >= 0.9.7"`
+            OPENSSL_PKG_ERRORS=`$PKG_CONFIG --errors-to-stdout --print-errors "openssl >= 0.9.7"`
 
         fi
 
@@ -25245,9 +25270,113 @@ echo "${ECHO_T}$OPENSSL097_LIBS" >&6
   if test $succeeded = yes; then
      OPENSSL_VERSION="0.9.7"
   else
-     OPENSSL_VERSION="0.9.6"
+     OPENSSL_VERSION=""
+  fi
+
+    fi
+
+    if test "z$OPENSSL_VERSION" = "z" ; then
+
+  succeeded=no
+
+  if test -z "$PKG_CONFIG"; then
+    # Extract the first word of "pkg-config", so it can be a program name with args.
+set dummy pkg-config; ac_word=$2
+echo "$as_me:$LINENO: checking for $ac_word" >&5
+echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
+if test "${ac_cv_path_PKG_CONFIG+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&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 $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+    ac_cv_path_PKG_CONFIG="$as_dir/$ac_word$ac_exec_ext"
+    echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+done
+
+  test -z "$ac_cv_path_PKG_CONFIG" && ac_cv_path_PKG_CONFIG="no"
+  ;;
+esac
+fi
+PKG_CONFIG=$ac_cv_path_PKG_CONFIG
+
+if test -n "$PKG_CONFIG"; then
+  echo "$as_me:$LINENO: result: $PKG_CONFIG" >&5
+echo "${ECHO_T}$PKG_CONFIG" >&6
+else
+  echo "$as_me:$LINENO: result: no" >&5
+echo "${ECHO_T}no" >&6
+fi
+
+  fi
+
+  if test "$PKG_CONFIG" = "no" ; then
+     echo "*** The pkg-config script could not be found. Make sure it is"
+     echo "*** in your path, or set the PKG_CONFIG environment variable"
+     echo "*** to the full path to pkg-config."
+     echo "*** Or see http://www.freedesktop.org/software/pkgconfig to get pkg-config."
+  else
+     PKG_CONFIG_MIN_VERSION=0.9.0
+     if $PKG_CONFIG --atleast-pkgconfig-version $PKG_CONFIG_MIN_VERSION; then
+        echo "$as_me:$LINENO: checking for openssl >= $OPENSSL_MIN_VERSION" >&5
+echo $ECHO_N "checking for openssl >= $OPENSSL_MIN_VERSION... $ECHO_C" >&6
+
+        if $PKG_CONFIG --exists "openssl >= $OPENSSL_MIN_VERSION" ; then
+            echo "$as_me:$LINENO: result: yes" >&5
+echo "${ECHO_T}yes" >&6
+            succeeded=yes
+
+            echo "$as_me:$LINENO: checking OPENSSL_CFLAGS" >&5
+echo $ECHO_N "checking OPENSSL_CFLAGS... $ECHO_C" >&6
+            OPENSSL_CFLAGS=`$PKG_CONFIG --cflags "openssl >= $OPENSSL_MIN_VERSION"`
+            echo "$as_me:$LINENO: result: $OPENSSL_CFLAGS" >&5
+echo "${ECHO_T}$OPENSSL_CFLAGS" >&6
+
+            echo "$as_me:$LINENO: checking OPENSSL_LIBS" >&5
+echo $ECHO_N "checking OPENSSL_LIBS... $ECHO_C" >&6
+            OPENSSL_LIBS=`$PKG_CONFIG --libs "openssl >= $OPENSSL_MIN_VERSION"`
+            echo "$as_me:$LINENO: result: $OPENSSL_LIBS" >&5
+echo "${ECHO_T}$OPENSSL_LIBS" >&6
+        else
+            OPENSSL_CFLAGS=""
+            OPENSSL_LIBS=""
+            ## If we have a custom action on failure, don't print errors, but
+            ## do set a variable so people can do so.
+            OPENSSL_PKG_ERRORS=`$PKG_CONFIG --errors-to-stdout --print-errors "openssl >= $OPENSSL_MIN_VERSION"`
+
+        fi
+
+
+
+     else
+        echo "*** Your version of pkg-config is too old. You need version $PKG_CONFIG_MIN_VERSION or newer."
+        echo "*** See http://www.freedesktop.org/software/pkgconfig"
+     fi
+  fi
+
+  if test $succeeded = yes; then
+     OPENSSL_VERSION="$OPENSSL_MIN_VERSION"
+  else
+     OPENSSL_VERSION=""
   fi
 
+    fi
+
+    if test "z$OPENSSL_VERSION" != "z" ; then
+	OPENSSL_FOUND="yes"
+    fi
 fi
 
 if test "z$OPENSSL_FOUND" = "zno" ; then
@@ -25269,9 +25398,9 @@ if test "z$OPENSSL_FOUND" = "zno" ; then
     for dir in $ac_openssl_lib_dir ; do
 	if test -f $dir/libcrypto.a ; then
 	    	    if test "z$dir" = "z/usr/lib" ; then
-		OPENSSL_LIBS="-lcrypto"
+		OPENSSL_LIBS="-lcrypto -ldl"
 	    else
-		OPENSSL_LIBS="-L$dir -lcrypto"
+		OPENSSL_LIBS="-L$dir -lcrypto -ldl"
 	    fi
 	    OPENSSL_LIBS_FOUND="yes"
 	    ac_found_openssl_lib_dir=$dir
@@ -25284,47 +25413,50 @@ if test "z$OPENSSL_FOUND" = "zno" ; then
     fi
 fi
 
-if test "z$OPENSSL_FOUND" = "zyes" -a "zOPENSSL_VERSION" = "z" ; then
+if test "z$OPENSSL_FOUND" = "zyes" -a "z$OPENSSL_VERSION" = "z" ; then
     echo "$as_me:$LINENO: checking for openssl libraries >= $OPENSSL_MIN_VERSION" >&5
 echo $ECHO_N "checking for openssl libraries >= $OPENSSL_MIN_VERSION... $ECHO_C" >&6
 
         OLD_CPPFLAGS=$CPPFLAGS
     CPPFLAGS="$OPENSSL_CFLAGS"
-    cat >conftest.$ac_ext <<_ACEOF
+
+    if test "z$OPENSSL_VERSION" = "z" ; then
+        cat >conftest.$ac_ext <<_ACEOF
 /* confdefs.h.  */
 _ACEOF
 cat confdefs.h >>conftest.$ac_ext
 cat >>conftest.$ac_ext <<_ACEOF
 /* end confdefs.h.  */
 
-	#include <openssl/opensslv.h>
-	#if OPENSSL_VERSION_NUMBER >= 0x00906000L
-	    yes
-	#endif
+    	    #include <openssl/opensslv.h>
+	    #if OPENSSL_VERSION_NUMBER >= 0x00908000L
+		yes
+	    #endif
 
 _ACEOF
 if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
   $EGREP "yes" >/dev/null 2>&1; then
 
-	OPENSSL_FOUND="yes"
+	    OPENSSL_VERSION="0.9.8"
 
 else
 
-	OPENSSL_FOUND="no"
+	    OPENSSL_VERSION=""
 
 fi
 rm -f conftest*
 
+    fi
 
-    if test "z$OPENSSL_FOUND" = "zyes" ; then
-	cat >conftest.$ac_ext <<_ACEOF
+    if test "z$OPENSSL_VERSION" = "z" ; then
+        cat >conftest.$ac_ext <<_ACEOF
 /* confdefs.h.  */
 _ACEOF
 cat confdefs.h >>conftest.$ac_ext
 cat >>conftest.$ac_ext <<_ACEOF
 /* end confdefs.h.  */
 
-	    #include <openssl/opensslv.h>
+    	    #include <openssl/opensslv.h>
 	    #if OPENSSL_VERSION_NUMBER >= 0x00907000L
 		yes
 	    #endif
@@ -25337,25 +25469,56 @@ if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
 
 else
 
-	    OPENSSL_VERSION="0.9.6"
+	    OPENSSL_VERSION=""
 
 fi
 rm -f conftest*
 
-	echo "$as_me:$LINENO: result: Found OpenSSL version '$OPENSSL_VERSION'" >&5
-echo "${ECHO_T}Found OpenSSL version '$OPENSSL_VERSION'" >&6
-    else
-	echo "$as_me:$LINENO: result: no" >&5
+    fi
+
+    if test "z$OPENSSL_VERSION" = "z" ; then
+        cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+
+    	    #include <openssl/opensslv.h>
+	    #if OPENSSL_VERSION_NUMBER >= 0x00906000L
+		yes
+	    #endif
+
+_ACEOF
+if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
+  $EGREP "yes" >/dev/null 2>&1; then
+
+	    OPENSSL_VERSION="0.9.6"
+
+else
+
+	    echo "$as_me:$LINENO: result: no" >&5
 echo "${ECHO_T}no" >&6
+
+fi
+rm -f conftest*
+
     fi
+
     CPPFLAGS=$OLD_CPPFLAGS
 fi
 
 if test "z$OPENSSL_FOUND" = "zyes" ; then
     XMLSEC_NO_OPENSSL="0"
-    if test "zOPENSSL_VERSION" = "z0.9.6" ; then
+    if test "z$OPENSSL_VERSION" = "z0.9.6" ; then
 	OPENSSL_CFLAGS="$OPENSSL_CFLAGS -DXMLSEC_OPENSSL_096=1"
     fi
+    if test "z$OPENSSL_VERSION" = "z0.9.7" ; then
+	OPENSSL_CFLAGS="$OPENSSL_CFLAGS -DXMLSEC_OPENSSL_097=1"
+    fi
+    if test "z$OPENSSL_VERSION" = "z0.9.8" ; then
+	OPENSSL_CFLAGS="$OPENSSL_CFLAGS -DXMLSEC_OPENSSL_098=1"
+    fi
     OPENSSL_CFLAGS="$OPENSSL_CFLAGS -DXMLSEC_CRYPTO_OPENSSL=1"
 
         if test "z$XMLSEC_CRYPTO" = "z" ; then
@@ -25392,7 +25555,7 @@ GNUTLS_NEW_MIN_VERSION="1.0.0"
 GNUTLS_VERSION=""
 GNUTLS_CFLAGS=""
 GNUTLS_LIBS=""
-GNUTLS_CRYPTO_LIB="$PACKAGE-gnutls"
+GNUTLS_CRYPTO_LIB="$XMLSEC_PACKAGE-gnutls"
 GNUTLS_FOUND="no"
 
 # Check whether --with-gnutls or --without-gnutls was given.
@@ -25637,8 +25800,8 @@ echo "${ECHO_T}no" >&6
 	    echo "$as_me:$LINENO: result: yes" >&5
 echo "${ECHO_T}yes" >&6
 	else
-    	    { { echo "$as_me:$LINENO: error: You need at least gnutls $GNUTLS_MIN_VERSION for this version of $PACKAGE" >&5
-echo "$as_me: error: You need at least gnutls $GNUTLS_MIN_VERSION for this version of $PACKAGE" >&2;}
+    	    { { echo "$as_me:$LINENO: error: You need at least gnutls $GNUTLS_MIN_VERSION for this version of $XMLSEC_PACKAGE" >&5
+echo "$as_me: error: You need at least gnutls $GNUTLS_MIN_VERSION for this version of $XMLSEC_PACKAGE" >&2;}
    { (exit 1); exit 1; }; }
 	fi
     fi
@@ -25684,7 +25847,7 @@ NSS_CFLAGS=""
 NSS_LIBS=""
 NSS_LIBS_LIST="-lnss3 -lsmime3"
 NSPR_LIBS_LIST="-lnspr4 -lplds4 -lplc4"
-NSS_CRYPTO_LIB="$PACKAGE-nss"
+NSS_CRYPTO_LIB="$XMLSEC_PACKAGE-nss"
 NSS_FOUND="no"
 
 
@@ -25853,7 +26016,7 @@ echo $ECHO_N "checking for nspr libraries >= $NSPR_MIN_VERSION... $ECHO_C" >&6
 	done
 
 	for dir in $ac_nss_lib_dir ; do
-    	    if test -f $dir/libnspr4.so ; then
+    	    if test -f $dir/libnspr4$shrext ; then
 		        	if test "z$dir" = "z/usr/lib" ; then
             	    NSPR_LIBS="$NSPR_LIBS_LIST"
     		else
@@ -25939,7 +26102,7 @@ echo $ECHO_N "checking for nss libraries >= $NSS_MIN_VERSION... $ECHO_C" >&6
         done
 
         for dir in $ac_nss_lib_dir ; do
-    	    if test -f $dir/libnss3.so ; then
+    	    if test -f $dir/libnss3$shrext ; then
         	    		if test "z$dir" = "z/usr/lib" ; then
         	    NSS_LIBS="$NSS_LIBS_LIST"
                 else
@@ -26040,40 +26203,39 @@ fi
 echo "$as_me:$LINENO: checking for crypto library" >&5
 echo $ECHO_N "checking for crypto library... $ECHO_C" >&6
 if test "z$XMLSEC_CRYPTO" = "z" ;  then
-    { { echo "$as_me:$LINENO: error: At least one crypto library should exist for $PACKAGE" >&5
-echo "$as_me: error: At least one crypto library should exist for $PACKAGE" >&2;}
+    { { echo "$as_me:$LINENO: error: At least one crypto library should exist for $XMLSEC_PACKAGE" >&5
+echo "$as_me: error: At least one crypto library should exist for $XMLSEC_PACKAGE" >&2;}
    { (exit 1); exit 1; }; }
 else
     echo "$as_me:$LINENO: result: yes ('$XMLSEC_CRYPTO')" >&5
 echo "${ECHO_T}yes ('$XMLSEC_CRYPTO')" >&6
 fi
 
-
-echo "$as_me:$LINENO: checking for SHA1 support" >&5
-echo $ECHO_N "checking for SHA1 support... $ECHO_C" >&6
-# Check whether --enable-sha1 or --disable-sha1 was given.
-if test "${enable_sha1+set}" = set; then
-  enableval="$enable_sha1"
+echo "$as_me:$LINENO: checking for MD5 support" >&5
+echo $ECHO_N "checking for MD5 support... $ECHO_C" >&6
+# Check whether --enable-md5 or --disable-md5 was given.
+if test "${enable_md5+set}" = set; then
+  enableval="$enable_md5"
 
 fi;
-if test "z$enable_sha1" = "zno" ; then
-    XMLSEC_DEFINES="$XMLSEC_DEFINES -DXMLSEC_NO_SHA1=1"
-    XMLSEC_NO_SHA1="1"
+if test "z$enable_md5" = "zno" ; then
+    XMLSEC_DEFINES="$XMLSEC_DEFINES -DXMLSEC_NO_MD5=1"
+    XMLSEC_NO_MD5="1"
     echo "$as_me:$LINENO: result: no" >&5
 echo "${ECHO_T}no" >&6
 else
-    XMLSEC_NO_SHA1="0"
+    XMLSEC_NO_MD5="0"
     echo "$as_me:$LINENO: result: yes" >&5
 echo "${ECHO_T}yes" >&6
 fi
 
 
-if test "z$XMLSEC_NO_SHA1" = "z1"; then
-  XMLSEC_NO_SHA1_TRUE=
-  XMLSEC_NO_SHA1_FALSE='#'
+if test "z$XMLSEC_NO_MD5" = "z1"; then
+  XMLSEC_NO_MD5_TRUE=
+  XMLSEC_NO_MD5_FALSE='#'
 else
-  XMLSEC_NO_SHA1_TRUE='#'
-  XMLSEC_NO_SHA1_FALSE=
+  XMLSEC_NO_MD5_TRUE='#'
+  XMLSEC_NO_MD5_FALSE=
 fi
 
 
@@ -26107,6 +26269,152 @@ fi
 
 
 
+echo "$as_me:$LINENO: checking for SHA1 support" >&5
+echo $ECHO_N "checking for SHA1 support... $ECHO_C" >&6
+# Check whether --enable-sha1 or --disable-sha1 was given.
+if test "${enable_sha1+set}" = set; then
+  enableval="$enable_sha1"
+
+fi;
+if test "z$enable_sha1" = "zno" ; then
+    XMLSEC_DEFINES="$XMLSEC_DEFINES -DXMLSEC_NO_SHA1=1"
+    XMLSEC_NO_SHA1="1"
+    echo "$as_me:$LINENO: result: no" >&5
+echo "${ECHO_T}no" >&6
+else
+    XMLSEC_NO_SHA1="0"
+    echo "$as_me:$LINENO: result: yes" >&5
+echo "${ECHO_T}yes" >&6
+fi
+
+
+if test "z$XMLSEC_NO_SHA1" = "z1"; then
+  XMLSEC_NO_SHA1_TRUE=
+  XMLSEC_NO_SHA1_FALSE='#'
+else
+  XMLSEC_NO_SHA1_TRUE='#'
+  XMLSEC_NO_SHA1_FALSE=
+fi
+
+
+
+echo "$as_me:$LINENO: checking for SHA224 support" >&5
+echo $ECHO_N "checking for SHA224 support... $ECHO_C" >&6
+# Check whether --enable-sha224 or --disable-sha224 was given.
+if test "${enable_sha224+set}" = set; then
+  enableval="$enable_sha224"
+
+fi;
+if test "z$enable_sha224" = "zno" ; then
+    XMLSEC_DEFINES="$XMLSEC_DEFINES -DXMLSEC_NO_SHA224=1"
+    XMLSEC_NO_SHA224="1"
+    echo "$as_me:$LINENO: result: no" >&5
+echo "${ECHO_T}no" >&6
+else
+    XMLSEC_NO_SHA224="0"
+    echo "$as_me:$LINENO: result: yes" >&5
+echo "${ECHO_T}yes" >&6
+fi
+
+
+if test "z$XMLSEC_NO_SHA224" = "z1"; then
+  XMLSEC_NO_SHA224_TRUE=
+  XMLSEC_NO_SHA224_FALSE='#'
+else
+  XMLSEC_NO_SHA224_TRUE='#'
+  XMLSEC_NO_SHA224_FALSE=
+fi
+
+
+
+echo "$as_me:$LINENO: checking for SHA256 support" >&5
+echo $ECHO_N "checking for SHA256 support... $ECHO_C" >&6
+# Check whether --enable-sha256 or --disable-sha256 was given.
+if test "${enable_sha256+set}" = set; then
+  enableval="$enable_sha256"
+
+fi;
+if test "z$enable_sha256" = "zno" ; then
+    XMLSEC_DEFINES="$XMLSEC_DEFINES -DXMLSEC_NO_SHA256=1"
+    XMLSEC_NO_SHA256="1"
+    echo "$as_me:$LINENO: result: no" >&5
+echo "${ECHO_T}no" >&6
+else
+    XMLSEC_NO_SHA256="0"
+    echo "$as_me:$LINENO: result: yes" >&5
+echo "${ECHO_T}yes" >&6
+fi
+
+
+if test "z$XMLSEC_NO_SHA256" = "z1"; then
+  XMLSEC_NO_SHA256_TRUE=
+  XMLSEC_NO_SHA256_FALSE='#'
+else
+  XMLSEC_NO_SHA256_TRUE='#'
+  XMLSEC_NO_SHA256_FALSE=
+fi
+
+
+
+echo "$as_me:$LINENO: checking for SHA384 support" >&5
+echo $ECHO_N "checking for SHA384 support... $ECHO_C" >&6
+# Check whether --enable-sha384 or --disable-sha384 was given.
+if test "${enable_sha384+set}" = set; then
+  enableval="$enable_sha384"
+
+fi;
+if test "z$enable_sha384" = "zno" ; then
+    XMLSEC_DEFINES="$XMLSEC_DEFINES -DXMLSEC_NO_SHA384=1"
+    XMLSEC_NO_SHA384="1"
+    echo "$as_me:$LINENO: result: no" >&5
+echo "${ECHO_T}no" >&6
+else
+    XMLSEC_NO_SHA384="0"
+    echo "$as_me:$LINENO: result: yes" >&5
+echo "${ECHO_T}yes" >&6
+fi
+
+
+if test "z$XMLSEC_NO_SHA384" = "z1"; then
+  XMLSEC_NO_SHA384_TRUE=
+  XMLSEC_NO_SHA384_FALSE='#'
+else
+  XMLSEC_NO_SHA384_TRUE='#'
+  XMLSEC_NO_SHA384_FALSE=
+fi
+
+
+
+echo "$as_me:$LINENO: checking for SHA512 support" >&5
+echo $ECHO_N "checking for SHA512 support... $ECHO_C" >&6
+# Check whether --enable-sha512 or --disable-sha512 was given.
+if test "${enable_sha512+set}" = set; then
+  enableval="$enable_sha512"
+
+fi;
+if test "z$enable_sha512" = "zno" ; then
+    XMLSEC_DEFINES="$XMLSEC_DEFINES -DXMLSEC_NO_SHA512=1"
+    XMLSEC_NO_SHA512="1"
+    echo "$as_me:$LINENO: result: no" >&5
+echo "${ECHO_T}no" >&6
+else
+    XMLSEC_NO_SHA512="0"
+    echo "$as_me:$LINENO: result: yes" >&5
+echo "${ECHO_T}yes" >&6
+fi
+
+
+if test "z$XMLSEC_NO_SHA512" = "z1"; then
+  XMLSEC_NO_SHA512_TRUE=
+  XMLSEC_NO_SHA512_FALSE='#'
+else
+  XMLSEC_NO_SHA512_TRUE='#'
+  XMLSEC_NO_SHA512_FALSE=
+fi
+
+
+
+
 echo "$as_me:$LINENO: checking for HMAC support" >&5
 echo $ECHO_N "checking for HMAC support... $ECHO_C" >&6
 # Check whether --enable-hmac or --disable-hmac was given.
@@ -26600,7 +26908,7 @@ XMLSEC_LIBS="-L${libdir} -l$XMLSEC_CRYPTO_LIB $XMLSEC_CORE_LIBS $LIBXML_LIBS $LI
 
 XMLSEC_CRYPTO_PC_FILES_LIST=""
 for i in $XMLSEC_CRYPTO_LIST ; do
-    XMLSEC_CRYPTO_PC_FILES_LIST="$XMLSEC_CRYPTO_PC_FILES_LIST $PACKAGE-$i.pc"
+    XMLSEC_CRYPTO_PC_FILES_LIST="$XMLSEC_CRYPTO_PC_FILES_LIST $XMLSEC_PACKAGE-$i.pc"
 done
 
 
@@ -26759,10 +27067,10 @@ echo "$as_me: error: conditional \"XMLSEC_NO_NSS\" was never defined.
 Usually this means the macro was only invoked conditionally." >&2;}
    { (exit 1); exit 1; }; }
 fi
-if test -z "${XMLSEC_NO_SHA1_TRUE}" && test -z "${XMLSEC_NO_SHA1_FALSE}"; then
-  { { echo "$as_me:$LINENO: error: conditional \"XMLSEC_NO_SHA1\" was never defined.
+if test -z "${XMLSEC_NO_MD5_TRUE}" && test -z "${XMLSEC_NO_MD5_FALSE}"; then
+  { { echo "$as_me:$LINENO: error: conditional \"XMLSEC_NO_MD5\" was never defined.
 Usually this means the macro was only invoked conditionally." >&5
-echo "$as_me: error: conditional \"XMLSEC_NO_SHA1\" was never defined.
+echo "$as_me: error: conditional \"XMLSEC_NO_MD5\" was never defined.
 Usually this means the macro was only invoked conditionally." >&2;}
    { (exit 1); exit 1; }; }
 fi
@@ -26773,6 +27081,41 @@ echo "$as_me: error: conditional \"XMLSEC_NO_RIPEMD160\" was never defined.
 Usually this means the macro was only invoked conditionally." >&2;}
    { (exit 1); exit 1; }; }
 fi
+if test -z "${XMLSEC_NO_SHA1_TRUE}" && test -z "${XMLSEC_NO_SHA1_FALSE}"; then
+  { { echo "$as_me:$LINENO: error: conditional \"XMLSEC_NO_SHA1\" was never defined.
+Usually this means the macro was only invoked conditionally." >&5
+echo "$as_me: error: conditional \"XMLSEC_NO_SHA1\" was never defined.
+Usually this means the macro was only invoked conditionally." >&2;}
+   { (exit 1); exit 1; }; }
+fi
+if test -z "${XMLSEC_NO_SHA224_TRUE}" && test -z "${XMLSEC_NO_SHA224_FALSE}"; then
+  { { echo "$as_me:$LINENO: error: conditional \"XMLSEC_NO_SHA224\" was never defined.
+Usually this means the macro was only invoked conditionally." >&5
+echo "$as_me: error: conditional \"XMLSEC_NO_SHA224\" was never defined.
+Usually this means the macro was only invoked conditionally." >&2;}
+   { (exit 1); exit 1; }; }
+fi
+if test -z "${XMLSEC_NO_SHA256_TRUE}" && test -z "${XMLSEC_NO_SHA256_FALSE}"; then
+  { { echo "$as_me:$LINENO: error: conditional \"XMLSEC_NO_SHA256\" was never defined.
+Usually this means the macro was only invoked conditionally." >&5
+echo "$as_me: error: conditional \"XMLSEC_NO_SHA256\" was never defined.
+Usually this means the macro was only invoked conditionally." >&2;}
+   { (exit 1); exit 1; }; }
+fi
+if test -z "${XMLSEC_NO_SHA384_TRUE}" && test -z "${XMLSEC_NO_SHA384_FALSE}"; then
+  { { echo "$as_me:$LINENO: error: conditional \"XMLSEC_NO_SHA384\" was never defined.
+Usually this means the macro was only invoked conditionally." >&5
+echo "$as_me: error: conditional \"XMLSEC_NO_SHA384\" was never defined.
+Usually this means the macro was only invoked conditionally." >&2;}
+   { (exit 1); exit 1; }; }
+fi
+if test -z "${XMLSEC_NO_SHA512_TRUE}" && test -z "${XMLSEC_NO_SHA512_FALSE}"; then
+  { { echo "$as_me:$LINENO: error: conditional \"XMLSEC_NO_SHA512\" was never defined.
+Usually this means the macro was only invoked conditionally." >&5
+echo "$as_me: error: conditional \"XMLSEC_NO_SHA512\" was never defined.
+Usually this means the macro was only invoked conditionally." >&2;}
+   { (exit 1); exit 1; }; }
+fi
 if test -z "${XMLSEC_NO_HMAC_TRUE}" && test -z "${XMLSEC_NO_HMAC_FALSE}"; then
   { { echo "$as_me:$LINENO: error: conditional \"XMLSEC_NO_HMAC\" was never defined.
 Usually this means the macro was only invoked conditionally." >&5
@@ -27121,7 +27464,7 @@ _ASBOX
 } >&5
 cat >&5 <<_CSEOF
 
-This file was extended by $as_me, which was
+This file was extended by xmlsec1 $as_me 1.2.9, which was
 generated by GNU Autoconf 2.59.  Invocation command line was
 
   CONFIG_FILES    = $CONFIG_FILES
@@ -27184,7 +27527,7 @@ _ACEOF
 
 cat >>$CONFIG_STATUS <<_ACEOF
 ac_cs_version="\\
-config.status
+xmlsec1 config.status 1.2.9
 configured by $0, generated by GNU Autoconf 2.59,
   with options \\"`echo "$ac_configure_args" | sed 's/[\\""\`\$]/\\\\&/g'`\\"
 
@@ -27423,7 +27766,6 @@ s, at AUTOCONF@,$AUTOCONF,;t t
 s, at AUTOMAKE@,$AUTOMAKE,;t t
 s, at AUTOHEADER@,$AUTOHEADER,;t t
 s, at MAKEINFO@,$MAKEINFO,;t t
-s, at AMTAR@,$AMTAR,;t t
 s, at install_sh@,$install_sh,;t t
 s, at STRIP@,$STRIP,;t t
 s, at ac_ct_STRIP@,$ac_ct_STRIP,;t t
@@ -27432,6 +27774,9 @@ s, at mkdir_p@,$mkdir_p,;t t
 s, at AWK@,$AWK,;t t
 s, at SET_MAKE@,$SET_MAKE,;t t
 s, at am__leading_dot@,$am__leading_dot,;t t
+s, at AMTAR@,$AMTAR,;t t
+s, at am__tar@,$am__tar,;t t
+s, at am__untar@,$am__untar,;t t
 s, at MAINTAINER_MODE_TRUE@,$MAINTAINER_MODE_TRUE,;t t
 s, at MAINTAINER_MODE_FALSE@,$MAINTAINER_MODE_FALSE,;t t
 s, at MAINT@,$MAINT,;t t
@@ -27487,8 +27832,6 @@ s, at PKG_CONFIG_ENABLED@,$PKG_CONFIG_ENABLED,;t t
 s, at PKG_CONFIG@,$PKG_CONFIG,;t t
 s, at LIBXML_CFLAGS@,$LIBXML_CFLAGS,;t t
 s, at LIBXML_LIBS@,$LIBXML_LIBS,;t t
-s, at LIBXML262_CFLAGS@,$LIBXML262_CFLAGS,;t t
-s, at LIBXML262_LIBS@,$LIBXML262_LIBS,;t t
 s, at LIBXML_CONFIG@,$LIBXML_CONFIG,;t t
 s, at LIBXML_MIN_VERSION@,$LIBXML_MIN_VERSION,;t t
 s, at LIBXSLT_CFLAGS@,$LIBXSLT_CFLAGS,;t t
@@ -27498,8 +27841,6 @@ s, at LIBXSLT_CONFIG@,$LIBXSLT_CONFIG,;t t
 s, at LIBXSLT_MIN_VERSION@,$LIBXSLT_MIN_VERSION,;t t
 s, at OPENSSL_CFLAGS@,$OPENSSL_CFLAGS,;t t
 s, at OPENSSL_LIBS@,$OPENSSL_LIBS,;t t
-s, at OPENSSL097_CFLAGS@,$OPENSSL097_CFLAGS,;t t
-s, at OPENSSL097_LIBS@,$OPENSSL097_LIBS,;t t
 s, at XMLSEC_NO_OPENSSL_TRUE@,$XMLSEC_NO_OPENSSL_TRUE,;t t
 s, at XMLSEC_NO_OPENSSL_FALSE@,$XMLSEC_NO_OPENSSL_FALSE,;t t
 s, at XMLSEC_NO_OPENSSL@,$XMLSEC_NO_OPENSSL,;t t
@@ -27521,12 +27862,27 @@ s, at NSS_CRYPTO_LIB@,$NSS_CRYPTO_LIB,;t t
 s, at NSS_MIN_VERSION@,$NSS_MIN_VERSION,;t t
 s, at NSPR_MIN_VERSION@,$NSPR_MIN_VERSION,;t t
 s, at MOZILLA_MIN_VERSION@,$MOZILLA_MIN_VERSION,;t t
-s, at XMLSEC_NO_SHA1_TRUE@,$XMLSEC_NO_SHA1_TRUE,;t t
-s, at XMLSEC_NO_SHA1_FALSE@,$XMLSEC_NO_SHA1_FALSE,;t t
-s, at XMLSEC_NO_SHA1@,$XMLSEC_NO_SHA1,;t t
+s, at XMLSEC_NO_MD5_TRUE@,$XMLSEC_NO_MD5_TRUE,;t t
+s, at XMLSEC_NO_MD5_FALSE@,$XMLSEC_NO_MD5_FALSE,;t t
+s, at XMLSEC_NO_MD5@,$XMLSEC_NO_MD5,;t t
 s, at XMLSEC_NO_RIPEMD160_TRUE@,$XMLSEC_NO_RIPEMD160_TRUE,;t t
 s, at XMLSEC_NO_RIPEMD160_FALSE@,$XMLSEC_NO_RIPEMD160_FALSE,;t t
 s, at XMLSEC_NO_RIPEMD160@,$XMLSEC_NO_RIPEMD160,;t t
+s, at XMLSEC_NO_SHA1_TRUE@,$XMLSEC_NO_SHA1_TRUE,;t t
+s, at XMLSEC_NO_SHA1_FALSE@,$XMLSEC_NO_SHA1_FALSE,;t t
+s, at XMLSEC_NO_SHA1@,$XMLSEC_NO_SHA1,;t t
+s, at XMLSEC_NO_SHA224_TRUE@,$XMLSEC_NO_SHA224_TRUE,;t t
+s, at XMLSEC_NO_SHA224_FALSE@,$XMLSEC_NO_SHA224_FALSE,;t t
+s, at XMLSEC_NO_SHA224@,$XMLSEC_NO_SHA224,;t t
+s, at XMLSEC_NO_SHA256_TRUE@,$XMLSEC_NO_SHA256_TRUE,;t t
+s, at XMLSEC_NO_SHA256_FALSE@,$XMLSEC_NO_SHA256_FALSE,;t t
+s, at XMLSEC_NO_SHA256@,$XMLSEC_NO_SHA256,;t t
+s, at XMLSEC_NO_SHA384_TRUE@,$XMLSEC_NO_SHA384_TRUE,;t t
+s, at XMLSEC_NO_SHA384_FALSE@,$XMLSEC_NO_SHA384_FALSE,;t t
+s, at XMLSEC_NO_SHA384@,$XMLSEC_NO_SHA384,;t t
+s, at XMLSEC_NO_SHA512_TRUE@,$XMLSEC_NO_SHA512_TRUE,;t t
+s, at XMLSEC_NO_SHA512_FALSE@,$XMLSEC_NO_SHA512_FALSE,;t t
+s, at XMLSEC_NO_SHA512@,$XMLSEC_NO_SHA512,;t t
 s, at XMLSEC_NO_HMAC_TRUE@,$XMLSEC_NO_HMAC_TRUE,;t t
 s, at XMLSEC_NO_HMAC_FALSE@,$XMLSEC_NO_HMAC_FALSE,;t t
 s, at XMLSEC_NO_HMAC@,$XMLSEC_NO_HMAC,;t t
@@ -28208,27 +28564,21 @@ echo X"$mf" |
   else
     continue
   fi
-  grep '^DEP_FILES *= *[^ #]' < "$mf" > /dev/null || continue
-  # Extract the definition of DEP_FILES from the Makefile without
-  # running `make'.
+  # 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"`
-  test -d "$dirpart/$DEPDIR" || mkdir "$dirpart/$DEPDIR"
-  # 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 '
-    /^DEP_FILES = .*\\\\$/ {
-      s/^DEP_FILES = //
-      :loop
-	s/\\\\$//
-	p
-	n
-	/\\\\$/ b loop
-      p
-    }
-    /^DEP_FILES = / s/^DEP_FILES = //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
@@ -28467,10 +28817,10 @@ echo "$as_me: error: conditional \"XMLSEC_NO_NSS\" was never defined.
 Usually this means the macro was only invoked conditionally." >&2;}
    { (exit 1); exit 1; }; }
 fi
-if test -z "${XMLSEC_NO_SHA1_TRUE}" && test -z "${XMLSEC_NO_SHA1_FALSE}"; then
-  { { echo "$as_me:$LINENO: error: conditional \"XMLSEC_NO_SHA1\" was never defined.
+if test -z "${XMLSEC_NO_MD5_TRUE}" && test -z "${XMLSEC_NO_MD5_FALSE}"; then
+  { { echo "$as_me:$LINENO: error: conditional \"XMLSEC_NO_MD5\" was never defined.
 Usually this means the macro was only invoked conditionally." >&5
-echo "$as_me: error: conditional \"XMLSEC_NO_SHA1\" was never defined.
+echo "$as_me: error: conditional \"XMLSEC_NO_MD5\" was never defined.
 Usually this means the macro was only invoked conditionally." >&2;}
    { (exit 1); exit 1; }; }
 fi
@@ -28481,6 +28831,41 @@ echo "$as_me: error: conditional \"XMLSEC_NO_RIPEMD160\" was never defined.
 Usually this means the macro was only invoked conditionally." >&2;}
    { (exit 1); exit 1; }; }
 fi
+if test -z "${XMLSEC_NO_SHA1_TRUE}" && test -z "${XMLSEC_NO_SHA1_FALSE}"; then
+  { { echo "$as_me:$LINENO: error: conditional \"XMLSEC_NO_SHA1\" was never defined.
+Usually this means the macro was only invoked conditionally." >&5
+echo "$as_me: error: conditional \"XMLSEC_NO_SHA1\" was never defined.
+Usually this means the macro was only invoked conditionally." >&2;}
+   { (exit 1); exit 1; }; }
+fi
+if test -z "${XMLSEC_NO_SHA224_TRUE}" && test -z "${XMLSEC_NO_SHA224_FALSE}"; then
+  { { echo "$as_me:$LINENO: error: conditional \"XMLSEC_NO_SHA224\" was never defined.
+Usually this means the macro was only invoked conditionally." >&5
+echo "$as_me: error: conditional \"XMLSEC_NO_SHA224\" was never defined.
+Usually this means the macro was only invoked conditionally." >&2;}
+   { (exit 1); exit 1; }; }
+fi
+if test -z "${XMLSEC_NO_SHA256_TRUE}" && test -z "${XMLSEC_NO_SHA256_FALSE}"; then
+  { { echo "$as_me:$LINENO: error: conditional \"XMLSEC_NO_SHA256\" was never defined.
+Usually this means the macro was only invoked conditionally." >&5
+echo "$as_me: error: conditional \"XMLSEC_NO_SHA256\" was never defined.
+Usually this means the macro was only invoked conditionally." >&2;}
+   { (exit 1); exit 1; }; }
+fi
+if test -z "${XMLSEC_NO_SHA384_TRUE}" && test -z "${XMLSEC_NO_SHA384_FALSE}"; then
+  { { echo "$as_me:$LINENO: error: conditional \"XMLSEC_NO_SHA384\" was never defined.
+Usually this means the macro was only invoked conditionally." >&5
+echo "$as_me: error: conditional \"XMLSEC_NO_SHA384\" was never defined.
+Usually this means the macro was only invoked conditionally." >&2;}
+   { (exit 1); exit 1; }; }
+fi
+if test -z "${XMLSEC_NO_SHA512_TRUE}" && test -z "${XMLSEC_NO_SHA512_FALSE}"; then
+  { { echo "$as_me:$LINENO: error: conditional \"XMLSEC_NO_SHA512\" was never defined.
+Usually this means the macro was only invoked conditionally." >&5
+echo "$as_me: error: conditional \"XMLSEC_NO_SHA512\" was never defined.
+Usually this means the macro was only invoked conditionally." >&2;}
+   { (exit 1); exit 1; }; }
+fi
 if test -z "${XMLSEC_NO_HMAC_TRUE}" && test -z "${XMLSEC_NO_HMAC_FALSE}"; then
   { { echo "$as_me:$LINENO: error: conditional \"XMLSEC_NO_HMAC\" was never defined.
 Usually this means the macro was only invoked conditionally." >&5
@@ -28829,7 +29214,7 @@ _ASBOX
 } >&5
 cat >&5 <<_CSEOF
 
-This file was extended by $as_me, which was
+This file was extended by xmlsec1 $as_me 1.2.9, which was
 generated by GNU Autoconf 2.59.  Invocation command line was
 
   CONFIG_FILES    = $CONFIG_FILES
@@ -28892,7 +29277,7 @@ _ACEOF
 
 cat >>$CONFIG_STATUS <<_ACEOF
 ac_cs_version="\\
-config.status
+xmlsec1 config.status 1.2.9
 configured by $0, generated by GNU Autoconf 2.59,
   with options \\"`echo "$ac_configure_args" | sed 's/[\\""\`\$]/\\\\&/g'`\\"
 
@@ -29133,7 +29518,6 @@ s, at AUTOCONF@,$AUTOCONF,;t t
 s, at AUTOMAKE@,$AUTOMAKE,;t t
 s, at AUTOHEADER@,$AUTOHEADER,;t t
 s, at MAKEINFO@,$MAKEINFO,;t t
-s, at AMTAR@,$AMTAR,;t t
 s, at install_sh@,$install_sh,;t t
 s, at STRIP@,$STRIP,;t t
 s, at ac_ct_STRIP@,$ac_ct_STRIP,;t t
@@ -29142,6 +29526,9 @@ s, at mkdir_p@,$mkdir_p,;t t
 s, at AWK@,$AWK,;t t
 s, at SET_MAKE@,$SET_MAKE,;t t
 s, at am__leading_dot@,$am__leading_dot,;t t
+s, at AMTAR@,$AMTAR,;t t
+s, at am__tar@,$am__tar,;t t
+s, at am__untar@,$am__untar,;t t
 s, at MAINTAINER_MODE_TRUE@,$MAINTAINER_MODE_TRUE,;t t
 s, at MAINTAINER_MODE_FALSE@,$MAINTAINER_MODE_FALSE,;t t
 s, at MAINT@,$MAINT,;t t
@@ -29197,8 +29584,6 @@ s, at PKG_CONFIG_ENABLED@,$PKG_CONFIG_ENABLED,;t t
 s, at PKG_CONFIG@,$PKG_CONFIG,;t t
 s, at LIBXML_CFLAGS@,$LIBXML_CFLAGS,;t t
 s, at LIBXML_LIBS@,$LIBXML_LIBS,;t t
-s, at LIBXML262_CFLAGS@,$LIBXML262_CFLAGS,;t t
-s, at LIBXML262_LIBS@,$LIBXML262_LIBS,;t t
 s, at LIBXML_CONFIG@,$LIBXML_CONFIG,;t t
 s, at LIBXML_MIN_VERSION@,$LIBXML_MIN_VERSION,;t t
 s, at LIBXSLT_CFLAGS@,$LIBXSLT_CFLAGS,;t t
@@ -29208,8 +29593,6 @@ s, at LIBXSLT_CONFIG@,$LIBXSLT_CONFIG,;t t
 s, at LIBXSLT_MIN_VERSION@,$LIBXSLT_MIN_VERSION,;t t
 s, at OPENSSL_CFLAGS@,$OPENSSL_CFLAGS,;t t
 s, at OPENSSL_LIBS@,$OPENSSL_LIBS,;t t
-s, at OPENSSL097_CFLAGS@,$OPENSSL097_CFLAGS,;t t
-s, at OPENSSL097_LIBS@,$OPENSSL097_LIBS,;t t
 s, at XMLSEC_NO_OPENSSL_TRUE@,$XMLSEC_NO_OPENSSL_TRUE,;t t
 s, at XMLSEC_NO_OPENSSL_FALSE@,$XMLSEC_NO_OPENSSL_FALSE,;t t
 s, at XMLSEC_NO_OPENSSL@,$XMLSEC_NO_OPENSSL,;t t
@@ -29231,12 +29614,27 @@ s, at NSS_CRYPTO_LIB@,$NSS_CRYPTO_LIB,;t t
 s, at NSS_MIN_VERSION@,$NSS_MIN_VERSION,;t t
 s, at NSPR_MIN_VERSION@,$NSPR_MIN_VERSION,;t t
 s, at MOZILLA_MIN_VERSION@,$MOZILLA_MIN_VERSION,;t t
-s, at XMLSEC_NO_SHA1_TRUE@,$XMLSEC_NO_SHA1_TRUE,;t t
-s, at XMLSEC_NO_SHA1_FALSE@,$XMLSEC_NO_SHA1_FALSE,;t t
-s, at XMLSEC_NO_SHA1@,$XMLSEC_NO_SHA1,;t t
+s, at XMLSEC_NO_MD5_TRUE@,$XMLSEC_NO_MD5_TRUE,;t t
+s, at XMLSEC_NO_MD5_FALSE@,$XMLSEC_NO_MD5_FALSE,;t t
+s, at XMLSEC_NO_MD5@,$XMLSEC_NO_MD5,;t t
 s, at XMLSEC_NO_RIPEMD160_TRUE@,$XMLSEC_NO_RIPEMD160_TRUE,;t t
 s, at XMLSEC_NO_RIPEMD160_FALSE@,$XMLSEC_NO_RIPEMD160_FALSE,;t t
 s, at XMLSEC_NO_RIPEMD160@,$XMLSEC_NO_RIPEMD160,;t t
+s, at XMLSEC_NO_SHA1_TRUE@,$XMLSEC_NO_SHA1_TRUE,;t t
+s, at XMLSEC_NO_SHA1_FALSE@,$XMLSEC_NO_SHA1_FALSE,;t t
+s, at XMLSEC_NO_SHA1@,$XMLSEC_NO_SHA1,;t t
+s, at XMLSEC_NO_SHA224_TRUE@,$XMLSEC_NO_SHA224_TRUE,;t t
+s, at XMLSEC_NO_SHA224_FALSE@,$XMLSEC_NO_SHA224_FALSE,;t t
+s, at XMLSEC_NO_SHA224@,$XMLSEC_NO_SHA224,;t t
+s, at XMLSEC_NO_SHA256_TRUE@,$XMLSEC_NO_SHA256_TRUE,;t t
+s, at XMLSEC_NO_SHA256_FALSE@,$XMLSEC_NO_SHA256_FALSE,;t t
+s, at XMLSEC_NO_SHA256@,$XMLSEC_NO_SHA256,;t t
+s, at XMLSEC_NO_SHA384_TRUE@,$XMLSEC_NO_SHA384_TRUE,;t t
+s, at XMLSEC_NO_SHA384_FALSE@,$XMLSEC_NO_SHA384_FALSE,;t t
+s, at XMLSEC_NO_SHA384@,$XMLSEC_NO_SHA384,;t t
+s, at XMLSEC_NO_SHA512_TRUE@,$XMLSEC_NO_SHA512_TRUE,;t t
+s, at XMLSEC_NO_SHA512_FALSE@,$XMLSEC_NO_SHA512_FALSE,;t t
+s, at XMLSEC_NO_SHA512@,$XMLSEC_NO_SHA512,;t t
 s, at XMLSEC_NO_HMAC_TRUE@,$XMLSEC_NO_HMAC_TRUE,;t t
 s, at XMLSEC_NO_HMAC_FALSE@,$XMLSEC_NO_HMAC_FALSE,;t t
 s, at XMLSEC_NO_HMAC@,$XMLSEC_NO_HMAC,;t t
@@ -29918,27 +30316,21 @@ echo X"$mf" |
   else
     continue
   fi
-  grep '^DEP_FILES *= *[^ #]' < "$mf" > /dev/null || continue
-  # Extract the definition of DEP_FILES from the Makefile without
-  # running `make'.
+  # 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"`
-  test -d "$dirpart/$DEPDIR" || mkdir "$dirpart/$DEPDIR"
-  # 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 '
-    /^DEP_FILES = .*\\\\$/ {
-      s/^DEP_FILES = //
-      :loop
-	s/\\\\$//
-	p
-	n
-	/\\\\$/ b loop
-      p
-    }
-    /^DEP_FILES = / s/^DEP_FILES = //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
@@ -30175,10 +30567,10 @@ echo "$as_me: error: conditional \"XMLSEC_NO_NSS\" was never defined.
 Usually this means the macro was only invoked conditionally." >&2;}
    { (exit 1); exit 1; }; }
 fi
-if test -z "${XMLSEC_NO_SHA1_TRUE}" && test -z "${XMLSEC_NO_SHA1_FALSE}"; then
-  { { echo "$as_me:$LINENO: error: conditional \"XMLSEC_NO_SHA1\" was never defined.
+if test -z "${XMLSEC_NO_MD5_TRUE}" && test -z "${XMLSEC_NO_MD5_FALSE}"; then
+  { { echo "$as_me:$LINENO: error: conditional \"XMLSEC_NO_MD5\" was never defined.
 Usually this means the macro was only invoked conditionally." >&5
-echo "$as_me: error: conditional \"XMLSEC_NO_SHA1\" was never defined.
+echo "$as_me: error: conditional \"XMLSEC_NO_MD5\" was never defined.
 Usually this means the macro was only invoked conditionally." >&2;}
    { (exit 1); exit 1; }; }
 fi
@@ -30189,6 +30581,41 @@ echo "$as_me: error: conditional \"XMLSEC_NO_RIPEMD160\" was never defined.
 Usually this means the macro was only invoked conditionally." >&2;}
    { (exit 1); exit 1; }; }
 fi
+if test -z "${XMLSEC_NO_SHA1_TRUE}" && test -z "${XMLSEC_NO_SHA1_FALSE}"; then
+  { { echo "$as_me:$LINENO: error: conditional \"XMLSEC_NO_SHA1\" was never defined.
+Usually this means the macro was only invoked conditionally." >&5
+echo "$as_me: error: conditional \"XMLSEC_NO_SHA1\" was never defined.
+Usually this means the macro was only invoked conditionally." >&2;}
+   { (exit 1); exit 1; }; }
+fi
+if test -z "${XMLSEC_NO_SHA224_TRUE}" && test -z "${XMLSEC_NO_SHA224_FALSE}"; then
+  { { echo "$as_me:$LINENO: error: conditional \"XMLSEC_NO_SHA224\" was never defined.
+Usually this means the macro was only invoked conditionally." >&5
+echo "$as_me: error: conditional \"XMLSEC_NO_SHA224\" was never defined.
+Usually this means the macro was only invoked conditionally." >&2;}
+   { (exit 1); exit 1; }; }
+fi
+if test -z "${XMLSEC_NO_SHA256_TRUE}" && test -z "${XMLSEC_NO_SHA256_FALSE}"; then
+  { { echo "$as_me:$LINENO: error: conditional \"XMLSEC_NO_SHA256\" was never defined.
+Usually this means the macro was only invoked conditionally." >&5
+echo "$as_me: error: conditional \"XMLSEC_NO_SHA256\" was never defined.
+Usually this means the macro was only invoked conditionally." >&2;}
+   { (exit 1); exit 1; }; }
+fi
+if test -z "${XMLSEC_NO_SHA384_TRUE}" && test -z "${XMLSEC_NO_SHA384_FALSE}"; then
+  { { echo "$as_me:$LINENO: error: conditional \"XMLSEC_NO_SHA384\" was never defined.
+Usually this means the macro was only invoked conditionally." >&5
+echo "$as_me: error: conditional \"XMLSEC_NO_SHA384\" was never defined.
+Usually this means the macro was only invoked conditionally." >&2;}
+   { (exit 1); exit 1; }; }
+fi
+if test -z "${XMLSEC_NO_SHA512_TRUE}" && test -z "${XMLSEC_NO_SHA512_FALSE}"; then
+  { { echo "$as_me:$LINENO: error: conditional \"XMLSEC_NO_SHA512\" was never defined.
+Usually this means the macro was only invoked conditionally." >&5
+echo "$as_me: error: conditional \"XMLSEC_NO_SHA512\" was never defined.
+Usually this means the macro was only invoked conditionally." >&2;}
+   { (exit 1); exit 1; }; }
+fi
 if test -z "${XMLSEC_NO_HMAC_TRUE}" && test -z "${XMLSEC_NO_HMAC_FALSE}"; then
   { { echo "$as_me:$LINENO: error: conditional \"XMLSEC_NO_HMAC\" was never defined.
 Usually this means the macro was only invoked conditionally." >&5
@@ -30537,7 +30964,7 @@ _ASBOX
 } >&5
 cat >&5 <<_CSEOF
 
-This file was extended by $as_me, which was
+This file was extended by xmlsec1 $as_me 1.2.9, which was
 generated by GNU Autoconf 2.59.  Invocation command line was
 
   CONFIG_FILES    = $CONFIG_FILES
@@ -30600,7 +31027,7 @@ _ACEOF
 
 cat >>$CONFIG_STATUS <<_ACEOF
 ac_cs_version="\\
-config.status
+xmlsec1 config.status 1.2.9
 configured by $0, generated by GNU Autoconf 2.59,
   with options \\"`echo "$ac_configure_args" | sed 's/[\\""\`\$]/\\\\&/g'`\\"
 
@@ -30843,7 +31270,6 @@ s, at AUTOCONF@,$AUTOCONF,;t t
 s, at AUTOMAKE@,$AUTOMAKE,;t t
 s, at AUTOHEADER@,$AUTOHEADER,;t t
 s, at MAKEINFO@,$MAKEINFO,;t t
-s, at AMTAR@,$AMTAR,;t t
 s, at install_sh@,$install_sh,;t t
 s, at STRIP@,$STRIP,;t t
 s, at ac_ct_STRIP@,$ac_ct_STRIP,;t t
@@ -30852,6 +31278,9 @@ s, at mkdir_p@,$mkdir_p,;t t
 s, at AWK@,$AWK,;t t
 s, at SET_MAKE@,$SET_MAKE,;t t
 s, at am__leading_dot@,$am__leading_dot,;t t
+s, at AMTAR@,$AMTAR,;t t
+s, at am__tar@,$am__tar,;t t
+s, at am__untar@,$am__untar,;t t
 s, at MAINTAINER_MODE_TRUE@,$MAINTAINER_MODE_TRUE,;t t
 s, at MAINTAINER_MODE_FALSE@,$MAINTAINER_MODE_FALSE,;t t
 s, at MAINT@,$MAINT,;t t
@@ -30907,8 +31336,6 @@ s, at PKG_CONFIG_ENABLED@,$PKG_CONFIG_ENABLED,;t t
 s, at PKG_CONFIG@,$PKG_CONFIG,;t t
 s, at LIBXML_CFLAGS@,$LIBXML_CFLAGS,;t t
 s, at LIBXML_LIBS@,$LIBXML_LIBS,;t t
-s, at LIBXML262_CFLAGS@,$LIBXML262_CFLAGS,;t t
-s, at LIBXML262_LIBS@,$LIBXML262_LIBS,;t t
 s, at LIBXML_CONFIG@,$LIBXML_CONFIG,;t t
 s, at LIBXML_MIN_VERSION@,$LIBXML_MIN_VERSION,;t t
 s, at LIBXSLT_CFLAGS@,$LIBXSLT_CFLAGS,;t t
@@ -30918,8 +31345,6 @@ s, at LIBXSLT_CONFIG@,$LIBXSLT_CONFIG,;t t
 s, at LIBXSLT_MIN_VERSION@,$LIBXSLT_MIN_VERSION,;t t
 s, at OPENSSL_CFLAGS@,$OPENSSL_CFLAGS,;t t
 s, at OPENSSL_LIBS@,$OPENSSL_LIBS,;t t
-s, at OPENSSL097_CFLAGS@,$OPENSSL097_CFLAGS,;t t
-s, at OPENSSL097_LIBS@,$OPENSSL097_LIBS,;t t
 s, at XMLSEC_NO_OPENSSL_TRUE@,$XMLSEC_NO_OPENSSL_TRUE,;t t
 s, at XMLSEC_NO_OPENSSL_FALSE@,$XMLSEC_NO_OPENSSL_FALSE,;t t
 s, at XMLSEC_NO_OPENSSL@,$XMLSEC_NO_OPENSSL,;t t
@@ -30941,12 +31366,27 @@ s, at NSS_CRYPTO_LIB@,$NSS_CRYPTO_LIB,;t t
 s, at NSS_MIN_VERSION@,$NSS_MIN_VERSION,;t t
 s, at NSPR_MIN_VERSION@,$NSPR_MIN_VERSION,;t t
 s, at MOZILLA_MIN_VERSION@,$MOZILLA_MIN_VERSION,;t t
-s, at XMLSEC_NO_SHA1_TRUE@,$XMLSEC_NO_SHA1_TRUE,;t t
-s, at XMLSEC_NO_SHA1_FALSE@,$XMLSEC_NO_SHA1_FALSE,;t t
-s, at XMLSEC_NO_SHA1@,$XMLSEC_NO_SHA1,;t t
+s, at XMLSEC_NO_MD5_TRUE@,$XMLSEC_NO_MD5_TRUE,;t t
+s, at XMLSEC_NO_MD5_FALSE@,$XMLSEC_NO_MD5_FALSE,;t t
+s, at XMLSEC_NO_MD5@,$XMLSEC_NO_MD5,;t t
 s, at XMLSEC_NO_RIPEMD160_TRUE@,$XMLSEC_NO_RIPEMD160_TRUE,;t t
 s, at XMLSEC_NO_RIPEMD160_FALSE@,$XMLSEC_NO_RIPEMD160_FALSE,;t t
 s, at XMLSEC_NO_RIPEMD160@,$XMLSEC_NO_RIPEMD160,;t t
+s, at XMLSEC_NO_SHA1_TRUE@,$XMLSEC_NO_SHA1_TRUE,;t t
+s, at XMLSEC_NO_SHA1_FALSE@,$XMLSEC_NO_SHA1_FALSE,;t t
+s, at XMLSEC_NO_SHA1@,$XMLSEC_NO_SHA1,;t t
+s, at XMLSEC_NO_SHA224_TRUE@,$XMLSEC_NO_SHA224_TRUE,;t t
+s, at XMLSEC_NO_SHA224_FALSE@,$XMLSEC_NO_SHA224_FALSE,;t t
+s, at XMLSEC_NO_SHA224@,$XMLSEC_NO_SHA224,;t t
+s, at XMLSEC_NO_SHA256_TRUE@,$XMLSEC_NO_SHA256_TRUE,;t t
+s, at XMLSEC_NO_SHA256_FALSE@,$XMLSEC_NO_SHA256_FALSE,;t t
+s, at XMLSEC_NO_SHA256@,$XMLSEC_NO_SHA256,;t t
+s, at XMLSEC_NO_SHA384_TRUE@,$XMLSEC_NO_SHA384_TRUE,;t t
+s, at XMLSEC_NO_SHA384_FALSE@,$XMLSEC_NO_SHA384_FALSE,;t t
+s, at XMLSEC_NO_SHA384@,$XMLSEC_NO_SHA384,;t t
+s, at XMLSEC_NO_SHA512_TRUE@,$XMLSEC_NO_SHA512_TRUE,;t t
+s, at XMLSEC_NO_SHA512_FALSE@,$XMLSEC_NO_SHA512_FALSE,;t t
+s, at XMLSEC_NO_SHA512@,$XMLSEC_NO_SHA512,;t t
 s, at XMLSEC_NO_HMAC_TRUE@,$XMLSEC_NO_HMAC_TRUE,;t t
 s, at XMLSEC_NO_HMAC_FALSE@,$XMLSEC_NO_HMAC_FALSE,;t t
 s, at XMLSEC_NO_HMAC@,$XMLSEC_NO_HMAC,;t t
@@ -31628,27 +32068,21 @@ echo X"$mf" |
   else
     continue
   fi
-  grep '^DEP_FILES *= *[^ #]' < "$mf" > /dev/null || continue
-  # Extract the definition of DEP_FILES from the Makefile without
-  # running `make'.
+  # 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"`
-  test -d "$dirpart/$DEPDIR" || mkdir "$dirpart/$DEPDIR"
-  # 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 '
-    /^DEP_FILES = .*\\\\$/ {
-      s/^DEP_FILES = //
-      :loop
-	s/\\\\$//
-	p
-	n
-	/\\\\$/ b loop
-      p
-    }
-    /^DEP_FILES = / s/^DEP_FILES = //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
@@ -31885,10 +32319,10 @@ echo "$as_me: error: conditional \"XMLSEC_NO_NSS\" was never defined.
 Usually this means the macro was only invoked conditionally." >&2;}
    { (exit 1); exit 1; }; }
 fi
-if test -z "${XMLSEC_NO_SHA1_TRUE}" && test -z "${XMLSEC_NO_SHA1_FALSE}"; then
-  { { echo "$as_me:$LINENO: error: conditional \"XMLSEC_NO_SHA1\" was never defined.
+if test -z "${XMLSEC_NO_MD5_TRUE}" && test -z "${XMLSEC_NO_MD5_FALSE}"; then
+  { { echo "$as_me:$LINENO: error: conditional \"XMLSEC_NO_MD5\" was never defined.
 Usually this means the macro was only invoked conditionally." >&5
-echo "$as_me: error: conditional \"XMLSEC_NO_SHA1\" was never defined.
+echo "$as_me: error: conditional \"XMLSEC_NO_MD5\" was never defined.
 Usually this means the macro was only invoked conditionally." >&2;}
    { (exit 1); exit 1; }; }
 fi
@@ -31899,6 +32333,41 @@ echo "$as_me: error: conditional \"XMLSEC_NO_RIPEMD160\" was never defined.
 Usually this means the macro was only invoked conditionally." >&2;}
    { (exit 1); exit 1; }; }
 fi
+if test -z "${XMLSEC_NO_SHA1_TRUE}" && test -z "${XMLSEC_NO_SHA1_FALSE}"; then
+  { { echo "$as_me:$LINENO: error: conditional \"XMLSEC_NO_SHA1\" was never defined.
+Usually this means the macro was only invoked conditionally." >&5
+echo "$as_me: error: conditional \"XMLSEC_NO_SHA1\" was never defined.
+Usually this means the macro was only invoked conditionally." >&2;}
+   { (exit 1); exit 1; }; }
+fi
+if test -z "${XMLSEC_NO_SHA224_TRUE}" && test -z "${XMLSEC_NO_SHA224_FALSE}"; then
+  { { echo "$as_me:$LINENO: error: conditional \"XMLSEC_NO_SHA224\" was never defined.
+Usually this means the macro was only invoked conditionally." >&5
+echo "$as_me: error: conditional \"XMLSEC_NO_SHA224\" was never defined.
+Usually this means the macro was only invoked conditionally." >&2;}
+   { (exit 1); exit 1; }; }
+fi
+if test -z "${XMLSEC_NO_SHA256_TRUE}" && test -z "${XMLSEC_NO_SHA256_FALSE}"; then
+  { { echo "$as_me:$LINENO: error: conditional \"XMLSEC_NO_SHA256\" was never defined.
+Usually this means the macro was only invoked conditionally." >&5
+echo "$as_me: error: conditional \"XMLSEC_NO_SHA256\" was never defined.
+Usually this means the macro was only invoked conditionally." >&2;}
+   { (exit 1); exit 1; }; }
+fi
+if test -z "${XMLSEC_NO_SHA384_TRUE}" && test -z "${XMLSEC_NO_SHA384_FALSE}"; then
+  { { echo "$as_me:$LINENO: error: conditional \"XMLSEC_NO_SHA384\" was never defined.
+Usually this means the macro was only invoked conditionally." >&5
+echo "$as_me: error: conditional \"XMLSEC_NO_SHA384\" was never defined.
+Usually this means the macro was only invoked conditionally." >&2;}
+   { (exit 1); exit 1; }; }
+fi
+if test -z "${XMLSEC_NO_SHA512_TRUE}" && test -z "${XMLSEC_NO_SHA512_FALSE}"; then
+  { { echo "$as_me:$LINENO: error: conditional \"XMLSEC_NO_SHA512\" was never defined.
+Usually this means the macro was only invoked conditionally." >&5
+echo "$as_me: error: conditional \"XMLSEC_NO_SHA512\" was never defined.
+Usually this means the macro was only invoked conditionally." >&2;}
+   { (exit 1); exit 1; }; }
+fi
 if test -z "${XMLSEC_NO_HMAC_TRUE}" && test -z "${XMLSEC_NO_HMAC_FALSE}"; then
   { { echo "$as_me:$LINENO: error: conditional \"XMLSEC_NO_HMAC\" was never defined.
 Usually this means the macro was only invoked conditionally." >&5
@@ -32247,7 +32716,7 @@ _ASBOX
 } >&5
 cat >&5 <<_CSEOF
 
-This file was extended by $as_me, which was
+This file was extended by xmlsec1 $as_me 1.2.9, which was
 generated by GNU Autoconf 2.59.  Invocation command line was
 
   CONFIG_FILES    = $CONFIG_FILES
@@ -32310,7 +32779,7 @@ _ACEOF
 
 cat >>$CONFIG_STATUS <<_ACEOF
 ac_cs_version="\\
-config.status
+xmlsec1 config.status 1.2.9
 configured by $0, generated by GNU Autoconf 2.59,
   with options \\"`echo "$ac_configure_args" | sed 's/[\\""\`\$]/\\\\&/g'`\\"
 
@@ -32555,7 +33024,6 @@ s, at AUTOCONF@,$AUTOCONF,;t t
 s, at AUTOMAKE@,$AUTOMAKE,;t t
 s, at AUTOHEADER@,$AUTOHEADER,;t t
 s, at MAKEINFO@,$MAKEINFO,;t t
-s, at AMTAR@,$AMTAR,;t t
 s, at install_sh@,$install_sh,;t t
 s, at STRIP@,$STRIP,;t t
 s, at ac_ct_STRIP@,$ac_ct_STRIP,;t t
@@ -32564,6 +33032,9 @@ s, at mkdir_p@,$mkdir_p,;t t
 s, at AWK@,$AWK,;t t
 s, at SET_MAKE@,$SET_MAKE,;t t
 s, at am__leading_dot@,$am__leading_dot,;t t
+s, at AMTAR@,$AMTAR,;t t
+s, at am__tar@,$am__tar,;t t
+s, at am__untar@,$am__untar,;t t
 s, at MAINTAINER_MODE_TRUE@,$MAINTAINER_MODE_TRUE,;t t
 s, at MAINTAINER_MODE_FALSE@,$MAINTAINER_MODE_FALSE,;t t
 s, at MAINT@,$MAINT,;t t
@@ -32619,8 +33090,6 @@ s, at PKG_CONFIG_ENABLED@,$PKG_CONFIG_ENABLED,;t t
 s, at PKG_CONFIG@,$PKG_CONFIG,;t t
 s, at LIBXML_CFLAGS@,$LIBXML_CFLAGS,;t t
 s, at LIBXML_LIBS@,$LIBXML_LIBS,;t t
-s, at LIBXML262_CFLAGS@,$LIBXML262_CFLAGS,;t t
-s, at LIBXML262_LIBS@,$LIBXML262_LIBS,;t t
 s, at LIBXML_CONFIG@,$LIBXML_CONFIG,;t t
 s, at LIBXML_MIN_VERSION@,$LIBXML_MIN_VERSION,;t t
 s, at LIBXSLT_CFLAGS@,$LIBXSLT_CFLAGS,;t t
@@ -32630,8 +33099,6 @@ s, at LIBXSLT_CONFIG@,$LIBXSLT_CONFIG,;t t
 s, at LIBXSLT_MIN_VERSION@,$LIBXSLT_MIN_VERSION,;t t
 s, at OPENSSL_CFLAGS@,$OPENSSL_CFLAGS,;t t
 s, at OPENSSL_LIBS@,$OPENSSL_LIBS,;t t
-s, at OPENSSL097_CFLAGS@,$OPENSSL097_CFLAGS,;t t
-s, at OPENSSL097_LIBS@,$OPENSSL097_LIBS,;t t
 s, at XMLSEC_NO_OPENSSL_TRUE@,$XMLSEC_NO_OPENSSL_TRUE,;t t
 s, at XMLSEC_NO_OPENSSL_FALSE@,$XMLSEC_NO_OPENSSL_FALSE,;t t
 s, at XMLSEC_NO_OPENSSL@,$XMLSEC_NO_OPENSSL,;t t
@@ -32653,12 +33120,27 @@ s, at NSS_CRYPTO_LIB@,$NSS_CRYPTO_LIB,;t t
 s, at NSS_MIN_VERSION@,$NSS_MIN_VERSION,;t t
 s, at NSPR_MIN_VERSION@,$NSPR_MIN_VERSION,;t t
 s, at MOZILLA_MIN_VERSION@,$MOZILLA_MIN_VERSION,;t t
-s, at XMLSEC_NO_SHA1_TRUE@,$XMLSEC_NO_SHA1_TRUE,;t t
-s, at XMLSEC_NO_SHA1_FALSE@,$XMLSEC_NO_SHA1_FALSE,;t t
-s, at XMLSEC_NO_SHA1@,$XMLSEC_NO_SHA1,;t t
+s, at XMLSEC_NO_MD5_TRUE@,$XMLSEC_NO_MD5_TRUE,;t t
+s, at XMLSEC_NO_MD5_FALSE@,$XMLSEC_NO_MD5_FALSE,;t t
+s, at XMLSEC_NO_MD5@,$XMLSEC_NO_MD5,;t t
 s, at XMLSEC_NO_RIPEMD160_TRUE@,$XMLSEC_NO_RIPEMD160_TRUE,;t t
 s, at XMLSEC_NO_RIPEMD160_FALSE@,$XMLSEC_NO_RIPEMD160_FALSE,;t t
 s, at XMLSEC_NO_RIPEMD160@,$XMLSEC_NO_RIPEMD160,;t t
+s, at XMLSEC_NO_SHA1_TRUE@,$XMLSEC_NO_SHA1_TRUE,;t t
+s, at XMLSEC_NO_SHA1_FALSE@,$XMLSEC_NO_SHA1_FALSE,;t t
+s, at XMLSEC_NO_SHA1@,$XMLSEC_NO_SHA1,;t t
+s, at XMLSEC_NO_SHA224_TRUE@,$XMLSEC_NO_SHA224_TRUE,;t t
+s, at XMLSEC_NO_SHA224_FALSE@,$XMLSEC_NO_SHA224_FALSE,;t t
+s, at XMLSEC_NO_SHA224@,$XMLSEC_NO_SHA224,;t t
+s, at XMLSEC_NO_SHA256_TRUE@,$XMLSEC_NO_SHA256_TRUE,;t t
+s, at XMLSEC_NO_SHA256_FALSE@,$XMLSEC_NO_SHA256_FALSE,;t t
+s, at XMLSEC_NO_SHA256@,$XMLSEC_NO_SHA256,;t t
+s, at XMLSEC_NO_SHA384_TRUE@,$XMLSEC_NO_SHA384_TRUE,;t t
+s, at XMLSEC_NO_SHA384_FALSE@,$XMLSEC_NO_SHA384_FALSE,;t t
+s, at XMLSEC_NO_SHA384@,$XMLSEC_NO_SHA384,;t t
+s, at XMLSEC_NO_SHA512_TRUE@,$XMLSEC_NO_SHA512_TRUE,;t t
+s, at XMLSEC_NO_SHA512_FALSE@,$XMLSEC_NO_SHA512_FALSE,;t t
+s, at XMLSEC_NO_SHA512@,$XMLSEC_NO_SHA512,;t t
 s, at XMLSEC_NO_HMAC_TRUE@,$XMLSEC_NO_HMAC_TRUE,;t t
 s, at XMLSEC_NO_HMAC_FALSE@,$XMLSEC_NO_HMAC_FALSE,;t t
 s, at XMLSEC_NO_HMAC@,$XMLSEC_NO_HMAC,;t t
@@ -33340,27 +33822,21 @@ echo X"$mf" |
   else
     continue
   fi
-  grep '^DEP_FILES *= *[^ #]' < "$mf" > /dev/null || continue
-  # Extract the definition of DEP_FILES from the Makefile without
-  # running `make'.
+  # 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"`
-  test -d "$dirpart/$DEPDIR" || mkdir "$dirpart/$DEPDIR"
-  # 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 '
-    /^DEP_FILES = .*\\\\$/ {
-      s/^DEP_FILES = //
-      :loop
-	s/\\\\$//
-	p
-	n
-	/\\\\$/ b loop
-      p
-    }
-    /^DEP_FILES = / s/^DEP_FILES = //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
@@ -33599,10 +34075,10 @@ echo "$as_me: error: conditional \"XMLSEC_NO_NSS\" was never defined.
 Usually this means the macro was only invoked conditionally." >&2;}
    { (exit 1); exit 1; }; }
 fi
-if test -z "${XMLSEC_NO_SHA1_TRUE}" && test -z "${XMLSEC_NO_SHA1_FALSE}"; then
-  { { echo "$as_me:$LINENO: error: conditional \"XMLSEC_NO_SHA1\" was never defined.
+if test -z "${XMLSEC_NO_MD5_TRUE}" && test -z "${XMLSEC_NO_MD5_FALSE}"; then
+  { { echo "$as_me:$LINENO: error: conditional \"XMLSEC_NO_MD5\" was never defined.
 Usually this means the macro was only invoked conditionally." >&5
-echo "$as_me: error: conditional \"XMLSEC_NO_SHA1\" was never defined.
+echo "$as_me: error: conditional \"XMLSEC_NO_MD5\" was never defined.
 Usually this means the macro was only invoked conditionally." >&2;}
    { (exit 1); exit 1; }; }
 fi
@@ -33613,6 +34089,41 @@ echo "$as_me: error: conditional \"XMLSEC_NO_RIPEMD160\" was never defined.
 Usually this means the macro was only invoked conditionally." >&2;}
    { (exit 1); exit 1; }; }
 fi
+if test -z "${XMLSEC_NO_SHA1_TRUE}" && test -z "${XMLSEC_NO_SHA1_FALSE}"; then
+  { { echo "$as_me:$LINENO: error: conditional \"XMLSEC_NO_SHA1\" was never defined.
+Usually this means the macro was only invoked conditionally." >&5
+echo "$as_me: error: conditional \"XMLSEC_NO_SHA1\" was never defined.
+Usually this means the macro was only invoked conditionally." >&2;}
+   { (exit 1); exit 1; }; }
+fi
+if test -z "${XMLSEC_NO_SHA224_TRUE}" && test -z "${XMLSEC_NO_SHA224_FALSE}"; then
+  { { echo "$as_me:$LINENO: error: conditional \"XMLSEC_NO_SHA224\" was never defined.
+Usually this means the macro was only invoked conditionally." >&5
+echo "$as_me: error: conditional \"XMLSEC_NO_SHA224\" was never defined.
+Usually this means the macro was only invoked conditionally." >&2;}
+   { (exit 1); exit 1; }; }
+fi
+if test -z "${XMLSEC_NO_SHA256_TRUE}" && test -z "${XMLSEC_NO_SHA256_FALSE}"; then
+  { { echo "$as_me:$LINENO: error: conditional \"XMLSEC_NO_SHA256\" was never defined.
+Usually this means the macro was only invoked conditionally." >&5
+echo "$as_me: error: conditional \"XMLSEC_NO_SHA256\" was never defined.
+Usually this means the macro was only invoked conditionally." >&2;}
+   { (exit 1); exit 1; }; }
+fi
+if test -z "${XMLSEC_NO_SHA384_TRUE}" && test -z "${XMLSEC_NO_SHA384_FALSE}"; then
+  { { echo "$as_me:$LINENO: error: conditional \"XMLSEC_NO_SHA384\" was never defined.
+Usually this means the macro was only invoked conditionally." >&5
+echo "$as_me: error: conditional \"XMLSEC_NO_SHA384\" was never defined.
+Usually this means the macro was only invoked conditionally." >&2;}
+   { (exit 1); exit 1; }; }
+fi
+if test -z "${XMLSEC_NO_SHA512_TRUE}" && test -z "${XMLSEC_NO_SHA512_FALSE}"; then
+  { { echo "$as_me:$LINENO: error: conditional \"XMLSEC_NO_SHA512\" was never defined.
+Usually this means the macro was only invoked conditionally." >&5
+echo "$as_me: error: conditional \"XMLSEC_NO_SHA512\" was never defined.
+Usually this means the macro was only invoked conditionally." >&2;}
+   { (exit 1); exit 1; }; }
+fi
 if test -z "${XMLSEC_NO_HMAC_TRUE}" && test -z "${XMLSEC_NO_HMAC_FALSE}"; then
   { { echo "$as_me:$LINENO: error: conditional \"XMLSEC_NO_HMAC\" was never defined.
 Usually this means the macro was only invoked conditionally." >&5
@@ -33961,7 +34472,7 @@ _ASBOX
 } >&5
 cat >&5 <<_CSEOF
 
-This file was extended by $as_me, which was
+This file was extended by xmlsec1 $as_me 1.2.9, which was
 generated by GNU Autoconf 2.59.  Invocation command line was
 
   CONFIG_FILES    = $CONFIG_FILES
@@ -34024,7 +34535,7 @@ _ACEOF
 
 cat >>$CONFIG_STATUS <<_ACEOF
 ac_cs_version="\\
-config.status
+xmlsec1 config.status 1.2.9
 configured by $0, generated by GNU Autoconf 2.59,
   with options \\"`echo "$ac_configure_args" | sed 's/[\\""\`\$]/\\\\&/g'`\\"
 
@@ -34270,7 +34781,6 @@ s, at AUTOCONF@,$AUTOCONF,;t t
 s, at AUTOMAKE@,$AUTOMAKE,;t t
 s, at AUTOHEADER@,$AUTOHEADER,;t t
 s, at MAKEINFO@,$MAKEINFO,;t t
-s, at AMTAR@,$AMTAR,;t t
 s, at install_sh@,$install_sh,;t t
 s, at STRIP@,$STRIP,;t t
 s, at ac_ct_STRIP@,$ac_ct_STRIP,;t t
@@ -34279,6 +34789,9 @@ s, at mkdir_p@,$mkdir_p,;t t
 s, at AWK@,$AWK,;t t
 s, at SET_MAKE@,$SET_MAKE,;t t
 s, at am__leading_dot@,$am__leading_dot,;t t
+s, at AMTAR@,$AMTAR,;t t
+s, at am__tar@,$am__tar,;t t
+s, at am__untar@,$am__untar,;t t
 s, at MAINTAINER_MODE_TRUE@,$MAINTAINER_MODE_TRUE,;t t
 s, at MAINTAINER_MODE_FALSE@,$MAINTAINER_MODE_FALSE,;t t
 s, at MAINT@,$MAINT,;t t
@@ -34334,8 +34847,6 @@ s, at PKG_CONFIG_ENABLED@,$PKG_CONFIG_ENABLED,;t t
 s, at PKG_CONFIG@,$PKG_CONFIG,;t t
 s, at LIBXML_CFLAGS@,$LIBXML_CFLAGS,;t t
 s, at LIBXML_LIBS@,$LIBXML_LIBS,;t t
-s, at LIBXML262_CFLAGS@,$LIBXML262_CFLAGS,;t t
-s, at LIBXML262_LIBS@,$LIBXML262_LIBS,;t t
 s, at LIBXML_CONFIG@,$LIBXML_CONFIG,;t t
 s, at LIBXML_MIN_VERSION@,$LIBXML_MIN_VERSION,;t t
 s, at LIBXSLT_CFLAGS@,$LIBXSLT_CFLAGS,;t t
@@ -34345,8 +34856,6 @@ s, at LIBXSLT_CONFIG@,$LIBXSLT_CONFIG,;t t
 s, at LIBXSLT_MIN_VERSION@,$LIBXSLT_MIN_VERSION,;t t
 s, at OPENSSL_CFLAGS@,$OPENSSL_CFLAGS,;t t
 s, at OPENSSL_LIBS@,$OPENSSL_LIBS,;t t
-s, at OPENSSL097_CFLAGS@,$OPENSSL097_CFLAGS,;t t
-s, at OPENSSL097_LIBS@,$OPENSSL097_LIBS,;t t
 s, at XMLSEC_NO_OPENSSL_TRUE@,$XMLSEC_NO_OPENSSL_TRUE,;t t
 s, at XMLSEC_NO_OPENSSL_FALSE@,$XMLSEC_NO_OPENSSL_FALSE,;t t
 s, at XMLSEC_NO_OPENSSL@,$XMLSEC_NO_OPENSSL,;t t
@@ -34368,12 +34877,27 @@ s, at NSS_CRYPTO_LIB@,$NSS_CRYPTO_LIB,;t t
 s, at NSS_MIN_VERSION@,$NSS_MIN_VERSION,;t t
 s, at NSPR_MIN_VERSION@,$NSPR_MIN_VERSION,;t t
 s, at MOZILLA_MIN_VERSION@,$MOZILLA_MIN_VERSION,;t t
-s, at XMLSEC_NO_SHA1_TRUE@,$XMLSEC_NO_SHA1_TRUE,;t t
-s, at XMLSEC_NO_SHA1_FALSE@,$XMLSEC_NO_SHA1_FALSE,;t t
-s, at XMLSEC_NO_SHA1@,$XMLSEC_NO_SHA1,;t t
+s, at XMLSEC_NO_MD5_TRUE@,$XMLSEC_NO_MD5_TRUE,;t t
+s, at XMLSEC_NO_MD5_FALSE@,$XMLSEC_NO_MD5_FALSE,;t t
+s, at XMLSEC_NO_MD5@,$XMLSEC_NO_MD5,;t t
 s, at XMLSEC_NO_RIPEMD160_TRUE@,$XMLSEC_NO_RIPEMD160_TRUE,;t t
 s, at XMLSEC_NO_RIPEMD160_FALSE@,$XMLSEC_NO_RIPEMD160_FALSE,;t t
 s, at XMLSEC_NO_RIPEMD160@,$XMLSEC_NO_RIPEMD160,;t t
+s, at XMLSEC_NO_SHA1_TRUE@,$XMLSEC_NO_SHA1_TRUE,;t t
+s, at XMLSEC_NO_SHA1_FALSE@,$XMLSEC_NO_SHA1_FALSE,;t t
+s, at XMLSEC_NO_SHA1@,$XMLSEC_NO_SHA1,;t t
+s, at XMLSEC_NO_SHA224_TRUE@,$XMLSEC_NO_SHA224_TRUE,;t t
+s, at XMLSEC_NO_SHA224_FALSE@,$XMLSEC_NO_SHA224_FALSE,;t t
+s, at XMLSEC_NO_SHA224@,$XMLSEC_NO_SHA224,;t t
+s, at XMLSEC_NO_SHA256_TRUE@,$XMLSEC_NO_SHA256_TRUE,;t t
+s, at XMLSEC_NO_SHA256_FALSE@,$XMLSEC_NO_SHA256_FALSE,;t t
+s, at XMLSEC_NO_SHA256@,$XMLSEC_NO_SHA256,;t t
+s, at XMLSEC_NO_SHA384_TRUE@,$XMLSEC_NO_SHA384_TRUE,;t t
+s, at XMLSEC_NO_SHA384_FALSE@,$XMLSEC_NO_SHA384_FALSE,;t t
+s, at XMLSEC_NO_SHA384@,$XMLSEC_NO_SHA384,;t t
+s, at XMLSEC_NO_SHA512_TRUE@,$XMLSEC_NO_SHA512_TRUE,;t t
+s, at XMLSEC_NO_SHA512_FALSE@,$XMLSEC_NO_SHA512_FALSE,;t t
+s, at XMLSEC_NO_SHA512@,$XMLSEC_NO_SHA512,;t t
 s, at XMLSEC_NO_HMAC_TRUE@,$XMLSEC_NO_HMAC_TRUE,;t t
 s, at XMLSEC_NO_HMAC_FALSE@,$XMLSEC_NO_HMAC_FALSE,;t t
 s, at XMLSEC_NO_HMAC@,$XMLSEC_NO_HMAC,;t t
@@ -35055,27 +35579,21 @@ echo X"$mf" |
   else
     continue
   fi
-  grep '^DEP_FILES *= *[^ #]' < "$mf" > /dev/null || continue
-  # Extract the definition of DEP_FILES from the Makefile without
-  # running `make'.
+  # 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"`
-  test -d "$dirpart/$DEPDIR" || mkdir "$dirpart/$DEPDIR"
-  # 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 '
-    /^DEP_FILES = .*\\\\$/ {
-      s/^DEP_FILES = //
-      :loop
-	s/\\\\$//
-	p
-	n
-	/\\\\$/ b loop
-      p
-    }
-    /^DEP_FILES = / s/^DEP_FILES = //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
diff --git a/configure.in b/configure.in
index 182d263..80d6a01 100644
--- a/configure.in
+++ b/configure.in
@@ -1,19 +1,17 @@
 dnl Process this file with autoconf to produce a configure script.
-AC_PREREQ(2.2)
-AC_INIT(src/xmlsec.c)
-AM_CONFIG_HEADER(config.h)
-AC_CANONICAL_HOST
+AC_INIT([xmlsec1], 1.2.9, [http://www.aleksey.com/xmlsec])
 
 XMLSEC_PACKAGE=xmlsec1
 XMLSEC_VERSION_MAJOR=1
 XMLSEC_VERSION_MINOR=2
-XMLSEC_VERSION_SUBMINOR=6
+XMLSEC_VERSION_SUBMINOR=9
 XMLSEC_VERSION="$XMLSEC_VERSION_MAJOR.$XMLSEC_VERSION_MINOR.$XMLSEC_VERSION_SUBMINOR"
 XMLSEC_VERSION_INFO=`echo $XMLSEC_VERSION | awk -F. '{ printf "%d:%d:%d", $1+$2, $3, $2 }'`
 XMLSEC_VERSION_SAFE=`echo $XMLSEC_VERSION | sed 's/\./_/g'`
 
-PACKAGE=$XMLSEC_PACKAGE
-VERSION=$XMLSEC_VERSION
+AC_PREREQ(2.2)
+AM_CONFIG_HEADER(config.h)
+AC_CANONICAL_HOST
 
 AC_SUBST(XMLSEC_VERSION)
 AC_SUBST(XMLSEC_PACKAGE)
@@ -23,7 +21,7 @@ AC_SUBST(XMLSEC_VERSION_MINOR)
 AC_SUBST(XMLSEC_VERSION_SUBMINOR)
 AC_SUBST(XMLSEC_VERSION_INFO)
 
-AM_INIT_AUTOMAKE($PACKAGE, $VERSION, no-define)
+AM_INIT_AUTOMAKE([1.9 tar-ustar])
 AM_MAINTAINER_MODE
 
 dnl
@@ -142,23 +140,19 @@ fi
 dnl ==========================================================================
 dnl find libxml
 dnl ==========================================================================
-LIBXML_MIN_VERSION="2.4.2"
+LIBXML_MIN_VERSION="2.6.12"
 LIBXML_CONFIG="xml2-config"
 LIBXML_CFLAGS=""
 LIBXML_LIBS=""
 LIBXML_FOUND="no"
-LIBXML262_FOUND="no"
 AC_ARG_WITH(libxml, [  --with-libxml=[PFX]       libxml2 location])
 if test "z$with_libxml" = "zno" ; then 
     AC_MSG_CHECKING(for libxml2 libraries >= $LIBXML_MIN_VERSION) 
-    AC_MSG_ERROR(libxml2 >= $LIBXML_MIN_VERSION is required for $PACKAGE)
+    AC_MSG_ERROR(libxml2 >= $LIBXML_MIN_VERSION is required for $XMLSEC_PACKAGE)
 elif test "z$with_libxml" = "z" -a "z$PKG_CONFIG_ENABLED" = "zyes" ; then
     PKG_CHECK_MODULES(LIBXML, libxml-2.0 >= $LIBXML_MIN_VERSION,
 	[LIBXML_FOUND=yes],
 	[LIBXML_FOUND=no])
-    PKG_CHECK_MODULES(LIBXML262, libxml-2.0 >= 2.6.2,
-	[LIBXML262_FOUND=yes],
-	[LIBXML262_FOUND=no])
 fi
 AC_MSG_CHECKING(libxml2 $with_libxml  $LIBXML_FOUND  )
 if test "z$LIBXML_FOUND" = "zno" ; then
@@ -176,22 +170,12 @@ if test "z$LIBXML_FOUND" = "zno" ; then
         LIBXML_LIBS="`$LIBXML_CONFIG --libs`"
         LIBXML_CFLAGS="`$LIBXML_CONFIG --cflags`"
 	LIBXML_FOUND="yes"
-	if test "$vers" -ge "2006002" ;  then 
-	    LIBXML262_FOUND="yes"
-	fi
         AC_MSG_RESULT(yes ('$LIBXML_VERSION'))
     else
-        AC_MSG_ERROR(You need at least libxml2 $LIBXML_MIN_VERSION for this version of $PACKAGE)
+        AC_MSG_ERROR(You need at least libxml2 $LIBXML_MIN_VERSION for this version of $XMLSEC_PACKAGE)
     fi
 fi
 
-if test "z$LIBXML_FOUND" = "zyes" ; then
-    if test "z$LIBXML262_FOUND" = "zyes" ; then
-	XMLSEC_DEFINES="-DXMLSEC_LIBXML_260=1 $XMLSEC_DEFINES"
-    elif test "z$ac_cv_func_snprintf" != "zyes" -o "z$ac_cv_func_vsnprintf" != "zyes" ; then
-	AC_MSG_ERROR(Functions snprintf and/or vsnprintf are not available on your platform. You need at least libxml2 2.6.2 for this version of $PACKAGE)
-    fi
-fi
 AC_SUBST(LIBXML_CFLAGS)
 AC_SUBST(LIBXML_LIBS)
 AC_SUBST(LIBXML_CONFIG)
@@ -237,7 +221,7 @@ if test "z$LIBXSLT_FOUND" = "zno" ; then
 	    LIBXSLT_FOUND="yes"
     	    AC_MSG_RESULT("yes ('$LIBXSLT_VERSION')")
 	else
-    	    AC_MSG_ERROR(You need at least libxslt $LIBXSLT_MIN_VERSION for this version of $PACKAGE)
+    	    AC_MSG_ERROR(You need at least libxslt $LIBXSLT_MIN_VERSION for this version of $XMLSEC_PACKAGE)
 	fi	
     fi
 fi
@@ -276,7 +260,7 @@ OPENSSL_MIN_VERSION="0.9.6"
 OPENSSL_VERSION=""
 OPENSSL_CFLAGS=""
 OPENSSL_LIBS=""
-OPENSSL_CRYPTO_LIB="$PACKAGE-openssl"
+OPENSSL_CRYPTO_LIB="$XMLSEC_PACKAGE-openssl"
 OPENSSL_FOUND=no
 AC_ARG_WITH(openssl, [  --with-openssl=[PFX]      openssl location])
 if test "z$with_openssl" = "zno" ; then
@@ -285,19 +269,34 @@ if test "z$with_openssl" = "zno" ; then
     AC_MSG_RESULT(no)
 elif test "z$with_openssl" != "z" ; then
     OPENSSL_CFLAGS="$OPENSSL_CFLAGS -I$with_openssl/include"
-    if test -f "$with_openssl/lib/libcrypto.so" ; then
-	OPENSSL_LIBS="-L$with_openssl/lib -lcrypto"
+    if test -f "$with_openssl/lib/libcrypto$shrext" ; then
+	OPENSSL_LIBS="-L$with_openssl/lib -lcrypto -ldl"
     else
-	OPENSSL_LIBS="$with_openssl/lib/libcrypto.a"
+	OPENSSL_LIBS="$with_openssl/lib/libcrypto.a -ldl"
     fi
     OPENSSL_FOUND="yes"
 elif test "z$PKG_CONFIG_ENABLED" = "zyes" ; then
-    PKG_CHECK_MODULES(OPENSSL, openssl >= $OPENSSL_MIN_VERSION,
-	[OPENSSL_FOUND=yes],
-	[OPENSSL_FOUND=no])
-    PKG_CHECK_MODULES(OPENSSL097, openssl >= 0.9.7,
-	[OPENSSL_VERSION="0.9.7"],
-	[OPENSSL_VERSION="0.9.6"])
+    if test "z$OPENSSL_VERSION" = "z" ; then
+        PKG_CHECK_MODULES(OPENSSL, openssl >= 0.9.8,
+    	    [OPENSSL_VERSION="0.9.8"],
+	    [OPENSSL_VERSION=""])
+    fi
+    
+    if test "z$OPENSSL_VERSION" = "z" ; then
+        PKG_CHECK_MODULES(OPENSSL, openssl >= 0.9.7,
+    	    [OPENSSL_VERSION="0.9.7"],
+	    [OPENSSL_VERSION=""])
+    fi
+
+    if test "z$OPENSSL_VERSION" = "z" ; then
+        PKG_CHECK_MODULES(OPENSSL, openssl >= $OPENSSL_MIN_VERSION,
+	    [OPENSSL_VERSION="$OPENSSL_MIN_VERSION"],
+	    [OPENSSL_VERSION=""])
+    fi
+
+    if test "z$OPENSSL_VERSION" != "z" ; then
+	OPENSSL_FOUND="yes"
+    fi
 fi
 
 if test "z$OPENSSL_FOUND" = "zno" ; then
@@ -321,9 +320,9 @@ if test "z$OPENSSL_FOUND" = "zno" ; then
 	if test -f $dir/libcrypto.a ; then
 	    dnl do not add -L/usr/lib because compiler does it anyway
 	    if test "z$dir" = "z/usr/lib" ; then
-		OPENSSL_LIBS="-lcrypto"
+		OPENSSL_LIBS="-lcrypto -ldl"
 	    else
-		OPENSSL_LIBS="-L$dir -lcrypto"
+		OPENSSL_LIBS="-L$dir -lcrypto -ldl"
 	    fi
 	    OPENSSL_LIBS_FOUND="yes"
 	    ac_found_openssl_lib_dir=$dir
@@ -336,46 +335,66 @@ if test "z$OPENSSL_FOUND" = "zno" ; then
     fi
 fi
 
-if test "z$OPENSSL_FOUND" = "zyes" -a "zOPENSSL_VERSION" = "z" ; then
+if test "z$OPENSSL_FOUND" = "zyes" -a "z$OPENSSL_VERSION" = "z" ; then
     AC_MSG_CHECKING(for openssl libraries >= $OPENSSL_MIN_VERSION) 
 
     dnl Check the OpenSSL version    
     OLD_CPPFLAGS=$CPPFLAGS
     CPPFLAGS="$OPENSSL_CFLAGS"
-    AC_EGREP_CPP(yes,[
-	#include <openssl/opensslv.h>
-	#if OPENSSL_VERSION_NUMBER >= 0x00906000L
-	    yes
-	#endif
-    ],[
-	OPENSSL_FOUND="yes"
-    ],[
-	OPENSSL_FOUND="no"
-    ]) 
-    
-    if test "z$OPENSSL_FOUND" = "zyes" ; then
-	AC_EGREP_CPP(yes,[
-	    #include <openssl/opensslv.h>
+
+    if test "z$OPENSSL_VERSION" = "z" ; then
+        AC_EGREP_CPP(yes,[
+    	    #include <openssl/opensslv.h>
+	    #if OPENSSL_VERSION_NUMBER >= 0x00908000L
+		yes
+	    #endif
+	],[
+	    OPENSSL_VERSION="0.9.8"
+	],[
+	    OPENSSL_VERSION=""
+	])
+    fi
+
+    if test "z$OPENSSL_VERSION" = "z" ; then
+        AC_EGREP_CPP(yes,[
+    	    #include <openssl/opensslv.h>
 	    #if OPENSSL_VERSION_NUMBER >= 0x00907000L
 		yes
 	    #endif
 	],[
 	    OPENSSL_VERSION="0.9.7"
 	],[
+	    OPENSSL_VERSION=""
+	]) 
+    fi
+
+    if test "z$OPENSSL_VERSION" = "z" ; then
+        AC_EGREP_CPP(yes,[
+    	    #include <openssl/opensslv.h>
+	    #if OPENSSL_VERSION_NUMBER >= 0x00906000L
+		yes
+	    #endif
+	],[
 	    OPENSSL_VERSION="0.9.6"
-	])
-	AC_MSG_RESULT(Found OpenSSL version '$OPENSSL_VERSION')
-    else
-	AC_MSG_RESULT(no)
-    fi    
+	],[
+	    AC_MSG_RESULT(no)
+	]) 
+    fi
+    
     CPPFLAGS=$OLD_CPPFLAGS
 fi    
 
 if test "z$OPENSSL_FOUND" = "zyes" ; then
     XMLSEC_NO_OPENSSL="0"
-    if test "zOPENSSL_VERSION" = "z0.9.6" ; then
+    if test "z$OPENSSL_VERSION" = "z0.9.6" ; then
 	OPENSSL_CFLAGS="$OPENSSL_CFLAGS -DXMLSEC_OPENSSL_096=1"
     fi    
+    if test "z$OPENSSL_VERSION" = "z0.9.7" ; then
+	OPENSSL_CFLAGS="$OPENSSL_CFLAGS -DXMLSEC_OPENSSL_097=1"
+    fi    
+    if test "z$OPENSSL_VERSION" = "z0.9.8" ; then
+	OPENSSL_CFLAGS="$OPENSSL_CFLAGS -DXMLSEC_OPENSSL_098=1"
+    fi    
     OPENSSL_CFLAGS="$OPENSSL_CFLAGS -DXMLSEC_CRYPTO_OPENSSL=1"
     	
     dnl first crypto library is default one
@@ -407,7 +426,7 @@ GNUTLS_NEW_MIN_VERSION="1.0.0"
 GNUTLS_VERSION=""
 GNUTLS_CFLAGS=""
 GNUTLS_LIBS=""
-GNUTLS_CRYPTO_LIB="$PACKAGE-gnutls"
+GNUTLS_CRYPTO_LIB="$XMLSEC_PACKAGE-gnutls"
 GNUTLS_FOUND="no"
 AC_ARG_WITH(gnutls, [  --with-gnutls=[PFX]       gnutls location])
 if test "z$with_gnutls" = "zno" ; then
@@ -454,7 +473,7 @@ if test "z$GNUTLS_FOUND" = "zno" ; then
 	    fi    
 	    AC_MSG_RESULT(yes)
 	else
-    	    AC_MSG_ERROR(You need at least gnutls $GNUTLS_MIN_VERSION for this version of $PACKAGE)
+    	    AC_MSG_ERROR(You need at least gnutls $GNUTLS_MIN_VERSION for this version of $XMLSEC_PACKAGE)
 	fi	
     fi
 fi
@@ -509,7 +528,7 @@ NSS_CFLAGS=""
 NSS_LIBS=""
 NSS_LIBS_LIST="-lnss3 -lsmime3"
 NSPR_LIBS_LIST="-lnspr4 -lplds4 -lplc4"
-NSS_CRYPTO_LIB="$PACKAGE-nss"
+NSS_CRYPTO_LIB="$XMLSEC_PACKAGE-nss"
 NSS_FOUND="no"
 
 dnl if nss is disabled, bail out early
@@ -570,7 +589,7 @@ if test "z$NSS_FOUND" = "zno" ; then
 	done
 	
 	for dir in $ac_nss_lib_dir ; do
-    	    if test -f $dir/libnspr4.so ; then
+    	    if test -f $dir/libnspr4$shrext ; then
 		dnl do not add -L/usr/lib because compiler does it anyway
         	if test "z$dir" = "z/usr/lib" ; then
             	    NSPR_LIBS="$NSPR_LIBS_LIST"
@@ -641,7 +660,7 @@ if test "z$NSS_FOUND" = "zno" ; then
         done
        
         for dir in $ac_nss_lib_dir ; do
-    	    if test -f $dir/libnss3.so ; then
+    	    if test -f $dir/libnss3$shrext ; then
         	dnl do not add -L/usr/lib because compiler does it anyway
     		if test "z$dir" = "z/usr/lib" ; then
         	    NSS_LIBS="$NSS_LIBS_LIST"
@@ -720,11 +739,42 @@ dnl Do we have a crypto library?
 dnl ==========================================================================
 AC_MSG_CHECKING(for crypto library) 
 if test "z$XMLSEC_CRYPTO" = "z" ;  then
-    AC_MSG_ERROR(At least one crypto library should exist for $PACKAGE)
+    AC_MSG_ERROR(At least one crypto library should exist for $XMLSEC_PACKAGE)
 else
     AC_MSG_RESULT(yes ('$XMLSEC_CRYPTO'))
 fi
 
+dnl ==========================================================================
+dnl See do we need MD5 suport
+dnl ==========================================================================
+AC_MSG_CHECKING(for MD5 support) 
+AC_ARG_ENABLE(md5,   [  --enable-md5            enable MD5 support (yes)])
+if test "z$enable_md5" = "zno" ; then
+    XMLSEC_DEFINES="$XMLSEC_DEFINES -DXMLSEC_NO_MD5=1"
+    XMLSEC_NO_MD5="1"
+    AC_MSG_RESULT(no)
+else
+    XMLSEC_NO_MD5="0"
+    AC_MSG_RESULT(yes)
+fi    
+AM_CONDITIONAL(XMLSEC_NO_MD5, test "z$XMLSEC_NO_MD5" = "z1")
+AC_SUBST(XMLSEC_NO_MD5)
+
+dnl ==========================================================================
+dnl See do we need RIPEMD-160 suport
+dnl ==========================================================================
+AC_MSG_CHECKING(for RIPEMD-160 support) 
+AC_ARG_ENABLE(ripemd160,   [  --enable-ripemd160      enable RIPEMD-160 support (yes)])
+if test "z$enable_ripemd160" = "zno" ; then
+    XMLSEC_DEFINES="$XMLSEC_DEFINES -DXMLSEC_NO_RIPEMD160=1"
+    XMLSEC_NO_RIPEMD160="1"
+    AC_MSG_RESULT(no)
+else
+    XMLSEC_NO_RIPEMD160="0"
+    AC_MSG_RESULT(yes)
+fi    
+AM_CONDITIONAL(XMLSEC_NO_RIPEMD160, test "z$XMLSEC_NO_RIPEMD160" = "z1")
+AC_SUBST(XMLSEC_NO_RIPEMD160)
 
 dnl ==========================================================================
 dnl See do we need SHA1 suport
@@ -743,20 +793,69 @@ AM_CONDITIONAL(XMLSEC_NO_SHA1, test "z$XMLSEC_NO_SHA1" = "z1")
 AC_SUBST(XMLSEC_NO_SHA1)
 
 dnl ==========================================================================
-dnl See do we need RIPEMD-160 suport
+dnl See do we need SHA224 suport
 dnl ==========================================================================
-AC_MSG_CHECKING(for RIPEMD-160 support) 
-AC_ARG_ENABLE(ripemd160,   [  --enable-ripemd160      enable RIPEMD-160 support (yes)])
-if test "z$enable_ripemd160" = "zno" ; then
-    XMLSEC_DEFINES="$XMLSEC_DEFINES -DXMLSEC_NO_RIPEMD160=1"
-    XMLSEC_NO_RIPEMD160="1"
+AC_MSG_CHECKING(for SHA224 support) 
+AC_ARG_ENABLE(sha224,   [  --enable-sha224         enable SHA224 support (yes)])
+if test "z$enable_sha224" = "zno" ; then
+    XMLSEC_DEFINES="$XMLSEC_DEFINES -DXMLSEC_NO_SHA224=1"
+    XMLSEC_NO_SHA224="1"
     AC_MSG_RESULT(no)
 else
-    XMLSEC_NO_RIPEMD160="0"
+    XMLSEC_NO_SHA224="0"
     AC_MSG_RESULT(yes)
 fi    
-AM_CONDITIONAL(XMLSEC_NO_RIPEMD160, test "z$XMLSEC_NO_RIPEMD160" = "z1")
-AC_SUBST(XMLSEC_NO_RIPEMD160)
+AM_CONDITIONAL(XMLSEC_NO_SHA224, test "z$XMLSEC_NO_SHA224" = "z1")
+AC_SUBST(XMLSEC_NO_SHA224)
+
+dnl ==========================================================================
+dnl See do we need SHA256 suport
+dnl ==========================================================================
+AC_MSG_CHECKING(for SHA256 support) 
+AC_ARG_ENABLE(sha256,   [  --enable-sha256         enable SHA256 support (yes)])
+if test "z$enable_sha256" = "zno" ; then
+    XMLSEC_DEFINES="$XMLSEC_DEFINES -DXMLSEC_NO_SHA256=1"
+    XMLSEC_NO_SHA256="1"
+    AC_MSG_RESULT(no)
+else
+    XMLSEC_NO_SHA256="0"
+    AC_MSG_RESULT(yes)
+fi    
+AM_CONDITIONAL(XMLSEC_NO_SHA256, test "z$XMLSEC_NO_SHA256" = "z1")
+AC_SUBST(XMLSEC_NO_SHA256)
+
+dnl ==========================================================================
+dnl See do we need SHA384 suport
+dnl ==========================================================================
+AC_MSG_CHECKING(for SHA384 support) 
+AC_ARG_ENABLE(sha384,   [  --enable-sha384         enable SHA384 support (yes)])
+if test "z$enable_sha384" = "zno" ; then
+    XMLSEC_DEFINES="$XMLSEC_DEFINES -DXMLSEC_NO_SHA384=1"
+    XMLSEC_NO_SHA384="1"
+    AC_MSG_RESULT(no)
+else
+    XMLSEC_NO_SHA384="0"
+    AC_MSG_RESULT(yes)
+fi    
+AM_CONDITIONAL(XMLSEC_NO_SHA384, test "z$XMLSEC_NO_SHA384" = "z1")
+AC_SUBST(XMLSEC_NO_SHA384)
+
+dnl ==========================================================================
+dnl See do we need SHA512 suport
+dnl ==========================================================================
+AC_MSG_CHECKING(for SHA512 support) 
+AC_ARG_ENABLE(sha512,   [  --enable-sha512         enable SHA512 support (yes)])
+if test "z$enable_sha512" = "zno" ; then
+    XMLSEC_DEFINES="$XMLSEC_DEFINES -DXMLSEC_NO_SHA512=1"
+    XMLSEC_NO_SHA512="1"
+    AC_MSG_RESULT(no)
+else
+    XMLSEC_NO_SHA512="0"
+    AC_MSG_RESULT(yes)
+fi    
+AM_CONDITIONAL(XMLSEC_NO_SHA512, test "z$XMLSEC_NO_SHA512" = "z1")
+AC_SUBST(XMLSEC_NO_SHA512)
+
 
 dnl ==========================================================================
 dnl See do we need HMAC suport
@@ -1083,7 +1182,7 @@ AC_SUBST(XMLSEC_CRYPTO_LIBS)
 
 XMLSEC_CRYPTO_PC_FILES_LIST=""
 for i in $XMLSEC_CRYPTO_LIST ; do
-    XMLSEC_CRYPTO_PC_FILES_LIST="$XMLSEC_CRYPTO_PC_FILES_LIST $PACKAGE-$i.pc"
+    XMLSEC_CRYPTO_PC_FILES_LIST="$XMLSEC_CRYPTO_PC_FILES_LIST $XMLSEC_PACKAGE-$i.pc"
 done
 AC_SUBST(XMLSEC_CRYPTO_PC_FILES_LIST)
 
diff --git a/docs/Makefile.in b/docs/Makefile.in
index 3cee290..5f7a4dc 100644
--- a/docs/Makefile.in
+++ b/docs/Makefile.in
@@ -1,4 +1,4 @@
-# Makefile.in generated by automake 1.8.3 from Makefile.am.
+# Makefile.in generated by automake 1.9.2 from Makefile.am.
 # @configure_input@
 
 # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
@@ -33,6 +33,7 @@ POST_INSTALL = :
 NORMAL_UNINSTALL = :
 PRE_UNINSTALL = :
 POST_UNINSTALL = :
+build_triplet = @build@
 host_triplet = @host@
 subdir = docs
 DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in
@@ -103,8 +104,6 @@ LIBADD_DL = @LIBADD_DL@
 LIBOBJS = @LIBOBJS@
 LIBS = @LIBS@
 LIBTOOL = @LIBTOOL@
-LIBXML262_CFLAGS = @LIBXML262_CFLAGS@
-LIBXML262_LIBS = @LIBXML262_LIBS@
 LIBXML_CFLAGS = @LIBXML_CFLAGS@
 LIBXML_CONFIG = @LIBXML_CONFIG@
 LIBXML_LIBS = @LIBXML_LIBS@
@@ -128,8 +127,6 @@ NSS_CRYPTO_LIB = @NSS_CRYPTO_LIB@
 NSS_LIBS = @NSS_LIBS@
 NSS_MIN_VERSION = @NSS_MIN_VERSION@
 OBJEXT = @OBJEXT@
-OPENSSL097_CFLAGS = @OPENSSL097_CFLAGS@
-OPENSSL097_LIBS = @OPENSSL097_LIBS@
 OPENSSL_CFLAGS = @OPENSSL_CFLAGS@
 OPENSSL_CRYPTO_LIB = @OPENSSL_CRYPTO_LIB@
 OPENSSL_LIBS = @OPENSSL_LIBS@
@@ -192,6 +189,9 @@ XMLSEC_NO_HMAC = @XMLSEC_NO_HMAC@
 XMLSEC_NO_HMAC_FALSE = @XMLSEC_NO_HMAC_FALSE@
 XMLSEC_NO_HMAC_TRUE = @XMLSEC_NO_HMAC_TRUE@
 XMLSEC_NO_LIBXSLT = @XMLSEC_NO_LIBXSLT@
+XMLSEC_NO_MD5 = @XMLSEC_NO_MD5@
+XMLSEC_NO_MD5_FALSE = @XMLSEC_NO_MD5_FALSE@
+XMLSEC_NO_MD5_TRUE = @XMLSEC_NO_MD5_TRUE@
 XMLSEC_NO_NSS = @XMLSEC_NO_NSS@
 XMLSEC_NO_NSS_FALSE = @XMLSEC_NO_NSS_FALSE@
 XMLSEC_NO_NSS_TRUE = @XMLSEC_NO_NSS_TRUE@
@@ -207,6 +207,18 @@ XMLSEC_NO_RSA_TRUE = @XMLSEC_NO_RSA_TRUE@
 XMLSEC_NO_SHA1 = @XMLSEC_NO_SHA1@
 XMLSEC_NO_SHA1_FALSE = @XMLSEC_NO_SHA1_FALSE@
 XMLSEC_NO_SHA1_TRUE = @XMLSEC_NO_SHA1_TRUE@
+XMLSEC_NO_SHA224 = @XMLSEC_NO_SHA224@
+XMLSEC_NO_SHA224_FALSE = @XMLSEC_NO_SHA224_FALSE@
+XMLSEC_NO_SHA224_TRUE = @XMLSEC_NO_SHA224_TRUE@
+XMLSEC_NO_SHA256 = @XMLSEC_NO_SHA256@
+XMLSEC_NO_SHA256_FALSE = @XMLSEC_NO_SHA256_FALSE@
+XMLSEC_NO_SHA256_TRUE = @XMLSEC_NO_SHA256_TRUE@
+XMLSEC_NO_SHA384 = @XMLSEC_NO_SHA384@
+XMLSEC_NO_SHA384_FALSE = @XMLSEC_NO_SHA384_FALSE@
+XMLSEC_NO_SHA384_TRUE = @XMLSEC_NO_SHA384_TRUE@
+XMLSEC_NO_SHA512 = @XMLSEC_NO_SHA512@
+XMLSEC_NO_SHA512_FALSE = @XMLSEC_NO_SHA512_FALSE@
+XMLSEC_NO_SHA512_TRUE = @XMLSEC_NO_SHA512_TRUE@
 XMLSEC_NO_X509 = @XMLSEC_NO_X509@
 XMLSEC_NO_X509_FALSE = @XMLSEC_NO_X509_FALSE@
 XMLSEC_NO_X509_TRUE = @XMLSEC_NO_X509_TRUE@
@@ -244,6 +256,8 @@ am__fastdepCXX_TRUE = @am__fastdepCXX_TRUE@
 am__include = @am__include@
 am__leading_dot = @am__leading_dot@
 am__quote = @am__quote@
+am__tar = @am__tar@
+am__untar = @am__untar@
 bindir = @bindir@
 build = @build@
 build_alias = @build_alias@
@@ -395,14 +409,16 @@ TAGS: tags-recursive $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
 		$(TAGS_FILES) $(LISP)
 	tags=; \
 	here=`pwd`; \
-	if (etags --etags-include --version) >/dev/null 2>&1; then \
+	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 && \
+	    test ! -f $$subdir/TAGS || \
 	      tags="$$tags $$include_option=$$here/$$subdir/TAGS"; \
 	  fi; \
 	done; \
@@ -412,9 +428,11 @@ TAGS: tags-recursive $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
 	  done | \
 	  $(AWK) '    { files[$$0] = 1; } \
 	       END { for (i in files) print i; }'`; \
-	test -z "$(ETAGS_ARGS)$$tags$$unique" \
-	  || $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
-	     $$tags $$unique
+	if test -z "$(ETAGS_ARGS)$$tags$$unique"; then :; else \
+	  test -n "$$unique" || unique=$$empty_fix; \
+	  $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+	    $$tags $$unique; \
+	fi
 ctags: CTAGS
 CTAGS: ctags-recursive $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
 		$(TAGS_FILES) $(LISP)
@@ -465,15 +483,17 @@ distdir: $(DISTFILES)
 	    || exit 1; \
 	  fi; \
 	done
-	list='$(SUBDIRS)'; for subdir in $$list; do \
+	list='$(DIST_SUBDIRS)'; for subdir in $$list; do \
 	  if test "$$subdir" = .; then :; else \
 	    test -d "$(distdir)/$$subdir" \
-	    || mkdir "$(distdir)/$$subdir" \
+	    || $(mkdir_p) "$(distdir)/$$subdir" \
 	    || exit 1; \
+	    distdir=`$(am__cd) $(distdir) && pwd`; \
+	    top_distdir=`$(am__cd) $(top_distdir) && pwd`; \
 	    (cd $$subdir && \
 	      $(MAKE) $(AM_MAKEFLAGS) \
-	        top_distdir="../$(top_distdir)" \
-	        distdir="../$(distdir)/$$subdir" \
+	        top_distdir="$$top_distdir" \
+	        distdir="$$distdir/$$subdir" \
 	        distdir) \
 	      || exit 1; \
 	  fi; \
@@ -505,7 +525,7 @@ mostlyclean-generic:
 clean-generic:
 
 distclean-generic:
-	-rm -f $(CONFIG_CLEAN_FILES)
+	-test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
 
 maintainer-clean-generic:
 	@echo "This command is intended for maintainers to use"
@@ -561,10 +581,10 @@ uninstall-info: uninstall-info-recursive
 
 .PHONY: $(RECURSIVE_TARGETS) CTAGS GTAGS all all-am check check-am \
 	clean clean-generic clean-libtool clean-recursive ctags \
-	ctags-recursive distclean distclean-generic distclean-libtool \
-	distclean-recursive distclean-tags distdir dvi dvi-am html \
-	html-am info info-am install install-am install-data \
-	install-data-am install-data-local install-exec \
+	ctags-recursive dist-hook distclean distclean-generic \
+	distclean-libtool distclean-recursive distclean-tags distdir \
+	dvi dvi-am html html-am info info-am install install-am \
+	install-data install-data-am install-data-local install-exec \
 	install-exec-am install-info install-info-am install-man \
 	install-strip installcheck installcheck-am installdirs \
 	installdirs-am maintainer-clean maintainer-clean-generic \
diff --git a/docs/api/Makefile.in b/docs/api/Makefile.in
index 9f88c40..be68edb 100644
--- a/docs/api/Makefile.in
+++ b/docs/api/Makefile.in
@@ -1,4 +1,4 @@
-# Makefile.in generated by automake 1.8.3 from Makefile.am.
+# Makefile.in generated by automake 1.9.2 from Makefile.am.
 # @configure_input@
 
 # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
@@ -33,6 +33,7 @@ POST_INSTALL = :
 NORMAL_UNINSTALL = :
 PRE_UNINSTALL = :
 POST_UNINSTALL = :
+build_triplet = @build@
 host_triplet = @host@
 subdir = docs/api
 DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in
@@ -94,8 +95,6 @@ LIBADD_DL = @LIBADD_DL@
 LIBOBJS = @LIBOBJS@
 LIBS = @LIBS@
 LIBTOOL = @LIBTOOL@
-LIBXML262_CFLAGS = @LIBXML262_CFLAGS@
-LIBXML262_LIBS = @LIBXML262_LIBS@
 LIBXML_CFLAGS = @LIBXML_CFLAGS@
 LIBXML_CONFIG = @LIBXML_CONFIG@
 LIBXML_LIBS = @LIBXML_LIBS@
@@ -119,8 +118,6 @@ NSS_CRYPTO_LIB = @NSS_CRYPTO_LIB@
 NSS_LIBS = @NSS_LIBS@
 NSS_MIN_VERSION = @NSS_MIN_VERSION@
 OBJEXT = @OBJEXT@
-OPENSSL097_CFLAGS = @OPENSSL097_CFLAGS@
-OPENSSL097_LIBS = @OPENSSL097_LIBS@
 OPENSSL_CFLAGS = @OPENSSL_CFLAGS@
 OPENSSL_CRYPTO_LIB = @OPENSSL_CRYPTO_LIB@
 OPENSSL_LIBS = @OPENSSL_LIBS@
@@ -183,6 +180,9 @@ XMLSEC_NO_HMAC = @XMLSEC_NO_HMAC@
 XMLSEC_NO_HMAC_FALSE = @XMLSEC_NO_HMAC_FALSE@
 XMLSEC_NO_HMAC_TRUE = @XMLSEC_NO_HMAC_TRUE@
 XMLSEC_NO_LIBXSLT = @XMLSEC_NO_LIBXSLT@
+XMLSEC_NO_MD5 = @XMLSEC_NO_MD5@
+XMLSEC_NO_MD5_FALSE = @XMLSEC_NO_MD5_FALSE@
+XMLSEC_NO_MD5_TRUE = @XMLSEC_NO_MD5_TRUE@
 XMLSEC_NO_NSS = @XMLSEC_NO_NSS@
 XMLSEC_NO_NSS_FALSE = @XMLSEC_NO_NSS_FALSE@
 XMLSEC_NO_NSS_TRUE = @XMLSEC_NO_NSS_TRUE@
@@ -198,6 +198,18 @@ XMLSEC_NO_RSA_TRUE = @XMLSEC_NO_RSA_TRUE@
 XMLSEC_NO_SHA1 = @XMLSEC_NO_SHA1@
 XMLSEC_NO_SHA1_FALSE = @XMLSEC_NO_SHA1_FALSE@
 XMLSEC_NO_SHA1_TRUE = @XMLSEC_NO_SHA1_TRUE@
+XMLSEC_NO_SHA224 = @XMLSEC_NO_SHA224@
+XMLSEC_NO_SHA224_FALSE = @XMLSEC_NO_SHA224_FALSE@
+XMLSEC_NO_SHA224_TRUE = @XMLSEC_NO_SHA224_TRUE@
+XMLSEC_NO_SHA256 = @XMLSEC_NO_SHA256@
+XMLSEC_NO_SHA256_FALSE = @XMLSEC_NO_SHA256_FALSE@
+XMLSEC_NO_SHA256_TRUE = @XMLSEC_NO_SHA256_TRUE@
+XMLSEC_NO_SHA384 = @XMLSEC_NO_SHA384@
+XMLSEC_NO_SHA384_FALSE = @XMLSEC_NO_SHA384_FALSE@
+XMLSEC_NO_SHA384_TRUE = @XMLSEC_NO_SHA384_TRUE@
+XMLSEC_NO_SHA512 = @XMLSEC_NO_SHA512@
+XMLSEC_NO_SHA512_FALSE = @XMLSEC_NO_SHA512_FALSE@
+XMLSEC_NO_SHA512_TRUE = @XMLSEC_NO_SHA512_TRUE@
 XMLSEC_NO_X509 = @XMLSEC_NO_X509@
 XMLSEC_NO_X509_FALSE = @XMLSEC_NO_X509_FALSE@
 XMLSEC_NO_X509_TRUE = @XMLSEC_NO_X509_TRUE@
@@ -235,6 +247,8 @@ am__fastdepCXX_TRUE = @am__fastdepCXX_TRUE@
 am__include = @am__include@
 am__leading_dot = @am__leading_dot@
 am__quote = @am__quote@
+am__tar = @am__tar@
+am__untar = @am__untar@
 bindir = @bindir@
 build = @build@
 build_alias = @build_alias@
@@ -391,7 +405,7 @@ mostlyclean-generic:
 clean-generic:
 
 distclean-generic:
-	-rm -f $(CONFIG_CLEAN_FILES)
+	-test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
 
 maintainer-clean-generic:
 	@echo "This command is intended for maintainers to use"
@@ -440,9 +454,9 @@ ps-am:
 uninstall-am: uninstall-info-am
 
 .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-exec \
+	clean-local dist-hook distclean distclean-generic \
+	distclean-libtool distdir dvi dvi-am html html-am info info-am \
+	install install-am install-data install-data-am install-exec \
 	install-exec-am install-info install-info-am install-man \
 	install-strip installcheck installcheck-am installdirs \
 	maintainer-clean maintainer-clean-generic \
diff --git a/docs/api/index.html b/docs/api/index.html
index dcbc07d..101b9c2 100644
--- a/docs/api/index.html
+++ b/docs/api/index.html
@@ -71,10 +71,10 @@
 <td width="15"></td>
 <td><a href="http://www.openssl.org/"><img src="../images/openssl-logo.png" alt="OpenSSL" border="0"></a></td>
 </tr>
+<!--Sponsored links - start--><!--Sponsored links - end-->
 </table>
 </td>
-<td valign="top"><table width="100%" valign="top">
-<tr><td valign="top" align="left" id="xmlsecContent">
+<td valign="top"><table width="100%" valign="top"><tr><td valign="top" align="left" id="xmlsecContent">
 <div class="BOOK">
 <div class="TITLEPAGE">
 <table class="navigation" width="100%" cellpadding="2" cellspacing="0"><tr><th align="center" valign="MIDDLE"><p class="TITLE">XML Security Library Reference Manual<a name="AEN2"></a></p></th></tr></table>
@@ -296,10 +296,6 @@
 <td align="left"></td>
 <td align="right"><a accesskey="n" href="xmlsec-notes.html"><b>XML Security Library Tutorial�>>></b></a></td>
 </tr></table>
-</td></tr>
-<tr><td>
-<br><br><p><a href="../bugs.html">Aleksey Sanin</a></p>
-</td></tr>
-</table></td>
+</td></tr></table></td>
 </tr></table></body>
 </html>
diff --git a/docs/api/xmlsec-app.html b/docs/api/xmlsec-app.html
index 0cd3fb5..0aba20e 100644
--- a/docs/api/xmlsec-app.html
+++ b/docs/api/xmlsec-app.html
@@ -74,10 +74,10 @@
 <td width="15"></td>
 <td><a href="http://www.openssl.org/"><img src="../images/openssl-logo.png" alt="OpenSSL" border="0"></a></td>
 </tr>
+<!--Sponsored links - start--><!--Sponsored links - end-->
 </table>
 </td>
-<td valign="top"><table width="100%" valign="top">
-<tr><td valign="top" align="left" id="xmlsecContent">
+<td valign="top"><table width="100%" valign="top"><tr><td valign="top" align="left" id="xmlsecContent">
 <table width="100%" class="navigation" summary="Navigation header" cellpadding="2" cellspacing="2"><tr valign="middle">
 <td><a accesskey="p" href="xmlsec-ref.html"><img src="left.png" width="24" height="24" border="0" alt="Prev"></a></td>
 <td><a accesskey="u" href="xmlsec-ref.html"><img src="up.png" width="24" height="24" border="0" alt="Up"></a></td>
@@ -1135,10 +1135,6 @@ in format=xmlSecKeyDataFormatPkcs12.</p>
 <td align="left"><a accesskey="p" href="xmlsec-ref.html"><b><<<�XML Security Core Library API Reference.</b></a></td>
 <td align="right"><a accesskey="n" href="xmlsec-base64.html"><b>base64�>>></b></a></td>
 </tr></table>
-</td></tr>
-<tr><td>
-<br><br><p><a href="../bugs.html">Aleksey Sanin</a></p>
-</td></tr>
-</table></td>
+</td></tr></table></td>
 </tr></table></body>
 </html>
diff --git a/docs/api/xmlsec-base64.html b/docs/api/xmlsec-base64.html
index 3b43fe1..592c3c4 100644
--- a/docs/api/xmlsec-base64.html
+++ b/docs/api/xmlsec-base64.html
@@ -74,10 +74,10 @@
 <td width="15"></td>
 <td><a href="http://www.openssl.org/"><img src="../images/openssl-logo.png" alt="OpenSSL" border="0"></a></td>
 </tr>
+<!--Sponsored links - start--><!--Sponsored links - end-->
 </table>
 </td>
-<td valign="top"><table width="100%" valign="top">
-<tr><td valign="top" align="left" id="xmlsecContent">
+<td valign="top"><table width="100%" valign="top"><tr><td valign="top" align="left" id="xmlsecContent">
 <table width="100%" class="navigation" summary="Navigation header" cellpadding="2" cellspacing="2"><tr valign="middle">
 <td><a accesskey="p" href="xmlsec-app.html"><img src="left.png" width="24" height="24" border="0" alt="Prev"></a></td>
 <td><a accesskey="u" href="xmlsec-ref.html"><img src="up.png" width="24" height="24" border="0" alt="Up"></a></td>
@@ -349,10 +349,6 @@ a negative value if an error occurs </p></td>
 <td align="left"><a accesskey="p" href="xmlsec-app.html"><b><<<�app</b></a></td>
 <td align="right"><a accesskey="n" href="xmlsec-bn.html"><b>bn�>>></b></a></td>
 </tr></table>
-</td></tr>
-<tr><td>
-<br><br><p><a href="../bugs.html">Aleksey Sanin</a></p>
-</td></tr>
-</table></td>
+</td></tr></table></td>
 </tr></table></body>
 </html>
diff --git a/docs/api/xmlsec-bn.html b/docs/api/xmlsec-bn.html
index ad24a28..d2f9275 100644
--- a/docs/api/xmlsec-bn.html
+++ b/docs/api/xmlsec-bn.html
@@ -74,10 +74,10 @@
 <td width="15"></td>
 <td><a href="http://www.openssl.org/"><img src="../images/openssl-logo.png" alt="OpenSSL" border="0"></a></td>
 </tr>
+<!--Sponsored links - start--><!--Sponsored links - end-->
 </table>
 </td>
-<td valign="top"><table width="100%" valign="top">
-<tr><td valign="top" align="left" id="xmlsecContent">
+<td valign="top"><table width="100%" valign="top"><tr><td valign="top" align="left" id="xmlsecContent">
 <table width="100%" class="navigation" summary="Navigation header" cellpadding="2" cellspacing="2"><tr valign="middle">
 <td><a accesskey="p" href="xmlsec-base64.html"><img src="left.png" width="24" height="24" border="0" alt="Prev"></a></td>
 <td><a accesskey="u" href="xmlsec-ref.html"><img src="up.png" width="24" height="24" border="0" alt="Up"></a></td>
@@ -751,10 +751,6 @@ is greater than <var class="PARAMETER">data</var>.</p></td>
 <td align="left"><a accesskey="p" href="xmlsec-base64.html"><b><<<�base64</b></a></td>
 <td align="right"><a accesskey="n" href="xmlsec-buffer.html"><b>buffer�>>></b></a></td>
 </tr></table>
-</td></tr>
-<tr><td>
-<br><br><p><a href="../bugs.html">Aleksey Sanin</a></p>
-</td></tr>
-</table></td>
+</td></tr></table></td>
 </tr></table></body>
 </html>
diff --git a/docs/api/xmlsec-buffer.html b/docs/api/xmlsec-buffer.html
index 3768c35..f61b9c2 100644
--- a/docs/api/xmlsec-buffer.html
+++ b/docs/api/xmlsec-buffer.html
@@ -74,10 +74,10 @@
 <td width="15"></td>
 <td><a href="http://www.openssl.org/"><img src="../images/openssl-logo.png" alt="OpenSSL" border="0"></a></td>
 </tr>
+<!--Sponsored links - start--><!--Sponsored links - end-->
 </table>
 </td>
-<td valign="top"><table width="100%" valign="top">
-<tr><td valign="top" align="left" id="xmlsecContent">
+<td valign="top"><table width="100%" valign="top"><tr><td valign="top" align="left" id="xmlsecContent">
 <table width="100%" class="navigation" summary="Navigation header" cellpadding="2" cellspacing="2"><tr valign="middle">
 <td><a accesskey="p" href="xmlsec-bn.html"><img src="left.png" width="24" height="24" border="0" alt="Prev"></a></td>
 <td><a accesskey="u" href="xmlsec-ref.html"><img src="up.png" width="24" height="24" border="0" alt="Up"></a></td>
@@ -652,10 +652,6 @@ occurs.</p></td>
 <td align="left"><a accesskey="p" href="xmlsec-bn.html"><b><<<�bn</b></a></td>
 <td align="right"><a accesskey="n" href="xmlsec-dl.html"><b>dl�>>></b></a></td>
 </tr></table>
-</td></tr>
-<tr><td>
-<br><br><p><a href="../bugs.html">Aleksey Sanin</a></p>
-</td></tr>
-</table></td>
+</td></tr></table></td>
 </tr></table></body>
 </html>
diff --git a/docs/api/xmlsec-custom-keys-manager.html b/docs/api/xmlsec-custom-keys-manager.html
index 96bb539..64144e2 100644
--- a/docs/api/xmlsec-custom-keys-manager.html
+++ b/docs/api/xmlsec-custom-keys-manager.html
@@ -74,10 +74,10 @@
 <td width="15"></td>
 <td><a href="http://www.openssl.org/"><img src="../images/openssl-logo.png" alt="OpenSSL" border="0"></a></td>
 </tr>
+<!--Sponsored links - start--><!--Sponsored links - end-->
 </table>
 </td>
-<td valign="top"><table width="100%" valign="top">
-<tr><td valign="top" align="left" id="xmlsecContent">
+<td valign="top"><table width="100%" valign="top"><tr><td valign="top" align="left" id="xmlsecContent">
 <table width="100%" class="navigation" summary="Navigation header" cellpadding="2" cellspacing="2"><tr valign="middle">
 <td><a accesskey="p" href="xmlsec-decrypt-with-keys-mngr.html"><img src="left.png" width="24" height="24" border="0" alt="Prev"></a></td>
 <td><a accesskey="u" href="xmlsec-examples.html"><img src="up.png" width="24" height="24" border="0" alt="Up"></a></td>
@@ -454,10 +454,6 @@ files_keys_store_find_key(xmlSecKeyStorePtr store, const xmlChar* name, xmlSecKe
 <td align="left"><a accesskey="p" href="xmlsec-decrypt-with-keys-mngr.html"><b><<<�Decrypting data with keys manager.</b></a></td>
 <td align="right"><a accesskey="n" href="xmlsec-signature-klasses.html"><b>APPENDIX A. XML Security Library Signature Klasses.�>>></b></a></td>
 </tr></table>
-</td></tr>
-<tr><td>
-<br><br><p><a href="../bugs.html">Aleksey Sanin</a></p>
-</td></tr>
-</table></td>
+</td></tr></table></td>
 </tr></table></body>
 </html>
diff --git a/docs/api/xmlsec-decrypt-with-keys-mngr.html b/docs/api/xmlsec-decrypt-with-keys-mngr.html
index f017c6e..f092954 100644
--- a/docs/api/xmlsec-decrypt-with-keys-mngr.html
+++ b/docs/api/xmlsec-decrypt-with-keys-mngr.html
@@ -74,10 +74,10 @@
 <td width="15"></td>
 <td><a href="http://www.openssl.org/"><img src="../images/openssl-logo.png" alt="OpenSSL" border="0"></a></td>
 </tr>
+<!--Sponsored links - start--><!--Sponsored links - end-->
 </table>
 </td>
-<td valign="top"><table width="100%" valign="top">
-<tr><td valign="top" align="left" id="xmlsecContent">
+<td valign="top"><table width="100%" valign="top"><tr><td valign="top" align="left" id="xmlsecContent">
 <table width="100%" class="navigation" summary="Navigation header" cellpadding="2" cellspacing="2"><tr valign="middle">
 <td><a accesskey="p" href="xmlsec-decrypt-with-signle-key.html"><img src="left.png" width="24" height="24" border="0" alt="Prev"></a></td>
 <td><a accesskey="u" href="xmlsec-examples.html"><img src="up.png" width="24" height="24" border="0" alt="Up"></a></td>
@@ -374,10 +374,6 @@ done:
 <td align="left"><a accesskey="p" href="xmlsec-decrypt-with-signle-key.html"><b><<<�Decrypting data with a single key.</b></a></td>
 <td align="right"><a accesskey="n" href="xmlsec-custom-keys-manager.html"><b>Writing a custom keys manager.�>>></b></a></td>
 </tr></table>
-</td></tr>
-<tr><td>
-<br><br><p><a href="../bugs.html">Aleksey Sanin</a></p>
-</td></tr>
-</table></td>
+</td></tr></table></td>
 </tr></table></body>
 </html>
diff --git a/docs/api/xmlsec-decrypt-with-signle-key.html b/docs/api/xmlsec-decrypt-with-signle-key.html
index 49d8fac..6401f65 100644
--- a/docs/api/xmlsec-decrypt-with-signle-key.html
+++ b/docs/api/xmlsec-decrypt-with-signle-key.html
@@ -74,10 +74,10 @@
 <td width="15"></td>
 <td><a href="http://www.openssl.org/"><img src="../images/openssl-logo.png" alt="OpenSSL" border="0"></a></td>
 </tr>
+<!--Sponsored links - start--><!--Sponsored links - end-->
 </table>
 </td>
-<td valign="top"><table width="100%" valign="top">
-<tr><td valign="top" align="left" id="xmlsecContent">
+<td valign="top"><table width="100%" valign="top"><tr><td valign="top" align="left" id="xmlsecContent">
 <table width="100%" class="navigation" summary="Navigation header" cellpadding="2" cellspacing="2"><tr valign="middle">
 <td><a accesskey="p" href="xmlsec-encrypt-with-session-key.html"><img src="left.png" width="24" height="24" border="0" alt="Prev"></a></td>
 <td><a accesskey="u" href="xmlsec-examples.html"><img src="up.png" width="24" height="24" border="0" alt="Up"></a></td>
@@ -304,10 +304,6 @@ done:
 <td align="left"><a accesskey="p" href="xmlsec-encrypt-with-session-key.html"><b><<<�Encrypting data with a session key.</b></a></td>
 <td align="right"><a accesskey="n" href="xmlsec-decrypt-with-keys-mngr.html"><b>Decrypting data with keys manager.�>>></b></a></td>
 </tr></table>
-</td></tr>
-<tr><td>
-<br><br><p><a href="../bugs.html">Aleksey Sanin</a></p>
-</td></tr>
-</table></td>
+</td></tr></table></td>
 </tr></table></body>
 </html>
diff --git a/docs/api/xmlsec-dl.html b/docs/api/xmlsec-dl.html
index 046bf8f..cc9e546 100644
--- a/docs/api/xmlsec-dl.html
+++ b/docs/api/xmlsec-dl.html
@@ -74,10 +74,10 @@
 <td width="15"></td>
 <td><a href="http://www.openssl.org/"><img src="../images/openssl-logo.png" alt="OpenSSL" border="0"></a></td>
 </tr>
+<!--Sponsored links - start--><!--Sponsored links - end-->
 </table>
 </td>
-<td valign="top"><table width="100%" valign="top">
-<tr><td valign="top" align="left" id="xmlsecContent">
+<td valign="top"><table width="100%" valign="top"><tr><td valign="top" align="left" id="xmlsecContent">
 <table width="100%" class="navigation" summary="Navigation header" cellpadding="2" cellspacing="2"><tr valign="middle">
 <td><a accesskey="p" href="xmlsec-buffer.html"><img src="left.png" width="24" height="24" border="0" alt="Prev"></a></td>
 <td><a accesskey="u" href="xmlsec-ref.html"><img src="up.png" width="24" height="24" border="0" alt="Up"></a></td>
@@ -261,10 +261,6 @@ and <a href="xmlsec-dl.html#XMLSECCRYPTODLUNLOADLIBRARY"><span class="TYPE">xmlS
 <td align="left"><a accesskey="p" href="xmlsec-buffer.html"><b><<<�buffer</b></a></td>
 <td align="right"><a accesskey="n" href="xmlsec-errors.html"><b>errors�>>></b></a></td>
 </tr></table>
-</td></tr>
-<tr><td>
-<br><br><p><a href="../bugs.html">Aleksey Sanin</a></p>
-</td></tr>
-</table></td>
+</td></tr></table></td>
 </tr></table></body>
 </html>
diff --git a/docs/api/xmlsec-encrypt-dynamic-template.html b/docs/api/xmlsec-encrypt-dynamic-template.html
index 0bbea9e..cce4a9e 100644
--- a/docs/api/xmlsec-encrypt-dynamic-template.html
+++ b/docs/api/xmlsec-encrypt-dynamic-template.html
@@ -74,10 +74,10 @@
 <td width="15"></td>
 <td><a href="http://www.openssl.org/"><img src="../images/openssl-logo.png" alt="OpenSSL" border="0"></a></td>
 </tr>
+<!--Sponsored links - start--><!--Sponsored links - end-->
 </table>
 </td>
-<td valign="top"><table width="100%" valign="top">
-<tr><td valign="top" align="left" id="xmlsecContent">
+<td valign="top"><table width="100%" valign="top"><tr><td valign="top" align="left" id="xmlsecContent">
 <table width="100%" class="navigation" summary="Navigation header" cellpadding="2" cellspacing="2"><tr valign="middle">
 <td><a accesskey="p" href="xmlsec-encrypt-template-file.html"><img src="left.png" width="24" height="24" border="0" alt="Prev"></a></td>
 <td><a accesskey="u" href="xmlsec-examples.html"><img src="up.png" width="24" height="24" border="0" alt="Up"></a></td>
@@ -364,10 +364,6 @@ IgL/XoAQN3B27zD91b1ZLGh6QQ9CjnVD98+hYJ9TPp4piPnII4vGUA==</CipherValue>
 <td align="left"><a accesskey="p" href="xmlsec-encrypt-template-file.html"><b><<<�Encrypting data with a template file.</b></a></td>
 <td align="right"><a accesskey="n" href="xmlsec-encrypt-with-session-key.html"><b>Encrypting data with a session key.�>>></b></a></td>
 </tr></table>
-</td></tr>
-<tr><td>
-<br><br><p><a href="../bugs.html">Aleksey Sanin</a></p>
-</td></tr>
-</table></td>
+</td></tr></table></td>
 </tr></table></body>
 </html>
diff --git a/docs/api/xmlsec-encrypt-template-file.html b/docs/api/xmlsec-encrypt-template-file.html
index c09bc4a..b2bbc04 100644
--- a/docs/api/xmlsec-encrypt-template-file.html
+++ b/docs/api/xmlsec-encrypt-template-file.html
@@ -74,10 +74,10 @@
 <td width="15"></td>
 <td><a href="http://www.openssl.org/"><img src="../images/openssl-logo.png" alt="OpenSSL" border="0"></a></td>
 </tr>
+<!--Sponsored links - start--><!--Sponsored links - end-->
 </table>
 </td>
-<td valign="top"><table width="100%" valign="top">
-<tr><td valign="top" align="left" id="xmlsecContent">
+<td valign="top"><table width="100%" valign="top"><tr><td valign="top" align="left" id="xmlsecContent">
 <table width="100%" class="navigation" summary="Navigation header" cellpadding="2" cellspacing="2"><tr valign="middle">
 <td><a accesskey="p" href="xmlsec-verify-with-restrictions.html"><img src="left.png" width="24" height="24" border="0" alt="Prev"></a></td>
 <td><a accesskey="u" href="xmlsec-examples.html"><img src="up.png" width="24" height="24" border="0" alt="Up"></a></td>
@@ -343,10 +343,6 @@ XML Security Library example: Encrypted binary data (encrypt1 example).
 <td align="left"><a accesskey="p" href="xmlsec-verify-with-restrictions.html"><b><<<�Verifying a signature with additional restrictions.</b></a></td>
 <td align="right"><a accesskey="n" href="xmlsec-encrypt-dynamic-template.html"><b>Encrypting data with a dynamicaly created template.�>>></b></a></td>
 </tr></table>
-</td></tr>
-<tr><td>
-<br><br><p><a href="../bugs.html">Aleksey Sanin</a></p>
-</td></tr>
-</table></td>
+</td></tr></table></td>
 </tr></table></body>
 </html>
diff --git a/docs/api/xmlsec-encrypt-with-session-key.html b/docs/api/xmlsec-encrypt-with-session-key.html
index 52430c1..d4cd80c 100644
--- a/docs/api/xmlsec-encrypt-with-session-key.html
+++ b/docs/api/xmlsec-encrypt-with-session-key.html
@@ -74,10 +74,10 @@
 <td width="15"></td>
 <td><a href="http://www.openssl.org/"><img src="../images/openssl-logo.png" alt="OpenSSL" border="0"></a></td>
 </tr>
+<!--Sponsored links - start--><!--Sponsored links - end-->
 </table>
 </td>
-<td valign="top"><table width="100%" valign="top">
-<tr><td valign="top" align="left" id="xmlsecContent">
+<td valign="top"><table width="100%" valign="top"><tr><td valign="top" align="left" id="xmlsecContent">
 <table width="100%" class="navigation" summary="Navigation header" cellpadding="2" cellspacing="2"><tr valign="middle">
 <td><a accesskey="p" href="xmlsec-encrypt-dynamic-template.html"><img src="left.png" width="24" height="24" border="0" alt="Prev"></a></td>
 <td><a accesskey="u" href="xmlsec-examples.html"><img src="up.png" width="24" height="24" border="0" alt="Up"></a></td>
@@ -474,10 +474,6 @@ s6ifbZgXIBsFdxPpMBUFlyTWAAO+NLooIwGoczXi14z62lHr7Ck6FA==</CipherValue>
 <td align="left"><a accesskey="p" href="xmlsec-encrypt-dynamic-template.html"><b><<<�Encrypting data with a dynamicaly created template.</b></a></td>
 <td align="right"><a accesskey="n" href="xmlsec-decrypt-with-signle-key.html"><b>Decrypting data with a single key.�>>></b></a></td>
 </tr></table>
-</td></tr>
-<tr><td>
-<br><br><p><a href="../bugs.html">Aleksey Sanin</a></p>
-</td></tr>
-</table></td>
+</td></tr></table></td>
 </tr></table></body>
 </html>
diff --git a/docs/api/xmlsec-encryption-klasses.html b/docs/api/xmlsec-encryption-klasses.html
index 22e5743..3eac014 100644
--- a/docs/api/xmlsec-encryption-klasses.html
+++ b/docs/api/xmlsec-encryption-klasses.html
@@ -74,10 +74,10 @@
 <td width="15"></td>
 <td><a href="http://www.openssl.org/"><img src="../images/openssl-logo.png" alt="OpenSSL" border="0"></a></td>
 </tr>
+<!--Sponsored links - start--><!--Sponsored links - end-->
 </table>
 </td>
-<td valign="top"><table width="100%" valign="top">
-<tr><td valign="top" align="left" id="xmlsecContent">
+<td valign="top"><table width="100%" valign="top"><tr><td valign="top" align="left" id="xmlsecContent">
 <table width="100%" class="navigation" summary="Navigation header" cellpadding="2" cellspacing="2"><tr valign="middle">
 <td><a accesskey="p" href="xmlsec-signature-klasses.html"><img src="left.png" width="24" height="24" border="0" alt="Prev"></a></td>
 <td><a accesskey="u" href="xmlsec-notes.html"><img src="up.png" width="24" height="24" border="0" alt="Up"></a></td>
@@ -97,10 +97,6 @@
 <td align="left"><a accesskey="p" href="xmlsec-signature-klasses.html"><b><<<�APPENDIX A. XML Security Library Signature Klasses.</b></a></td>
 <td align="right"><a accesskey="n" href="xmlsec-reference.html"><b>XML Security Library API Reference.�>>></b></a></td>
 </tr></table>
-</td></tr>
-<tr><td>
-<br><br><p><a href="../bugs.html">Aleksey Sanin</a></p>
-</td></tr>
-</table></td>
+</td></tr></table></td>
 </tr></table></body>
 </html>
diff --git a/docs/api/xmlsec-errors.html b/docs/api/xmlsec-errors.html
index b56d0aa..b102de8 100644
--- a/docs/api/xmlsec-errors.html
+++ b/docs/api/xmlsec-errors.html
@@ -74,10 +74,10 @@
 <td width="15"></td>
 <td><a href="http://www.openssl.org/"><img src="../images/openssl-logo.png" alt="OpenSSL" border="0"></a></td>
 </tr>
+<!--Sponsored links - start--><!--Sponsored links - end-->
 </table>
 </td>
-<td valign="top"><table width="100%" valign="top">
-<tr><td valign="top" align="left" id="xmlsecContent">
+<td valign="top"><table width="100%" valign="top"><tr><td valign="top" align="left" id="xmlsecContent">
 <table width="100%" class="navigation" summary="Navigation header" cellpadding="2" cellspacing="2"><tr valign="middle">
 <td><a accesskey="p" href="xmlsec-dl.html"><img src="left.png" width="24" height="24" border="0" alt="Prev"></a></td>
 <td><a accesskey="u" href="xmlsec-ref.html"><img src="up.png" width="24" height="24" border="0" alt="Up"></a></td>
@@ -865,10 +865,6 @@ function.</p>
 <td align="left"><a accesskey="p" href="xmlsec-dl.html"><b><<<�dl</b></a></td>
 <td align="right"><a accesskey="n" href="xmlsec-io.html"><b>io�>>></b></a></td>
 </tr></table>
-</td></tr>
-<tr><td>
-<br><br><p><a href="../bugs.html">Aleksey Sanin</a></p>
-</td></tr>
-</table></td>
+</td></tr></table></td>
 </tr></table></body>
 </html>
diff --git a/docs/api/xmlsec-examples-sign-dynamimc-template.html b/docs/api/xmlsec-examples-sign-dynamimc-template.html
index 53593a4..b3b4f5f 100644
--- a/docs/api/xmlsec-examples-sign-dynamimc-template.html
+++ b/docs/api/xmlsec-examples-sign-dynamimc-template.html
@@ -74,10 +74,10 @@
 <td width="15"></td>
 <td><a href="http://www.openssl.org/"><img src="../images/openssl-logo.png" alt="OpenSSL" border="0"></a></td>
 </tr>
+<!--Sponsored links - start--><!--Sponsored links - end-->
 </table>
 </td>
-<td valign="top"><table width="100%" valign="top">
-<tr><td valign="top" align="left" id="xmlsecContent">
+<td valign="top"><table width="100%" valign="top"><tr><td valign="top" align="left" id="xmlsecContent">
 <table width="100%" class="navigation" summary="Navigation header" cellpadding="2" cellspacing="2"><tr valign="middle">
 <td><a accesskey="p" href="xmlsec-examples-sign-template-file.html"><img src="left.png" width="24" height="24" border="0" alt="Prev"></a></td>
 <td><a accesskey="u" href="xmlsec-examples.html"><img src="up.png" width="24" height="24" border="0" alt="Up"></a></td>
@@ -384,10 +384,6 @@ JjbFqZO+OEzDRSbw3DkmuBA/mtlx+3t13SESfEub5hqoMdVmtth/eTb64dsPdl9r
 <td align="left"><a accesskey="p" href="xmlsec-examples-sign-template-file.html"><b><<<�Signing a template file.</b></a></td>
 <td align="right"><a accesskey="n" href="xmlsec-examples-sign-x509.html"><b>Signing with X509 certificate.�>>></b></a></td>
 </tr></table>
-</td></tr>
-<tr><td>
-<br><br><p><a href="../bugs.html">Aleksey Sanin</a></p>
-</td></tr>
-</table></td>
+</td></tr></table></td>
 </tr></table></body>
 </html>
diff --git a/docs/api/xmlsec-examples-sign-template-file.html b/docs/api/xmlsec-examples-sign-template-file.html
index 829810d..db82779 100644
--- a/docs/api/xmlsec-examples-sign-template-file.html
+++ b/docs/api/xmlsec-examples-sign-template-file.html
@@ -74,10 +74,10 @@
 <td width="15"></td>
 <td><a href="http://www.openssl.org/"><img src="../images/openssl-logo.png" alt="OpenSSL" border="0"></a></td>
 </tr>
+<!--Sponsored links - start--><!--Sponsored links - end-->
 </table>
 </td>
-<td valign="top"><table width="100%" valign="top">
-<tr><td valign="top" align="left" id="xmlsecContent">
+<td valign="top"><table width="100%" valign="top"><tr><td valign="top" align="left" id="xmlsecContent">
 <table width="100%" class="navigation" summary="Navigation header" cellpadding="2" cellspacing="2"><tr valign="middle">
 <td><a accesskey="p" href="xmlsec-examples.html"><img src="left.png" width="24" height="24" border="0" alt="Prev"></a></td>
 <td><a accesskey="u" href="xmlsec-examples.html"><img src="up.png" width="24" height="24" border="0" alt="Up"></a></td>
@@ -366,10 +366,6 @@ x+YEjSjcO7SBIR1FiUA7pw==</SignatureValue>
 <td align="left"><a accesskey="p" href="xmlsec-examples.html"><b><<<�Examples.</b></a></td>
 <td align="right"><a accesskey="n" href="xmlsec-examples-sign-dynamimc-template.html"><b>Signing a dynamicaly created template.�>>></b></a></td>
 </tr></table>
-</td></tr>
-<tr><td>
-<br><br><p><a href="../bugs.html">Aleksey Sanin</a></p>
-</td></tr>
-</table></td>
+</td></tr></table></td>
 </tr></table></body>
 </html>
diff --git a/docs/api/xmlsec-examples-sign-x509.html b/docs/api/xmlsec-examples-sign-x509.html
index 72168a4..b9c0fd4 100644
--- a/docs/api/xmlsec-examples-sign-x509.html
+++ b/docs/api/xmlsec-examples-sign-x509.html
@@ -74,10 +74,10 @@
 <td width="15"></td>
 <td><a href="http://www.openssl.org/"><img src="../images/openssl-logo.png" alt="OpenSSL" border="0"></a></td>
 </tr>
+<!--Sponsored links - start--><!--Sponsored links - end-->
 </table>
 </td>
-<td valign="top"><table width="100%" valign="top">
-<tr><td valign="top" align="left" id="xmlsecContent">
+<td valign="top"><table width="100%" valign="top"><tr><td valign="top" align="left" id="xmlsecContent">
 <table width="100%" class="navigation" summary="Navigation header" cellpadding="2" cellspacing="2"><tr valign="middle">
 <td><a accesskey="p" href="xmlsec-examples-sign-dynamimc-template.html"><img src="left.png" width="24" height="24" border="0" alt="Prev"></a></td>
 <td><a accesskey="u" href="xmlsec-examples.html"><img src="up.png" width="24" height="24" border="0" alt="Up"></a></td>
@@ -425,10 +425,6 @@ NJ2D</X509Certificate>
 <td align="left"><a accesskey="p" href="xmlsec-examples-sign-dynamimc-template.html"><b><<<�Signing a dynamicaly created template.</b></a></td>
 <td align="right"><a accesskey="n" href="xmlsec-verify-with-key.html"><b>Verifying a signature with a single key.�>>></b></a></td>
 </tr></table>
-</td></tr>
-<tr><td>
-<br><br><p><a href="../bugs.html">Aleksey Sanin</a></p>
-</td></tr>
-</table></td>
+</td></tr></table></td>
 </tr></table></body>
 </html>
diff --git a/docs/api/xmlsec-examples.html b/docs/api/xmlsec-examples.html
index ea82a8f..954577a 100644
--- a/docs/api/xmlsec-examples.html
+++ b/docs/api/xmlsec-examples.html
@@ -74,10 +74,10 @@
 <td width="15"></td>
 <td><a href="http://www.openssl.org/"><img src="../images/openssl-logo.png" alt="OpenSSL" border="0"></a></td>
 </tr>
+<!--Sponsored links - start--><!--Sponsored links - end-->
 </table>
 </td>
-<td valign="top"><table width="100%" valign="top">
-<tr><td valign="top" align="left" id="xmlsecContent">
+<td valign="top"><table width="100%" valign="top"><tr><td valign="top" align="left" id="xmlsecContent">
 <table width="100%" class="navigation" summary="Navigation header" cellpadding="2" cellspacing="2"><tr valign="middle">
 <td><a accesskey="p" href="xmlsec-notes-new-crypto-sharing-results.html"><img src="left.png" width="24" height="24" border="0" alt="Prev"></a></td>
 <td><a accesskey="u" href="xmlsec-notes.html"><img src="up.png" width="24" height="24" border="0" alt="Up"></a></td>
@@ -115,10 +115,6 @@
 <td align="left"><a accesskey="p" href="xmlsec-notes-new-crypto-sharing-results.html"><b><<<�Sharing the results.</b></a></td>
 <td align="right"><a accesskey="n" href="xmlsec-examples-sign-template-file.html"><b>Signing a template file.�>>></b></a></td>
 </tr></table>
-</td></tr>
-<tr><td>
-<br><br><p><a href="../bugs.html">Aleksey Sanin</a></p>
-</td></tr>
-</table></td>
+</td></tr></table></td>
 </tr></table></body>
 </html>
diff --git a/docs/api/xmlsec-gnutls-app.html b/docs/api/xmlsec-gnutls-app.html
index dba4369..85543c3 100644
--- a/docs/api/xmlsec-gnutls-app.html
+++ b/docs/api/xmlsec-gnutls-app.html
@@ -74,10 +74,10 @@
 <td width="15"></td>
 <td><a href="http://www.openssl.org/"><img src="../images/openssl-logo.png" alt="OpenSSL" border="0"></a></td>
 </tr>
+<!--Sponsored links - start--><!--Sponsored links - end-->
 </table>
 </td>
-<td valign="top"><table width="100%" valign="top">
-<tr><td valign="top" align="left" id="xmlsecContent">
+<td valign="top"><table width="100%" valign="top"><tr><td valign="top" align="left" id="xmlsecContent">
 <table width="100%" class="navigation" summary="Navigation header" cellpadding="2" cellspacing="2"><tr valign="middle">
 <td><a accesskey="p" href="xmlsec-gnutls-ref.html"><img src="left.png" width="24" height="24" border="0" alt="Prev"></a></td>
 <td><a accesskey="u" href="xmlsec-gnutls-ref.html"><img src="up.png" width="24" height="24" border="0" alt="Up"></a></td>
@@ -426,10 +426,6 @@ in format=xmlSecKeyDataFormatPkcs12.</p>
 <td align="left"><a accesskey="p" href="xmlsec-gnutls-ref.html"><b><<<�XML Security Library for GnuTLS API Reference.</b></a></td>
 <td align="right"><a accesskey="n" href="xmlsec-gnutls-crypto.html"><b>crypto�>>></b></a></td>
 </tr></table>
-</td></tr>
-<tr><td>
-<br><br><p><a href="../bugs.html">Aleksey Sanin</a></p>
-</td></tr>
-</table></td>
+</td></tr></table></td>
 </tr></table></body>
 </html>
diff --git a/docs/api/xmlsec-gnutls-crypto.html b/docs/api/xmlsec-gnutls-crypto.html
index 45afc8c..d4a55da 100644
--- a/docs/api/xmlsec-gnutls-crypto.html
+++ b/docs/api/xmlsec-gnutls-crypto.html
@@ -74,10 +74,10 @@
 <td width="15"></td>
 <td><a href="http://www.openssl.org/"><img src="../images/openssl-logo.png" alt="OpenSSL" border="0"></a></td>
 </tr>
+<!--Sponsored links - start--><!--Sponsored links - end-->
 </table>
 </td>
-<td valign="top"><table width="100%" valign="top">
-<tr><td valign="top" align="left" id="xmlsecContent">
+<td valign="top"><table width="100%" valign="top"><tr><td valign="top" align="left" id="xmlsecContent">
 <table width="100%" class="navigation" summary="Navigation header" cellpadding="2" cellspacing="2"><tr valign="middle">
 <td><a accesskey="p" href="xmlsec-gnutls-app.html"><img src="left.png" width="24" height="24" border="0" alt="Prev"></a></td>
 <td><a accesskey="u" href="xmlsec-gnutls-ref.html"><img src="up.png" width="24" height="24" border="0" alt="Up"></a></td>
@@ -565,10 +565,6 @@
 <td align="left"><a accesskey="p" href="xmlsec-gnutls-app.html"><b><<<�app</b></a></td>
 <td align="right"><a accesskey="n" href="xmlsec-nss-ref.html"><b>XML Security Library for NSS API Reference.�>>></b></a></td>
 </tr></table>
-</td></tr>
-<tr><td>
-<br><br><p><a href="../bugs.html">Aleksey Sanin</a></p>
-</td></tr>
-</table></td>
+</td></tr></table></td>
 </tr></table></body>
 </html>
diff --git a/docs/api/xmlsec-gnutls-ref.html b/docs/api/xmlsec-gnutls-ref.html
index 107e83b..14d0f08 100644
--- a/docs/api/xmlsec-gnutls-ref.html
+++ b/docs/api/xmlsec-gnutls-ref.html
@@ -74,10 +74,10 @@
 <td width="15"></td>
 <td><a href="http://www.openssl.org/"><img src="../images/openssl-logo.png" alt="OpenSSL" border="0"></a></td>
 </tr>
+<!--Sponsored links - start--><!--Sponsored links - end-->
 </table>
 </td>
-<td valign="top"><table width="100%" valign="top">
-<tr><td valign="top" align="left" id="xmlsecContent">
+<td valign="top"><table width="100%" valign="top"><tr><td valign="top" align="left" id="xmlsecContent">
 <table width="100%" class="navigation" summary="Navigation header" cellpadding="2" cellspacing="2"><tr valign="middle">
 <td><a accesskey="p" href="xmlsec-openssl-x509.html"><img src="left.png" width="24" height="24" border="0" alt="Prev"></a></td>
 <td><a accesskey="u" href="xmlsec-reference.html"><img src="up.png" width="24" height="24" border="0" alt="Up"></a></td>
@@ -103,10 +103,6 @@
 <td align="left"><a accesskey="p" href="xmlsec-openssl-x509.html"><b><<<�x509</b></a></td>
 <td align="right"><a accesskey="n" href="xmlsec-gnutls-app.html"><b>app�>>></b></a></td>
 </tr></table>
-</td></tr>
-<tr><td>
-<br><br><p><a href="../bugs.html">Aleksey Sanin</a></p>
-</td></tr>
-</table></td>
+</td></tr></table></td>
 </tr></table></body>
 </html>
diff --git a/docs/api/xmlsec-index.html b/docs/api/xmlsec-index.html
index 416221a..b6c917d 100644
--- a/docs/api/xmlsec-index.html
+++ b/docs/api/xmlsec-index.html
@@ -73,10 +73,10 @@
 <td width="15"></td>
 <td><a href="http://www.openssl.org/"><img src="../images/openssl-logo.png" alt="OpenSSL" border="0"></a></td>
 </tr>
+<!--Sponsored links - start--><!--Sponsored links - end-->
 </table>
 </td>
-<td valign="top"><table width="100%" valign="top">
-<tr><td valign="top" align="left" id="xmlsecContent">
+<td valign="top"><table width="100%" valign="top"><tr><td valign="top" align="left" id="xmlsecContent">
 <table width="100%" class="navigation" summary="Navigation header" cellpadding="2" cellspacing="2"><tr valign="middle">
 <td><a accesskey="p" href="xmlsec-mscrypto-x509.html"><img src="left.png" width="24" height="24" border="0" alt="Prev"></a></td>
 <td><a accesskey="u" href="xmlsec-reference.html"><img src="up.png" width="24" height="24" border="0" alt="Up"></a></td>
@@ -601,9 +601,15 @@
 <li><p><a href="xmlsec-keys.html#XMLSECKEYUSEWITHRESET">xmlSecKeyUseWithReset</a></p></li>
 <li><p><a href="xmlsec-keys.html#XMLSECKEYUSEWITHSET">xmlSecKeyUseWithSet</a></p></li>
 <li><p><a href="xmlsec-mscrypto-app.html#XMLSECMSCRYPTOAPPDEFAULTKEYSMNGRADOPTKEY">xmlSecMSCryptoAppDefaultKeysMngrAdoptKey</a></p></li>
+<li><p><font>xmlSecMSCryptoAppDefaultKeysMngrAdoptKeyStore</font></p></li>
+<li><p><font>xmlSecMSCryptoAppDefaultKeysMngrAdoptTrustedStore</font></p></li>
+<li><p><font>xmlSecMSCryptoAppDefaultKeysMngrAdoptUntrustedStore</font></p></li>
 <li><p><a href="xmlsec-mscrypto-app.html#XMLSECMSCRYPTOAPPDEFAULTKEYSMNGRINIT">xmlSecMSCryptoAppDefaultKeysMngrInit</a></p></li>
 <li><p><a href="xmlsec-mscrypto-app.html#XMLSECMSCRYPTOAPPDEFAULTKEYSMNGRLOAD">xmlSecMSCryptoAppDefaultKeysMngrLoad</a></p></li>
+<li><p><font>xmlSecMSCryptoAppDefaultKeysMngrPrivateKeyLoad</font></p></li>
+<li><p><font>xmlSecMSCryptoAppDefaultKeysMngrPublicKeyLoad</font></p></li>
 <li><p><a href="xmlsec-mscrypto-app.html#XMLSECMSCRYPTOAPPDEFAULTKEYSMNGRSAVE">xmlSecMSCryptoAppDefaultKeysMngrSave</a></p></li>
+<li><p><font>xmlSecMSCryptoAppDefaultKeysMngrSymKeyLoad</font></p></li>
 <li><p><a href="xmlsec-mscrypto-app.html#XMLSECMSCRYPTOAPPGETCERTSTORENAME">xmlSecMSCryptoAppGetCertStoreName</a></p></li>
 <li><p><a href="xmlsec-mscrypto-app.html#XMLSECMSCRYPTOAPPGETDEFAULTPWDCALLBACK">xmlSecMSCryptoAppGetDefaultPwdCallback</a></p></li>
 <li><p><a href="xmlsec-mscrypto-app.html#XMLSECMSCRYPTOAPPINIT">xmlSecMSCryptoAppInit</a></p></li>
@@ -669,10 +675,14 @@
 <li><p><a href="xmlsec-mscrypto-crypto.html#XMLSECMSCRYPTOTRANSFORMSHA1GETKLASS">xmlSecMSCryptoTransformSha1GetKlass</a></p></li>
 <li><p><a href="xmlsec-mscrypto-crypto.html#XMLSECMSCRYPTOTRANSFORMSHA1ID">xmlSecMSCryptoTransformSha1Id</a></p></li>
 <li><p><a href="xmlsec-mscrypto-x509.html#XMLSECMSCRYPTOX509STOREADOPTCERT">xmlSecMSCryptoX509StoreAdoptCert</a></p></li>
+<li><p><font>xmlSecMSCryptoX509StoreAdoptKeyStore</font></p></li>
+<li><p><font>xmlSecMSCryptoX509StoreAdoptTrustedStore</font></p></li>
+<li><p><font>xmlSecMSCryptoX509StoreAdoptUntrustedStore</font></p></li>
 <li><p><a href="xmlsec-mscrypto-x509.html#XMLSECMSCRYPTOX509STOREFINDCERT">xmlSecMSCryptoX509StoreFindCert</a></p></li>
 <li><p><a href="xmlsec-mscrypto-x509.html#XMLSECMSCRYPTOX509STOREGETKLASS">xmlSecMSCryptoX509StoreGetKlass</a></p></li>
 <li><p><a href="xmlsec-mscrypto-x509.html#XMLSECMSCRYPTOX509STOREID">xmlSecMSCryptoX509StoreId</a></p></li>
 <li><p><a href="xmlsec-mscrypto-x509.html#XMLSECMSCRYPTOX509STOREVERIFY">xmlSecMSCryptoX509StoreVerify</a></p></li>
+<li><p><font>XMLSEC-NO-AES</font></p></li>
 <li><p><a href="xmlsec-xmltree.html#XMLSECNODEGETNAME">xmlSecNodeGetName</a></p></li>
 <li><p><a href="xmlsec-nodeset.html#XMLSECNODESETADDLIST">xmlSecNodeSetAddList</a></p></li>
 <li><p><a href="xmlsec-nodeset.html#XMLSECNODESETADD">xmlSecNodeSetAdd</a></p></li>
@@ -688,6 +698,10 @@
 <li><p><a href="xmlsec-nodeset.html#XMLSECNODESETTYPE">xmlSecNodeSetType</a></p></li>
 <li><p><a href="xmlsec-nodeset.html#XMLSECNODESETWALKCALLBACK">xmlSecNodeSetWalkCallback</a></p></li>
 <li><p><a href="xmlsec-nodeset.html#XMLSECNODESETWALK">xmlSecNodeSetWalk</a></p></li>
+<li><p><font>XMLSEC-NO-SHA224</font></p></li>
+<li><p><font>XMLSEC-NO-SHA256</font></p></li>
+<li><p><font>XMLSEC-NO-SHA384</font></p></li>
+<li><p><font>XMLSEC-NO-SHA512</font></p></li>
 <li><p><a href="xmlsec-nss-app.html#XMLSECNSSAPPDEFAULTKEYSMNGRADOPTKEY">xmlSecNssAppDefaultKeysMngrAdoptKey</a></p></li>
 <li><p><a href="xmlsec-nss-app.html#XMLSECNSSAPPDEFAULTKEYSMNGRINIT">xmlSecNssAppDefaultKeysMngrInit</a></p></li>
 <li><p><a href="xmlsec-nss-app.html#XMLSECNSSAPPDEFAULTKEYSMNGRLOAD">xmlSecNssAppDefaultKeysMngrLoad</a></p></li>
@@ -710,6 +724,7 @@
 <li><p><a href="xmlsec-nss-app.html#XMLSECNSSAPPSHUTDOWN">xmlSecNssAppShutdown</a></p></li>
 <li><p><a href="xmlsec-nss-crypto.html#XMLSECNSSERRORSDEFAULTCALLBACK">xmlSecNssErrorsDefaultCallback</a></p></li>
 <li><p><a href="xmlsec-nss-crypto.html#XMLSECNSSGENERATERANDOM">xmlSecNssGenerateRandom</a></p></li>
+<li><p><font>xmlSecNssGetInternalKeySlot</font></p></li>
 <li><p><a href="xmlsec-nss-crypto.html#XMLSECNSSINIT">xmlSecNssInit</a></p></li>
 <li><p><a href="xmlsec-nss-crypto.html#XMLSECNSSKEYDATAAESGETKLASS">xmlSecNssKeyDataAesGetKlass</a></p></li>
 <li><p><a href="xmlsec-nss-crypto.html#XMLSECNSSKEYDATAAESID">xmlSecNssKeyDataAesId</a></p></li>
@@ -774,6 +789,8 @@
 <li><p><a href="xmlsec-nss-crypto.html#XMLSECNSSTRANSFORMKWAES256ID">xmlSecNssTransformKWAes256Id</a></p></li>
 <li><p><a href="xmlsec-nss-crypto.html#XMLSECNSSTRANSFORMKWDES3GETKLASS">xmlSecNssTransformKWDes3GetKlass</a></p></li>
 <li><p><a href="xmlsec-nss-crypto.html#XMLSECNSSTRANSFORMKWDES3ID">xmlSecNssTransformKWDes3Id</a></p></li>
+<li><p><font>xmlSecNssTransformRsaOaepGetKlass</font></p></li>
+<li><p><font>xmlSecNssTransformRsaOaepId</font></p></li>
 <li><p><a href="xmlsec-nss-crypto.html#XMLSECNSSTRANSFORMRSAPKCS1GETKLASS">xmlSecNssTransformRsaPkcs1GetKlass</a></p></li>
 <li><p><a href="xmlsec-nss-crypto.html#XMLSECNSSTRANSFORMRSAPKCS1ID">xmlSecNssTransformRsaPkcs1Id</a></p></li>
 <li><p><a href="xmlsec-nss-crypto.html#XMLSECNSSTRANSFORMRSASHA1GETKLASS">xmlSecNssTransformRsaSha1GetKlass</a></p></li>
@@ -871,6 +888,14 @@
 <li><p><a href="xmlsec-openssl-crypto.html#XMLSECOPENSSLTRANSFORMHMACRIPEMD160ID">xmlSecOpenSSLTransformHmacRipemd160Id</a></p></li>
 <li><p><a href="xmlsec-openssl-crypto.html#XMLSECOPENSSLTRANSFORMHMACSHA1GETKLASS">xmlSecOpenSSLTransformHmacSha1GetKlass</a></p></li>
 <li><p><a href="xmlsec-openssl-crypto.html#XMLSECOPENSSLTRANSFORMHMACSHA1ID">xmlSecOpenSSLTransformHmacSha1Id</a></p></li>
+<li><p><font>xmlSecOpenSSLTransformHmacSha224GetKlass</font></p></li>
+<li><p><font>xmlSecOpenSSLTransformHmacSha224Id</font></p></li>
+<li><p><font>xmlSecOpenSSLTransformHmacSha256GetKlass</font></p></li>
+<li><p><font>xmlSecOpenSSLTransformHmacSha256Id</font></p></li>
+<li><p><font>xmlSecOpenSSLTransformHmacSha384GetKlass</font></p></li>
+<li><p><font>xmlSecOpenSSLTransformHmacSha384Id</font></p></li>
+<li><p><font>xmlSecOpenSSLTransformHmacSha512GetKlass</font></p></li>
+<li><p><font>xmlSecOpenSSLTransformHmacSha512Id</font></p></li>
 <li><p><a href="xmlsec-openssl-crypto.html#XMLSECOPENSSLTRANSFORMKWAES128GETKLASS">xmlSecOpenSSLTransformKWAes128GetKlass</a></p></li>
 <li><p><a href="xmlsec-openssl-crypto.html#XMLSECOPENSSLTRANSFORMKWAES128ID">xmlSecOpenSSLTransformKWAes128Id</a></p></li>
 <li><p><a href="xmlsec-openssl-crypto.html#XMLSECOPENSSLTRANSFORMKWAES192GETKLASS">xmlSecOpenSSLTransformKWAes192GetKlass</a></p></li>
@@ -879,16 +904,38 @@
 <li><p><a href="xmlsec-openssl-crypto.html#XMLSECOPENSSLTRANSFORMKWAES256ID">xmlSecOpenSSLTransformKWAes256Id</a></p></li>
 <li><p><a href="xmlsec-openssl-crypto.html#XMLSECOPENSSLTRANSFORMKWDES3GETKLASS">xmlSecOpenSSLTransformKWDes3GetKlass</a></p></li>
 <li><p><a href="xmlsec-openssl-crypto.html#XMLSECOPENSSLTRANSFORMKWDES3ID">xmlSecOpenSSLTransformKWDes3Id</a></p></li>
+<li><p><font>xmlSecOpenSSLTransformMd5GetKlass</font></p></li>
+<li><p><font>xmlSecOpenSSLTransformMd5Id</font></p></li>
 <li><p><a href="xmlsec-openssl-crypto.html#XMLSECOPENSSLTRANSFORMRIPEMD160GETKLASS">xmlSecOpenSSLTransformRipemd160GetKlass</a></p></li>
 <li><p><a href="xmlsec-openssl-crypto.html#XMLSECOPENSSLTRANSFORMRIPEMD160ID">xmlSecOpenSSLTransformRipemd160Id</a></p></li>
+<li><p><font>xmlSecOpenSSLTransformRsaMd5GetKlass</font></p></li>
+<li><p><font>xmlSecOpenSSLTransformRsaMd5Id</font></p></li>
 <li><p><a href="xmlsec-openssl-crypto.html#XMLSECOPENSSLTRANSFORMRSAOAEPGETKLASS">xmlSecOpenSSLTransformRsaOaepGetKlass</a></p></li>
 <li><p><a href="xmlsec-openssl-crypto.html#XMLSECOPENSSLTRANSFORMRSAOAEPID">xmlSecOpenSSLTransformRsaOaepId</a></p></li>
 <li><p><a href="xmlsec-openssl-crypto.html#XMLSECOPENSSLTRANSFORMRSAPKCS1GETKLASS">xmlSecOpenSSLTransformRsaPkcs1GetKlass</a></p></li>
 <li><p><a href="xmlsec-openssl-crypto.html#XMLSECOPENSSLTRANSFORMRSAPKCS1ID">xmlSecOpenSSLTransformRsaPkcs1Id</a></p></li>
+<li><p><font>xmlSecOpenSSLTransformRsaRipemd160GetKlass</font></p></li>
+<li><p><font>xmlSecOpenSSLTransformRsaRipemd160Id</font></p></li>
 <li><p><a href="xmlsec-openssl-crypto.html#XMLSECOPENSSLTRANSFORMRSASHA1GETKLASS">xmlSecOpenSSLTransformRsaSha1GetKlass</a></p></li>
 <li><p><a href="xmlsec-openssl-crypto.html#XMLSECOPENSSLTRANSFORMRSASHA1ID">xmlSecOpenSSLTransformRsaSha1Id</a></p></li>
+<li><p><font>xmlSecOpenSSLTransformRsaSha224GetKlass</font></p></li>
+<li><p><font>xmlSecOpenSSLTransformRsaSha224Id</font></p></li>
+<li><p><font>xmlSecOpenSSLTransformRsaSha256GetKlass</font></p></li>
+<li><p><font>xmlSecOpenSSLTransformRsaSha256Id</font></p></li>
+<li><p><font>xmlSecOpenSSLTransformRsaSha384GetKlass</font></p></li>
+<li><p><font>xmlSecOpenSSLTransformRsaSha384Id</font></p></li>
+<li><p><font>xmlSecOpenSSLTransformRsaSha512GetKlass</font></p></li>
+<li><p><font>xmlSecOpenSSLTransformRsaSha512Id</font></p></li>
 <li><p><a href="xmlsec-openssl-crypto.html#XMLSECOPENSSLTRANSFORMSHA1GETKLASS">xmlSecOpenSSLTransformSha1GetKlass</a></p></li>
 <li><p><a href="xmlsec-openssl-crypto.html#XMLSECOPENSSLTRANSFORMSHA1ID">xmlSecOpenSSLTransformSha1Id</a></p></li>
+<li><p><font>xmlSecOpenSSLTransformSha224GetKlass</font></p></li>
+<li><p><font>xmlSecOpenSSLTransformSha224Id</font></p></li>
+<li><p><font>xmlSecOpenSSLTransformSha256GetKlass</font></p></li>
+<li><p><font>xmlSecOpenSSLTransformSha256Id</font></p></li>
+<li><p><font>xmlSecOpenSSLTransformSha384GetKlass</font></p></li>
+<li><p><font>xmlSecOpenSSLTransformSha384Id</font></p></li>
+<li><p><font>xmlSecOpenSSLTransformSha512GetKlass</font></p></li>
+<li><p><font>xmlSecOpenSSLTransformSha512Id</font></p></li>
 <li><p><a href="xmlsec-openssl-x509.html#XMLSECOPENSSLX509CERTGETKEY">xmlSecOpenSSLX509CertGetKey</a></p></li>
 <li><p><a href="xmlsec-openssl-x509.html#XMLSECOPENSSLX509STOREADDCERTSPATH">xmlSecOpenSSLX509StoreAddCertsPath</a></p></li>
 <li><p><a href="xmlsec-openssl-x509.html#XMLSECOPENSSLX509STOREADOPTCERT">xmlSecOpenSSLX509StoreAdoptCert</a></p></li>
@@ -952,6 +999,7 @@
 <li><p><a href="xmlsec-xmltree.html#XMLSECREPLACENODE">xmlSecReplaceNode</a></p></li>
 <li><p><a href="xmlsec-xmlsec.html#XMLSECSHUTDOWN">xmlSecShutdown</a></p></li>
 <li><p><a href="xmlsec-keysmngr.html#XMLSECSIMPLEKEYSSTOREADOPTKEY">xmlSecSimpleKeysStoreAdoptKey</a></p></li>
+<li><p><font>xmlSecSimpleKeysStoreGetKeys</font></p></li>
 <li><p><a href="xmlsec-keysmngr.html#XMLSECSIMPLEKEYSSTOREGETKLASS">xmlSecSimpleKeysStoreGetKlass</a></p></li>
 <li><p><a href="xmlsec-keysmngr.html#XMLSECSIMPLEKEYSSTOREID">xmlSecSimpleKeysStoreId</a></p></li>
 <li><p><a href="xmlsec-keysmngr.html#XMLSECSIMPLEKEYSSTORELOAD">xmlSecSimpleKeysStoreLoad</a></p></li>
@@ -1020,6 +1068,11 @@
 <li><p><a href="xmlsec-templates.html#XMLSECTMPLTRANSFORMADDXPATH">xmlSecTmplTransformAddXPath</a></p></li>
 <li><p><a href="xmlsec-templates.html#XMLSECTMPLTRANSFORMADDXPOINTER">xmlSecTmplTransformAddXPointer</a></p></li>
 <li><p><a href="xmlsec-templates.html#XMLSECTMPLTRANSFORMADDXSLTSTYLESHEET">xmlSecTmplTransformAddXsltStylesheet</a></p></li>
+<li><p><font>xmlSecTmplX509DataAddCertificate</font></p></li>
+<li><p><font>xmlSecTmplX509DataAddCRL</font></p></li>
+<li><p><font>xmlSecTmplX509DataAddIssuerSerial</font></p></li>
+<li><p><font>xmlSecTmplX509DataAddSKI</font></p></li>
+<li><p><font>xmlSecTmplX509DataAddSubjectName</font></p></li>
 <li><p><a href="xmlsec-app.html#XMLSECTRANSFORMAES128CBCGETKLASS">xmlSecTransformAes128CbcGetKlass</a></p></li>
 <li><p><a href="xmlsec-app.html#XMLSECTRANSFORMAES128CBCID">xmlSecTransformAes128CbcId</a></p></li>
 <li><p><a href="xmlsec-app.html#XMLSECTRANSFORMAES192CBCGETKLASS">xmlSecTransformAes192CbcGetKlass</a></p></li>
@@ -1094,6 +1147,14 @@
 <li><p><a href="xmlsec-app.html#XMLSECTRANSFORMHMACRIPEMD160ID">xmlSecTransformHmacRipemd160Id</a></p></li>
 <li><p><a href="xmlsec-app.html#XMLSECTRANSFORMHMACSHA1GETKLASS">xmlSecTransformHmacSha1GetKlass</a></p></li>
 <li><p><a href="xmlsec-app.html#XMLSECTRANSFORMHMACSHA1ID">xmlSecTransformHmacSha1Id</a></p></li>
+<li><p><font>xmlSecTransformHmacSha224GetKlass</font></p></li>
+<li><p><font>xmlSecTransformHmacSha224Id</font></p></li>
+<li><p><font>xmlSecTransformHmacSha256GetKlass</font></p></li>
+<li><p><font>xmlSecTransformHmacSha256Id</font></p></li>
+<li><p><font>xmlSecTransformHmacSha384GetKlass</font></p></li>
+<li><p><font>xmlSecTransformHmacSha384Id</font></p></li>
+<li><p><font>xmlSecTransformHmacSha512GetKlass</font></p></li>
+<li><p><font>xmlSecTransformHmacSha512Id</font></p></li>
 <li><p><a href="xmlsec-transforms.html#XMLSECTRANSFORMIDLISTDEBUGDUMP">xmlSecTransformIdListDebugDump</a></p></li>
 <li><p><a href="xmlsec-transforms.html#XMLSECTRANSFORMIDLISTDEBUGXMLDUMP">xmlSecTransformIdListDebugXmlDump</a></p></li>
 <li><p><a href="xmlsec-transforms.html#XMLSECTRANSFORMIDLISTFINDBYHREF">xmlSecTransformIdListFindByHref</a></p></li>
@@ -1126,6 +1187,8 @@
 <li><p><a href="xmlsec-app.html#XMLSECTRANSFORMKWAES256ID">xmlSecTransformKWAes256Id</a></p></li>
 <li><p><a href="xmlsec-app.html#XMLSECTRANSFORMKWDES3GETKLASS">xmlSecTransformKWDes3GetKlass</a></p></li>
 <li><p><a href="xmlsec-app.html#XMLSECTRANSFORMKWDES3ID">xmlSecTransformKWDes3Id</a></p></li>
+<li><p><font>xmlSecTransformMd5GetKlass</font></p></li>
+<li><p><font>xmlSecTransformMd5Id</font></p></li>
 <li><p><a href="xmlsec-membuf.html#XMLSECTRANSFORMMEMBUFGETBUFFER">xmlSecTransformMemBufGetBuffer</a></p></li>
 <li><p><a href="xmlsec-membuf.html#XMLSECTRANSFORMMEMBUFGETKLASS">xmlSecTransformMemBufGetKlass</a></p></li>
 <li><p><a href="xmlsec-membuf.html#XMLSECTRANSFORMMEMBUFID">xmlSecTransformMemBufId</a></p></li>
@@ -1149,18 +1212,38 @@
 <li><p><a href="xmlsec-transforms.html#XMLSECTRANSFORMREMOVEXMLTAGSC14NID">xmlSecTransformRemoveXmlTagsC14NId</a></p></li>
 <li><p><a href="xmlsec-app.html#XMLSECTRANSFORMRIPEMD160GETKLASS">xmlSecTransformRipemd160GetKlass</a></p></li>
 <li><p><a href="xmlsec-app.html#XMLSECTRANSFORMRIPEMD160ID">xmlSecTransformRipemd160Id</a></p></li>
+<li><p><font>xmlSecTransformRsaMd5GetKlass</font></p></li>
+<li><p><font>xmlSecTransformRsaMd5Id</font></p></li>
 <li><p><a href="xmlsec-app.html#XMLSECTRANSFORMRSAOAEPGETKLASS">xmlSecTransformRsaOaepGetKlass</a></p></li>
 <li><p><a href="xmlsec-app.html#XMLSECTRANSFORMRSAOAEPID">xmlSecTransformRsaOaepId</a></p></li>
 <li><p><a href="xmlsec-app.html#XMLSECTRANSFORMRSAPKCS1GETKLASS">xmlSecTransformRsaPkcs1GetKlass</a></p></li>
 <li><p><a href="xmlsec-app.html#XMLSECTRANSFORMRSAPKCS1ID">xmlSecTransformRsaPkcs1Id</a></p></li>
+<li><p><font>xmlSecTransformRsaRipemd160GetKlass</font></p></li>
+<li><p><font>xmlSecTransformRsaRipemd160Id</font></p></li>
 <li><p><a href="xmlsec-app.html#XMLSECTRANSFORMRSASHA1GETKLASS">xmlSecTransformRsaSha1GetKlass</a></p></li>
 <li><p><a href="xmlsec-app.html#XMLSECTRANSFORMRSASHA1ID">xmlSecTransformRsaSha1Id</a></p></li>
+<li><p><font>xmlSecTransformRsaSha224GetKlass</font></p></li>
+<li><p><font>xmlSecTransformRsaSha224Id</font></p></li>
+<li><p><font>xmlSecTransformRsaSha256GetKlass</font></p></li>
+<li><p><font>xmlSecTransformRsaSha256Id</font></p></li>
+<li><p><font>xmlSecTransformRsaSha384GetKlass</font></p></li>
+<li><p><font>xmlSecTransformRsaSha384Id</font></p></li>
+<li><p><font>xmlSecTransformRsaSha512GetKlass</font></p></li>
+<li><p><font>xmlSecTransformRsaSha512Id</font></p></li>
 <li><p><a href="xmlsec-transforms.html#XMLSECTRANSFORMSETKEYMETHOD">xmlSecTransformSetKeyMethod</a></p></li>
 <li><p><a href="xmlsec-transforms.html#XMLSECTRANSFORMSETKEY">xmlSecTransformSetKey</a></p></li>
 <li><p><a href="xmlsec-transforms.html#XMLSECTRANSFORMSETKEYREQ">xmlSecTransformSetKeyReq</a></p></li>
 <li><p><a href="xmlsec-transforms.html#XMLSECTRANSFORMSETKEYREQUIREMENTSMETHOD">xmlSecTransformSetKeyRequirementsMethod</a></p></li>
 <li><p><a href="xmlsec-app.html#XMLSECTRANSFORMSHA1GETKLASS">xmlSecTransformSha1GetKlass</a></p></li>
 <li><p><a href="xmlsec-app.html#XMLSECTRANSFORMSHA1ID">xmlSecTransformSha1Id</a></p></li>
+<li><p><font>xmlSecTransformSha224GetKlass</font></p></li>
+<li><p><font>xmlSecTransformSha224Id</font></p></li>
+<li><p><font>xmlSecTransformSha256GetKlass</font></p></li>
+<li><p><font>xmlSecTransformSha256Id</font></p></li>
+<li><p><font>xmlSecTransformSha384GetKlass</font></p></li>
+<li><p><font>xmlSecTransformSha384Id</font></p></li>
+<li><p><font>xmlSecTransformSha512GetKlass</font></p></li>
+<li><p><font>xmlSecTransformSha512Id</font></p></li>
 <li><p><a href="xmlsec-transforms.html#XMLSECTRANSFORMSTATUS">xmlSecTransformStatus</a></p></li>
 <li><p><a href="xmlsec-transforms.html#XMLSECTRANSFORMURITYPEANY">xmlSecTransformUriTypeAny</a></p></li>
 <li><p><a href="xmlsec-transforms.html#XMLSECTRANSFORMURITYPECHECK">xmlSecTransformUriTypeCheck</a></p></li>
@@ -1311,10 +1394,6 @@
 <td align="left"><a accesskey="p" href="xmlsec-mscrypto-x509.html"><b><<<�x509</b></a></td>
 <td align="right"></td>
 </tr></table>
-</td></tr>
-<tr><td>
-<br><br><p><a href="../bugs.html">Aleksey Sanin</a></p>
-</td></tr>
-</table></td>
+</td></tr></table></td>
 </tr></table></body>
 </html>
diff --git a/docs/api/xmlsec-index.sgml b/docs/api/xmlsec-index.sgml
index 1f3b761..6c9d2c5 100644
--- a/docs/api/xmlsec-index.sgml
+++ b/docs/api/xmlsec-index.sgml
@@ -510,9 +510,15 @@
 <listitem><para><link linkend="xmlSecKeyUseWithReset">xmlSecKeyUseWithReset</link></para></listitem>
 <listitem><para><link linkend="xmlSecKeyUseWithSet">xmlSecKeyUseWithSet</link></para></listitem>
 <listitem><para><link linkend="xmlSecMSCryptoAppDefaultKeysMngrAdoptKey">xmlSecMSCryptoAppDefaultKeysMngrAdoptKey</link></para></listitem>
+<listitem><para><link linkend="xmlSecMSCryptoAppDefaultKeysMngrAdoptKeyStore">xmlSecMSCryptoAppDefaultKeysMngrAdoptKeyStore</link></para></listitem>
+<listitem><para><link linkend="xmlSecMSCryptoAppDefaultKeysMngrAdoptTrustedStore">xmlSecMSCryptoAppDefaultKeysMngrAdoptTrustedStore</link></para></listitem>
+<listitem><para><link linkend="xmlSecMSCryptoAppDefaultKeysMngrAdoptUntrustedStore">xmlSecMSCryptoAppDefaultKeysMngrAdoptUntrustedStore</link></para></listitem>
 <listitem><para><link linkend="xmlSecMSCryptoAppDefaultKeysMngrInit">xmlSecMSCryptoAppDefaultKeysMngrInit</link></para></listitem>
 <listitem><para><link linkend="xmlSecMSCryptoAppDefaultKeysMngrLoad">xmlSecMSCryptoAppDefaultKeysMngrLoad</link></para></listitem>
+<listitem><para><link linkend="xmlSecMSCryptoAppDefaultKeysMngrPrivateKeyLoad">xmlSecMSCryptoAppDefaultKeysMngrPrivateKeyLoad</link></para></listitem>
+<listitem><para><link linkend="xmlSecMSCryptoAppDefaultKeysMngrPublicKeyLoad">xmlSecMSCryptoAppDefaultKeysMngrPublicKeyLoad</link></para></listitem>
 <listitem><para><link linkend="xmlSecMSCryptoAppDefaultKeysMngrSave">xmlSecMSCryptoAppDefaultKeysMngrSave</link></para></listitem>
+<listitem><para><link linkend="xmlSecMSCryptoAppDefaultKeysMngrSymKeyLoad">xmlSecMSCryptoAppDefaultKeysMngrSymKeyLoad</link></para></listitem>
 <listitem><para><link linkend="xmlSecMSCryptoAppGetCertStoreName">xmlSecMSCryptoAppGetCertStoreName</link></para></listitem>
 <listitem><para><link linkend="xmlSecMSCryptoAppGetDefaultPwdCallback">xmlSecMSCryptoAppGetDefaultPwdCallback</link></para></listitem>
 <listitem><para><link linkend="xmlSecMSCryptoAppInit">xmlSecMSCryptoAppInit</link></para></listitem>
@@ -578,10 +584,14 @@
 <listitem><para><link linkend="xmlSecMSCryptoTransformSha1GetKlass">xmlSecMSCryptoTransformSha1GetKlass</link></para></listitem>
 <listitem><para><link linkend="xmlSecMSCryptoTransformSha1Id">xmlSecMSCryptoTransformSha1Id</link></para></listitem>
 <listitem><para><link linkend="xmlSecMSCryptoX509StoreAdoptCert">xmlSecMSCryptoX509StoreAdoptCert</link></para></listitem>
+<listitem><para><link linkend="xmlSecMSCryptoX509StoreAdoptKeyStore">xmlSecMSCryptoX509StoreAdoptKeyStore</link></para></listitem>
+<listitem><para><link linkend="xmlSecMSCryptoX509StoreAdoptTrustedStore">xmlSecMSCryptoX509StoreAdoptTrustedStore</link></para></listitem>
+<listitem><para><link linkend="xmlSecMSCryptoX509StoreAdoptUntrustedStore">xmlSecMSCryptoX509StoreAdoptUntrustedStore</link></para></listitem>
 <listitem><para><link linkend="xmlSecMSCryptoX509StoreFindCert">xmlSecMSCryptoX509StoreFindCert</link></para></listitem>
 <listitem><para><link linkend="xmlSecMSCryptoX509StoreGetKlass">xmlSecMSCryptoX509StoreGetKlass</link></para></listitem>
 <listitem><para><link linkend="xmlSecMSCryptoX509StoreId">xmlSecMSCryptoX509StoreId</link></para></listitem>
 <listitem><para><link linkend="xmlSecMSCryptoX509StoreVerify">xmlSecMSCryptoX509StoreVerify</link></para></listitem>
+<listitem><para><link linkend="XMLSEC-NO-AES-CAPS">XMLSEC-NO-AES</link></para></listitem>
 <listitem><para><link linkend="xmlSecNodeGetName">xmlSecNodeGetName</link></para></listitem>
 <listitem><para><link linkend="xmlSecNodeSetAddList">xmlSecNodeSetAddList</link></para></listitem>
 <listitem><para><link linkend="xmlSecNodeSetAdd">xmlSecNodeSetAdd</link></para></listitem>
@@ -597,6 +607,10 @@
 <listitem><para><link linkend="xmlSecNodeSetType">xmlSecNodeSetType</link></para></listitem>
 <listitem><para><link linkend="xmlSecNodeSetWalkCallback">xmlSecNodeSetWalkCallback</link></para></listitem>
 <listitem><para><link linkend="xmlSecNodeSetWalk">xmlSecNodeSetWalk</link></para></listitem>
+<listitem><para><link linkend="XMLSEC-NO-SHA224-CAPS">XMLSEC-NO-SHA224</link></para></listitem>
+<listitem><para><link linkend="XMLSEC-NO-SHA256-CAPS">XMLSEC-NO-SHA256</link></para></listitem>
+<listitem><para><link linkend="XMLSEC-NO-SHA384-CAPS">XMLSEC-NO-SHA384</link></para></listitem>
+<listitem><para><link linkend="XMLSEC-NO-SHA512-CAPS">XMLSEC-NO-SHA512</link></para></listitem>
 <listitem><para><link linkend="xmlSecNssAppDefaultKeysMngrAdoptKey">xmlSecNssAppDefaultKeysMngrAdoptKey</link></para></listitem>
 <listitem><para><link linkend="xmlSecNssAppDefaultKeysMngrInit">xmlSecNssAppDefaultKeysMngrInit</link></para></listitem>
 <listitem><para><link linkend="xmlSecNssAppDefaultKeysMngrLoad">xmlSecNssAppDefaultKeysMngrLoad</link></para></listitem>
@@ -619,6 +633,7 @@
 <listitem><para><link linkend="xmlSecNssAppShutdown">xmlSecNssAppShutdown</link></para></listitem>
 <listitem><para><link linkend="xmlSecNssErrorsDefaultCallback">xmlSecNssErrorsDefaultCallback</link></para></listitem>
 <listitem><para><link linkend="xmlSecNssGenerateRandom">xmlSecNssGenerateRandom</link></para></listitem>
+<listitem><para><link linkend="xmlSecNssGetInternalKeySlot">xmlSecNssGetInternalKeySlot</link></para></listitem>
 <listitem><para><link linkend="xmlSecNssInit">xmlSecNssInit</link></para></listitem>
 <listitem><para><link linkend="xmlSecNssKeyDataAesGetKlass">xmlSecNssKeyDataAesGetKlass</link></para></listitem>
 <listitem><para><link linkend="xmlSecNssKeyDataAesId">xmlSecNssKeyDataAesId</link></para></listitem>
@@ -683,6 +698,8 @@
 <listitem><para><link linkend="xmlSecNssTransformKWAes256Id">xmlSecNssTransformKWAes256Id</link></para></listitem>
 <listitem><para><link linkend="xmlSecNssTransformKWDes3GetKlass">xmlSecNssTransformKWDes3GetKlass</link></para></listitem>
 <listitem><para><link linkend="xmlSecNssTransformKWDes3Id">xmlSecNssTransformKWDes3Id</link></para></listitem>
+<listitem><para><link linkend="xmlSecNssTransformRsaOaepGetKlass">xmlSecNssTransformRsaOaepGetKlass</link></para></listitem>
+<listitem><para><link linkend="xmlSecNssTransformRsaOaepId">xmlSecNssTransformRsaOaepId</link></para></listitem>
 <listitem><para><link linkend="xmlSecNssTransformRsaPkcs1GetKlass">xmlSecNssTransformRsaPkcs1GetKlass</link></para></listitem>
 <listitem><para><link linkend="xmlSecNssTransformRsaPkcs1Id">xmlSecNssTransformRsaPkcs1Id</link></para></listitem>
 <listitem><para><link linkend="xmlSecNssTransformRsaSha1GetKlass">xmlSecNssTransformRsaSha1GetKlass</link></para></listitem>
@@ -780,6 +797,14 @@
 <listitem><para><link linkend="xmlSecOpenSSLTransformHmacRipemd160Id">xmlSecOpenSSLTransformHmacRipemd160Id</link></para></listitem>
 <listitem><para><link linkend="xmlSecOpenSSLTransformHmacSha1GetKlass">xmlSecOpenSSLTransformHmacSha1GetKlass</link></para></listitem>
 <listitem><para><link linkend="xmlSecOpenSSLTransformHmacSha1Id">xmlSecOpenSSLTransformHmacSha1Id</link></para></listitem>
+<listitem><para><link linkend="xmlSecOpenSSLTransformHmacSha224GetKlass">xmlSecOpenSSLTransformHmacSha224GetKlass</link></para></listitem>
+<listitem><para><link linkend="xmlSecOpenSSLTransformHmacSha224Id">xmlSecOpenSSLTransformHmacSha224Id</link></para></listitem>
+<listitem><para><link linkend="xmlSecOpenSSLTransformHmacSha256GetKlass">xmlSecOpenSSLTransformHmacSha256GetKlass</link></para></listitem>
+<listitem><para><link linkend="xmlSecOpenSSLTransformHmacSha256Id">xmlSecOpenSSLTransformHmacSha256Id</link></para></listitem>
+<listitem><para><link linkend="xmlSecOpenSSLTransformHmacSha384GetKlass">xmlSecOpenSSLTransformHmacSha384GetKlass</link></para></listitem>
+<listitem><para><link linkend="xmlSecOpenSSLTransformHmacSha384Id">xmlSecOpenSSLTransformHmacSha384Id</link></para></listitem>
+<listitem><para><link linkend="xmlSecOpenSSLTransformHmacSha512GetKlass">xmlSecOpenSSLTransformHmacSha512GetKlass</link></para></listitem>
+<listitem><para><link linkend="xmlSecOpenSSLTransformHmacSha512Id">xmlSecOpenSSLTransformHmacSha512Id</link></para></listitem>
 <listitem><para><link linkend="xmlSecOpenSSLTransformKWAes128GetKlass">xmlSecOpenSSLTransformKWAes128GetKlass</link></para></listitem>
 <listitem><para><link linkend="xmlSecOpenSSLTransformKWAes128Id">xmlSecOpenSSLTransformKWAes128Id</link></para></listitem>
 <listitem><para><link linkend="xmlSecOpenSSLTransformKWAes192GetKlass">xmlSecOpenSSLTransformKWAes192GetKlass</link></para></listitem>
@@ -788,16 +813,38 @@
 <listitem><para><link linkend="xmlSecOpenSSLTransformKWAes256Id">xmlSecOpenSSLTransformKWAes256Id</link></para></listitem>
 <listitem><para><link linkend="xmlSecOpenSSLTransformKWDes3GetKlass">xmlSecOpenSSLTransformKWDes3GetKlass</link></para></listitem>
 <listitem><para><link linkend="xmlSecOpenSSLTransformKWDes3Id">xmlSecOpenSSLTransformKWDes3Id</link></para></listitem>
+<listitem><para><link linkend="xmlSecOpenSSLTransformMd5GetKlass">xmlSecOpenSSLTransformMd5GetKlass</link></para></listitem>
+<listitem><para><link linkend="xmlSecOpenSSLTransformMd5Id">xmlSecOpenSSLTransformMd5Id</link></para></listitem>
 <listitem><para><link linkend="xmlSecOpenSSLTransformRipemd160GetKlass">xmlSecOpenSSLTransformRipemd160GetKlass</link></para></listitem>
 <listitem><para><link linkend="xmlSecOpenSSLTransformRipemd160Id">xmlSecOpenSSLTransformRipemd160Id</link></para></listitem>
+<listitem><para><link linkend="xmlSecOpenSSLTransformRsaMd5GetKlass">xmlSecOpenSSLTransformRsaMd5GetKlass</link></para></listitem>
+<listitem><para><link linkend="xmlSecOpenSSLTransformRsaMd5Id">xmlSecOpenSSLTransformRsaMd5Id</link></para></listitem>
 <listitem><para><link linkend="xmlSecOpenSSLTransformRsaOaepGetKlass">xmlSecOpenSSLTransformRsaOaepGetKlass</link></para></listitem>
 <listitem><para><link linkend="xmlSecOpenSSLTransformRsaOaepId">xmlSecOpenSSLTransformRsaOaepId</link></para></listitem>
 <listitem><para><link linkend="xmlSecOpenSSLTransformRsaPkcs1GetKlass">xmlSecOpenSSLTransformRsaPkcs1GetKlass</link></para></listitem>
 <listitem><para><link linkend="xmlSecOpenSSLTransformRsaPkcs1Id">xmlSecOpenSSLTransformRsaPkcs1Id</link></para></listitem>
+<listitem><para><link linkend="xmlSecOpenSSLTransformRsaRipemd160GetKlass">xmlSecOpenSSLTransformRsaRipemd160GetKlass</link></para></listitem>
+<listitem><para><link linkend="xmlSecOpenSSLTransformRsaRipemd160Id">xmlSecOpenSSLTransformRsaRipemd160Id</link></para></listitem>
 <listitem><para><link linkend="xmlSecOpenSSLTransformRsaSha1GetKlass">xmlSecOpenSSLTransformRsaSha1GetKlass</link></para></listitem>
 <listitem><para><link linkend="xmlSecOpenSSLTransformRsaSha1Id">xmlSecOpenSSLTransformRsaSha1Id</link></para></listitem>
+<listitem><para><link linkend="xmlSecOpenSSLTransformRsaSha224GetKlass">xmlSecOpenSSLTransformRsaSha224GetKlass</link></para></listitem>
+<listitem><para><link linkend="xmlSecOpenSSLTransformRsaSha224Id">xmlSecOpenSSLTransformRsaSha224Id</link></para></listitem>
+<listitem><para><link linkend="xmlSecOpenSSLTransformRsaSha256GetKlass">xmlSecOpenSSLTransformRsaSha256GetKlass</link></para></listitem>
+<listitem><para><link linkend="xmlSecOpenSSLTransformRsaSha256Id">xmlSecOpenSSLTransformRsaSha256Id</link></para></listitem>
+<listitem><para><link linkend="xmlSecOpenSSLTransformRsaSha384GetKlass">xmlSecOpenSSLTransformRsaSha384GetKlass</link></para></listitem>
+<listitem><para><link linkend="xmlSecOpenSSLTransformRsaSha384Id">xmlSecOpenSSLTransformRsaSha384Id</link></para></listitem>
+<listitem><para><link linkend="xmlSecOpenSSLTransformRsaSha512GetKlass">xmlSecOpenSSLTransformRsaSha512GetKlass</link></para></listitem>
+<listitem><para><link linkend="xmlSecOpenSSLTransformRsaSha512Id">xmlSecOpenSSLTransformRsaSha512Id</link></para></listitem>
 <listitem><para><link linkend="xmlSecOpenSSLTransformSha1GetKlass">xmlSecOpenSSLTransformSha1GetKlass</link></para></listitem>
 <listitem><para><link linkend="xmlSecOpenSSLTransformSha1Id">xmlSecOpenSSLTransformSha1Id</link></para></listitem>
+<listitem><para><link linkend="xmlSecOpenSSLTransformSha224GetKlass">xmlSecOpenSSLTransformSha224GetKlass</link></para></listitem>
+<listitem><para><link linkend="xmlSecOpenSSLTransformSha224Id">xmlSecOpenSSLTransformSha224Id</link></para></listitem>
+<listitem><para><link linkend="xmlSecOpenSSLTransformSha256GetKlass">xmlSecOpenSSLTransformSha256GetKlass</link></para></listitem>
+<listitem><para><link linkend="xmlSecOpenSSLTransformSha256Id">xmlSecOpenSSLTransformSha256Id</link></para></listitem>
+<listitem><para><link linkend="xmlSecOpenSSLTransformSha384GetKlass">xmlSecOpenSSLTransformSha384GetKlass</link></para></listitem>
+<listitem><para><link linkend="xmlSecOpenSSLTransformSha384Id">xmlSecOpenSSLTransformSha384Id</link></para></listitem>
+<listitem><para><link linkend="xmlSecOpenSSLTransformSha512GetKlass">xmlSecOpenSSLTransformSha512GetKlass</link></para></listitem>
+<listitem><para><link linkend="xmlSecOpenSSLTransformSha512Id">xmlSecOpenSSLTransformSha512Id</link></para></listitem>
 <listitem><para><link linkend="xmlSecOpenSSLX509CertGetKey">xmlSecOpenSSLX509CertGetKey</link></para></listitem>
 <listitem><para><link linkend="xmlSecOpenSSLX509StoreAddCertsPath">xmlSecOpenSSLX509StoreAddCertsPath</link></para></listitem>
 <listitem><para><link linkend="xmlSecOpenSSLX509StoreAdoptCert">xmlSecOpenSSLX509StoreAdoptCert</link></para></listitem>
@@ -861,6 +908,7 @@
 <listitem><para><link linkend="xmlSecReplaceNode">xmlSecReplaceNode</link></para></listitem>
 <listitem><para><link linkend="xmlSecShutdown">xmlSecShutdown</link></para></listitem>
 <listitem><para><link linkend="xmlSecSimpleKeysStoreAdoptKey">xmlSecSimpleKeysStoreAdoptKey</link></para></listitem>
+<listitem><para><link linkend="xmlSecSimpleKeysStoreGetKeys">xmlSecSimpleKeysStoreGetKeys</link></para></listitem>
 <listitem><para><link linkend="xmlSecSimpleKeysStoreGetKlass">xmlSecSimpleKeysStoreGetKlass</link></para></listitem>
 <listitem><para><link linkend="xmlSecSimpleKeysStoreId">xmlSecSimpleKeysStoreId</link></para></listitem>
 <listitem><para><link linkend="xmlSecSimpleKeysStoreLoad">xmlSecSimpleKeysStoreLoad</link></para></listitem>
@@ -929,6 +977,11 @@
 <listitem><para><link linkend="xmlSecTmplTransformAddXPath">xmlSecTmplTransformAddXPath</link></para></listitem>
 <listitem><para><link linkend="xmlSecTmplTransformAddXPointer">xmlSecTmplTransformAddXPointer</link></para></listitem>
 <listitem><para><link linkend="xmlSecTmplTransformAddXsltStylesheet">xmlSecTmplTransformAddXsltStylesheet</link></para></listitem>
+<listitem><para><link linkend="xmlSecTmplX509DataAddCertificate">xmlSecTmplX509DataAddCertificate</link></para></listitem>
+<listitem><para><link linkend="xmlSecTmplX509DataAddCRL">xmlSecTmplX509DataAddCRL</link></para></listitem>
+<listitem><para><link linkend="xmlSecTmplX509DataAddIssuerSerial">xmlSecTmplX509DataAddIssuerSerial</link></para></listitem>
+<listitem><para><link linkend="xmlSecTmplX509DataAddSKI">xmlSecTmplX509DataAddSKI</link></para></listitem>
+<listitem><para><link linkend="xmlSecTmplX509DataAddSubjectName">xmlSecTmplX509DataAddSubjectName</link></para></listitem>
 <listitem><para><link linkend="xmlSecTransformAes128CbcGetKlass">xmlSecTransformAes128CbcGetKlass</link></para></listitem>
 <listitem><para><link linkend="xmlSecTransformAes128CbcId">xmlSecTransformAes128CbcId</link></para></listitem>
 <listitem><para><link linkend="xmlSecTransformAes192CbcGetKlass">xmlSecTransformAes192CbcGetKlass</link></para></listitem>
@@ -1003,6 +1056,14 @@
 <listitem><para><link linkend="xmlSecTransformHmacRipemd160Id">xmlSecTransformHmacRipemd160Id</link></para></listitem>
 <listitem><para><link linkend="xmlSecTransformHmacSha1GetKlass">xmlSecTransformHmacSha1GetKlass</link></para></listitem>
 <listitem><para><link linkend="xmlSecTransformHmacSha1Id">xmlSecTransformHmacSha1Id</link></para></listitem>
+<listitem><para><link linkend="xmlSecTransformHmacSha224GetKlass">xmlSecTransformHmacSha224GetKlass</link></para></listitem>
+<listitem><para><link linkend="xmlSecTransformHmacSha224Id">xmlSecTransformHmacSha224Id</link></para></listitem>
+<listitem><para><link linkend="xmlSecTransformHmacSha256GetKlass">xmlSecTransformHmacSha256GetKlass</link></para></listitem>
+<listitem><para><link linkend="xmlSecTransformHmacSha256Id">xmlSecTransformHmacSha256Id</link></para></listitem>
+<listitem><para><link linkend="xmlSecTransformHmacSha384GetKlass">xmlSecTransformHmacSha384GetKlass</link></para></listitem>
+<listitem><para><link linkend="xmlSecTransformHmacSha384Id">xmlSecTransformHmacSha384Id</link></para></listitem>
+<listitem><para><link linkend="xmlSecTransformHmacSha512GetKlass">xmlSecTransformHmacSha512GetKlass</link></para></listitem>
+<listitem><para><link linkend="xmlSecTransformHmacSha512Id">xmlSecTransformHmacSha512Id</link></para></listitem>
 <listitem><para><link linkend="xmlSecTransformIdListDebugDump">xmlSecTransformIdListDebugDump</link></para></listitem>
 <listitem><para><link linkend="xmlSecTransformIdListDebugXmlDump">xmlSecTransformIdListDebugXmlDump</link></para></listitem>
 <listitem><para><link linkend="xmlSecTransformIdListFindByHref">xmlSecTransformIdListFindByHref</link></para></listitem>
@@ -1035,6 +1096,8 @@
 <listitem><para><link linkend="xmlSecTransformKWAes256Id">xmlSecTransformKWAes256Id</link></para></listitem>
 <listitem><para><link linkend="xmlSecTransformKWDes3GetKlass">xmlSecTransformKWDes3GetKlass</link></para></listitem>
 <listitem><para><link linkend="xmlSecTransformKWDes3Id">xmlSecTransformKWDes3Id</link></para></listitem>
+<listitem><para><link linkend="xmlSecTransformMd5GetKlass">xmlSecTransformMd5GetKlass</link></para></listitem>
+<listitem><para><link linkend="xmlSecTransformMd5Id">xmlSecTransformMd5Id</link></para></listitem>
 <listitem><para><link linkend="xmlSecTransformMemBufGetBuffer">xmlSecTransformMemBufGetBuffer</link></para></listitem>
 <listitem><para><link linkend="xmlSecTransformMemBufGetKlass">xmlSecTransformMemBufGetKlass</link></para></listitem>
 <listitem><para><link linkend="xmlSecTransformMemBufId">xmlSecTransformMemBufId</link></para></listitem>
@@ -1058,18 +1121,38 @@
 <listitem><para><link linkend="xmlSecTransformRemoveXmlTagsC14NId">xmlSecTransformRemoveXmlTagsC14NId</link></para></listitem>
 <listitem><para><link linkend="xmlSecTransformRipemd160GetKlass">xmlSecTransformRipemd160GetKlass</link></para></listitem>
 <listitem><para><link linkend="xmlSecTransformRipemd160Id">xmlSecTransformRipemd160Id</link></para></listitem>
+<listitem><para><link linkend="xmlSecTransformRsaMd5GetKlass">xmlSecTransformRsaMd5GetKlass</link></para></listitem>
+<listitem><para><link linkend="xmlSecTransformRsaMd5Id">xmlSecTransformRsaMd5Id</link></para></listitem>
 <listitem><para><link linkend="xmlSecTransformRsaOaepGetKlass">xmlSecTransformRsaOaepGetKlass</link></para></listitem>
 <listitem><para><link linkend="xmlSecTransformRsaOaepId">xmlSecTransformRsaOaepId</link></para></listitem>
 <listitem><para><link linkend="xmlSecTransformRsaPkcs1GetKlass">xmlSecTransformRsaPkcs1GetKlass</link></para></listitem>
 <listitem><para><link linkend="xmlSecTransformRsaPkcs1Id">xmlSecTransformRsaPkcs1Id</link></para></listitem>
+<listitem><para><link linkend="xmlSecTransformRsaRipemd160GetKlass">xmlSecTransformRsaRipemd160GetKlass</link></para></listitem>
+<listitem><para><link linkend="xmlSecTransformRsaRipemd160Id">xmlSecTransformRsaRipemd160Id</link></para></listitem>
 <listitem><para><link linkend="xmlSecTransformRsaSha1GetKlass">xmlSecTransformRsaSha1GetKlass</link></para></listitem>
 <listitem><para><link linkend="xmlSecTransformRsaSha1Id">xmlSecTransformRsaSha1Id</link></para></listitem>
+<listitem><para><link linkend="xmlSecTransformRsaSha224GetKlass">xmlSecTransformRsaSha224GetKlass</link></para></listitem>
+<listitem><para><link linkend="xmlSecTransformRsaSha224Id">xmlSecTransformRsaSha224Id</link></para></listitem>
+<listitem><para><link linkend="xmlSecTransformRsaSha256GetKlass">xmlSecTransformRsaSha256GetKlass</link></para></listitem>
+<listitem><para><link linkend="xmlSecTransformRsaSha256Id">xmlSecTransformRsaSha256Id</link></para></listitem>
+<listitem><para><link linkend="xmlSecTransformRsaSha384GetKlass">xmlSecTransformRsaSha384GetKlass</link></para></listitem>
+<listitem><para><link linkend="xmlSecTransformRsaSha384Id">xmlSecTransformRsaSha384Id</link></para></listitem>
+<listitem><para><link linkend="xmlSecTransformRsaSha512GetKlass">xmlSecTransformRsaSha512GetKlass</link></para></listitem>
+<listitem><para><link linkend="xmlSecTransformRsaSha512Id">xmlSecTransformRsaSha512Id</link></para></listitem>
 <listitem><para><link linkend="xmlSecTransformSetKeyMethod">xmlSecTransformSetKeyMethod</link></para></listitem>
 <listitem><para><link linkend="xmlSecTransformSetKey">xmlSecTransformSetKey</link></para></listitem>
 <listitem><para><link linkend="xmlSecTransformSetKeyReq">xmlSecTransformSetKeyReq</link></para></listitem>
 <listitem><para><link linkend="xmlSecTransformSetKeyRequirementsMethod">xmlSecTransformSetKeyRequirementsMethod</link></para></listitem>
 <listitem><para><link linkend="xmlSecTransformSha1GetKlass">xmlSecTransformSha1GetKlass</link></para></listitem>
 <listitem><para><link linkend="xmlSecTransformSha1Id">xmlSecTransformSha1Id</link></para></listitem>
+<listitem><para><link linkend="xmlSecTransformSha224GetKlass">xmlSecTransformSha224GetKlass</link></para></listitem>
+<listitem><para><link linkend="xmlSecTransformSha224Id">xmlSecTransformSha224Id</link></para></listitem>
+<listitem><para><link linkend="xmlSecTransformSha256GetKlass">xmlSecTransformSha256GetKlass</link></para></listitem>
+<listitem><para><link linkend="xmlSecTransformSha256Id">xmlSecTransformSha256Id</link></para></listitem>
+<listitem><para><link linkend="xmlSecTransformSha384GetKlass">xmlSecTransformSha384GetKlass</link></para></listitem>
+<listitem><para><link linkend="xmlSecTransformSha384Id">xmlSecTransformSha384Id</link></para></listitem>
+<listitem><para><link linkend="xmlSecTransformSha512GetKlass">xmlSecTransformSha512GetKlass</link></para></listitem>
+<listitem><para><link linkend="xmlSecTransformSha512Id">xmlSecTransformSha512Id</link></para></listitem>
 <listitem><para><link linkend="xmlSecTransformStatus">xmlSecTransformStatus</link></para></listitem>
 <listitem><para><link linkend="xmlSecTransformUriTypeAny">xmlSecTransformUriTypeAny</link></para></listitem>
 <listitem><para><link linkend="xmlSecTransformUriTypeCheck">xmlSecTransformUriTypeCheck</link></para></listitem>
diff --git a/docs/api/xmlsec-io.html b/docs/api/xmlsec-io.html
index 2ce4719..3bf4f07 100644
--- a/docs/api/xmlsec-io.html
+++ b/docs/api/xmlsec-io.html
@@ -74,10 +74,10 @@
 <td width="15"></td>
 <td><a href="http://www.openssl.org/"><img src="../images/openssl-logo.png" alt="OpenSSL" border="0"></a></td>
 </tr>
+<!--Sponsored links - start--><!--Sponsored links - end-->
 </table>
 </td>
-<td valign="top"><table width="100%" valign="top">
-<tr><td valign="top" align="left" id="xmlsecContent">
+<td valign="top"><table width="100%" valign="top"><tr><td valign="top" align="left" id="xmlsecContent">
 <table width="100%" class="navigation" summary="Navigation header" cellpadding="2" cellspacing="2"><tr valign="middle">
 <td><a accesskey="p" href="xmlsec-errors.html"><img src="left.png" width="24" height="24" border="0" alt="Prev"></a></td>
 <td><a accesskey="u" href="xmlsec-ref.html"><img src="up.png" width="24" height="24" border="0" alt="Up"></a></td>
@@ -244,10 +244,6 @@ compiled-in I/O.</p>
 <td align="left"><a accesskey="p" href="xmlsec-errors.html"><b><<<�errors</b></a></td>
 <td align="right"><a accesskey="n" href="xmlsec-keyinfo.html"><b>keyinfo�>>></b></a></td>
 </tr></table>
-</td></tr>
-<tr><td>
-<br><br><p><a href="../bugs.html">Aleksey Sanin</a></p>
-</td></tr>
-</table></td>
+</td></tr></table></td>
 </tr></table></body>
 </html>
diff --git a/docs/api/xmlsec-keyinfo.html b/docs/api/xmlsec-keyinfo.html
index 6c9050f..b10eac5 100644
--- a/docs/api/xmlsec-keyinfo.html
+++ b/docs/api/xmlsec-keyinfo.html
@@ -74,10 +74,10 @@
 <td width="15"></td>
 <td><a href="http://www.openssl.org/"><img src="../images/openssl-logo.png" alt="OpenSSL" border="0"></a></td>
 </tr>
+<!--Sponsored links - start--><!--Sponsored links - end-->
 </table>
 </td>
-<td valign="top"><table width="100%" valign="top">
-<tr><td valign="top" align="left" id="xmlsecContent">
+<td valign="top"><table width="100%" valign="top"><tr><td valign="top" align="left" id="xmlsecContent">
 <table width="100%" class="navigation" summary="Navigation header" cellpadding="2" cellspacing="2"><tr valign="middle">
 <td><a accesskey="p" href="xmlsec-io.html"><img src="left.png" width="24" height="24" border="0" alt="Prev"></a></td>
 <td><a accesskey="u" href="xmlsec-ref.html"><img src="up.png" width="24" height="24" border="0" alt="Up"></a></td>
@@ -769,10 +769,6 @@ without any additional processing.</p>
 <td align="left"><a accesskey="p" href="xmlsec-io.html"><b><<<�io</b></a></td>
 <td align="right"><a accesskey="n" href="xmlsec-keysdata.html"><b>keysdata�>>></b></a></td>
 </tr></table>
-</td></tr>
-<tr><td>
-<br><br><p><a href="../bugs.html">Aleksey Sanin</a></p>
-</td></tr>
-</table></td>
+</td></tr></table></td>
 </tr></table></body>
 </html>
diff --git a/docs/api/xmlsec-keys.html b/docs/api/xmlsec-keys.html
index 0620e1d..91c3226 100644
--- a/docs/api/xmlsec-keys.html
+++ b/docs/api/xmlsec-keys.html
@@ -74,10 +74,10 @@
 <td width="15"></td>
 <td><a href="http://www.openssl.org/"><img src="../images/openssl-logo.png" alt="OpenSSL" border="0"></a></td>
 </tr>
+<!--Sponsored links - start--><!--Sponsored links - end-->
 </table>
 </td>
-<td valign="top"><table width="100%" valign="top">
-<tr><td valign="top" align="left" id="xmlsecContent">
+<td valign="top"><table width="100%" valign="top"><tr><td valign="top" align="left" id="xmlsecContent">
 <table width="100%" class="navigation" summary="Navigation header" cellpadding="2" cellspacing="2"><tr valign="middle">
 <td><a accesskey="p" href="xmlsec-keysdata.html"><img src="left.png" width="24" height="24" border="0" alt="Prev"></a></td>
 <td><a accesskey="u" href="xmlsec-ref.html"><img src="up.png" width="24" height="24" border="0" alt="Up"></a></td>
@@ -1275,10 +1275,6 @@ or 0 otherwise.</p>
 <td align="left"><a accesskey="p" href="xmlsec-keysdata.html"><b><<<�keysdata</b></a></td>
 <td align="right"><a accesskey="n" href="xmlsec-keysmngr.html"><b>keysmngr�>>></b></a></td>
 </tr></table>
-</td></tr>
-<tr><td>
-<br><br><p><a href="../bugs.html">Aleksey Sanin</a></p>
-</td></tr>
-</table></td>
+</td></tr></table></td>
 </tr></table></body>
 </html>
diff --git a/docs/api/xmlsec-keysdata.html b/docs/api/xmlsec-keysdata.html
index 63f7699..f863648 100644
--- a/docs/api/xmlsec-keysdata.html
+++ b/docs/api/xmlsec-keysdata.html
@@ -74,10 +74,10 @@
 <td width="15"></td>
 <td><a href="http://www.openssl.org/"><img src="../images/openssl-logo.png" alt="OpenSSL" border="0"></a></td>
 </tr>
+<!--Sponsored links - start--><!--Sponsored links - end-->
 </table>
 </td>
-<td valign="top"><table width="100%" valign="top">
-<tr><td valign="top" align="left" id="xmlsecContent">
+<td valign="top"><table width="100%" valign="top"><tr><td valign="top" align="left" id="xmlsecContent">
 <table width="100%" class="navigation" summary="Navigation header" cellpadding="2" cellspacing="2"><tr valign="middle">
 <td><a accesskey="p" href="xmlsec-keyinfo.html"><img src="left.png" width="24" height="24" border="0" alt="Prev"></a></td>
 <td><a accesskey="u" href="xmlsec-ref.html"><img src="up.png" width="24" height="24" border="0" alt="Up"></a></td>
@@ -2294,10 +2294,6 @@ or 0 otherwise.</p>
 <td align="left"><a accesskey="p" href="xmlsec-keyinfo.html"><b><<<�keyinfo</b></a></td>
 <td align="right"><a accesskey="n" href="xmlsec-keys.html"><b>keys�>>></b></a></td>
 </tr></table>
-</td></tr>
-<tr><td>
-<br><br><p><a href="../bugs.html">Aleksey Sanin</a></p>
-</td></tr>
-</table></td>
+</td></tr></table></td>
 </tr></table></body>
 </html>
diff --git a/docs/api/xmlsec-keysmngr.html b/docs/api/xmlsec-keysmngr.html
index 70b68c6..59e5448 100644
--- a/docs/api/xmlsec-keysmngr.html
+++ b/docs/api/xmlsec-keysmngr.html
@@ -74,10 +74,10 @@
 <td width="15"></td>
 <td><a href="http://www.openssl.org/"><img src="../images/openssl-logo.png" alt="OpenSSL" border="0"></a></td>
 </tr>
+<!--Sponsored links - start--><!--Sponsored links - end-->
 </table>
 </td>
-<td valign="top"><table width="100%" valign="top">
-<tr><td valign="top" align="left" id="xmlsecContent">
+<td valign="top"><table width="100%" valign="top"><tr><td valign="top" align="left" id="xmlsecContent">
 <table width="100%" class="navigation" summary="Navigation header" cellpadding="2" cellspacing="2"><tr valign="middle">
 <td><a accesskey="p" href="xmlsec-keys.html"><img src="left.png" width="24" height="24" border="0" alt="Prev"></a></td>
 <td><a accesskey="u" href="xmlsec-ref.html"><img src="up.png" width="24" height="24" border="0" alt="Up"></a></td>
@@ -789,10 +789,6 @@ the returned key using <a href="xmlsec-keys.html#XMLSECKEYDESTROY"><span class="
 <td align="left"><a accesskey="p" href="xmlsec-keys.html"><b><<<�keys</b></a></td>
 <td align="right"><a accesskey="n" href="xmlsec-list.html"><b>list�>>></b></a></td>
 </tr></table>
-</td></tr>
-<tr><td>
-<br><br><p><a href="../bugs.html">Aleksey Sanin</a></p>
-</td></tr>
-</table></td>
+</td></tr></table></td>
 </tr></table></body>
 </html>
diff --git a/docs/api/xmlsec-list.html b/docs/api/xmlsec-list.html
index 0508826..15ce952 100644
--- a/docs/api/xmlsec-list.html
+++ b/docs/api/xmlsec-list.html
@@ -74,10 +74,10 @@
 <td width="15"></td>
 <td><a href="http://www.openssl.org/"><img src="../images/openssl-logo.png" alt="OpenSSL" border="0"></a></td>
 </tr>
+<!--Sponsored links - start--><!--Sponsored links - end-->
 </table>
 </td>
-<td valign="top"><table width="100%" valign="top">
-<tr><td valign="top" align="left" id="xmlsecContent">
+<td valign="top"><table width="100%" valign="top"><tr><td valign="top" align="left" id="xmlsecContent">
 <table width="100%" class="navigation" summary="Navigation header" cellpadding="2" cellspacing="2"><tr valign="middle">
 <td><a accesskey="p" href="xmlsec-keysmngr.html"><img src="left.png" width="24" height="24" border="0" alt="Prev"></a></td>
 <td><a accesskey="u" href="xmlsec-ref.html"><img src="up.png" width="24" height="24" border="0" alt="Up"></a></td>
@@ -674,10 +674,6 @@ or 0 otherwise.</p>
 <td align="left"><a accesskey="p" href="xmlsec-keysmngr.html"><b><<<�keysmngr</b></a></td>
 <td align="right"><a accesskey="n" href="xmlsec-membuf.html"><b>membuf�>>></b></a></td>
 </tr></table>
-</td></tr>
-<tr><td>
-<br><br><p><a href="../bugs.html">Aleksey Sanin</a></p>
-</td></tr>
-</table></td>
+</td></tr></table></td>
 </tr></table></body>
 </html>
diff --git a/docs/api/xmlsec-membuf.html b/docs/api/xmlsec-membuf.html
index a057097..15ab077 100644
--- a/docs/api/xmlsec-membuf.html
+++ b/docs/api/xmlsec-membuf.html
@@ -74,10 +74,10 @@
 <td width="15"></td>
 <td><a href="http://www.openssl.org/"><img src="../images/openssl-logo.png" alt="OpenSSL" border="0"></a></td>
 </tr>
+<!--Sponsored links - start--><!--Sponsored links - end-->
 </table>
 </td>
-<td valign="top"><table width="100%" valign="top">
-<tr><td valign="top" align="left" id="xmlsecContent">
+<td valign="top"><table width="100%" valign="top"><tr><td valign="top" align="left" id="xmlsecContent">
 <table width="100%" class="navigation" summary="Navigation header" cellpadding="2" cellspacing="2"><tr valign="middle">
 <td><a accesskey="p" href="xmlsec-list.html"><img src="left.png" width="24" height="24" border="0" alt="Prev"></a></td>
 <td><a accesskey="u" href="xmlsec-ref.html"><img src="up.png" width="24" height="24" border="0" alt="Up"></a></td>
@@ -151,10 +151,6 @@
 <td align="left"><a accesskey="p" href="xmlsec-list.html"><b><<<�list</b></a></td>
 <td align="right"><a accesskey="n" href="xmlsec-nodeset.html"><b>nodeset�>>></b></a></td>
 </tr></table>
-</td></tr>
-<tr><td>
-<br><br><p><a href="../bugs.html">Aleksey Sanin</a></p>
-</td></tr>
-</table></td>
+</td></tr></table></td>
 </tr></table></body>
 </html>
diff --git a/docs/api/xmlsec-mscrypto-app.html b/docs/api/xmlsec-mscrypto-app.html
index 1393642..2e3dc8c 100644
--- a/docs/api/xmlsec-mscrypto-app.html
+++ b/docs/api/xmlsec-mscrypto-app.html
@@ -74,10 +74,10 @@
 <td width="15"></td>
 <td><a href="http://www.openssl.org/"><img src="../images/openssl-logo.png" alt="OpenSSL" border="0"></a></td>
 </tr>
+<!--Sponsored links - start--><!--Sponsored links - end-->
 </table>
 </td>
-<td valign="top"><table width="100%" valign="top">
-<tr><td valign="top" align="left" id="xmlsecContent">
+<td valign="top"><table width="100%" valign="top"><tr><td valign="top" align="left" id="xmlsecContent">
 <table width="100%" class="navigation" summary="Navigation header" cellpadding="2" cellspacing="2"><tr valign="middle">
 <td><a accesskey="p" href="xmlsec-mscrypto-ref.html"><img src="left.png" width="24" height="24" border="0" alt="Prev"></a></td>
 <td><a accesskey="u" href="xmlsec-mscrypto-ref.html"><img src="up.png" width="24" height="24" border="0" alt="Up"></a></td>
@@ -298,7 +298,7 @@ with <a href="xmlsec-mscrypto-app.html#XMLSECMSCRYPTOAPPDEFAULTKEYSMNGRINIT"><sp
 </tr>
 <tr>
 <td align="LEFT" valign="TOP"><a name="AEN27071"><span style="white-space: nowrap"><var class="PARAMETER">filename</var>�:</span></a></td>
-<td align="LEFT" valign="TOP"><p>		the destination filename.</p></td>
+<td align="LEFT" valign="TOP"><p>   the destination filename.</p></td>
 </tr>
 <tr>
 <td align="LEFT" valign="TOP"><a name="AEN27076"><span style="white-space: nowrap"><var class="PARAMETER">type</var>�:</span></a></td>
@@ -624,10 +624,6 @@ untrusted certs in <var class="PARAMETER">store</var>.</p>
 <td align="left"><a accesskey="p" href="xmlsec-mscrypto-ref.html"><b><<<�XML Security Library for MSCrypto API Reference.</b></a></td>
 <td align="right"><a accesskey="n" href="xmlsec-mscrypto-certkeys.html"><b>certkeys�>>></b></a></td>
 </tr></table>
-</td></tr>
-<tr><td>
-<br><br><p><a href="../bugs.html">Aleksey Sanin</a></p>
-</td></tr>
-</table></td>
+</td></tr></table></td>
 </tr></table></body>
 </html>
diff --git a/docs/api/xmlsec-mscrypto-certkeys.html b/docs/api/xmlsec-mscrypto-certkeys.html
index 74fe729..f1d6507 100644
--- a/docs/api/xmlsec-mscrypto-certkeys.html
+++ b/docs/api/xmlsec-mscrypto-certkeys.html
@@ -74,10 +74,10 @@
 <td width="15"></td>
 <td><a href="http://www.openssl.org/"><img src="../images/openssl-logo.png" alt="OpenSSL" border="0"></a></td>
 </tr>
+<!--Sponsored links - start--><!--Sponsored links - end-->
 </table>
 </td>
-<td valign="top"><table width="100%" valign="top">
-<tr><td valign="top" align="left" id="xmlsecContent">
+<td valign="top"><table width="100%" valign="top"><tr><td valign="top" align="left" id="xmlsecContent">
 <table width="100%" class="navigation" summary="Navigation header" cellpadding="2" cellspacing="2"><tr valign="middle">
 <td><a accesskey="p" href="xmlsec-mscrypto-app.html"><img src="left.png" width="24" height="24" border="0" alt="Prev"></a></td>
 <td><a accesskey="u" href="xmlsec-mscrypto-ref.html"><img src="up.png" width="24" height="24" border="0" alt="Up"></a></td>
@@ -199,10 +199,6 @@ NULL if an error occurs.</p></td>
 <td align="left"><a accesskey="p" href="xmlsec-mscrypto-app.html"><b><<<�app</b></a></td>
 <td align="right"><a accesskey="n" href="xmlsec-mscrypto-crypto.html"><b>crypto�>>></b></a></td>
 </tr></table>
-</td></tr>
-<tr><td>
-<br><br><p><a href="../bugs.html">Aleksey Sanin</a></p>
-</td></tr>
-</table></td>
+</td></tr></table></td>
 </tr></table></body>
 </html>
diff --git a/docs/api/xmlsec-mscrypto-crypto.html b/docs/api/xmlsec-mscrypto-crypto.html
index 0e229cf..18e952b 100644
--- a/docs/api/xmlsec-mscrypto-crypto.html
+++ b/docs/api/xmlsec-mscrypto-crypto.html
@@ -74,10 +74,10 @@
 <td width="15"></td>
 <td><a href="http://www.openssl.org/"><img src="../images/openssl-logo.png" alt="OpenSSL" border="0"></a></td>
 </tr>
+<!--Sponsored links - start--><!--Sponsored links - end-->
 </table>
 </td>
-<td valign="top"><table width="100%" valign="top">
-<tr><td valign="top" align="left" id="xmlsecContent">
+<td valign="top"><table width="100%" valign="top"><tr><td valign="top" align="left" id="xmlsecContent">
 <table width="100%" class="navigation" summary="Navigation header" cellpadding="2" cellspacing="2"><tr valign="middle">
 <td><a accesskey="p" href="xmlsec-mscrypto-certkeys.html"><img src="left.png" width="24" height="24" border="0" alt="Prev"></a></td>
 <td><a accesskey="u" href="xmlsec-mscrypto-ref.html"><img src="up.png" width="24" height="24" border="0" alt="Up"></a></td>
@@ -619,10 +619,6 @@
 <td align="left"><a accesskey="p" href="xmlsec-mscrypto-certkeys.html"><b><<<�certkeys</b></a></td>
 <td align="right"><a accesskey="n" href="xmlsec-mscrypto-keysstore.html"><b>keysstore�>>></b></a></td>
 </tr></table>
-</td></tr>
-<tr><td>
-<br><br><p><a href="../bugs.html">Aleksey Sanin</a></p>
-</td></tr>
-</table></td>
+</td></tr></table></td>
 </tr></table></body>
 </html>
diff --git a/docs/api/xmlsec-mscrypto-keysstore.html b/docs/api/xmlsec-mscrypto-keysstore.html
index 65a3002..c270309 100644
--- a/docs/api/xmlsec-mscrypto-keysstore.html
+++ b/docs/api/xmlsec-mscrypto-keysstore.html
@@ -74,10 +74,10 @@
 <td width="15"></td>
 <td><a href="http://www.openssl.org/"><img src="../images/openssl-logo.png" alt="OpenSSL" border="0"></a></td>
 </tr>
+<!--Sponsored links - start--><!--Sponsored links - end-->
 </table>
 </td>
-<td valign="top"><table width="100%" valign="top">
-<tr><td valign="top" align="left" id="xmlsecContent">
+<td valign="top"><table width="100%" valign="top"><tr><td valign="top" align="left" id="xmlsecContent">
 <table width="100%" class="navigation" summary="Navigation header" cellpadding="2" cellspacing="2"><tr valign="middle">
 <td><a accesskey="p" href="xmlsec-mscrypto-crypto.html"><img src="left.png" width="24" height="24" border="0" alt="Prev"></a></td>
 <td><a accesskey="u" href="xmlsec-mscrypto-ref.html"><img src="up.png" width="24" height="24" border="0" alt="Up"></a></td>
@@ -219,10 +219,6 @@
 <td align="left"><a accesskey="p" href="xmlsec-mscrypto-crypto.html"><b><<<�crypto</b></a></td>
 <td align="right"><a accesskey="n" href="xmlsec-mscrypto-x509.html"><b>x509�>>></b></a></td>
 </tr></table>
-</td></tr>
-<tr><td>
-<br><br><p><a href="../bugs.html">Aleksey Sanin</a></p>
-</td></tr>
-</table></td>
+</td></tr></table></td>
 </tr></table></body>
 </html>
diff --git a/docs/api/xmlsec-mscrypto-ref.html b/docs/api/xmlsec-mscrypto-ref.html
index 8ba43fd..9cc1d4f 100644
--- a/docs/api/xmlsec-mscrypto-ref.html
+++ b/docs/api/xmlsec-mscrypto-ref.html
@@ -74,10 +74,10 @@
 <td width="15"></td>
 <td><a href="http://www.openssl.org/"><img src="../images/openssl-logo.png" alt="OpenSSL" border="0"></a></td>
 </tr>
+<!--Sponsored links - start--><!--Sponsored links - end-->
 </table>
 </td>
-<td valign="top"><table width="100%" valign="top">
-<tr><td valign="top" align="left" id="xmlsecContent">
+<td valign="top"><table width="100%" valign="top"><tr><td valign="top" align="left" id="xmlsecContent">
 <table width="100%" class="navigation" summary="Navigation header" cellpadding="2" cellspacing="2"><tr valign="middle">
 <td><a accesskey="p" href="xmlsec-nss-x509.html"><img src="left.png" width="24" height="24" border="0" alt="Prev"></a></td>
 <td><a accesskey="u" href="xmlsec-reference.html"><img src="up.png" width="24" height="24" border="0" alt="Up"></a></td>
@@ -109,10 +109,6 @@
 <td align="left"><a accesskey="p" href="xmlsec-nss-x509.html"><b><<<�x509</b></a></td>
 <td align="right"><a accesskey="n" href="xmlsec-mscrypto-app.html"><b>app�>>></b></a></td>
 </tr></table>
-</td></tr>
-<tr><td>
-<br><br><p><a href="../bugs.html">Aleksey Sanin</a></p>
-</td></tr>
-</table></td>
+</td></tr></table></td>
 </tr></table></body>
 </html>
diff --git a/docs/api/xmlsec-mscrypto-x509.html b/docs/api/xmlsec-mscrypto-x509.html
index 70d1431..3bcb9cf 100644
--- a/docs/api/xmlsec-mscrypto-x509.html
+++ b/docs/api/xmlsec-mscrypto-x509.html
@@ -74,10 +74,10 @@
 <td width="15"></td>
 <td><a href="http://www.openssl.org/"><img src="../images/openssl-logo.png" alt="OpenSSL" border="0"></a></td>
 </tr>
+<!--Sponsored links - start--><!--Sponsored links - end-->
 </table>
 </td>
-<td valign="top"><table width="100%" valign="top">
-<tr><td valign="top" align="left" id="xmlsecContent">
+<td valign="top"><table width="100%" valign="top"><tr><td valign="top" align="left" id="xmlsecContent">
 <table width="100%" class="navigation" summary="Navigation header" cellpadding="2" cellspacing="2"><tr valign="middle">
 <td><a accesskey="p" href="xmlsec-mscrypto-keysstore.html"><img src="left.png" width="24" height="24" border="0" alt="Prev"></a></td>
 <td><a accesskey="u" href="xmlsec-mscrypto-ref.html"><img src="up.png" width="24" height="24" border="0" alt="Up"></a></td>
@@ -509,10 +509,6 @@ or an error occurs.</p></td>
 <td align="left"><a accesskey="p" href="xmlsec-mscrypto-keysstore.html"><b><<<�keysstore</b></a></td>
 <td align="right"><a accesskey="n" href="xmlsec-index.html"><b>XML Security Library Reference Index�>>></b></a></td>
 </tr></table>
-</td></tr>
-<tr><td>
-<br><br><p><a href="../bugs.html">Aleksey Sanin</a></p>
-</td></tr>
-</table></td>
+</td></tr></table></td>
 </tr></table></body>
 </html>
diff --git a/docs/api/xmlsec-nodeset.html b/docs/api/xmlsec-nodeset.html
index c803060..5b795e4 100644
--- a/docs/api/xmlsec-nodeset.html
+++ b/docs/api/xmlsec-nodeset.html
@@ -74,10 +74,10 @@
 <td width="15"></td>
 <td><a href="http://www.openssl.org/"><img src="../images/openssl-logo.png" alt="OpenSSL" border="0"></a></td>
 </tr>
+<!--Sponsored links - start--><!--Sponsored links - end-->
 </table>
 </td>
-<td valign="top"><table width="100%" valign="top">
-<tr><td valign="top" align="left" id="xmlsecContent">
+<td valign="top"><table width="100%" valign="top"><tr><td valign="top" align="left" id="xmlsecContent">
 <table width="100%" class="navigation" summary="Navigation header" cellpadding="2" cellspacing="2"><tr valign="middle">
 <td><a accesskey="p" href="xmlsec-membuf.html"><img src="left.png" width="24" height="24" border="0" alt="Prev"></a></td>
 <td><a accesskey="u" href="xmlsec-ref.html"><img src="up.png" width="24" height="24" border="0" alt="Up"></a></td>
@@ -569,10 +569,6 @@ is interrupted.</p>
 <td align="left"><a accesskey="p" href="xmlsec-membuf.html"><b><<<�membuf</b></a></td>
 <td align="right"><a accesskey="n" href="xmlsec-parser.html"><b>parser�>>></b></a></td>
 </tr></table>
-</td></tr>
-<tr><td>
-<br><br><p><a href="../bugs.html">Aleksey Sanin</a></p>
-</td></tr>
-</table></td>
+</td></tr></table></td>
 </tr></table></body>
 </html>
diff --git a/docs/api/xmlsec-notes-compiling-others.html b/docs/api/xmlsec-notes-compiling-others.html
index 3df2544..aa2a02e 100644
--- a/docs/api/xmlsec-notes-compiling-others.html
+++ b/docs/api/xmlsec-notes-compiling-others.html
@@ -74,10 +74,10 @@
 <td width="15"></td>
 <td><a href="http://www.openssl.org/"><img src="../images/openssl-logo.png" alt="OpenSSL" border="0"></a></td>
 </tr>
+<!--Sponsored links - start--><!--Sponsored links - end-->
 </table>
 </td>
-<td valign="top"><table width="100%" valign="top">
-<tr><td valign="top" align="left" id="xmlsecContent">
+<td valign="top"><table width="100%" valign="top"><tr><td valign="top" align="left" id="xmlsecContent">
 <table width="100%" class="navigation" summary="Navigation header" cellpadding="2" cellspacing="2"><tr valign="middle">
 <td><a accesskey="p" href="xmlsec-notes-compiling-windows.html"><img src="left.png" width="24" height="24" border="0" alt="Prev"></a></td>
 <td><a accesskey="u" href="xmlsec-notes-compiling.html"><img src="up.png" width="24" height="24" border="0" alt="Up"></a></td>
@@ -98,10 +98,6 @@
 <td align="left"><a accesskey="p" href="xmlsec-notes-compiling-windows.html"><b><<<�Compiling and linking on Windows.</b></a></td>
 <td align="right"><a accesskey="n" href="xmlsec-notes-init-shutdown.html"><b>Initialization and shutdown.�>>></b></a></td>
 </tr></table>
-</td></tr>
-<tr><td>
-<br><br><p><a href="../bugs.html">Aleksey Sanin</a></p>
-</td></tr>
-</table></td>
+</td></tr></table></td>
 </tr></table></body>
 </html>
diff --git a/docs/api/xmlsec-notes-compiling-unix.html b/docs/api/xmlsec-notes-compiling-unix.html
index 066657c..d24af2b 100644
--- a/docs/api/xmlsec-notes-compiling-unix.html
+++ b/docs/api/xmlsec-notes-compiling-unix.html
@@ -74,10 +74,10 @@
 <td width="15"></td>
 <td><a href="http://www.openssl.org/"><img src="../images/openssl-logo.png" alt="OpenSSL" border="0"></a></td>
 </tr>
+<!--Sponsored links - start--><!--Sponsored links - end-->
 </table>
 </td>
-<td valign="top"><table width="100%" valign="top">
-<tr><td valign="top" align="left" id="xmlsecContent">
+<td valign="top"><table width="100%" valign="top"><tr><td valign="top" align="left" id="xmlsecContent">
 <table width="100%" class="navigation" summary="Navigation header" cellpadding="2" cellspacing="2"><tr valign="middle">
 <td><a accesskey="p" href="xmlsec-notes-include-files.html"><img src="left.png" width="24" height="24" border="0" alt="Prev"></a></td>
 <td><a accesskey="u" href="xmlsec-notes-compiling.html"><img src="up.png" width="24" height="24" border="0" alt="Up"></a></td>
@@ -219,10 +219,6 @@ clean:
 <td align="left"><a accesskey="p" href="xmlsec-notes-include-files.html"><b><<<�Include files.</b></a></td>
 <td align="right"><a accesskey="n" href="xmlsec-notes-compiling-windows.html"><b>Compiling and linking on Windows.�>>></b></a></td>
 </tr></table>
-</td></tr>
-<tr><td>
-<br><br><p><a href="../bugs.html">Aleksey Sanin</a></p>
-</td></tr>
-</table></td>
+</td></tr></table></td>
 </tr></table></body>
 </html>
diff --git a/docs/api/xmlsec-notes-compiling-windows.html b/docs/api/xmlsec-notes-compiling-windows.html
index 6840ca1..02e3ce2 100644
--- a/docs/api/xmlsec-notes-compiling-windows.html
+++ b/docs/api/xmlsec-notes-compiling-windows.html
@@ -74,10 +74,10 @@
 <td width="15"></td>
 <td><a href="http://www.openssl.org/"><img src="../images/openssl-logo.png" alt="OpenSSL" border="0"></a></td>
 </tr>
+<!--Sponsored links - start--><!--Sponsored links - end-->
 </table>
 </td>
-<td valign="top"><table width="100%" valign="top">
-<tr><td valign="top" align="left" id="xmlsecContent">
+<td valign="top"><table width="100%" valign="top"><tr><td valign="top" align="left" id="xmlsecContent">
 <table width="100%" class="navigation" summary="Navigation header" cellpadding="2" cellspacing="2"><tr valign="middle">
 <td><a accesskey="p" href="xmlsec-notes-compiling-unix.html"><img src="left.png" width="24" height="24" border="0" alt="Prev"></a></td>
 <td><a accesskey="u" href="xmlsec-notes-compiling.html"><img src="up.png" width="24" height="24" border="0" alt="Up"></a></td>
@@ -134,10 +134,6 @@
 <td align="left"><a accesskey="p" href="xmlsec-notes-compiling-unix.html"><b><<<�Compiling and linking on Unix.</b></a></td>
 <td align="right"><a accesskey="n" href="xmlsec-notes-compiling-others.html"><b>Compiling and linking on other systems.�>>></b></a></td>
 </tr></table>
-</td></tr>
-<tr><td>
-<br><br><p><a href="../bugs.html">Aleksey Sanin</a></p>
-</td></tr>
-</table></td>
+</td></tr></table></td>
 </tr></table></body>
 </html>
diff --git a/docs/api/xmlsec-notes-compiling.html b/docs/api/xmlsec-notes-compiling.html
index 7153ee7..178c193 100644
--- a/docs/api/xmlsec-notes-compiling.html
+++ b/docs/api/xmlsec-notes-compiling.html
@@ -74,10 +74,10 @@
 <td width="15"></td>
 <td><a href="http://www.openssl.org/"><img src="../images/openssl-logo.png" alt="OpenSSL" border="0"></a></td>
 </tr>
+<!--Sponsored links - start--><!--Sponsored links - end-->
 </table>
 </td>
-<td valign="top"><table width="100%" valign="top">
-<tr><td valign="top" align="left" id="xmlsecContent">
+<td valign="top"><table width="100%" valign="top"><tr><td valign="top" align="left" id="xmlsecContent">
 <table width="100%" class="navigation" summary="Navigation header" cellpadding="2" cellspacing="2"><tr valign="middle">
 <td><a accesskey="p" href="xmlsec-notes-structure.html"><img src="left.png" width="24" height="24" border="0" alt="Prev"></a></td>
 <td><a accesskey="u" href="xmlsec-notes.html"><img src="up.png" width="24" height="24" border="0" alt="Up"></a></td>
@@ -113,10 +113,6 @@
 <td align="left"><a accesskey="p" href="xmlsec-notes-structure.html"><b><<<�XML Security Library Structure.</b></a></td>
 <td align="right"><a accesskey="n" href="xmlsec-notes-include-files.html"><b>Include files.�>>></b></a></td>
 </tr></table>
-</td></tr>
-<tr><td>
-<br><br><p><a href="../bugs.html">Aleksey Sanin</a></p>
-</td></tr>
-</table></td>
+</td></tr></table></td>
 </tr></table></body>
 </html>
diff --git a/docs/api/xmlsec-notes-contexts.html b/docs/api/xmlsec-notes-contexts.html
index 25e2c13..4791cbe 100644
--- a/docs/api/xmlsec-notes-contexts.html
+++ b/docs/api/xmlsec-notes-contexts.html
@@ -74,10 +74,10 @@
 <td width="15"></td>
 <td><a href="http://www.openssl.org/"><img src="../images/openssl-logo.png" alt="OpenSSL" border="0"></a></td>
 </tr>
+<!--Sponsored links - start--><!--Sponsored links - end-->
 </table>
 </td>
-<td valign="top"><table width="100%" valign="top">
-<tr><td valign="top" align="left" id="xmlsecContent">
+<td valign="top"><table width="100%" valign="top"><tr><td valign="top" align="left" id="xmlsecContent">
 <table width="100%" class="navigation" summary="Navigation header" cellpadding="2" cellspacing="2"><tr valign="middle">
 <td><a accesskey="p" href="xmlsec-notes-transforms.html"><img src="left.png" width="24" height="24" border="0" alt="Prev"></a></td>
 <td><a accesskey="u" href="xmlsec-notes.html"><img src="up.png" width="24" height="24" border="0" alt="Up"></a></td>
@@ -225,10 +225,6 @@ done:
 <td align="left"><a accesskey="p" href="xmlsec-notes-transforms.html"><b><<<�Transforms and transforms chain.</b></a></td>
 <td align="right"><a accesskey="n" href="xmlsec-notes-new-crypto.html"><b>Adding support for new cryptographic library.�>>></b></a></td>
 </tr></table>
-</td></tr>
-<tr><td>
-<br><br><p><a href="../bugs.html">Aleksey Sanin</a></p>
-</td></tr>
-</table></td>
+</td></tr></table></td>
 </tr></table></body>
 </html>
diff --git a/docs/api/xmlsec-notes-custom-keys-store.html b/docs/api/xmlsec-notes-custom-keys-store.html
index 76c1f97..3a9a947 100644
--- a/docs/api/xmlsec-notes-custom-keys-store.html
+++ b/docs/api/xmlsec-notes-custom-keys-store.html
@@ -74,10 +74,10 @@
 <td width="15"></td>
 <td><a href="http://www.openssl.org/"><img src="../images/openssl-logo.png" alt="OpenSSL" border="0"></a></td>
 </tr>
+<!--Sponsored links - start--><!--Sponsored links - end-->
 </table>
 </td>
-<td valign="top"><table width="100%" valign="top">
-<tr><td valign="top" align="left" id="xmlsecContent">
+<td valign="top"><table width="100%" valign="top"><tr><td valign="top" align="left" id="xmlsecContent">
 <table width="100%" class="navigation" summary="Navigation header" cellpadding="2" cellspacing="2"><tr valign="middle">
 <td><a accesskey="p" href="xmlsec-notes-keys-mngr-verify-decrypt.html"><img src="left.png" width="24" height="24" border="0" alt="Prev"></a></td>
 <td><a accesskey="u" href="xmlsec-notes-keysmngr.html"><img src="up.png" width="24" height="24" border="0" alt="Up"></a></td>
@@ -246,10 +246,6 @@ files_keys_store_find_key(xmlSecKeyStorePtr store, const xmlChar* name, xmlSecKe
 <td align="left"><a accesskey="p" href="xmlsec-notes-keys-mngr-verify-decrypt.html"><b><<<�Using keys manager for verification/decryption.</b></a></td>
 <td align="right"><a accesskey="n" href="xmlsec-notes-x509.html"><b>Using X509 Certificates.�>>></b></a></td>
 </tr></table>
-</td></tr>
-<tr><td>
-<br><br><p><a href="../bugs.html">Aleksey Sanin</a></p>
-</td></tr>
-</table></td>
+</td></tr></table></td>
 </tr></table></body>
 </html>
diff --git a/docs/api/xmlsec-notes-decrypt.html b/docs/api/xmlsec-notes-decrypt.html
index d313365..a05693b 100644
--- a/docs/api/xmlsec-notes-decrypt.html
+++ b/docs/api/xmlsec-notes-decrypt.html
@@ -74,10 +74,10 @@
 <td width="15"></td>
 <td><a href="http://www.openssl.org/"><img src="../images/openssl-logo.png" alt="OpenSSL" border="0"></a></td>
 </tr>
+<!--Sponsored links - start--><!--Sponsored links - end-->
 </table>
 </td>
-<td valign="top"><table width="100%" valign="top">
-<tr><td valign="top" align="left" id="xmlsecContent">
+<td valign="top"><table width="100%" valign="top"><tr><td valign="top" align="left" id="xmlsecContent">
 <table width="100%" class="navigation" summary="Navigation header" cellpadding="2" cellspacing="2"><tr valign="middle">
 <td><a accesskey="p" href="xmlsec-notes-verify.html"><img src="left.png" width="24" height="24" border="0" alt="Prev"></a></td>
 <td><a accesskey="u" href="xmlsec-notes-verify-decrypt.html"><img src="up.png" width="24" height="24" border="0" alt="Up"></a></td>
@@ -201,10 +201,6 @@ done:
 <td align="left"><a accesskey="p" href="xmlsec-notes-verify.html"><b><<<�Verifying a signed document</b></a></td>
 <td align="right"><a accesskey="n" href="xmlsec-notes-keys.html"><b>Keys.�>>></b></a></td>
 </tr></table>
-</td></tr>
-<tr><td>
-<br><br><p><a href="../bugs.html">Aleksey Sanin</a></p>
-</td></tr>
-</table></td>
+</td></tr></table></td>
 </tr></table></body>
 </html>
diff --git a/docs/api/xmlsec-notes-dynamic-encryption-templates.html b/docs/api/xmlsec-notes-dynamic-encryption-templates.html
index 462455b..819c6c4 100644
--- a/docs/api/xmlsec-notes-dynamic-encryption-templates.html
+++ b/docs/api/xmlsec-notes-dynamic-encryption-templates.html
@@ -74,10 +74,10 @@
 <td width="15"></td>
 <td><a href="http://www.openssl.org/"><img src="../images/openssl-logo.png" alt="OpenSSL" border="0"></a></td>
 </tr>
+<!--Sponsored links - start--><!--Sponsored links - end-->
 </table>
 </td>
-<td valign="top"><table width="100%" valign="top">
-<tr><td valign="top" align="left" id="xmlsecContent">
+<td valign="top"><table width="100%" valign="top"><tr><td valign="top" align="left" id="xmlsecContent">
 <table width="100%" class="navigation" summary="Navigation header" cellpadding="2" cellspacing="2"><tr valign="middle">
 <td><a accesskey="p" href="xmlsec-notes-dynamic-signature-templates.html"><img src="left.png" width="24" height="24" border="0" alt="Prev"></a></td>
 <td><a accesskey="u" href="xmlsec-notes-templates.html"><img src="up.png" width="24" height="24" border="0" alt="Up"></a></td>
@@ -236,10 +236,6 @@ done:
 <td align="left"><a accesskey="p" href="xmlsec-notes-dynamic-signature-templates.html"><b><<<�Creating dynamic signature templates.</b></a></td>
 <td align="right"><a accesskey="n" href="xmlsec-notes-verify-decrypt.html"><b>Verifing and decrypting documents.�>>></b></a></td>
 </tr></table>
-</td></tr>
-<tr><td>
-<br><br><p><a href="../bugs.html">Aleksey Sanin</a></p>
-</td></tr>
-</table></td>
+</td></tr></table></td>
 </tr></table></body>
 </html>
diff --git a/docs/api/xmlsec-notes-dynamic-signature-templates.html b/docs/api/xmlsec-notes-dynamic-signature-templates.html
index b201747..393c88e 100644
--- a/docs/api/xmlsec-notes-dynamic-signature-templates.html
+++ b/docs/api/xmlsec-notes-dynamic-signature-templates.html
@@ -74,10 +74,10 @@
 <td width="15"></td>
 <td><a href="http://www.openssl.org/"><img src="../images/openssl-logo.png" alt="OpenSSL" border="0"></a></td>
 </tr>
+<!--Sponsored links - start--><!--Sponsored links - end-->
 </table>
 </td>
-<td valign="top"><table width="100%" valign="top">
-<tr><td valign="top" align="left" id="xmlsecContent">
+<td valign="top"><table width="100%" valign="top"><tr><td valign="top" align="left" id="xmlsecContent">
 <table width="100%" class="navigation" summary="Navigation header" cellpadding="2" cellspacing="2"><tr valign="middle">
 <td><a accesskey="p" href="xmlsec-notes-templates.html"><img src="left.png" width="24" height="24" border="0" alt="Prev"></a></td>
 <td><a accesskey="u" href="xmlsec-notes-templates.html"><img src="up.png" width="24" height="24" border="0" alt="Up"></a></td>
@@ -246,10 +246,6 @@ done:
 <td align="left"><a accesskey="p" href="xmlsec-notes-templates.html"><b><<<�Creating dynamic templates.</b></a></td>
 <td align="right"><a accesskey="n" href="xmlsec-notes-dynamic-encryption-templates.html"><b>Creating dynamic encryption templates.�>>></b></a></td>
 </tr></table>
-</td></tr>
-<tr><td>
-<br><br><p><a href="../bugs.html">Aleksey Sanin</a></p>
-</td></tr>
-</table></td>
+</td></tr></table></td>
 </tr></table></body>
 </html>
diff --git a/docs/api/xmlsec-notes-encrypt.html b/docs/api/xmlsec-notes-encrypt.html
index a07ce51..e34cb53 100644
--- a/docs/api/xmlsec-notes-encrypt.html
+++ b/docs/api/xmlsec-notes-encrypt.html
@@ -74,10 +74,10 @@
 <td width="15"></td>
 <td><a href="http://www.openssl.org/"><img src="../images/openssl-logo.png" alt="OpenSSL" border="0"></a></td>
 </tr>
+<!--Sponsored links - start--><!--Sponsored links - end-->
 </table>
 </td>
-<td valign="top"><table width="100%" valign="top">
-<tr><td valign="top" align="left" id="xmlsecContent">
+<td valign="top"><table width="100%" valign="top"><tr><td valign="top" align="left" id="xmlsecContent">
 <table width="100%" class="navigation" summary="Navigation header" cellpadding="2" cellspacing="2"><tr valign="middle">
 <td><a accesskey="p" href="xmlsec-notes-sign.html"><img src="left.png" width="24" height="24" border="0" alt="Prev"></a></td>
 <td><a accesskey="u" href="xmlsec-notes-sign-encrypt.html"><img src="up.png" width="24" height="24" border="0" alt="Up"></a></td>
@@ -219,10 +219,6 @@ done:
 <td align="left"><a accesskey="p" href="xmlsec-notes-sign.html"><b><<<�Signing a document.</b></a></td>
 <td align="right"><a accesskey="n" href="xmlsec-notes-templates.html"><b>Creating dynamic templates.�>>></b></a></td>
 </tr></table>
-</td></tr>
-<tr><td>
-<br><br><p><a href="../bugs.html">Aleksey Sanin</a></p>
-</td></tr>
-</table></td>
+</td></tr></table></td>
 </tr></table></body>
 </html>
diff --git a/docs/api/xmlsec-notes-include-files.html b/docs/api/xmlsec-notes-include-files.html
index 6181169..777fe61 100644
--- a/docs/api/xmlsec-notes-include-files.html
+++ b/docs/api/xmlsec-notes-include-files.html
@@ -74,10 +74,10 @@
 <td width="15"></td>
 <td><a href="http://www.openssl.org/"><img src="../images/openssl-logo.png" alt="OpenSSL" border="0"></a></td>
 </tr>
+<!--Sponsored links - start--><!--Sponsored links - end-->
 </table>
 </td>
-<td valign="top"><table width="100%" valign="top">
-<tr><td valign="top" align="left" id="xmlsecContent">
+<td valign="top"><table width="100%" valign="top"><tr><td valign="top" align="left" id="xmlsecContent">
 <table width="100%" class="navigation" summary="Navigation header" cellpadding="2" cellspacing="2"><tr valign="middle">
 <td><a accesskey="p" href="xmlsec-notes-compiling.html"><img src="left.png" width="24" height="24" border="0" alt="Prev"></a></td>
 <td><a accesskey="u" href="xmlsec-notes-compiling.html"><img src="up.png" width="24" height="24" border="0" alt="Up"></a></td>
@@ -137,10 +137,6 @@
 <td align="left"><a accesskey="p" href="xmlsec-notes-compiling.html"><b><<<�Building the application with XML Security Library.</b></a></td>
 <td align="right"><a accesskey="n" href="xmlsec-notes-compiling-unix.html"><b>Compiling and linking on Unix.�>>></b></a></td>
 </tr></table>
-</td></tr>
-<tr><td>
-<br><br><p><a href="../bugs.html">Aleksey Sanin</a></p>
-</td></tr>
-</table></td>
+</td></tr></table></td>
 </tr></table></body>
 </html>
diff --git a/docs/api/xmlsec-notes-init-shutdown.html b/docs/api/xmlsec-notes-init-shutdown.html
index 0a55bb6..e263f14 100644
--- a/docs/api/xmlsec-notes-init-shutdown.html
+++ b/docs/api/xmlsec-notes-init-shutdown.html
@@ -74,10 +74,10 @@
 <td width="15"></td>
 <td><a href="http://www.openssl.org/"><img src="../images/openssl-logo.png" alt="OpenSSL" border="0"></a></td>
 </tr>
+<!--Sponsored links - start--><!--Sponsored links - end-->
 </table>
 </td>
-<td valign="top"><table width="100%" valign="top">
-<tr><td valign="top" align="left" id="xmlsecContent">
+<td valign="top"><table width="100%" valign="top"><tr><td valign="top" align="left" id="xmlsecContent">
 <table width="100%" class="navigation" summary="Navigation header" cellpadding="2" cellspacing="2"><tr valign="middle">
 <td><a accesskey="p" href="xmlsec-notes-compiling-others.html"><img src="left.png" width="24" height="24" border="0" alt="Prev"></a></td>
 <td><a accesskey="u" href="xmlsec-notes.html"><img src="up.png" width="24" height="24" border="0" alt="Up"></a></td>
@@ -190,10 +190,6 @@
 <td align="left"><a accesskey="p" href="xmlsec-notes-compiling-others.html"><b><<<�Compiling and linking on other systems.</b></a></td>
 <td align="right"><a accesskey="n" href="xmlsec-notes-sign-encrypt.html"><b>Signing and encrypting documents.�>>></b></a></td>
 </tr></table>
-</td></tr>
-<tr><td>
-<br><br><p><a href="../bugs.html">Aleksey Sanin</a></p>
-</td></tr>
-</table></td>
+</td></tr></table></td>
 </tr></table></body>
 </html>
diff --git a/docs/api/xmlsec-notes-keys-manager-sign-enc.html b/docs/api/xmlsec-notes-keys-manager-sign-enc.html
index fd4629a..3fd3b70 100644
--- a/docs/api/xmlsec-notes-keys-manager-sign-enc.html
+++ b/docs/api/xmlsec-notes-keys-manager-sign-enc.html
@@ -74,10 +74,10 @@
 <td width="15"></td>
 <td><a href="http://www.openssl.org/"><img src="../images/openssl-logo.png" alt="OpenSSL" border="0"></a></td>
 </tr>
+<!--Sponsored links - start--><!--Sponsored links - end-->
 </table>
 </td>
-<td valign="top"><table width="100%" valign="top">
-<tr><td valign="top" align="left" id="xmlsecContent">
+<td valign="top"><table width="100%" valign="top"><tr><td valign="top" align="left" id="xmlsecContent">
 <table width="100%" class="navigation" summary="Navigation header" cellpadding="2" cellspacing="2"><tr valign="middle">
 <td><a accesskey="p" href="xmlsec-notes-simple-keys-store.html"><img src="left.png" width="24" height="24" border="0" alt="Prev"></a></td>
 <td><a accesskey="u" href="xmlsec-notes-keysmngr.html"><img src="up.png" width="24" height="24" border="0" alt="Up"></a></td>
@@ -303,10 +303,6 @@ done:
 <td align="left"><a accesskey="p" href="xmlsec-notes-simple-keys-store.html"><b><<<�Simple keys store.</b></a></td>
 <td align="right"><a accesskey="n" href="xmlsec-notes-keys-mngr-verify-decrypt.html"><b>Using keys manager for verification/decryption.�>>></b></a></td>
 </tr></table>
-</td></tr>
-<tr><td>
-<br><br><p><a href="../bugs.html">Aleksey Sanin</a></p>
-</td></tr>
-</table></td>
+</td></tr></table></td>
 </tr></table></body>
 </html>
diff --git a/docs/api/xmlsec-notes-keys-mngr-verify-decrypt.html b/docs/api/xmlsec-notes-keys-mngr-verify-decrypt.html
index 3b23727..0ef0b0e 100644
--- a/docs/api/xmlsec-notes-keys-mngr-verify-decrypt.html
+++ b/docs/api/xmlsec-notes-keys-mngr-verify-decrypt.html
@@ -74,10 +74,10 @@
 <td width="15"></td>
 <td><a href="http://www.openssl.org/"><img src="../images/openssl-logo.png" alt="OpenSSL" border="0"></a></td>
 </tr>
+<!--Sponsored links - start--><!--Sponsored links - end-->
 </table>
 </td>
-<td valign="top"><table width="100%" valign="top">
-<tr><td valign="top" align="left" id="xmlsecContent">
+<td valign="top"><table width="100%" valign="top"><tr><td valign="top" align="left" id="xmlsecContent">
 <table width="100%" class="navigation" summary="Navigation header" cellpadding="2" cellspacing="2"><tr valign="middle">
 <td><a accesskey="p" href="xmlsec-notes-keys-manager-sign-enc.html"><img src="left.png" width="24" height="24" border="0" alt="Prev"></a></td>
 <td><a accesskey="u" href="xmlsec-notes-keysmngr.html"><img src="up.png" width="24" height="24" border="0" alt="Up"></a></td>
@@ -175,10 +175,6 @@ load_des_keys(char** files, int files_size) {
 <td align="left"><a accesskey="p" href="xmlsec-notes-keys-manager-sign-enc.html"><b><<<�Using keys manager for signatures/encryption.</b></a></td>
 <td align="right"><a accesskey="n" href="xmlsec-notes-custom-keys-store.html"><b>Implementing a custom keys store.�>>></b></a></td>
 </tr></table>
-</td></tr>
-<tr><td>
-<br><br><p><a href="../bugs.html">Aleksey Sanin</a></p>
-</td></tr>
-</table></td>
+</td></tr></table></td>
 </tr></table></body>
 </html>
diff --git a/docs/api/xmlsec-notes-keys.html b/docs/api/xmlsec-notes-keys.html
index 6c4d942..83eefca 100644
--- a/docs/api/xmlsec-notes-keys.html
+++ b/docs/api/xmlsec-notes-keys.html
@@ -74,10 +74,10 @@
 <td width="15"></td>
 <td><a href="http://www.openssl.org/"><img src="../images/openssl-logo.png" alt="OpenSSL" border="0"></a></td>
 </tr>
+<!--Sponsored links - start--><!--Sponsored links - end-->
 </table>
 </td>
-<td valign="top"><table width="100%" valign="top">
-<tr><td valign="top" align="left" id="xmlsecContent">
+<td valign="top"><table width="100%" valign="top"><tr><td valign="top" align="left" id="xmlsecContent">
 <table width="100%" class="navigation" summary="Navigation header" cellpadding="2" cellspacing="2"><tr valign="middle">
 <td><a accesskey="p" href="xmlsec-notes-decrypt.html"><img src="left.png" width="24" height="24" border="0" alt="Prev"></a></td>
 <td><a accesskey="u" href="xmlsec-notes.html"><img src="up.png" width="24" height="24" border="0" alt="Up"></a></td>
@@ -116,10 +116,6 @@
 <td align="left"><a accesskey="p" href="xmlsec-notes-decrypt.html"><b><<<�Decrypting an encrypted document</b></a></td>
 <td align="right"><a accesskey="n" href="xmlsec-notes-keysmngr.html"><b>Keys manager.�>>></b></a></td>
 </tr></table>
-</td></tr>
-<tr><td>
-<br><br><p><a href="../bugs.html">Aleksey Sanin</a></p>
-</td></tr>
-</table></td>
+</td></tr></table></td>
 </tr></table></body>
 </html>
diff --git a/docs/api/xmlsec-notes-keysmngr.html b/docs/api/xmlsec-notes-keysmngr.html
index 6437fa2..6cc8c37 100644
--- a/docs/api/xmlsec-notes-keysmngr.html
+++ b/docs/api/xmlsec-notes-keysmngr.html
@@ -74,10 +74,10 @@
 <td width="15"></td>
 <td><a href="http://www.openssl.org/"><img src="../images/openssl-logo.png" alt="OpenSSL" border="0"></a></td>
 </tr>
+<!--Sponsored links - start--><!--Sponsored links - end-->
 </table>
 </td>
-<td valign="top"><table width="100%" valign="top">
-<tr><td valign="top" align="left" id="xmlsecContent">
+<td valign="top"><table width="100%" valign="top"><tr><td valign="top" align="left" id="xmlsecContent">
 <table width="100%" class="navigation" summary="Navigation header" cellpadding="2" cellspacing="2"><tr valign="middle">
 <td><a accesskey="p" href="xmlsec-notes-keys.html"><img src="left.png" width="24" height="24" border="0" alt="Prev"></a></td>
 <td><a accesskey="u" href="xmlsec-notes.html"><img src="up.png" width="24" height="24" border="0" alt="Up"></a></td>
@@ -136,10 +136,6 @@
 <td align="left"><a accesskey="p" href="xmlsec-notes-keys.html"><b><<<�Keys.</b></a></td>
 <td align="right"><a accesskey="n" href="xmlsec-notes-simple-keys-store.html"><b>Simple keys store.�>>></b></a></td>
 </tr></table>
-</td></tr>
-<tr><td>
-<br><br><p><a href="../bugs.html">Aleksey Sanin</a></p>
-</td></tr>
-</table></td>
+</td></tr></table></td>
 </tr></table></body>
 </html>
diff --git a/docs/api/xmlsec-notes-new-crypto-functions.html b/docs/api/xmlsec-notes-new-crypto-functions.html
index a1d8906..a135af4 100644
--- a/docs/api/xmlsec-notes-new-crypto-functions.html
+++ b/docs/api/xmlsec-notes-new-crypto-functions.html
@@ -74,10 +74,10 @@
 <td width="15"></td>
 <td><a href="http://www.openssl.org/"><img src="../images/openssl-logo.png" alt="OpenSSL" border="0"></a></td>
 </tr>
+<!--Sponsored links - start--><!--Sponsored links - end-->
 </table>
 </td>
-<td valign="top"><table width="100%" valign="top">
-<tr><td valign="top" align="left" id="xmlsecContent">
+<td valign="top"><table width="100%" valign="top"><tr><td valign="top" align="left" id="xmlsecContent">
 <table width="100%" class="navigation" summary="Navigation header" cellpadding="2" cellspacing="2"><tr valign="middle">
 <td><a accesskey="p" href="xmlsec-notes-new-crypto-skeleton.html"><img src="left.png" width="24" height="24" border="0" alt="Prev"></a></td>
 <td><a accesskey="u" href="xmlsec-notes-new-crypto.html"><img src="up.png" width="24" height="24" border="0" alt="Up"></a></td>
@@ -147,10 +147,6 @@
 <td align="left"><a accesskey="p" href="xmlsec-notes-new-crypto-skeleton.html"><b><<<�Creating a framework from the skeleton.</b></a></td>
 <td align="right"><a accesskey="n" href="xmlsec-notes-new-crypto-klasses.html"><b>Klasses and objects.�>>></b></a></td>
 </tr></table>
-</td></tr>
-<tr><td>
-<br><br><p><a href="../bugs.html">Aleksey Sanin</a></p>
-</td></tr>
-</table></td>
+</td></tr></table></td>
 </tr></table></body>
 </html>
diff --git a/docs/api/xmlsec-notes-new-crypto-key-stores.html b/docs/api/xmlsec-notes-new-crypto-key-stores.html
index 0f017c5..0975164 100644
--- a/docs/api/xmlsec-notes-new-crypto-key-stores.html
+++ b/docs/api/xmlsec-notes-new-crypto-key-stores.html
@@ -45,10 +45,10 @@
 <td width="15"></td>
 <td><a href="http://www.openssl.org/"><img src="../images/openssl-logo.png" alt="OpenSSL" border="0"></a></td>
 </tr>
+<!--Sponsored links - start--><!--Sponsored links - end-->
 </table>
 </td>
-<td valign="top"><table width="100%" valign="top">
-<tr><td valign="top" align="left" id="xmlsecContent">
+<td valign="top"><table width="100%" valign="top"><tr><td valign="top" align="left" id="xmlsecContent">
 <div class="NAVHEADER"><table width="100%" border="0" bgcolor="#000000" cellpadding="1" cellspacing="0">
 <tr><th colspan="4" align="center"><font color="#FFFFFF" size="5">XML Security Library Reference Manual</font></th></tr>
 <tr>
@@ -78,10 +78,6 @@
 </tr>
 </table>
 </div>
-</td></tr>
-<tr><td>
-<br><br><p><a href="../bugs.html">Aleksey Sanin</a></p>
-</td></tr>
-</table></td>
+</td></tr></table></td>
 </tr></table></body>
 </html>
diff --git a/docs/api/xmlsec-notes-new-crypto-keys.html b/docs/api/xmlsec-notes-new-crypto-keys.html
index ec663a5..2a35064 100644
--- a/docs/api/xmlsec-notes-new-crypto-keys.html
+++ b/docs/api/xmlsec-notes-new-crypto-keys.html
@@ -74,10 +74,10 @@
 <td width="15"></td>
 <td><a href="http://www.openssl.org/"><img src="../images/openssl-logo.png" alt="OpenSSL" border="0"></a></td>
 </tr>
+<!--Sponsored links - start--><!--Sponsored links - end-->
 </table>
 </td>
-<td valign="top"><table width="100%" valign="top">
-<tr><td valign="top" align="left" id="xmlsecContent">
+<td valign="top"><table width="100%" valign="top"><tr><td valign="top" align="left" id="xmlsecContent">
 <table width="100%" class="navigation" summary="Navigation header" cellpadding="2" cellspacing="2"><tr valign="middle">
 <td><a accesskey="p" href="xmlsec-notes-new-crypto-transforms.html"><img src="left.png" width="24" height="24" border="0" alt="Prev"></a></td>
 <td><a accesskey="u" href="xmlsec-notes-new-crypto.html"><img src="up.png" width="24" height="24" border="0" alt="Up"></a></td>
@@ -99,10 +99,6 @@
 <td align="left"><a accesskey="p" href="xmlsec-notes-new-crypto-transforms.html"><b><<<�Cryptographic transforms.</b></a></td>
 <td align="right"><a accesskey="n" href="xmlsec-notes-new-crypto-simple-keys-mngr.html"><b>Default keys manager.�>>></b></a></td>
 </tr></table>
-</td></tr>
-<tr><td>
-<br><br><p><a href="../bugs.html">Aleksey Sanin</a></p>
-</td></tr>
-</table></td>
+</td></tr></table></td>
 </tr></table></body>
 </html>
diff --git a/docs/api/xmlsec-notes-new-crypto-klasses.html b/docs/api/xmlsec-notes-new-crypto-klasses.html
index 34e1fa9..ade6630 100644
--- a/docs/api/xmlsec-notes-new-crypto-klasses.html
+++ b/docs/api/xmlsec-notes-new-crypto-klasses.html
@@ -74,10 +74,10 @@
 <td width="15"></td>
 <td><a href="http://www.openssl.org/"><img src="../images/openssl-logo.png" alt="OpenSSL" border="0"></a></td>
 </tr>
+<!--Sponsored links - start--><!--Sponsored links - end-->
 </table>
 </td>
-<td valign="top"><table width="100%" valign="top">
-<tr><td valign="top" align="left" id="xmlsecContent">
+<td valign="top"><table width="100%" valign="top"><tr><td valign="top" align="left" id="xmlsecContent">
 <table width="100%" class="navigation" summary="Navigation header" cellpadding="2" cellspacing="2"><tr valign="middle">
 <td><a accesskey="p" href="xmlsec-notes-new-crypto-functions.html"><img src="left.png" width="24" height="24" border="0" alt="Prev"></a></td>
 <td><a accesskey="u" href="xmlsec-notes-new-crypto.html"><img src="up.png" width="24" height="24" border="0" alt="Up"></a></td>
@@ -213,10 +213,6 @@ xmlSecTransformXPathGetKlass(void) {
 <td align="left"><a accesskey="p" href="xmlsec-notes-new-crypto-functions.html"><b><<<�xmlSecCryptoApp* functions.</b></a></td>
 <td align="right"><a accesskey="n" href="xmlsec-notes-new-crypto-transforms.html"><b>Cryptographic transforms.�>>></b></a></td>
 </tr></table>
-</td></tr>
-<tr><td>
-<br><br><p><a href="../bugs.html">Aleksey Sanin</a></p>
-</td></tr>
-</table></td>
+</td></tr></table></td>
 </tr></table></body>
 </html>
diff --git a/docs/api/xmlsec-notes-new-crypto-sharing-results.html b/docs/api/xmlsec-notes-new-crypto-sharing-results.html
index 3544a22..4e99372 100644
--- a/docs/api/xmlsec-notes-new-crypto-sharing-results.html
+++ b/docs/api/xmlsec-notes-new-crypto-sharing-results.html
@@ -74,10 +74,10 @@
 <td width="15"></td>
 <td><a href="http://www.openssl.org/"><img src="../images/openssl-logo.png" alt="OpenSSL" border="0"></a></td>
 </tr>
+<!--Sponsored links - start--><!--Sponsored links - end-->
 </table>
 </td>
-<td valign="top"><table width="100%" valign="top">
-<tr><td valign="top" align="left" id="xmlsecContent">
+<td valign="top"><table width="100%" valign="top"><tr><td valign="top" align="left" id="xmlsecContent">
 <table width="100%" class="navigation" summary="Navigation header" cellpadding="2" cellspacing="2"><tr valign="middle">
 <td><a accesskey="p" href="xmlsec-notes-new-crypto-simple-keys-mngr.html"><img src="left.png" width="24" height="24" border="0" alt="Prev"></a></td>
 <td><a accesskey="u" href="xmlsec-notes-new-crypto.html"><img src="up.png" width="24" height="24" border="0" alt="Up"></a></td>
@@ -121,10 +121,6 @@
 <td align="left"><a accesskey="p" href="xmlsec-notes-new-crypto-simple-keys-mngr.html"><b><<<�Default keys manager.</b></a></td>
 <td align="right"><a accesskey="n" href="xmlsec-examples.html"><b>Examples.�>>></b></a></td>
 </tr></table>
-</td></tr>
-<tr><td>
-<br><br><p><a href="../bugs.html">Aleksey Sanin</a></p>
-</td></tr>
-</table></td>
+</td></tr></table></td>
 </tr></table></body>
 </html>
diff --git a/docs/api/xmlsec-notes-new-crypto-simple-keys-mngr.html b/docs/api/xmlsec-notes-new-crypto-simple-keys-mngr.html
index 71b1141..5fcd5d5 100644
--- a/docs/api/xmlsec-notes-new-crypto-simple-keys-mngr.html
+++ b/docs/api/xmlsec-notes-new-crypto-simple-keys-mngr.html
@@ -74,10 +74,10 @@
 <td width="15"></td>
 <td><a href="http://www.openssl.org/"><img src="../images/openssl-logo.png" alt="OpenSSL" border="0"></a></td>
 </tr>
+<!--Sponsored links - start--><!--Sponsored links - end-->
 </table>
 </td>
-<td valign="top"><table width="100%" valign="top">
-<tr><td valign="top" align="left" id="xmlsecContent">
+<td valign="top"><table width="100%" valign="top"><tr><td valign="top" align="left" id="xmlsecContent">
 <table width="100%" class="navigation" summary="Navigation header" cellpadding="2" cellspacing="2"><tr valign="middle">
 <td><a accesskey="p" href="xmlsec-notes-new-crypto-keys.html"><img src="left.png" width="24" height="24" border="0" alt="Prev"></a></td>
 <td><a accesskey="u" href="xmlsec-notes-new-crypto.html"><img src="up.png" width="24" height="24" border="0" alt="Up"></a></td>
@@ -98,10 +98,6 @@
 <td align="left"><a accesskey="p" href="xmlsec-notes-new-crypto-keys.html"><b><<<�Keys data and keys data stores.</b></a></td>
 <td align="right"><a accesskey="n" href="xmlsec-notes-new-crypto-sharing-results.html"><b>Sharing the results.�>>></b></a></td>
 </tr></table>
-</td></tr>
-<tr><td>
-<br><br><p><a href="../bugs.html">Aleksey Sanin</a></p>
-</td></tr>
-</table></td>
+</td></tr></table></td>
 </tr></table></body>
 </html>
diff --git a/docs/api/xmlsec-notes-new-crypto-skeleton.html b/docs/api/xmlsec-notes-new-crypto-skeleton.html
index 4ac00fd..1bbdb80 100644
--- a/docs/api/xmlsec-notes-new-crypto-skeleton.html
+++ b/docs/api/xmlsec-notes-new-crypto-skeleton.html
@@ -74,10 +74,10 @@
 <td width="15"></td>
 <td><a href="http://www.openssl.org/"><img src="../images/openssl-logo.png" alt="OpenSSL" border="0"></a></td>
 </tr>
+<!--Sponsored links - start--><!--Sponsored links - end-->
 </table>
 </td>
-<td valign="top"><table width="100%" valign="top">
-<tr><td valign="top" align="left" id="xmlsecContent">
+<td valign="top"><table width="100%" valign="top"><tr><td valign="top" align="left" id="xmlsecContent">
 <table width="100%" class="navigation" summary="Navigation header" cellpadding="2" cellspacing="2"><tr valign="middle">
 <td><a accesskey="p" href="xmlsec-notes-new-crypto.html"><img src="left.png" width="24" height="24" border="0" alt="Prev"></a></td>
 <td><a accesskey="u" href="xmlsec-notes-new-crypto.html"><img src="up.png" width="24" height="24" border="0" alt="Up"></a></td>
@@ -250,10 +250,6 @@ make
 <td align="left"><a accesskey="p" href="xmlsec-notes-new-crypto.html"><b><<<�Adding support for new cryptographic library.</b></a></td>
 <td align="right"><a accesskey="n" href="xmlsec-notes-new-crypto-functions.html"><b>xmlSecCryptoApp* functions.�>>></b></a></td>
 </tr></table>
-</td></tr>
-<tr><td>
-<br><br><p><a href="../bugs.html">Aleksey Sanin</a></p>
-</td></tr>
-</table></td>
+</td></tr></table></td>
 </tr></table></body>
 </html>
diff --git a/docs/api/xmlsec-notes-new-crypto-transforms.html b/docs/api/xmlsec-notes-new-crypto-transforms.html
index 6ea9634..c47f1f2 100644
--- a/docs/api/xmlsec-notes-new-crypto-transforms.html
+++ b/docs/api/xmlsec-notes-new-crypto-transforms.html
@@ -74,10 +74,10 @@
 <td width="15"></td>
 <td><a href="http://www.openssl.org/"><img src="../images/openssl-logo.png" alt="OpenSSL" border="0"></a></td>
 </tr>
+<!--Sponsored links - start--><!--Sponsored links - end-->
 </table>
 </td>
-<td valign="top"><table width="100%" valign="top">
-<tr><td valign="top" align="left" id="xmlsecContent">
+<td valign="top"><table width="100%" valign="top"><tr><td valign="top" align="left" id="xmlsecContent">
 <table width="100%" class="navigation" summary="Navigation header" cellpadding="2" cellspacing="2"><tr valign="middle">
 <td><a accesskey="p" href="xmlsec-notes-new-crypto-klasses.html"><img src="left.png" width="24" height="24" border="0" alt="Prev"></a></td>
 <td><a accesskey="u" href="xmlsec-notes-new-crypto.html"><img src="up.png" width="24" height="24" border="0" alt="Up"></a></td>
@@ -166,10 +166,6 @@
 <td align="left"><a accesskey="p" href="xmlsec-notes-new-crypto-klasses.html"><b><<<�Klasses and objects.</b></a></td>
 <td align="right"><a accesskey="n" href="xmlsec-notes-new-crypto-keys.html"><b>Keys data and keys data stores.�>>></b></a></td>
 </tr></table>
-</td></tr>
-<tr><td>
-<br><br><p><a href="../bugs.html">Aleksey Sanin</a></p>
-</td></tr>
-</table></td>
+</td></tr></table></td>
 </tr></table></body>
 </html>
diff --git a/docs/api/xmlsec-notes-new-crypto.html b/docs/api/xmlsec-notes-new-crypto.html
index 6857860..a12e454 100644
--- a/docs/api/xmlsec-notes-new-crypto.html
+++ b/docs/api/xmlsec-notes-new-crypto.html
@@ -74,10 +74,10 @@
 <td width="15"></td>
 <td><a href="http://www.openssl.org/"><img src="../images/openssl-logo.png" alt="OpenSSL" border="0"></a></td>
 </tr>
+<!--Sponsored links - start--><!--Sponsored links - end-->
 </table>
 </td>
-<td valign="top"><table width="100%" valign="top">
-<tr><td valign="top" align="left" id="xmlsecContent">
+<td valign="top"><table width="100%" valign="top"><tr><td valign="top" align="left" id="xmlsecContent">
 <table width="100%" class="navigation" summary="Navigation header" cellpadding="2" cellspacing="2"><tr valign="middle">
 <td><a accesskey="p" href="xmlsec-notes-contexts.html"><img src="left.png" width="24" height="24" border="0" alt="Prev"></a></td>
 <td><a accesskey="u" href="xmlsec-notes.html"><img src="up.png" width="24" height="24" border="0" alt="Up"></a></td>
@@ -132,10 +132,6 @@
 <td align="left"><a accesskey="p" href="xmlsec-notes-contexts.html"><b><<<�Using context objects.</b></a></td>
 <td align="right"><a accesskey="n" href="xmlsec-notes-new-crypto-skeleton.html"><b>Creating a framework from the skeleton.�>>></b></a></td>
 </tr></table>
-</td></tr>
-<tr><td>
-<br><br><p><a href="../bugs.html">Aleksey Sanin</a></p>
-</td></tr>
-</table></td>
+</td></tr></table></td>
 </tr></table></body>
 </html>
diff --git a/docs/api/xmlsec-notes-overview.html b/docs/api/xmlsec-notes-overview.html
index ec8b791..e0fa271 100644
--- a/docs/api/xmlsec-notes-overview.html
+++ b/docs/api/xmlsec-notes-overview.html
@@ -74,10 +74,10 @@
 <td width="15"></td>
 <td><a href="http://www.openssl.org/"><img src="../images/openssl-logo.png" alt="OpenSSL" border="0"></a></td>
 </tr>
+<!--Sponsored links - start--><!--Sponsored links - end-->
 </table>
 </td>
-<td valign="top"><table width="100%" valign="top">
-<tr><td valign="top" align="left" id="xmlsecContent">
+<td valign="top"><table width="100%" valign="top"><tr><td valign="top" align="left" id="xmlsecContent">
 <table width="100%" class="navigation" summary="Navigation header" cellpadding="2" cellspacing="2"><tr valign="middle">
 <td><a accesskey="p" href="xmlsec-notes.html"><img src="left.png" width="24" height="24" border="0" alt="Prev"></a></td>
 <td><a accesskey="u" href="xmlsec-notes.html"><img src="up.png" width="24" height="24" border="0" alt="Up"></a></td>
@@ -98,10 +98,6 @@
 <td align="left"><a accesskey="p" href="xmlsec-notes.html"><b><<<�XML Security Library Tutorial</b></a></td>
 <td align="right"><a accesskey="n" href="xmlsec-notes-structure.html"><b>XML Security Library Structure.�>>></b></a></td>
 </tr></table>
-</td></tr>
-<tr><td>
-<br><br><p><a href="../bugs.html">Aleksey Sanin</a></p>
-</td></tr>
-</table></td>
+</td></tr></table></td>
 </tr></table></body>
 </html>
diff --git a/docs/api/xmlsec-notes-sign-encrypt.html b/docs/api/xmlsec-notes-sign-encrypt.html
index 60b6ca7..5972124 100644
--- a/docs/api/xmlsec-notes-sign-encrypt.html
+++ b/docs/api/xmlsec-notes-sign-encrypt.html
@@ -74,10 +74,10 @@
 <td width="15"></td>
 <td><a href="http://www.openssl.org/"><img src="../images/openssl-logo.png" alt="OpenSSL" border="0"></a></td>
 </tr>
+<!--Sponsored links - start--><!--Sponsored links - end-->
 </table>
 </td>
-<td valign="top"><table width="100%" valign="top">
-<tr><td valign="top" align="left" id="xmlsecContent">
+<td valign="top"><table width="100%" valign="top"><tr><td valign="top" align="left" id="xmlsecContent">
 <table width="100%" class="navigation" summary="Navigation header" cellpadding="2" cellspacing="2"><tr valign="middle">
 <td><a accesskey="p" href="xmlsec-notes-init-shutdown.html"><img src="left.png" width="24" height="24" border="0" alt="Prev"></a></td>
 <td><a accesskey="u" href="xmlsec-notes.html"><img src="up.png" width="24" height="24" border="0" alt="Up"></a></td>
@@ -116,10 +116,6 @@
 <td align="left"><a accesskey="p" href="xmlsec-notes-init-shutdown.html"><b><<<�Initialization and shutdown.</b></a></td>
 <td align="right"><a accesskey="n" href="xmlsec-notes-sign.html"><b>Signing a document.�>>></b></a></td>
 </tr></table>
-</td></tr>
-<tr><td>
-<br><br><p><a href="../bugs.html">Aleksey Sanin</a></p>
-</td></tr>
-</table></td>
+</td></tr></table></td>
 </tr></table></body>
 </html>
diff --git a/docs/api/xmlsec-notes-sign-x509.html b/docs/api/xmlsec-notes-sign-x509.html
index ee840d4..9ea99db 100644
--- a/docs/api/xmlsec-notes-sign-x509.html
+++ b/docs/api/xmlsec-notes-sign-x509.html
@@ -74,10 +74,10 @@
 <td width="15"></td>
 <td><a href="http://www.openssl.org/"><img src="../images/openssl-logo.png" alt="OpenSSL" border="0"></a></td>
 </tr>
+<!--Sponsored links - start--><!--Sponsored links - end-->
 </table>
 </td>
-<td valign="top"><table width="100%" valign="top">
-<tr><td valign="top" align="left" id="xmlsecContent">
+<td valign="top"><table width="100%" valign="top"><tr><td valign="top" align="left" id="xmlsecContent">
 <table width="100%" class="navigation" summary="Navigation header" cellpadding="2" cellspacing="2"><tr valign="middle">
 <td><a accesskey="p" href="xmlsec-notes-x509.html"><img src="left.png" width="24" height="24" border="0" alt="Prev"></a></td>
 <td><a accesskey="u" href="xmlsec-notes-x509.html"><img src="up.png" width="24" height="24" border="0" alt="Up"></a></td>
@@ -172,10 +172,6 @@
 <td align="left"><a accesskey="p" href="xmlsec-notes-x509.html"><b><<<�Using X509 Certificates.</b></a></td>
 <td align="right"><a accesskey="n" href="xmlsec-notes-verify-x509.html"><b>Verifing document signed with X509 certificates.�>>></b></a></td>
 </tr></table>
-</td></tr>
-<tr><td>
-<br><br><p><a href="../bugs.html">Aleksey Sanin</a></p>
-</td></tr>
-</table></td>
+</td></tr></table></td>
 </tr></table></body>
 </html>
diff --git a/docs/api/xmlsec-notes-sign.html b/docs/api/xmlsec-notes-sign.html
index d66e1aa..e3a398a 100644
--- a/docs/api/xmlsec-notes-sign.html
+++ b/docs/api/xmlsec-notes-sign.html
@@ -74,10 +74,10 @@
 <td width="15"></td>
 <td><a href="http://www.openssl.org/"><img src="../images/openssl-logo.png" alt="OpenSSL" border="0"></a></td>
 </tr>
+<!--Sponsored links - start--><!--Sponsored links - end-->
 </table>
 </td>
-<td valign="top"><table width="100%" valign="top">
-<tr><td valign="top" align="left" id="xmlsecContent">
+<td valign="top"><table width="100%" valign="top"><tr><td valign="top" align="left" id="xmlsecContent">
 <table width="100%" class="navigation" summary="Navigation header" cellpadding="2" cellspacing="2"><tr valign="middle">
 <td><a accesskey="p" href="xmlsec-notes-sign-encrypt.html"><img src="left.png" width="24" height="24" border="0" alt="Prev"></a></td>
 <td><a accesskey="u" href="xmlsec-notes-sign-encrypt.html"><img src="up.png" width="24" height="24" border="0" alt="Up"></a></td>
@@ -206,10 +206,6 @@ done:
 <td align="left"><a accesskey="p" href="xmlsec-notes-sign-encrypt.html"><b><<<�Signing and encrypting documents.</b></a></td>
 <td align="right"><a accesskey="n" href="xmlsec-notes-encrypt.html"><b>Encrypting data.�>>></b></a></td>
 </tr></table>
-</td></tr>
-<tr><td>
-<br><br><p><a href="../bugs.html">Aleksey Sanin</a></p>
-</td></tr>
-</table></td>
+</td></tr></table></td>
 </tr></table></body>
 </html>
diff --git a/docs/api/xmlsec-notes-simple-keys-store.html b/docs/api/xmlsec-notes-simple-keys-store.html
index 4e2ef92..933fa00 100644
--- a/docs/api/xmlsec-notes-simple-keys-store.html
+++ b/docs/api/xmlsec-notes-simple-keys-store.html
@@ -74,10 +74,10 @@
 <td width="15"></td>
 <td><a href="http://www.openssl.org/"><img src="../images/openssl-logo.png" alt="OpenSSL" border="0"></a></td>
 </tr>
+<!--Sponsored links - start--><!--Sponsored links - end-->
 </table>
 </td>
-<td valign="top"><table width="100%" valign="top">
-<tr><td valign="top" align="left" id="xmlsecContent">
+<td valign="top"><table width="100%" valign="top"><tr><td valign="top" align="left" id="xmlsecContent">
 <table width="100%" class="navigation" summary="Navigation header" cellpadding="2" cellspacing="2"><tr valign="middle">
 <td><a accesskey="p" href="xmlsec-notes-keysmngr.html"><img src="left.png" width="24" height="24" border="0" alt="Prev"></a></td>
 <td><a accesskey="u" href="xmlsec-notes-keysmngr.html"><img src="up.png" width="24" height="24" border="0" alt="Up"></a></td>
@@ -173,10 +173,6 @@ load_keys(char** files, int files_size) {
 <td align="left"><a accesskey="p" href="xmlsec-notes-keysmngr.html"><b><<<�Keys manager.</b></a></td>
 <td align="right"><a accesskey="n" href="xmlsec-notes-keys-manager-sign-enc.html"><b>Using keys manager for signatures/encryption.�>>></b></a></td>
 </tr></table>
-</td></tr>
-<tr><td>
-<br><br><p><a href="../bugs.html">Aleksey Sanin</a></p>
-</td></tr>
-</table></td>
+</td></tr></table></td>
 </tr></table></body>
 </html>
diff --git a/docs/api/xmlsec-notes-structure.html b/docs/api/xmlsec-notes-structure.html
index 1aa19f1..78d22c4 100644
--- a/docs/api/xmlsec-notes-structure.html
+++ b/docs/api/xmlsec-notes-structure.html
@@ -74,10 +74,10 @@
 <td width="15"></td>
 <td><a href="http://www.openssl.org/"><img src="../images/openssl-logo.png" alt="OpenSSL" border="0"></a></td>
 </tr>
+<!--Sponsored links - start--><!--Sponsored links - end-->
 </table>
 </td>
-<td valign="top"><table width="100%" valign="top">
-<tr><td valign="top" align="left" id="xmlsecContent">
+<td valign="top"><table width="100%" valign="top"><tr><td valign="top" align="left" id="xmlsecContent">
 <table width="100%" class="navigation" summary="Navigation header" cellpadding="2" cellspacing="2"><tr valign="middle">
 <td><a accesskey="p" href="xmlsec-notes-overview.html"><img src="left.png" width="24" height="24" border="0" alt="Prev"></a></td>
 <td><a accesskey="u" href="xmlsec-notes.html"><img src="up.png" width="24" height="24" border="0" alt="Up"></a></td>
@@ -110,10 +110,6 @@
 <td align="left"><a accesskey="p" href="xmlsec-notes-overview.html"><b><<<�Overview.</b></a></td>
 <td align="right"><a accesskey="n" href="xmlsec-notes-compiling.html"><b>Building the application with XML Security Library.�>>></b></a></td>
 </tr></table>
-</td></tr>
-<tr><td>
-<br><br><p><a href="../bugs.html">Aleksey Sanin</a></p>
-</td></tr>
-</table></td>
+</td></tr></table></td>
 </tr></table></body>
 </html>
diff --git a/docs/api/xmlsec-notes-templates.html b/docs/api/xmlsec-notes-templates.html
index e798207..d402dcf 100644
--- a/docs/api/xmlsec-notes-templates.html
+++ b/docs/api/xmlsec-notes-templates.html
@@ -74,10 +74,10 @@
 <td width="15"></td>
 <td><a href="http://www.openssl.org/"><img src="../images/openssl-logo.png" alt="OpenSSL" border="0"></a></td>
 </tr>
+<!--Sponsored links - start--><!--Sponsored links - end-->
 </table>
 </td>
-<td valign="top"><table width="100%" valign="top">
-<tr><td valign="top" align="left" id="xmlsecContent">
+<td valign="top"><table width="100%" valign="top"><tr><td valign="top" align="left" id="xmlsecContent">
 <table width="100%" class="navigation" summary="Navigation header" cellpadding="2" cellspacing="2"><tr valign="middle">
 <td><a accesskey="p" href="xmlsec-notes-encrypt.html"><img src="left.png" width="24" height="24" border="0" alt="Prev"></a></td>
 <td><a accesskey="u" href="xmlsec-notes.html"><img src="up.png" width="24" height="24" border="0" alt="Up"></a></td>
@@ -110,10 +110,6 @@
 <td align="left"><a accesskey="p" href="xmlsec-notes-encrypt.html"><b><<<�Encrypting data.</b></a></td>
 <td align="right"><a accesskey="n" href="xmlsec-notes-dynamic-signature-templates.html"><b>Creating dynamic signature templates.�>>></b></a></td>
 </tr></table>
-</td></tr>
-<tr><td>
-<br><br><p><a href="../bugs.html">Aleksey Sanin</a></p>
-</td></tr>
-</table></td>
+</td></tr></table></td>
 </tr></table></body>
 </html>
diff --git a/docs/api/xmlsec-notes-transforms.html b/docs/api/xmlsec-notes-transforms.html
index d354421..42e9123 100644
--- a/docs/api/xmlsec-notes-transforms.html
+++ b/docs/api/xmlsec-notes-transforms.html
@@ -74,10 +74,10 @@
 <td width="15"></td>
 <td><a href="http://www.openssl.org/"><img src="../images/openssl-logo.png" alt="OpenSSL" border="0"></a></td>
 </tr>
+<!--Sponsored links - start--><!--Sponsored links - end-->
 </table>
 </td>
-<td valign="top"><table width="100%" valign="top">
-<tr><td valign="top" align="left" id="xmlsecContent">
+<td valign="top"><table width="100%" valign="top"><tr><td valign="top" align="left" id="xmlsecContent">
 <table width="100%" class="navigation" summary="Navigation header" cellpadding="2" cellspacing="2"><tr valign="middle">
 <td><a accesskey="p" href="xmlsec-notes-verify-x509.html"><img src="left.png" width="24" height="24" border="0" alt="Prev"></a></td>
 <td><a accesskey="u" href="xmlsec-notes.html"><img src="up.png" width="24" height="24" border="0" alt="Up"></a></td>
@@ -150,10 +150,6 @@
 <td align="left"><a accesskey="p" href="xmlsec-notes-verify-x509.html"><b><<<�Verifing document signed with X509 certificates.</b></a></td>
 <td align="right"><a accesskey="n" href="xmlsec-notes-contexts.html"><b>Using context objects.�>>></b></a></td>
 </tr></table>
-</td></tr>
-<tr><td>
-<br><br><p><a href="../bugs.html">Aleksey Sanin</a></p>
-</td></tr>
-</table></td>
+</td></tr></table></td>
 </tr></table></body>
 </html>
diff --git a/docs/api/xmlsec-notes-verify-decrypt.html b/docs/api/xmlsec-notes-verify-decrypt.html
index e9cfaa2..a2518e3 100644
--- a/docs/api/xmlsec-notes-verify-decrypt.html
+++ b/docs/api/xmlsec-notes-verify-decrypt.html
@@ -74,10 +74,10 @@
 <td width="15"></td>
 <td><a href="http://www.openssl.org/"><img src="../images/openssl-logo.png" alt="OpenSSL" border="0"></a></td>
 </tr>
+<!--Sponsored links - start--><!--Sponsored links - end-->
 </table>
 </td>
-<td valign="top"><table width="100%" valign="top">
-<tr><td valign="top" align="left" id="xmlsecContent">
+<td valign="top"><table width="100%" valign="top"><tr><td valign="top" align="left" id="xmlsecContent">
 <table width="100%" class="navigation" summary="Navigation header" cellpadding="2" cellspacing="2"><tr valign="middle">
 <td><a accesskey="p" href="xmlsec-notes-dynamic-encryption-templates.html"><img src="left.png" width="24" height="24" border="0" alt="Prev"></a></td>
 <td><a accesskey="u" href="xmlsec-notes.html"><img src="up.png" width="24" height="24" border="0" alt="Up"></a></td>
@@ -116,10 +116,6 @@
 <td align="left"><a accesskey="p" href="xmlsec-notes-dynamic-encryption-templates.html"><b><<<�Creating dynamic encryption templates.</b></a></td>
 <td align="right"><a accesskey="n" href="xmlsec-notes-verify.html"><b>Verifying a signed document�>>></b></a></td>
 </tr></table>
-</td></tr>
-<tr><td>
-<br><br><p><a href="../bugs.html">Aleksey Sanin</a></p>
-</td></tr>
-</table></td>
+</td></tr></table></td>
 </tr></table></body>
 </html>
diff --git a/docs/api/xmlsec-notes-verify-x509.html b/docs/api/xmlsec-notes-verify-x509.html
index 2dcf6af..9101d3f 100644
--- a/docs/api/xmlsec-notes-verify-x509.html
+++ b/docs/api/xmlsec-notes-verify-x509.html
@@ -74,10 +74,10 @@
 <td width="15"></td>
 <td><a href="http://www.openssl.org/"><img src="../images/openssl-logo.png" alt="OpenSSL" border="0"></a></td>
 </tr>
+<!--Sponsored links - start--><!--Sponsored links - end-->
 </table>
 </td>
-<td valign="top"><table width="100%" valign="top">
-<tr><td valign="top" align="left" id="xmlsecContent">
+<td valign="top"><table width="100%" valign="top"><tr><td valign="top" align="left" id="xmlsecContent">
 <table width="100%" class="navigation" summary="Navigation header" cellpadding="2" cellspacing="2"><tr valign="middle">
 <td><a accesskey="p" href="xmlsec-notes-sign-x509.html"><img src="left.png" width="24" height="24" border="0" alt="Prev"></a></td>
 <td><a accesskey="u" href="xmlsec-notes-x509.html"><img src="up.png" width="24" height="24" border="0" alt="Up"></a></td>
@@ -176,10 +176,6 @@ load_trusted_certs(char** files, int files_size) {
 <td align="left"><a accesskey="p" href="xmlsec-notes-sign-x509.html"><b><<<�Signing data with X509 certificate.</b></a></td>
 <td align="right"><a accesskey="n" href="xmlsec-notes-transforms.html"><b>Transforms and transforms chain.�>>></b></a></td>
 </tr></table>
-</td></tr>
-<tr><td>
-<br><br><p><a href="../bugs.html">Aleksey Sanin</a></p>
-</td></tr>
-</table></td>
+</td></tr></table></td>
 </tr></table></body>
 </html>
diff --git a/docs/api/xmlsec-notes-verify.html b/docs/api/xmlsec-notes-verify.html
index 23d16dd..07270e2 100644
--- a/docs/api/xmlsec-notes-verify.html
+++ b/docs/api/xmlsec-notes-verify.html
@@ -74,10 +74,10 @@
 <td width="15"></td>
 <td><a href="http://www.openssl.org/"><img src="../images/openssl-logo.png" alt="OpenSSL" border="0"></a></td>
 </tr>
+<!--Sponsored links - start--><!--Sponsored links - end-->
 </table>
 </td>
-<td valign="top"><table width="100%" valign="top">
-<tr><td valign="top" align="left" id="xmlsecContent">
+<td valign="top"><table width="100%" valign="top"><tr><td valign="top" align="left" id="xmlsecContent">
 <table width="100%" class="navigation" summary="Navigation header" cellpadding="2" cellspacing="2"><tr valign="middle">
 <td><a accesskey="p" href="xmlsec-notes-verify-decrypt.html"><img src="left.png" width="24" height="24" border="0" alt="Prev"></a></td>
 <td><a accesskey="u" href="xmlsec-notes-verify-decrypt.html"><img src="up.png" width="24" height="24" border="0" alt="Up"></a></td>
@@ -206,10 +206,6 @@ done:
 <td align="left"><a accesskey="p" href="xmlsec-notes-verify-decrypt.html"><b><<<�Verifing and decrypting documents.</b></a></td>
 <td align="right"><a accesskey="n" href="xmlsec-notes-decrypt.html"><b>Decrypting an encrypted document�>>></b></a></td>
 </tr></table>
-</td></tr>
-<tr><td>
-<br><br><p><a href="../bugs.html">Aleksey Sanin</a></p>
-</td></tr>
-</table></td>
+</td></tr></table></td>
 </tr></table></body>
 </html>
diff --git a/docs/api/xmlsec-notes-x509.html b/docs/api/xmlsec-notes-x509.html
index 1410614..192731b 100644
--- a/docs/api/xmlsec-notes-x509.html
+++ b/docs/api/xmlsec-notes-x509.html
@@ -74,10 +74,10 @@
 <td width="15"></td>
 <td><a href="http://www.openssl.org/"><img src="../images/openssl-logo.png" alt="OpenSSL" border="0"></a></td>
 </tr>
+<!--Sponsored links - start--><!--Sponsored links - end-->
 </table>
 </td>
-<td valign="top"><table width="100%" valign="top">
-<tr><td valign="top" align="left" id="xmlsecContent">
+<td valign="top"><table width="100%" valign="top"><tr><td valign="top" align="left" id="xmlsecContent">
 <table width="100%" class="navigation" summary="Navigation header" cellpadding="2" cellspacing="2"><tr valign="middle">
 <td><a accesskey="p" href="xmlsec-notes-custom-keys-store.html"><img src="left.png" width="24" height="24" border="0" alt="Prev"></a></td>
 <td><a accesskey="u" href="xmlsec-notes.html"><img src="up.png" width="24" height="24" border="0" alt="Up"></a></td>
@@ -110,10 +110,6 @@
 <td align="left"><a accesskey="p" href="xmlsec-notes-custom-keys-store.html"><b><<<�Implementing a custom keys store.</b></a></td>
 <td align="right"><a accesskey="n" href="xmlsec-notes-sign-x509.html"><b>Signing data with X509 certificate.�>>></b></a></td>
 </tr></table>
-</td></tr>
-<tr><td>
-<br><br><p><a href="../bugs.html">Aleksey Sanin</a></p>
-</td></tr>
-</table></td>
+</td></tr></table></td>
 </tr></table></body>
 </html>
diff --git a/docs/api/xmlsec-notes.html b/docs/api/xmlsec-notes.html
index eb7b05a..53e534b 100644
--- a/docs/api/xmlsec-notes.html
+++ b/docs/api/xmlsec-notes.html
@@ -73,10 +73,10 @@
 <td width="15"></td>
 <td><a href="http://www.openssl.org/"><img src="../images/openssl-logo.png" alt="OpenSSL" border="0"></a></td>
 </tr>
+<!--Sponsored links - start--><!--Sponsored links - end-->
 </table>
 </td>
-<td valign="top"><table width="100%" valign="top">
-<tr><td valign="top" align="left" id="xmlsecContent">
+<td valign="top"><table width="100%" valign="top"><tr><td valign="top" align="left" id="xmlsecContent">
 <table width="100%" class="navigation" summary="Navigation header" cellpadding="2" cellspacing="2"><tr valign="middle">
 <td><a accesskey="p" href="index.html"><img src="left.png" width="24" height="24" border="0" alt="Prev"></a></td>
 <td><a accesskey="h" href="index.html"><img src="home.png" width="24" height="24" border="0" alt="Home"></a></td>
@@ -111,10 +111,6 @@
 <td align="left"><a accesskey="p" href="index.html"><b><<<�XML Security Library Reference Manual</b></a></td>
 <td align="right"><a accesskey="n" href="xmlsec-notes-overview.html"><b>Overview.�>>></b></a></td>
 </tr></table>
-</td></tr>
-<tr><td>
-<br><br><p><a href="../bugs.html">Aleksey Sanin</a></p>
-</td></tr>
-</table></td>
+</td></tr></table></td>
 </tr></table></body>
 </html>
diff --git a/docs/api/xmlsec-nss-app.html b/docs/api/xmlsec-nss-app.html
index 5c04449..c8cd259 100644
--- a/docs/api/xmlsec-nss-app.html
+++ b/docs/api/xmlsec-nss-app.html
@@ -74,10 +74,10 @@
 <td width="15"></td>
 <td><a href="http://www.openssl.org/"><img src="../images/openssl-logo.png" alt="OpenSSL" border="0"></a></td>
 </tr>
+<!--Sponsored links - start--><!--Sponsored links - end-->
 </table>
 </td>
-<td valign="top"><table width="100%" valign="top">
-<tr><td valign="top" align="left" id="xmlsecContent">
+<td valign="top"><table width="100%" valign="top"><tr><td valign="top" align="left" id="xmlsecContent">
 <table width="100%" class="navigation" summary="Navigation header" cellpadding="2" cellspacing="2"><tr valign="middle">
 <td><a accesskey="p" href="xmlsec-nss-ref.html"><img src="left.png" width="24" height="24" border="0" alt="Prev"></a></td>
 <td><a accesskey="u" href="xmlsec-nss-ref.html"><img src="up.png" width="24" height="24" border="0" alt="Up"></a></td>
@@ -783,10 +783,6 @@ in format=xmlSecKeyDataFormatPkcs12.</p>
 <td align="left"><a accesskey="p" href="xmlsec-nss-ref.html"><b><<<�XML Security Library for NSS API Reference.</b></a></td>
 <td align="right"><a accesskey="n" href="xmlsec-nss-bignum.html"><b>bignum�>>></b></a></td>
 </tr></table>
-</td></tr>
-<tr><td>
-<br><br><p><a href="../bugs.html">Aleksey Sanin</a></p>
-</td></tr>
-</table></td>
+</td></tr></table></td>
 </tr></table></body>
 </html>
diff --git a/docs/api/xmlsec-nss-bignum.html b/docs/api/xmlsec-nss-bignum.html
index 8a79b9c..4d3292e 100644
--- a/docs/api/xmlsec-nss-bignum.html
+++ b/docs/api/xmlsec-nss-bignum.html
@@ -74,10 +74,10 @@
 <td width="15"></td>
 <td><a href="http://www.openssl.org/"><img src="../images/openssl-logo.png" alt="OpenSSL" border="0"></a></td>
 </tr>
+<!--Sponsored links - start--><!--Sponsored links - end-->
 </table>
 </td>
-<td valign="top"><table width="100%" valign="top">
-<tr><td valign="top" align="left" id="xmlsecContent">
+<td valign="top"><table width="100%" valign="top"><tr><td valign="top" align="left" id="xmlsecContent">
 <table width="100%" class="navigation" summary="Navigation header" cellpadding="2" cellspacing="2"><tr valign="middle">
 <td><a accesskey="p" href="xmlsec-nss-app.html"><img src="left.png" width="24" height="24" border="0" alt="Prev"></a></td>
 <td><a accesskey="u" href="xmlsec-nss-ref.html"><img src="up.png" width="24" height="24" border="0" alt="Up"></a></td>
@@ -178,10 +178,6 @@ before and after the CryptoBinary string.</p>
 <td align="left"><a accesskey="p" href="xmlsec-nss-app.html"><b><<<�app</b></a></td>
 <td align="right"><a accesskey="n" href="xmlsec-nss-crypto.html"><b>crypto�>>></b></a></td>
 </tr></table>
-</td></tr>
-<tr><td>
-<br><br><p><a href="../bugs.html">Aleksey Sanin</a></p>
-</td></tr>
-</table></td>
+</td></tr></table></td>
 </tr></table></body>
 </html>
diff --git a/docs/api/xmlsec-nss-crypto.html b/docs/api/xmlsec-nss-crypto.html
index d63c2ec..4bbb3ed 100644
--- a/docs/api/xmlsec-nss-crypto.html
+++ b/docs/api/xmlsec-nss-crypto.html
@@ -74,10 +74,10 @@
 <td width="15"></td>
 <td><a href="http://www.openssl.org/"><img src="../images/openssl-logo.png" alt="OpenSSL" border="0"></a></td>
 </tr>
+<!--Sponsored links - start--><!--Sponsored links - end-->
 </table>
 </td>
-<td valign="top"><table width="100%" valign="top">
-<tr><td valign="top" align="left" id="xmlsecContent">
+<td valign="top"><table width="100%" valign="top"><tr><td valign="top" align="left" id="xmlsecContent">
 <table width="100%" class="navigation" summary="Navigation header" cellpadding="2" cellspacing="2"><tr valign="middle">
 <td><a accesskey="p" href="xmlsec-nss-bignum.html"><img src="left.png" width="24" height="24" border="0" alt="Prev"></a></td>
 <td><a accesskey="u" href="xmlsec-nss-ref.html"><img src="up.png" width="24" height="24" border="0" alt="Up"></a></td>
@@ -834,10 +834,6 @@
 <td align="left"><a accesskey="p" href="xmlsec-nss-bignum.html"><b><<<�bignum</b></a></td>
 <td align="right"><a accesskey="n" href="xmlsec-nss-keysstore.html"><b>keysstore�>>></b></a></td>
 </tr></table>
-</td></tr>
-<tr><td>
-<br><br><p><a href="../bugs.html">Aleksey Sanin</a></p>
-</td></tr>
-</table></td>
+</td></tr></table></td>
 </tr></table></body>
 </html>
diff --git a/docs/api/xmlsec-nss-keysstore.html b/docs/api/xmlsec-nss-keysstore.html
index abdc857..3532ed6 100644
--- a/docs/api/xmlsec-nss-keysstore.html
+++ b/docs/api/xmlsec-nss-keysstore.html
@@ -74,10 +74,10 @@
 <td width="15"></td>
 <td><a href="http://www.openssl.org/"><img src="../images/openssl-logo.png" alt="OpenSSL" border="0"></a></td>
 </tr>
+<!--Sponsored links - start--><!--Sponsored links - end-->
 </table>
 </td>
-<td valign="top"><table width="100%" valign="top">
-<tr><td valign="top" align="left" id="xmlsecContent">
+<td valign="top"><table width="100%" valign="top"><tr><td valign="top" align="left" id="xmlsecContent">
 <table width="100%" class="navigation" summary="Navigation header" cellpadding="2" cellspacing="2"><tr valign="middle">
 <td><a accesskey="p" href="xmlsec-nss-crypto.html"><img src="left.png" width="24" height="24" border="0" alt="Prev"></a></td>
 <td><a accesskey="u" href="xmlsec-nss-ref.html"><img src="up.png" width="24" height="24" border="0" alt="Up"></a></td>
@@ -217,10 +217,6 @@
 <td align="left"><a accesskey="p" href="xmlsec-nss-crypto.html"><b><<<�crypto</b></a></td>
 <td align="right"><a accesskey="n" href="xmlsec-nss-pkikeys.html"><b>pkikeys�>>></b></a></td>
 </tr></table>
-</td></tr>
-<tr><td>
-<br><br><p><a href="../bugs.html">Aleksey Sanin</a></p>
-</td></tr>
-</table></td>
+</td></tr></table></td>
 </tr></table></body>
 </html>
diff --git a/docs/api/xmlsec-nss-pkikeys.html b/docs/api/xmlsec-nss-pkikeys.html
index f033d1e..2224eb8 100644
--- a/docs/api/xmlsec-nss-pkikeys.html
+++ b/docs/api/xmlsec-nss-pkikeys.html
@@ -74,10 +74,10 @@
 <td width="15"></td>
 <td><a href="http://www.openssl.org/"><img src="../images/openssl-logo.png" alt="OpenSSL" border="0"></a></td>
 </tr>
+<!--Sponsored links - start--><!--Sponsored links - end-->
 </table>
 </td>
-<td valign="top"><table width="100%" valign="top">
-<tr><td valign="top" align="left" id="xmlsecContent">
+<td valign="top"><table width="100%" valign="top"><tr><td valign="top" align="left" id="xmlsecContent">
 <table width="100%" class="navigation" summary="Navigation header" cellpadding="2" cellspacing="2"><tr valign="middle">
 <td><a accesskey="p" href="xmlsec-nss-keysstore.html"><img src="left.png" width="24" height="24" border="0" alt="Prev"></a></td>
 <td><a accesskey="u" href="xmlsec-nss-ref.html"><img src="up.png" width="24" height="24" border="0" alt="Up"></a></td>
@@ -223,10 +223,6 @@ Caller is responsible for freeing the key when done</p></td>
 <td align="left"><a accesskey="p" href="xmlsec-nss-keysstore.html"><b><<<�keysstore</b></a></td>
 <td align="right"><a accesskey="n" href="xmlsec-nss-x509.html"><b>x509�>>></b></a></td>
 </tr></table>
-</td></tr>
-<tr><td>
-<br><br><p><a href="../bugs.html">Aleksey Sanin</a></p>
-</td></tr>
-</table></td>
+</td></tr></table></td>
 </tr></table></body>
 </html>
diff --git a/docs/api/xmlsec-nss-ref.html b/docs/api/xmlsec-nss-ref.html
index 44a74cc..70ccae7 100644
--- a/docs/api/xmlsec-nss-ref.html
+++ b/docs/api/xmlsec-nss-ref.html
@@ -74,10 +74,10 @@
 <td width="15"></td>
 <td><a href="http://www.openssl.org/"><img src="../images/openssl-logo.png" alt="OpenSSL" border="0"></a></td>
 </tr>
+<!--Sponsored links - start--><!--Sponsored links - end-->
 </table>
 </td>
-<td valign="top"><table width="100%" valign="top">
-<tr><td valign="top" align="left" id="xmlsecContent">
+<td valign="top"><table width="100%" valign="top"><tr><td valign="top" align="left" id="xmlsecContent">
 <table width="100%" class="navigation" summary="Navigation header" cellpadding="2" cellspacing="2"><tr valign="middle">
 <td><a accesskey="p" href="xmlsec-gnutls-crypto.html"><img src="left.png" width="24" height="24" border="0" alt="Prev"></a></td>
 <td><a accesskey="u" href="xmlsec-reference.html"><img src="up.png" width="24" height="24" border="0" alt="Up"></a></td>
@@ -111,10 +111,6 @@
 <td align="left"><a accesskey="p" href="xmlsec-gnutls-crypto.html"><b><<<�crypto</b></a></td>
 <td align="right"><a accesskey="n" href="xmlsec-nss-app.html"><b>app�>>></b></a></td>
 </tr></table>
-</td></tr>
-<tr><td>
-<br><br><p><a href="../bugs.html">Aleksey Sanin</a></p>
-</td></tr>
-</table></td>
+</td></tr></table></td>
 </tr></table></body>
 </html>
diff --git a/docs/api/xmlsec-nss-x509.html b/docs/api/xmlsec-nss-x509.html
index b15c701..7ba5d5c 100644
--- a/docs/api/xmlsec-nss-x509.html
+++ b/docs/api/xmlsec-nss-x509.html
@@ -74,10 +74,10 @@
 <td width="15"></td>
 <td><a href="http://www.openssl.org/"><img src="../images/openssl-logo.png" alt="OpenSSL" border="0"></a></td>
 </tr>
+<!--Sponsored links - start--><!--Sponsored links - end-->
 </table>
 </td>
-<td valign="top"><table width="100%" valign="top">
-<tr><td valign="top" align="left" id="xmlsecContent">
+<td valign="top"><table width="100%" valign="top"><tr><td valign="top" align="left" id="xmlsecContent">
 <table width="100%" class="navigation" summary="Navigation header" cellpadding="2" cellspacing="2"><tr valign="middle">
 <td><a accesskey="p" href="xmlsec-nss-pkikeys.html"><img src="left.png" width="24" height="24" border="0" alt="Prev"></a></td>
 <td><a accesskey="u" href="xmlsec-nss-ref.html"><img src="up.png" width="24" height="24" border="0" alt="Up"></a></td>
@@ -515,10 +515,6 @@ or an error occurs.</p></td>
 <td align="left"><a accesskey="p" href="xmlsec-nss-pkikeys.html"><b><<<�pkikeys</b></a></td>
 <td align="right"><a accesskey="n" href="xmlsec-mscrypto-ref.html"><b>XML Security Library for MSCrypto API Reference.�>>></b></a></td>
 </tr></table>
-</td></tr>
-<tr><td>
-<br><br><p><a href="../bugs.html">Aleksey Sanin</a></p>
-</td></tr>
-</table></td>
+</td></tr></table></td>
 </tr></table></body>
 </html>
diff --git a/docs/api/xmlsec-openssl-app.html b/docs/api/xmlsec-openssl-app.html
index 56b5593..1f01bd9 100644
--- a/docs/api/xmlsec-openssl-app.html
+++ b/docs/api/xmlsec-openssl-app.html
@@ -74,10 +74,10 @@
 <td width="15"></td>
 <td><a href="http://www.openssl.org/"><img src="../images/openssl-logo.png" alt="OpenSSL" border="0"></a></td>
 </tr>
+<!--Sponsored links - start--><!--Sponsored links - end-->
 </table>
 </td>
-<td valign="top"><table width="100%" valign="top">
-<tr><td valign="top" align="left" id="xmlsecContent">
+<td valign="top"><table width="100%" valign="top"><tr><td valign="top" align="left" id="xmlsecContent">
 <table width="100%" class="navigation" summary="Navigation header" cellpadding="2" cellspacing="2"><tr valign="middle">
 <td><a accesskey="p" href="xmlsec-openssl-ref.html"><img src="left.png" width="24" height="24" border="0" alt="Prev"></a></td>
 <td><a accesskey="u" href="xmlsec-openssl-ref.html"><img src="up.png" width="24" height="24" border="0" alt="Up"></a></td>
@@ -824,10 +824,6 @@ in format=xmlSecKeyDataFormatPkcs12.</p>
 <td align="left"><a accesskey="p" href="xmlsec-openssl-ref.html"><b><<<�XML Security Library for OpenSLL API Reference.</b></a></td>
 <td align="right"><a accesskey="n" href="xmlsec-openssl-bn.html"><b>bn�>>></b></a></td>
 </tr></table>
-</td></tr>
-<tr><td>
-<br><br><p><a href="../bugs.html">Aleksey Sanin</a></p>
-</td></tr>
-</table></td>
+</td></tr></table></td>
 </tr></table></body>
 </html>
diff --git a/docs/api/xmlsec-openssl-bn.html b/docs/api/xmlsec-openssl-bn.html
index ee94d23..d6b01c8 100644
--- a/docs/api/xmlsec-openssl-bn.html
+++ b/docs/api/xmlsec-openssl-bn.html
@@ -74,10 +74,10 @@
 <td width="15"></td>
 <td><a href="http://www.openssl.org/"><img src="../images/openssl-logo.png" alt="OpenSSL" border="0"></a></td>
 </tr>
+<!--Sponsored links - start--><!--Sponsored links - end-->
 </table>
 </td>
-<td valign="top"><table width="100%" valign="top">
-<tr><td valign="top" align="left" id="xmlsecContent">
+<td valign="top"><table width="100%" valign="top"><tr><td valign="top" align="left" id="xmlsecContent">
 <table width="100%" class="navigation" summary="Navigation header" cellpadding="2" cellspacing="2"><tr valign="middle">
 <td><a accesskey="p" href="xmlsec-openssl-app.html"><img src="left.png" width="24" height="24" border="0" alt="Prev"></a></td>
 <td><a accesskey="u" href="xmlsec-openssl-ref.html"><img src="up.png" width="24" height="24" border="0" alt="Up"></a></td>
@@ -172,10 +172,6 @@ before and after the CryptoBinary string.</p>
 <td align="left"><a accesskey="p" href="xmlsec-openssl-app.html"><b><<<�app</b></a></td>
 <td align="right"><a accesskey="n" href="xmlsec-openssl-crypto.html"><b>crypto�>>></b></a></td>
 </tr></table>
-</td></tr>
-<tr><td>
-<br><br><p><a href="../bugs.html">Aleksey Sanin</a></p>
-</td></tr>
-</table></td>
+</td></tr></table></td>
 </tr></table></body>
 </html>
diff --git a/docs/api/xmlsec-openssl-crypto.html b/docs/api/xmlsec-openssl-crypto.html
index ff2091a..c6bd31f 100644
--- a/docs/api/xmlsec-openssl-crypto.html
+++ b/docs/api/xmlsec-openssl-crypto.html
@@ -74,10 +74,10 @@
 <td width="15"></td>
 <td><a href="http://www.openssl.org/"><img src="../images/openssl-logo.png" alt="OpenSSL" border="0"></a></td>
 </tr>
+<!--Sponsored links - start--><!--Sponsored links - end-->
 </table>
 </td>
-<td valign="top"><table width="100%" valign="top">
-<tr><td valign="top" align="left" id="xmlsecContent">
+<td valign="top"><table width="100%" valign="top"><tr><td valign="top" align="left" id="xmlsecContent">
 <table width="100%" class="navigation" summary="Navigation header" cellpadding="2" cellspacing="2"><tr valign="middle">
 <td><a accesskey="p" href="xmlsec-openssl-bn.html"><img src="left.png" width="24" height="24" border="0" alt="Prev"></a></td>
 <td><a accesskey="u" href="xmlsec-openssl-ref.html"><img src="up.png" width="24" height="24" border="0" alt="Up"></a></td>
@@ -1134,10 +1134,6 @@ const <font>xmlChar</font>* <a href="xmlsec-openssl-crypto.html#XMLSECOPENSSLGET
 <td align="left"><a accesskey="p" href="xmlsec-openssl-bn.html"><b><<<�bn</b></a></td>
 <td align="right"><a accesskey="n" href="xmlsec-openssl-evp.html"><b>evp�>>></b></a></td>
 </tr></table>
-</td></tr>
-<tr><td>
-<br><br><p><a href="../bugs.html">Aleksey Sanin</a></p>
-</td></tr>
-</table></td>
+</td></tr></table></td>
 </tr></table></body>
 </html>
diff --git a/docs/api/xmlsec-openssl-evp.html b/docs/api/xmlsec-openssl-evp.html
index e592f78..7165cba 100644
--- a/docs/api/xmlsec-openssl-evp.html
+++ b/docs/api/xmlsec-openssl-evp.html
@@ -74,10 +74,10 @@
 <td width="15"></td>
 <td><a href="http://www.openssl.org/"><img src="../images/openssl-logo.png" alt="OpenSSL" border="0"></a></td>
 </tr>
+<!--Sponsored links - start--><!--Sponsored links - end-->
 </table>
 </td>
-<td valign="top"><table width="100%" valign="top">
-<tr><td valign="top" align="left" id="xmlsecContent">
+<td valign="top"><table width="100%" valign="top"><tr><td valign="top" align="left" id="xmlsecContent">
 <table width="100%" class="navigation" summary="Navigation header" cellpadding="2" cellspacing="2"><tr valign="middle">
 <td><a accesskey="p" href="xmlsec-openssl-crypto.html"><img src="left.png" width="24" height="24" border="0" alt="Prev"></a></td>
 <td><a accesskey="u" href="xmlsec-openssl-ref.html"><img src="up.png" width="24" height="24" border="0" alt="Up"></a></td>
@@ -190,10 +190,6 @@
 <td align="left"><a accesskey="p" href="xmlsec-openssl-crypto.html"><b><<<�crypto</b></a></td>
 <td align="right"><a accesskey="n" href="xmlsec-openssl-x509.html"><b>x509�>>></b></a></td>
 </tr></table>
-</td></tr>
-<tr><td>
-<br><br><p><a href="../bugs.html">Aleksey Sanin</a></p>
-</td></tr>
-</table></td>
+</td></tr></table></td>
 </tr></table></body>
 </html>
diff --git a/docs/api/xmlsec-openssl-ref.html b/docs/api/xmlsec-openssl-ref.html
index 0fa0145..86fecd6 100644
--- a/docs/api/xmlsec-openssl-ref.html
+++ b/docs/api/xmlsec-openssl-ref.html
@@ -74,10 +74,10 @@
 <td width="15"></td>
 <td><a href="http://www.openssl.org/"><img src="../images/openssl-logo.png" alt="OpenSSL" border="0"></a></td>
 </tr>
+<!--Sponsored links - start--><!--Sponsored links - end-->
 </table>
 </td>
-<td valign="top"><table width="100%" valign="top">
-<tr><td valign="top" align="left" id="xmlsecContent">
+<td valign="top"><table width="100%" valign="top"><tr><td valign="top" align="left" id="xmlsecContent">
 <table width="100%" class="navigation" summary="Navigation header" cellpadding="2" cellspacing="2"><tr valign="middle">
 <td><a accesskey="p" href="xmlsec-x509.html"><img src="left.png" width="24" height="24" border="0" alt="Prev"></a></td>
 <td><a accesskey="u" href="xmlsec-reference.html"><img src="up.png" width="24" height="24" border="0" alt="Up"></a></td>
@@ -109,10 +109,6 @@
 <td align="left"><a accesskey="p" href="xmlsec-x509.html"><b><<<�x509</b></a></td>
 <td align="right"><a accesskey="n" href="xmlsec-openssl-app.html"><b>app�>>></b></a></td>
 </tr></table>
-</td></tr>
-<tr><td>
-<br><br><p><a href="../bugs.html">Aleksey Sanin</a></p>
-</td></tr>
-</table></td>
+</td></tr></table></td>
 </tr></table></body>
 </html>
diff --git a/docs/api/xmlsec-openssl-x509.html b/docs/api/xmlsec-openssl-x509.html
index 35e73fd..677313d 100644
--- a/docs/api/xmlsec-openssl-x509.html
+++ b/docs/api/xmlsec-openssl-x509.html
@@ -74,10 +74,10 @@
 <td width="15"></td>
 <td><a href="http://www.openssl.org/"><img src="../images/openssl-logo.png" alt="OpenSSL" border="0"></a></td>
 </tr>
+<!--Sponsored links - start--><!--Sponsored links - end-->
 </table>
 </td>
-<td valign="top"><table width="100%" valign="top">
-<tr><td valign="top" align="left" id="xmlsecContent">
+<td valign="top"><table width="100%" valign="top"><tr><td valign="top" align="left" id="xmlsecContent">
 <table width="100%" class="navigation" summary="Navigation header" cellpadding="2" cellspacing="2"><tr valign="middle">
 <td><a accesskey="p" href="xmlsec-openssl-evp.html"><img src="left.png" width="24" height="24" border="0" alt="Prev"></a></td>
 <td><a accesskey="u" href="xmlsec-openssl-ref.html"><img src="up.png" width="24" height="24" border="0" alt="Up"></a></td>
@@ -574,10 +574,6 @@ in <var class="PARAMETER">store</var>.</p>
 <td align="left"><a accesskey="p" href="xmlsec-openssl-evp.html"><b><<<�evp</b></a></td>
 <td align="right"><a accesskey="n" href="xmlsec-gnutls-ref.html"><b>XML Security Library for GnuTLS API Reference.�>>></b></a></td>
 </tr></table>
-</td></tr>
-<tr><td>
-<br><br><p><a href="../bugs.html">Aleksey Sanin</a></p>
-</td></tr>
-</table></td>
+</td></tr></table></td>
 </tr></table></body>
 </html>
diff --git a/docs/api/xmlsec-parser.html b/docs/api/xmlsec-parser.html
index 10ec225..ac9f461 100644
--- a/docs/api/xmlsec-parser.html
+++ b/docs/api/xmlsec-parser.html
@@ -74,10 +74,10 @@
 <td width="15"></td>
 <td><a href="http://www.openssl.org/"><img src="../images/openssl-logo.png" alt="OpenSSL" border="0"></a></td>
 </tr>
+<!--Sponsored links - start--><!--Sponsored links - end-->
 </table>
 </td>
-<td valign="top"><table width="100%" valign="top">
-<tr><td valign="top" align="left" id="xmlsecContent">
+<td valign="top"><table width="100%" valign="top"><tr><td valign="top" align="left" id="xmlsecContent">
 <table width="100%" class="navigation" summary="Navigation header" cellpadding="2" cellspacing="2"><tr valign="middle">
 <td><a accesskey="p" href="xmlsec-nodeset.html"><img src="left.png" width="24" height="24" border="0" alt="Prev"></a></td>
 <td><a accesskey="u" href="xmlsec-ref.html"><img src="up.png" width="24" height="24" border="0" alt="Up"></a></td>
@@ -233,10 +233,6 @@ c14n issue. The code is copied from <font><code class="FUNCTION">xmlSAXParseMemo
 <td align="left"><a accesskey="p" href="xmlsec-nodeset.html"><b><<<�nodeset</b></a></td>
 <td align="right"><a accesskey="n" href="xmlsec-templates.html"><b>templates�>>></b></a></td>
 </tr></table>
-</td></tr>
-<tr><td>
-<br><br><p><a href="../bugs.html">Aleksey Sanin</a></p>
-</td></tr>
-</table></td>
+</td></tr></table></td>
 </tr></table></body>
 </html>
diff --git a/docs/api/xmlsec-ref.html b/docs/api/xmlsec-ref.html
index b96f270..e9d8f61 100644
--- a/docs/api/xmlsec-ref.html
+++ b/docs/api/xmlsec-ref.html
@@ -74,10 +74,10 @@
 <td width="15"></td>
 <td><a href="http://www.openssl.org/"><img src="../images/openssl-logo.png" alt="OpenSSL" border="0"></a></td>
 </tr>
+<!--Sponsored links - start--><!--Sponsored links - end-->
 </table>
 </td>
-<td valign="top"><table width="100%" valign="top">
-<tr><td valign="top" align="left" id="xmlsecContent">
+<td valign="top"><table width="100%" valign="top"><tr><td valign="top" align="left" id="xmlsecContent">
 <table width="100%" class="navigation" summary="Navigation header" cellpadding="2" cellspacing="2"><tr valign="middle">
 <td><a accesskey="p" href="xmlsec-reference.html"><img src="left.png" width="24" height="24" border="0" alt="Prev"></a></td>
 <td><a accesskey="u" href="xmlsec-reference.html"><img src="up.png" width="24" height="24" border="0" alt="Up"></a></td>
@@ -145,10 +145,6 @@
 <td align="left"><a accesskey="p" href="xmlsec-reference.html"><b><<<�XML Security Library API Reference.</b></a></td>
 <td align="right"><a accesskey="n" href="xmlsec-app.html"><b>app�>>></b></a></td>
 </tr></table>
-</td></tr>
-<tr><td>
-<br><br><p><a href="../bugs.html">Aleksey Sanin</a></p>
-</td></tr>
-</table></td>
+</td></tr></table></td>
 </tr></table></body>
 </html>
diff --git a/docs/api/xmlsec-reference.html b/docs/api/xmlsec-reference.html
index eb52b4e..52c3a70 100644
--- a/docs/api/xmlsec-reference.html
+++ b/docs/api/xmlsec-reference.html
@@ -73,10 +73,10 @@
 <td width="15"></td>
 <td><a href="http://www.openssl.org/"><img src="../images/openssl-logo.png" alt="OpenSSL" border="0"></a></td>
 </tr>
+<!--Sponsored links - start--><!--Sponsored links - end-->
 </table>
 </td>
-<td valign="top"><table width="100%" valign="top">
-<tr><td valign="top" align="left" id="xmlsecContent">
+<td valign="top"><table width="100%" valign="top"><tr><td valign="top" align="left" id="xmlsecContent">
 <table width="100%" class="navigation" summary="Navigation header" cellpadding="2" cellspacing="2"><tr valign="middle">
 <td><a accesskey="p" href="xmlsec-encryption-klasses.html"><img src="left.png" width="24" height="24" border="0" alt="Prev"></a></td>
 <td><a accesskey="h" href="index.html"><img src="home.png" width="24" height="24" border="0" alt="Home"></a></td>
@@ -101,10 +101,6 @@
 <td align="left"><a accesskey="p" href="xmlsec-encryption-klasses.html"><b><<<�APPENDIX B. XML Security Library Encryption Klasses.</b></a></td>
 <td align="right"><a accesskey="n" href="xmlsec-ref.html"><b>XML Security Core Library API Reference.�>>></b></a></td>
 </tr></table>
-</td></tr>
-<tr><td>
-<br><br><p><a href="../bugs.html">Aleksey Sanin</a></p>
-</td></tr>
-</table></td>
+</td></tr></table></td>
 </tr></table></body>
 </html>
diff --git a/docs/api/xmlsec-signature-klasses.html b/docs/api/xmlsec-signature-klasses.html
index a7ef981..35a61ac 100644
--- a/docs/api/xmlsec-signature-klasses.html
+++ b/docs/api/xmlsec-signature-klasses.html
@@ -74,10 +74,10 @@
 <td width="15"></td>
 <td><a href="http://www.openssl.org/"><img src="../images/openssl-logo.png" alt="OpenSSL" border="0"></a></td>
 </tr>
+<!--Sponsored links - start--><!--Sponsored links - end-->
 </table>
 </td>
-<td valign="top"><table width="100%" valign="top">
-<tr><td valign="top" align="left" id="xmlsecContent">
+<td valign="top"><table width="100%" valign="top"><tr><td valign="top" align="left" id="xmlsecContent">
 <table width="100%" class="navigation" summary="Navigation header" cellpadding="2" cellspacing="2"><tr valign="middle">
 <td><a accesskey="p" href="xmlsec-custom-keys-manager.html"><img src="left.png" width="24" height="24" border="0" alt="Prev"></a></td>
 <td><a accesskey="u" href="xmlsec-notes.html"><img src="up.png" width="24" height="24" border="0" alt="Up"></a></td>
@@ -97,10 +97,6 @@
 <td align="left"><a accesskey="p" href="xmlsec-custom-keys-manager.html"><b><<<�Writing a custom keys manager.</b></a></td>
 <td align="right"><a accesskey="n" href="xmlsec-encryption-klasses.html"><b>APPENDIX B. XML Security Library Encryption Klasses.�>>></b></a></td>
 </tr></table>
-</td></tr>
-<tr><td>
-<br><br><p><a href="../bugs.html">Aleksey Sanin</a></p>
-</td></tr>
-</table></td>
+</td></tr></table></td>
 </tr></table></body>
 </html>
diff --git a/docs/api/xmlsec-templates.html b/docs/api/xmlsec-templates.html
index 439d6e4..640a63e 100644
--- a/docs/api/xmlsec-templates.html
+++ b/docs/api/xmlsec-templates.html
@@ -74,10 +74,10 @@
 <td width="15"></td>
 <td><a href="http://www.openssl.org/"><img src="../images/openssl-logo.png" alt="OpenSSL" border="0"></a></td>
 </tr>
+<!--Sponsored links - start--><!--Sponsored links - end-->
 </table>
 </td>
-<td valign="top"><table width="100%" valign="top">
-<tr><td valign="top" align="left" id="xmlsecContent">
+<td valign="top"><table width="100%" valign="top"><tr><td valign="top" align="left" id="xmlsecContent">
 <table width="100%" class="navigation" summary="Navigation header" cellpadding="2" cellspacing="2"><tr valign="middle">
 <td><a accesskey="p" href="xmlsec-parser.html"><img src="left.png" width="24" height="24" border="0" alt="Prev"></a></td>
 <td><a accesskey="u" href="xmlsec-ref.html"><img src="up.png" width="24" height="24" border="0" alt="Up"></a></td>
@@ -908,7 +908,7 @@ if required) to the <a href="http://www.w3.org/TR/xmldsig-core/#sec-RetrievalMet
 </tr>
 <tr>
 <td align="LEFT" valign="TOP"><a name="AEN13051"><span style="white-space: nowrap"><span class="emphasis"><i class="EMPHASIS">Returns</i></span> :</span></a></td>
-<td align="LEFT" valign="TOP"><p>the pointer to the newly created <a href="http://www.w3.org/TR/xmldsig-core/#sec-dsig:Transforms" target="_top"><dsig:dsig:Transforms/></a> node or
+<td align="LEFT" valign="TOP"><p>the pointer to the newly created <a href="http://www.w3.org/TR/xmldsig-core/#sec-Transforms" target="_top"><dsig:Transforms/></a> node or
 NULL if an error occurs.</p></td>
 </tr>
 </tbody></table>
@@ -1166,10 +1166,6 @@ node <var class="PARAMETER">node</var>.</p>
 <td align="left"><a accesskey="p" href="xmlsec-parser.html"><b><<<�parser</b></a></td>
 <td align="right"><a accesskey="n" href="xmlsec-transforms.html"><b>transforms�>>></b></a></td>
 </tr></table>
-</td></tr>
-<tr><td>
-<br><br><p><a href="../bugs.html">Aleksey Sanin</a></p>
-</td></tr>
-</table></td>
+</td></tr></table></td>
 </tr></table></body>
 </html>
diff --git a/docs/api/xmlsec-transforms.html b/docs/api/xmlsec-transforms.html
index 299f6c1..c5d327b 100644
--- a/docs/api/xmlsec-transforms.html
+++ b/docs/api/xmlsec-transforms.html
@@ -74,10 +74,10 @@
 <td width="15"></td>
 <td><a href="http://www.openssl.org/"><img src="../images/openssl-logo.png" alt="OpenSSL" border="0"></a></td>
 </tr>
+<!--Sponsored links - start--><!--Sponsored links - end-->
 </table>
 </td>
-<td valign="top"><table width="100%" valign="top">
-<tr><td valign="top" align="left" id="xmlsecContent">
+<td valign="top"><table width="100%" valign="top"><tr><td valign="top" align="left" id="xmlsecContent">
 <table width="100%" class="navigation" summary="Navigation header" cellpadding="2" cellspacing="2"><tr valign="middle">
 <td><a accesskey="p" href="xmlsec-templates.html"><img src="left.png" width="24" height="24" border="0" alt="Prev"></a></td>
 <td><a accesskey="u" href="xmlsec-ref.html"><img src="up.png" width="24" height="24" border="0" alt="Up"></a></td>
@@ -3341,10 +3341,6 @@ expressions thru XPath/XPointer engine, we need to have this hack here.</p>
 <td align="left"><a accesskey="p" href="xmlsec-templates.html"><b><<<�templates</b></a></td>
 <td align="right"><a accesskey="n" href="xmlsec-version.html"><b>version�>>></b></a></td>
 </tr></table>
-</td></tr>
-<tr><td>
-<br><br><p><a href="../bugs.html">Aleksey Sanin</a></p>
-</td></tr>
-</table></td>
+</td></tr></table></td>
 </tr></table></body>
 </html>
diff --git a/docs/api/xmlsec-verify-with-key.html b/docs/api/xmlsec-verify-with-key.html
index 8d859ca..c7ad76e 100644
--- a/docs/api/xmlsec-verify-with-key.html
+++ b/docs/api/xmlsec-verify-with-key.html
@@ -74,10 +74,10 @@
 <td width="15"></td>
 <td><a href="http://www.openssl.org/"><img src="../images/openssl-logo.png" alt="OpenSSL" border="0"></a></td>
 </tr>
+<!--Sponsored links - start--><!--Sponsored links - end-->
 </table>
 </td>
-<td valign="top"><table width="100%" valign="top">
-<tr><td valign="top" align="left" id="xmlsecContent">
+<td valign="top"><table width="100%" valign="top"><tr><td valign="top" align="left" id="xmlsecContent">
 <table width="100%" class="navigation" summary="Navigation header" cellpadding="2" cellspacing="2"><tr valign="middle">
 <td><a accesskey="p" href="xmlsec-examples-sign-x509.html"><img src="left.png" width="24" height="24" border="0" alt="Prev"></a></td>
 <td><a accesskey="u" href="xmlsec-examples.html"><img src="up.png" width="24" height="24" border="0" alt="Up"></a></td>
@@ -296,10 +296,6 @@ done:
 <td align="left"><a accesskey="p" href="xmlsec-examples-sign-x509.html"><b><<<�Signing with X509 certificate.</b></a></td>
 <td align="right"><a accesskey="n" href="xmlsec-verify-with-keys-mngr.html"><b>Verifying a signature with keys manager.�>>></b></a></td>
 </tr></table>
-</td></tr>
-<tr><td>
-<br><br><p><a href="../bugs.html">Aleksey Sanin</a></p>
-</td></tr>
-</table></td>
+</td></tr></table></td>
 </tr></table></body>
 </html>
diff --git a/docs/api/xmlsec-verify-with-keys-mngr.html b/docs/api/xmlsec-verify-with-keys-mngr.html
index 603319b..39b46a0 100644
--- a/docs/api/xmlsec-verify-with-keys-mngr.html
+++ b/docs/api/xmlsec-verify-with-keys-mngr.html
@@ -74,10 +74,10 @@
 <td width="15"></td>
 <td><a href="http://www.openssl.org/"><img src="../images/openssl-logo.png" alt="OpenSSL" border="0"></a></td>
 </tr>
+<!--Sponsored links - start--><!--Sponsored links - end-->
 </table>
 </td>
-<td valign="top"><table width="100%" valign="top">
-<tr><td valign="top" align="left" id="xmlsecContent">
+<td valign="top"><table width="100%" valign="top"><tr><td valign="top" align="left" id="xmlsecContent">
 <table width="100%" class="navigation" summary="Navigation header" cellpadding="2" cellspacing="2"><tr valign="middle">
 <td><a accesskey="p" href="xmlsec-verify-with-key.html"><img src="left.png" width="24" height="24" border="0" alt="Prev"></a></td>
 <td><a accesskey="u" href="xmlsec-examples.html"><img src="up.png" width="24" height="24" border="0" alt="Up"></a></td>
@@ -366,10 +366,6 @@ done:
 <td align="left"><a accesskey="p" href="xmlsec-verify-with-key.html"><b><<<�Verifying a signature with a single key.</b></a></td>
 <td align="right"><a accesskey="n" href="xmlsec-verify-with-x509.html"><b>Verifying a signature with X509 certificates.�>>></b></a></td>
 </tr></table>
-</td></tr>
-<tr><td>
-<br><br><p><a href="../bugs.html">Aleksey Sanin</a></p>
-</td></tr>
-</table></td>
+</td></tr></table></td>
 </tr></table></body>
 </html>
diff --git a/docs/api/xmlsec-verify-with-restrictions.html b/docs/api/xmlsec-verify-with-restrictions.html
index 5417de1..863ad53 100644
--- a/docs/api/xmlsec-verify-with-restrictions.html
+++ b/docs/api/xmlsec-verify-with-restrictions.html
@@ -74,10 +74,10 @@
 <td width="15"></td>
 <td><a href="http://www.openssl.org/"><img src="../images/openssl-logo.png" alt="OpenSSL" border="0"></a></td>
 </tr>
+<!--Sponsored links - start--><!--Sponsored links - end-->
 </table>
 </td>
-<td valign="top"><table width="100%" valign="top">
-<tr><td valign="top" align="left" id="xmlsecContent">
+<td valign="top"><table width="100%" valign="top"><tr><td valign="top" align="left" id="xmlsecContent">
 <table width="100%" class="navigation" summary="Navigation header" cellpadding="2" cellspacing="2"><tr valign="middle">
 <td><a accesskey="p" href="xmlsec-verify-with-x509.html"><img src="left.png" width="24" height="24" border="0" alt="Prev"></a></td>
 <td><a accesskey="u" href="xmlsec-examples.html"><img src="up.png" width="24" height="24" border="0" alt="Up"></a></td>
@@ -694,10 +694,6 @@ NJ2D</X509Certificate>
 <td align="left"><a accesskey="p" href="xmlsec-verify-with-x509.html"><b><<<�Verifying a signature with X509 certificates.</b></a></td>
 <td align="right"><a accesskey="n" href="xmlsec-encrypt-template-file.html"><b>Encrypting data with a template file.�>>></b></a></td>
 </tr></table>
-</td></tr>
-<tr><td>
-<br><br><p><a href="../bugs.html">Aleksey Sanin</a></p>
-</td></tr>
-</table></td>
+</td></tr></table></td>
 </tr></table></body>
 </html>
diff --git a/docs/api/xmlsec-verify-with-x509.html b/docs/api/xmlsec-verify-with-x509.html
index e0c7737..335c121 100644
--- a/docs/api/xmlsec-verify-with-x509.html
+++ b/docs/api/xmlsec-verify-with-x509.html
@@ -74,10 +74,10 @@
 <td width="15"></td>
 <td><a href="http://www.openssl.org/"><img src="../images/openssl-logo.png" alt="OpenSSL" border="0"></a></td>
 </tr>
+<!--Sponsored links - start--><!--Sponsored links - end-->
 </table>
 </td>
-<td valign="top"><table width="100%" valign="top">
-<tr><td valign="top" align="left" id="xmlsecContent">
+<td valign="top"><table width="100%" valign="top"><tr><td valign="top" align="left" id="xmlsecContent">
 <table width="100%" class="navigation" summary="Navigation header" cellpadding="2" cellspacing="2"><tr valign="middle">
 <td><a accesskey="p" href="xmlsec-verify-with-keys-mngr.html"><img src="left.png" width="24" height="24" border="0" alt="Prev"></a></td>
 <td><a accesskey="u" href="xmlsec-examples.html"><img src="up.png" width="24" height="24" border="0" alt="Up"></a></td>
@@ -348,10 +348,6 @@ done:
 <td align="left"><a accesskey="p" href="xmlsec-verify-with-keys-mngr.html"><b><<<�Verifying a signature with keys manager.</b></a></td>
 <td align="right"><a accesskey="n" href="xmlsec-verify-with-restrictions.html"><b>Verifying a signature with additional restrictions.�>>></b></a></td>
 </tr></table>
-</td></tr>
-<tr><td>
-<br><br><p><a href="../bugs.html">Aleksey Sanin</a></p>
-</td></tr>
-</table></td>
+</td></tr></table></td>
 </tr></table></body>
 </html>
diff --git a/docs/api/xmlsec-version.html b/docs/api/xmlsec-version.html
index f6a9cfe..ae3271e 100644
--- a/docs/api/xmlsec-version.html
+++ b/docs/api/xmlsec-version.html
@@ -74,10 +74,10 @@
 <td width="15"></td>
 <td><a href="http://www.openssl.org/"><img src="../images/openssl-logo.png" alt="OpenSSL" border="0"></a></td>
 </tr>
+<!--Sponsored links - start--><!--Sponsored links - end-->
 </table>
 </td>
-<td valign="top"><table width="100%" valign="top">
-<tr><td valign="top" align="left" id="xmlsecContent">
+<td valign="top"><table width="100%" valign="top"><tr><td valign="top" align="left" id="xmlsecContent">
 <table width="100%" class="navigation" summary="Navigation header" cellpadding="2" cellspacing="2"><tr valign="middle">
 <td><a accesskey="p" href="xmlsec-transforms.html"><img src="left.png" width="24" height="24" border="0" alt="Prev"></a></td>
 <td><a accesskey="u" href="xmlsec-ref.html"><img src="up.png" width="24" height="24" border="0" alt="Up"></a></td>
@@ -108,7 +108,7 @@
 <div class="REFSECT2">
 <a name="AEN16998"></a><h3>
 <a name="XMLSEC-VERSION-CAPS"></a>XMLSEC_VERSION</h3>
-<pre class="PROGRAMLISTING">#define XMLSEC_VERSION			"1.2.6"</pre>
+<pre class="PROGRAMLISTING">#define XMLSEC_VERSION			"1.2.9"</pre>
 <p>The library version string in the format
 "<major-number>.<minor-number>.<sub-minor-number>".</p>
 <p></p>
@@ -133,7 +133,7 @@
 <div class="REFSECT2">
 <a name="AEN17022"></a><h3>
 <a name="XMLSEC-VERSION-SUBMINOR-CAPS"></a>XMLSEC_VERSION_SUBMINOR</h3>
-<pre class="PROGRAMLISTING">#define XMLSEC_VERSION_SUBMINOR		6</pre>
+<pre class="PROGRAMLISTING">#define XMLSEC_VERSION_SUBMINOR		9</pre>
 <p>The library sub-minor version number.</p>
 <p></p>
 </div>
@@ -141,7 +141,7 @@
 <div class="REFSECT2">
 <a name="AEN17030"></a><h3>
 <a name="XMLSEC-VERSION-INFO-CAPS"></a>XMLSEC_VERSION_INFO</h3>
-<pre class="PROGRAMLISTING">#define XMLSEC_VERSION_INFO		"3:6:2"</pre>
+<pre class="PROGRAMLISTING">#define XMLSEC_VERSION_INFO		"3:9:2"</pre>
 <p>The library version info string in the format
 "<major-number>+<minor-number>:<sub-minor-number>:<minor-number>".</p>
 <p></p>
@@ -151,10 +151,6 @@
 <td align="left"><a accesskey="p" href="xmlsec-transforms.html"><b><<<�transforms</b></a></td>
 <td align="right"><a accesskey="n" href="xmlsec-xmldsig.html"><b>xmldsig�>>></b></a></td>
 </tr></table>
-</td></tr>
-<tr><td>
-<br><br><p><a href="../bugs.html">Aleksey Sanin</a></p>
-</td></tr>
-</table></td>
+</td></tr></table></td>
 </tr></table></body>
 </html>
diff --git a/docs/api/xmlsec-x509.html b/docs/api/xmlsec-x509.html
index e3d953b..46e75ad 100644
--- a/docs/api/xmlsec-x509.html
+++ b/docs/api/xmlsec-x509.html
@@ -74,10 +74,10 @@
 <td width="15"></td>
 <td><a href="http://www.openssl.org/"><img src="../images/openssl-logo.png" alt="OpenSSL" border="0"></a></td>
 </tr>
+<!--Sponsored links - start--><!--Sponsored links - end-->
 </table>
 </td>
-<td valign="top"><table width="100%" valign="top">
-<tr><td valign="top" align="left" id="xmlsecContent">
+<td valign="top"><table width="100%" valign="top"><tr><td valign="top" align="left" id="xmlsecContent">
 <table width="100%" class="navigation" summary="Navigation header" cellpadding="2" cellspacing="2"><tr valign="middle">
 <td><a accesskey="p" href="xmlsec-xmltree.html"><img src="left.png" width="24" height="24" border="0" alt="Prev"></a></td>
 <td><a accesskey="u" href="xmlsec-ref.html"><img src="up.png" width="24" height="24" border="0" alt="Up"></a></td>
@@ -193,10 +193,6 @@ or a negative value if an error occurs.</p></td>
 <td align="left"><a accesskey="p" href="xmlsec-xmltree.html"><b><<<�xmltree</b></a></td>
 <td align="right"><a accesskey="n" href="xmlsec-openssl-ref.html"><b>XML Security Library for OpenSLL API Reference.�>>></b></a></td>
 </tr></table>
-</td></tr>
-<tr><td>
-<br><br><p><a href="../bugs.html">Aleksey Sanin</a></p>
-</td></tr>
-</table></td>
+</td></tr></table></td>
 </tr></table></body>
 </html>
diff --git a/docs/api/xmlsec-xmldsig.html b/docs/api/xmlsec-xmldsig.html
index 327a961..6d5d716 100644
--- a/docs/api/xmlsec-xmldsig.html
+++ b/docs/api/xmlsec-xmldsig.html
@@ -74,10 +74,10 @@
 <td width="15"></td>
 <td><a href="http://www.openssl.org/"><img src="../images/openssl-logo.png" alt="OpenSSL" border="0"></a></td>
 </tr>
+<!--Sponsored links - start--><!--Sponsored links - end-->
 </table>
 </td>
-<td valign="top"><table width="100%" valign="top">
-<tr><td valign="top" align="left" id="xmlsecContent">
+<td valign="top"><table width="100%" valign="top"><tr><td valign="top" align="left" id="xmlsecContent">
 <table width="100%" class="navigation" summary="Navigation header" cellpadding="2" cellspacing="2"><tr valign="middle">
 <td><a accesskey="p" href="xmlsec-version.html"><img src="left.png" width="24" height="24" border="0" alt="Prev"></a></td>
 <td><a accesskey="u" href="xmlsec-ref.html"><img src="up.png" width="24" height="24" border="0" alt="Up"></a></td>
@@ -925,10 +925,6 @@ is set).</p>
 <td align="left"><a accesskey="p" href="xmlsec-version.html"><b><<<�version</b></a></td>
 <td align="right"><a accesskey="n" href="xmlsec-xmlenc.html"><b>xmlenc�>>></b></a></td>
 </tr></table>
-</td></tr>
-<tr><td>
-<br><br><p><a href="../bugs.html">Aleksey Sanin</a></p>
-</td></tr>
-</table></td>
+</td></tr></table></td>
 </tr></table></body>
 </html>
diff --git a/docs/api/xmlsec-xmlenc.html b/docs/api/xmlsec-xmlenc.html
index a66aa2f..2069a17 100644
--- a/docs/api/xmlsec-xmlenc.html
+++ b/docs/api/xmlsec-xmlenc.html
@@ -74,10 +74,10 @@
 <td width="15"></td>
 <td><a href="http://www.openssl.org/"><img src="../images/openssl-logo.png" alt="OpenSSL" border="0"></a></td>
 </tr>
+<!--Sponsored links - start--><!--Sponsored links - end-->
 </table>
 </td>
-<td valign="top"><table width="100%" valign="top">
-<tr><td valign="top" align="left" id="xmlsecContent">
+<td valign="top"><table width="100%" valign="top"><tr><td valign="top" align="left" id="xmlsecContent">
 <table width="100%" class="navigation" summary="Navigation header" cellpadding="2" cellspacing="2"><tr valign="middle">
 <td><a accesskey="p" href="xmlsec-xmldsig.html"><img src="left.png" width="24" height="24" border="0" alt="Prev"></a></td>
 <td><a accesskey="u" href="xmlsec-ref.html"><img src="up.png" width="24" height="24" border="0" alt="Up"></a></td>
@@ -607,10 +607,6 @@ with result <a href="http://www.w3.org/TR/xmlenc-core/#sec-EncryptedData" target
 <td align="left"><a accesskey="p" href="xmlsec-xmldsig.html"><b><<<�xmldsig</b></a></td>
 <td align="right"><a accesskey="n" href="xmlsec-xmlsec.html"><b>xmlsec�>>></b></a></td>
 </tr></table>
-</td></tr>
-<tr><td>
-<br><br><p><a href="../bugs.html">Aleksey Sanin</a></p>
-</td></tr>
-</table></td>
+</td></tr></table></td>
 </tr></table></body>
 </html>
diff --git a/docs/api/xmlsec-xmlsec.html b/docs/api/xmlsec-xmlsec.html
index b27d881..85a5317 100644
--- a/docs/api/xmlsec-xmlsec.html
+++ b/docs/api/xmlsec-xmlsec.html
@@ -74,10 +74,10 @@
 <td width="15"></td>
 <td><a href="http://www.openssl.org/"><img src="../images/openssl-logo.png" alt="OpenSSL" border="0"></a></td>
 </tr>
+<!--Sponsored links - start--><!--Sponsored links - end-->
 </table>
 </td>
-<td valign="top"><table width="100%" valign="top">
-<tr><td valign="top" align="left" id="xmlsecContent">
+<td valign="top"><table width="100%" valign="top"><tr><td valign="top" align="left" id="xmlsecContent">
 <table width="100%" class="navigation" summary="Navigation header" cellpadding="2" cellspacing="2"><tr valign="middle">
 <td><a accesskey="p" href="xmlsec-xmlenc.html"><img src="left.png" width="24" height="24" border="0" alt="Prev"></a></td>
 <td><a accesskey="u" href="xmlsec-ref.html"><img src="up.png" width="24" height="24" border="0" alt="Up"></a></td>
@@ -255,10 +255,6 @@ value if an error occurs.</p>
 <td align="left"><a accesskey="p" href="xmlsec-xmlenc.html"><b><<<�xmlenc</b></a></td>
 <td align="right"><a accesskey="n" href="xmlsec-xmltree.html"><b>xmltree�>>></b></a></td>
 </tr></table>
-</td></tr>
-<tr><td>
-<br><br><p><a href="../bugs.html">Aleksey Sanin</a></p>
-</td></tr>
-</table></td>
+</td></tr></table></td>
 </tr></table></body>
 </html>
diff --git a/docs/api/xmlsec-xmltree.html b/docs/api/xmlsec-xmltree.html
index 53c7bcb..b58be05 100644
--- a/docs/api/xmlsec-xmltree.html
+++ b/docs/api/xmlsec-xmltree.html
@@ -74,10 +74,10 @@
 <td width="15"></td>
 <td><a href="http://www.openssl.org/"><img src="../images/openssl-logo.png" alt="OpenSSL" border="0"></a></td>
 </tr>
+<!--Sponsored links - start--><!--Sponsored links - end-->
 </table>
 </td>
-<td valign="top"><table width="100%" valign="top">
-<tr><td valign="top" align="left" id="xmlsecContent">
+<td valign="top"><table width="100%" valign="top"><tr><td valign="top" align="left" id="xmlsecContent">
 <table width="100%" class="navigation" summary="Navigation header" cellpadding="2" cellspacing="2"><tr valign="middle">
 <td><a accesskey="p" href="xmlsec-xmlsec.html"><img src="left.png" width="24" height="24" border="0" alt="Prev"></a></td>
 <td><a accesskey="u" href="xmlsec-ref.html"><img src="up.png" width="24" height="24" border="0" alt="Up"></a></td>
@@ -1443,10 +1443,6 @@ is responsible for freeing returned string with <var class="PARAMETER">xmlFree</
 <td align="left"><a accesskey="p" href="xmlsec-xmlsec.html"><b><<<�xmlsec</b></a></td>
 <td align="right"><a accesskey="n" href="xmlsec-x509.html"><b>x509�>>></b></a></td>
 </tr></table>
-</td></tr>
-<tr><td>
-<br><br><p><a href="../bugs.html">Aleksey Sanin</a></p>
-</td></tr>
-</table></td>
+</td></tr></table></td>
 </tr></table></body>
 </html>
diff --git a/docs/authors.html b/docs/authors.html
index 599f682..8542824 100644
--- a/docs/authors.html
+++ b/docs/authors.html
@@ -39,10 +39,10 @@
 <td width="15"></td>
 <td><a href="http://www.openssl.org/"><img src="images/openssl-logo.png" alt="OpenSSL" border="0"></a></td>
 </tr>
+<!--Sponsored links - start--><!--Sponsored links - end-->
 </table>
 </td>
-<td valign="top"><table width="100%" valign="top">
-<tr><td valign="top" align="left" id="xmlsecContent">
+<td valign="top"><table width="100%" valign="top"><tr><td valign="top" align="left" id="xmlsecContent">
 <div align="center">
 <h1>Authors and contributors</h1>
 </div>
@@ -53,10 +53,6 @@
     <li>Tej Arora <tej-at-netscape-dot-com> (<a href="http://www.aol.com">AOL</a>)</li>
     <li>Wouter Ketting <wsh-at-xs4all-dot-nl> (<a href="http://www.cordys.com">Cordys</a>)</li>
 </ul>
-</td></tr>
-<tr><td>
-<br><br><p><a href="bugs.html">Aleksey Sanin</a></p>
-</td></tr>
-</table></td>
+</td></tr></table></td>
 </tr></table></body>
 </html>
diff --git a/docs/bugs.html b/docs/bugs.html
index 9f89acb..8369610 100644
--- a/docs/bugs.html
+++ b/docs/bugs.html
@@ -39,10 +39,10 @@
 <td width="15"></td>
 <td><a href="http://www.openssl.org/"><img src="images/openssl-logo.png" alt="OpenSSL" border="0"></a></td>
 </tr>
+<!--Sponsored links - start--><!--Sponsored links - end-->
 </table>
 </td>
-<td valign="top"><table width="100%" valign="top">
-<tr><td valign="top" align="left" id="xmlsecContent">
+<td valign="top"><table width="100%" valign="top"><tr><td valign="top" align="left" id="xmlsecContent">
 <div align="center"><h2>Reporting Bugs and Getting Help</h2></div>
 <p>
 Well, any big enough program has a bug. You simply don't know where 
@@ -80,8 +80,7 @@ A good question or bug report <b>MUST</b> include the following:
 <li>The xmlsec utility output.
 </li>
 </ul>
-<a href="http://catb.org/~esr/faqs/smart-questions.html">How To Ask Questions 
-The Smart Way</a><b>nothing</b><p>I'll do my best to fix reported bugs or answer questions as soon as I can. 
+<p>I'll do my best to fix reported bugs or answer questions as soon as I can. 
 And of course, any patches, bug fixes and improvements are always welcome!<br></p>
 <p>Please note, that bug tracking database and mailing list are open to anyone.
 Any private or confidential information posted there became public.
@@ -102,10 +101,6 @@ able to ask permissions to publish it. If you are the author or know
 the author then I would appreciate if you 
 <a href="mailto:aleksey at aleksey.com">send me</a> a message so I can ask 
 permissions and put author's name here.</small>
-</td></tr>
-<tr><td>
-<br><br><p><a href="bugs.html">Aleksey Sanin</a></p>
-</td></tr>
-</table></td>
+</td></tr></table></td>
 </tr></table></body>
 </html>
diff --git a/docs/c14n.html b/docs/c14n.html
index c9ef91d..36316fb 100644
--- a/docs/c14n.html
+++ b/docs/c14n.html
@@ -39,10 +39,10 @@
 <td width="15"></td>
 <td><a href="http://www.openssl.org/"><img src="images/openssl-logo.png" alt="OpenSSL" border="0"></a></td>
 </tr>
+<!--Sponsored links - start--><!--Sponsored links - end-->
 </table>
 </td>
-<td valign="top"><table width="100%" valign="top">
-<tr><td valign="top" align="left" id="xmlsecContent">
+<td valign="top"><table width="100%" valign="top"><tr><td valign="top" align="left" id="xmlsecContent">
 <div align="Center">
 <h2>Canonical XML / Exclusive Canonical XML</h2>
 </div>
@@ -65,10 +65,6 @@ be interested for other applications as well.
 <a href="http://www.w3.org/TR/xml-exc-c14n">Exclusive Canonical XML</a>
    (included in libxml2)</li>
 </ul>
-</td></tr>
-<tr><td>
-<br><br><p><a href="bugs.html">Aleksey Sanin</a></p>
-</td></tr>
-</table></td>
+</td></tr></table></td>
 </tr></table></body>
 </html>
diff --git a/docs/documentation.html b/docs/documentation.html
index 0bae350..082cb1d 100644
--- a/docs/documentation.html
+++ b/docs/documentation.html
@@ -39,10 +39,10 @@
 <td width="15"></td>
 <td><a href="http://www.openssl.org/"><img src="images/openssl-logo.png" alt="OpenSSL" border="0"></a></td>
 </tr>
+<!--Sponsored links - start--><!--Sponsored links - end-->
 </table>
 </td>
-<td valign="top"><table width="100%" valign="top">
-<tr><td valign="top" align="left" id="xmlsecContent">
+<td valign="top"><table width="100%" valign="top"><tr><td valign="top" align="left" id="xmlsecContent">
 <div align="center">
             <h1>Documentation</h1>
             </div>
@@ -62,10 +62,6 @@ list archive</a></li>
               <li><a href="api-0.0.x/documentation.html">Old
 documentation</a></li>
             </ul>
-</td></tr>
-<tr><td>
-<br><br><p><a href="bugs.html">Aleksey Sanin</a></p>
-</td></tr>
-</table></td>
+</td></tr></table></td>
 </tr></table></body>
 </html>
diff --git a/docs/download.html b/docs/download.html
index 70b4fe7..6687858 100644
--- a/docs/download.html
+++ b/docs/download.html
@@ -39,27 +39,23 @@
 <td width="15"></td>
 <td><a href="http://www.openssl.org/"><img src="images/openssl-logo.png" alt="OpenSSL" border="0"></a></td>
 </tr>
+<!--Sponsored links - start--><!--Sponsored links - end-->
 </table>
 </td>
-<td valign="top"><table width="100%" valign="top">
-<tr><td valign="top" align="left" id="xmlsecContent">
+<td valign="top"><table width="100%" valign="top"><tr><td valign="top" align="left" id="xmlsecContent">
 <div align="Center">       
       <h1>Download</h1>
       </div>
 <h2>Stable releases.</h2>
-<p>The latest stable XML Security Library version is <b>1.2.6</b>:</p>
+<p>The latest stable XML Security Library version is <b>1.2.9</b>:</p>
 <ul>
 <li>
-
-	<a href="http://www.aleksey.com/xmlsec/download/xmlsec1-1.2.6.tar.gz">Sources for latest version</a> 
-	    (<a href="ftp://ftp.xmlsoft.org/xmlsec/releases">XMLSoft.org</a> and 
- 	     <a href="ftp://ftp.rpmfind.net/pub/XML/xmlsec/releases">RPMFind.net</a> 
-	     mirrors).
+        <a href="http://www.aleksey.com/xmlsec/download/xmlsec1-1.2.9.tar.gz">Sources 
+	for latest version</a> 
+	(<a href="ftp://ftp.xmlsoft.org/xmlsec/releases">XMLSoft.org</a> mirrors).
     </li>
-    <li>Red Hat 9 RPM 
-	<a href="http://rpmfind.net/linux/rpm2html/search.php?query=xmlsec1">xmlsec1</a> 
-	and <a href="http://rpmfind.net/linux/rpm2html/search.php?query=xmlsec1-devel">xmlsec1-devel</a>
-	packages.
+    <li>Fedora 3 RPM 
+    	<a href="http://www.aleksey.com/xmlsec/download/">xmlsec1 packages</a>.
     </li>
     <li>
 	<a href="http://www.zlatkovic.com/projects/libxml/index.html">Windows 
@@ -90,8 +86,8 @@ compile).</p>
 <p>and one of the following cryptographic libraries:</p>
 <ul>
 <li>
-<a href="http://www.openssl.org/">OpenSSL</a> version 0.9.7 
-	(it also should work with 0.9.6 but some features 
+<a href="http://www.openssl.org/">OpenSSL</a> version 0.9.8 
+	(it also should work with 0.9.7 and 0.9.6 but some features 
 	would be disabled).
         </li>
 	<li>
@@ -117,12 +113,8 @@ compile).</p>
 <p>XML Security Library is available from the 
 <a href="http://developer.gnome.org/tools/cvs.html">Gnome CVS</a>
 (the module name is <b>xmlsec</b>). The online source browser: 
-<a href="http://cvs.gnome.org/bonsai/rview.cgi?cvsroot=/cvs/gnome&dir=xmlsec">Gnome CVS base</a>
+<a href="http://cvs.gnome.org/viewcvs/">Gnome CVS base</a>
 </p>
-</td></tr>
-<tr><td>
-<br><br><p><a href="bugs.html">Aleksey Sanin</a></p>
-</td></tr>
-</table></td>
+</td></tr></table></td>
 </tr></table></body>
 </html>
diff --git a/docs/faq.html b/docs/faq.html
index bfadc30..6cd7249 100644
--- a/docs/faq.html
+++ b/docs/faq.html
@@ -39,10 +39,10 @@
 <td width="15"></td>
 <td><a href="http://www.openssl.org/"><img src="images/openssl-logo.png" alt="OpenSSL" border="0"></a></td>
 </tr>
+<!--Sponsored links - start--><!--Sponsored links - end-->
 </table>
 </td>
-<td valign="top"><table width="100%" valign="top">
-<tr><td valign="top" align="left" id="xmlsecContent">
+<td valign="top"><table width="100%" valign="top"><tr><td valign="top" align="left" id="xmlsecContent">
 <div align="center">
             <h1>Frequently Asked Questions</h1>
             </div>
@@ -51,13 +51,11 @@ Encryption?</h3>
 <p>First of all, read the original specifications: <a href="http://www.w3.org/Signature/">XML Digital Signature</a> and <a href="http://www.w3.org/Encryption/">XML Encrytpion</a>. Also there <a href="related.html#books">several� books</a> available that can
 help you get started.<br></p>
 <h3>1. License(s).</h3>
-<h4>
-<a name="section_1_1"></a>1.1. Licensing Terms for
+<h4> <a name="section_1_1"></a>1.1. Licensing Terms for
 xmlsec.</h4>
 <p> XML Security Library is released under the <a href="http://www.opensource.org/licenses/mit-license.html">MIT License</a>,
 see the file Copyright in the distribution for the precise wording. </p>
-<h4>
-<a name="section_1_2"></a>1.2. Can I use xmlsec with
+<h4> <a name="section_1_2"></a>1.2. Can I use xmlsec with
 proprietary application or
 library? Can I use xmlsec with a GNU GPL application or library?</h4>
 <table style="text-align: left; width: 85%; margin-left: auto; margin-right: auto;" border="1" cellpadding="2" cellspacing="2"><tbody>
@@ -184,20 +182,18 @@ Internet Explorer. </td>
 <p>If you have questions about XML Security Library
 licensing then feel free to send these questions to the <a href="bugs.html">mailing list</a>.<br></p>
 <h3>2. Installation.</h3>
-<h4>
-<a name="section_2_1"></a>2.1. Where can I get xmlsec?</h4>
+<h4> <a name="section_2_1"></a>2.1. Where can I get xmlsec?</h4>
 <p> The original distribution comes from <a href="http://www.aleksey.com/xmlsec/">XML Security Library page</a>.
 Also xmlsec is available from <a href="ftp://rpmfind.net/pub/libxml/xmlsec">rpmfind.net miror</a>. </p>
-<h4>
-<a name="section_2_2"></a>2.2. How to compile xmlsec?</h4>
+<h4> <a name="section_2_2"></a>2.2. How to compile xmlsec?</h4>
 <p> On Unix just follow the "standard": </p>
 <blockquote> <code>gunzip -c xmlsec-xxx.tar.gz | tar xvf -</code><br><code>cd xmlsec-xxxx</code><br><code>./configure --help</code><br><code>./configure [possible options] </code><br><code>make</code><br><code>make check</code><br><code>make install</code> </blockquote>
 <p> At that point you may have to rerun ldconfig or similar
 utility to update your list of installed shared libs.<br>
 On Windows the process is more complicated. Please check readme file in
             <code>xmlsec-xxxx/win32</code> folder. </p>
-<h4>
-<a name="section_2_3"></a>2.3. What other libraries are
+<h4> <a name="section_2_3"></a>2.3. What other libraries
+are
 needed to compile/install
 xmlsec?</h4>
 <p> The XML Security Library requires: </p>
@@ -219,8 +215,8 @@ and <a href="http://www.gnu.org/directory/security/libgcrypt.html">Libgcrypt</a>
 <a href="http://www.mozilla.org/projects/security/pki/nss/">NSS</a> -
 Mozilla cryptographic library. </li>
             </ul>
-<h4>
-<a name="section_2_4"></a>2.4. Why does make check fail
+<h4> <a name="section_2_4"></a>2.4. Why does make check
+fail
 for some tests?</h4>
 <p> First of all, some tests <b>must</b> fail! Please read
 the messages printed before the tests.<br>
@@ -231,22 +227,21 @@ re-configure/re-compile xmlsec.<br>
 if this does not help then probably there is a bug in the xmlsec or in
 the xmlsec tests. Please submit the <a href="http://www.aleksey.com/xmlsec/bugs.html">bug report</a> and I'll
 try to fix it. </p>
-<h4>
-<a name="section_2_5"></a>2.5. I get the xmlsec sources
+<h4> <a name="section_2_5"></a>2.5. I get the xmlsec
+sources
 from CVS and there is no
 configure script. Where can I get it?</h4>
 <p> The configure (and other Makefiles) are generated. Use
 the <code>autogen.sh</code> script to regenerate the configure and
 Makefiles, like: </p>
 <blockquote> <code>./autogen.sh --prefix=/usr</code> </blockquote>
-<h4>
-<a name="section_2_6"></a>2.6. I do not need all these
+<h4> <a name="section_2_6"></a>2.6. I do not need all
+these
 features supported by
 xmlsec. Can I disable some of them?</h4>
 <p> Yes, you can. Please run <code>./configure --help</code>
 for the list of possible configuration options. </p>
-<h4>
-<a name="section_2_7"></a>2.7. I am compiling XMLSec
+<h4> <a name="section_2_7"></a>2.7. I am compiling XMLSec
 library on Windows and it
 does not compile (crashes right after the launch). Can you help me?</h4>
 <p> There are several possible reasons why you might have
@@ -296,8 +291,8 @@ dynamic libraries in the resulting executable. Its cost is the need to <code>#de
 apropriate macros. People would ideally define them by using the
 compiler's <code>/D</code> switch in projects that link statically. </p>
 <h3>3. Developing with XMLSec.</h3>
-<h4>
-<a name="section_3_1"></a>3.1. xmlSecDSigCtxValidate()
+<h4> <a name="section_3_1"></a>3.1.
+xmlSecDSigCtxValidate()
 function returned 0. Does
 this mean that the signature is valid?</h4>
 <b>No!</b><p> Function xmlSecDSigCtxValidate() returns 0 when there
@@ -306,51 +301,53 @@ document has correct syntax, all keys were found, etc.). The signature
 is valid if and only if the xmlSecDSigCtxValidate() function returns 0 <b>and</b>
 the <code>status</code> member of the <code>xmlSecDSigCtx</code>
 structure is equal to <code>xmlSecDSigStatusSucceeded</code>. </p>
-<h4>
-<a name="section_3_2"></a>3.2. I am trying to sign an
-XML document and I have a
-warning about "empty nodes set". Should I worry about this?</h4>
-<p> Most likely <b>yes</b>. When it's not an error from
-specification point of view, I can hardly imagine a real world case
-that requires signing an empty nodes set (i.e. signing an empty
-string). Most likely, you have this error because you are trying to use
-ID attribute and you do not provide a DTD for the document. For
-example, the following Reference element: </p>
-<blockquote><code> <?xml version="1.0"
+<h4> <a name="section_3_2"></a>3.2. I am trying to sign
+use a
+part of XML document using an "Id" attribute but it does not work. Do
+you support "Id" attributes at all?</h4>
+<p><span style="font-weight: bold;">Yes. </span>LibXML2
+and XMLSec libraries do support ID attributes. However, you have to
+tell LibXML2/XMLSec what is the name of <span style="font-weight: bold;">your </span>ID attribute. XML
+specification does not require ID attribute to have name "Id" or "id".
+It can be anything you want! <br></p>
+<br><code>Id</code><code>Data</code><blockquote><code> <?xml version="1.0"
 encoding="UTF-8"><br>
 <Root><br>
 ��<Data Id="1234"><br>
 ����The data I want to sign<br>
 ��</Data><br>
-��<Signature xmlns="http://www.w3.org/2000/09/xmldsig#"><br>
-��...<br>
-����<Reference URI="#1234"><br>
-����...<br>
-����</Reference><br>
-��...<br>
-��</Signature><br>
 </Root><br></code></blockquote>
-<p> always results in an empty nodes set (and an empty
-string signed!) unless you have a DTD that declares <code>Id</code>
-attribute of the <code>Data</code> element to be an ID attribute: </p>
+<p>One can use a simple DTD: </p>
 <blockquote><code> <!DOCTYPE test [<br>
 �<!ATTLIST Data Id ID #IMPLIED><br>
 ]><br></code></blockquote>
 <p> The DTD might be directly included in the XML file or
 located in a standalone file. In the second case, you might load the
-DTD in xmlsec command line utility with "--dtd-file" option. Also
-xmlsec command line utility has "--id-attr" option that directly
-registers given attribute in the document's ID attributes table.
-However, this is a hack for <a href="#section_3_3">Visa 3D protocol</a>
-and you should use DTD in all other cases. </p>
-<p> If you are using XML Security Library in your
-application (not the xmlsec command line utility!) then you can do a
-"hack" and tell LibXML2 (and XMLSec) which attributes are ID attributes
-without providing a DTD by calling <code>xmlAddID</code> function.
-However, this might make you signature non-interoperable with other
-XMLDSig implementations. </p>
+DTD in xmlsec command line utility with "--dtd-file" option. <br></p>
+<p>2) Use <a href="http://www.w3.org/TR/xml-id/">xml:id</a>.
+This is a new W3C Working Draft and not all XML parsers support it now
+(LibXML2 does!). <br></p>
+<p>3) Application can directly declare ID attribute to
+LibXML2/XMLSec. If you are using xmlsec command line utility see
+"--id-attr" option.� If you are writing a C/C++ application
+yourself, call�<code>xmlAddID</code> function.
+However, this approach might make you signature non-interoperable with
+other
+XMLDSig implementations.<br></p>
 <h4>
-<a name="section_3_3"></a>3.3. I am trying to
+<a name="section_3_3"></a>3.3.<span style="font-weight: bold;"> </span>I am trying to sign an
+XML document and I have a
+warning about "empty nodes set". Should I worry about this?</h4>
+<p> Most likely <b>yes</b>. When it's not an error from
+specification point of view, I can hardly imagine a real world case
+that requires signing an empty nodes set (i.e. signing an empty
+string). Most likely, you have this error because you are trying to use
+ID attribute and you do not provide a DTD for the document (see <a href="faq.html#section_3_2">section 3.2</a>
+about ID
+attributes).<br></p>
+<h4> </h4>
+<h4>
+<a name="section_3_4"></a>3.4. I am trying to
 sign/validate a document but
 xmlXPtrEval function can't evaluate "xpointer(id('XXXXXXX'))"
 expression. What's wrong?</h4>
@@ -393,8 +390,8 @@ utility).</li>
 |= XMLSEC_DSIG_FLAGS_USE_VISA3D_HACK</code> or <code>--enable-visa3d-hack</code>
 option for xmlsec command line utility).</li>
             </ul>
-<b>hack</b><b>You are warned!</b><br><br><h4>
-<a name="section_3_4"></a>3.4. I have a document signed
+<b>This is a hack</b><b>. You are warned!</b><br><h4>
+<a name="section_3_5"></a>3.5. I have a document signed
 with a certificate that
 is now expired. Can I verify this signature?</h4>
 <p> Yes, you can. However, you need to be carefull. Most
@@ -410,30 +407,27 @@ member of the <code>xmlSecKeyInfoCtx</code> structure. </p>
 can use <code>--verification-time <time></code> option (where <code><time></code>
 is the local system time in the "<code>YYYY-MM-DD HH:MM:SS</code>"
 format). </p>
-<h4>
-<a name="section_3_5"></a>3.5. I really like the XMLSec
+<h4> <a name="section_3_6"></a>3.6. I really like the
+XMLSec
 library but it is based
 on OpenSSL and I have to use another crypto library in my application.
 Can you write code to support my crypto library?</h4>
 <p> The XMLSec library has a very modular structure and
 there should be no problem with using another crypto library. For
-example, XMLSec already supports <a href="http://www.mozilla.org/projects/security/pki/nss/">NSS</a> and <a href="http://www.gnu.org/software/gnutls/gnutls.html">GnuTLS</a>.
+example, XMLSec already supports <a href="http://www.mozilla.org/projects/security/pki/nss/">NSS</a>,
+MSCrypto API and <a href="http://www.gnu.org/software/gnutls/gnutls.html">GnuTLS</a>.
 Check the latest release and/or the mailing list and you might find
 that your library is already supported or someone working on it.<br>
 If you are not so lucky, then you can either write some code by
 yourself or contact me in private email to discuss possible options. </p>
-<h4>
-<a name="section_3_6"></a>3.6. I really like the XMLSec
+<h4> <a name="section_3_7"></a>3.7. I really like the
+XMLSec
 library but it does not
 have cipher or transform that I need. Can you write code for me?</h4>
 <p> The XMLSec library has a very modular structure and
 there should be easy to add any cipher or other transform. Again, you
 can either write some code by yourself or try to talk to me in private
 email. </p>
-</td></tr>
-<tr><td>
-<br><br><p><a href="bugs.html">Aleksey Sanin</a></p>
-</td></tr>
-</table></td>
+</td></tr></table></td>
 </tr></table></body>
 </html>
diff --git a/docs/index.html b/docs/index.html
index 13bbf7a..988127f 100644
--- a/docs/index.html
+++ b/docs/index.html
@@ -39,10 +39,10 @@
 <td width="15"></td>
 <td><a href="http://www.openssl.org/"><img src="images/openssl-logo.png" alt="OpenSSL" border="0"></a></td>
 </tr>
+<!--Sponsored links - start--><!--Sponsored links - end-->
 </table>
 </td>
-<td valign="top"><table width="100%" valign="top">
-<tr><td valign="top" align="left" id="xmlsecContent">
+<td valign="top"><table width="100%" valign="top"><tr><td valign="top" align="left" id="xmlsecContent">
 <div align="Center">                                          
       <h1>XML Security Library</h1>
             </div>
@@ -72,242 +72,45 @@
      	    see the Copyright file in the distribution  for details.<br><br></p>
 <p><b>News</b></p>
 <ul>
-<li>August 25 2004<br>
+<li>July 12 2005<br>
+	The new <a href="download.html">XML Security Library 1.2.9</a> release
+	includes few bug fixes and adds support for the recently released 
+	<a href="http://openssl.org">OpenSSL 0.9.8</a> including several 
+	new algorithms for <a href="xmldsig.html">xmlsec-openssl</a>:
+	<ul>
+<li>SHA224/SHA256/SHA384/SHA512</li>
+	    <li>HMAC-SHA224/SHA256/SHA384/SHA512</li>
+	    <li>RSA-MD5/RIPEMD160/SHA224/SHA256/SHA384/SHA512</li>
+	</ul>
+</li>
+<br><li>March 30 2005<br>
+	The new <a href="download.html">XML Security Library 1.2.8</a> release
+	merges OpenOffice.org changes to xmlsec-mscrypto and xmlsec-nss into
+	main xmlsec source tree.
+</li>
+<br><li>February 23 2005<br>
+	The new <a href="download.html">XML Security Library 1.2.7</a> release
+	includes several bug fixes and minor enchancements:
+	<ul>
+<li>(core) added xmlSecSimpleKeysStoreGetKeys() function;</li>
+	<li>(core) added functions to create <X509Data/> node children
+	     in the signature template;</li>
+	<li>(core) fixed xmlSecGenerateID() function;</li>
+	<li>(core) fixed dynamic linking initialization/shutdown when custom memory 
+	    allocation functions are used;</li>
+	<li>(core) fixed encrypted text parsing and xmlParseInNodeContext() function;</li>
+	<li>(openssl) fixed parsing quoted values in the certificate subject;</li>
+	<li>(mscrypto) negative numbers support in xmlSecBnFromString()/xmlSecBnToString() functions.</li>
+	</ul>
+</li>
+
+<br><li>August 25 2004<br>
 	The new <a href="download.html">XML Security Library 1.2.6</a> 
 	fixes several minor bugs and adds support for loading keys and
 	certificates from memory.
 </li>
 
-<br><li>July 27 2004<br>
-	Created a <a href="related.html#books">list of books</a> about
-	cryptography and security that covers most of the topics needed
-	for using XML Security Library.
-</li>
-
-<br><li>April 15 2004<br>
-	The new <a href="download.html">XML Security Library 1.2.5</a> 
-	includes a simple XKMS server implementation and fixes a nasty
-	bug with encrypting/decrypting nodes with an empty content.
-</li>
-
-<br><li>January 27 2004<br>
-	The new <a href="download.html">XML Security Library 1.2.4</a> 
-	release fixes many configuration and installation problems 
-	found by John.
-</li>
-
-<br><li>January 6 2004<br>
-	The new <a href="download.html">XML Security Library 1.2.3</a> 
-	release upgrades xmlsec-gnutls code to support latest gnutls
-	library version (1.0.4) and fixes several configuration and 
-	installation problems.
-</li>
-
-<br><li>November 11 2003<br>
-	The new <a href="download.html">XML Security Library 1.2.2</a> 
-	release includes several improvements in ./configure script
-	(Daniel, Roumen) and a bug fix for certificates serial number
-	processing in xmlsec-mscrypto.
-</li>
-
-<br><li>October 14 2003<br>
-	The new <a href="download.html">XML Security Library 1.2.1</a> 
-	release includes a special "hack" for supporting ID attributes
-	with invalid values in Visa 3D; fixed processing of root element 
-	node siblings (bug #124245); template functions for creating 
-	<enc:KeyReference/> and <enc:DataReference/>
-        nodes (Wouter); new "XMLSEC_DOCDIR" environment variable 
-	for ./configure script; updated README files for xmlsec-crypto
-	libraries.
-</li>
-
-<br><li>September 30 2003<br>
-	The major change in the new <a href="download.html">XML Security Library 1.2.0</a> 
-	release is the MS Crypto API support implemented by Wouter. Other changes
-	include loading public keys from certificates and improved namespaces 
-	support for start node selection with "--node-xpath" command line option
-	for xmlsec command line utility; updated online XML DSig Verifier;
-	updated docs and man pages.
-</li>
-
-<br><li>September 17 2003<br>
-	The new <a href="download.html">XML Security Library 1.1.2</a> release
-	introduces dynamical crypto engines loading based on ltdl library (including
-	tutorial, API reference and documentation updates); adds an ability to build 
-	multiple xmlsec-crypto libraries in one build on Windows; fixes minor problems
-	in test suite and multiple warnings when building on Sun Solaris.
-</li>
-
-<br><li>August 21 2003<br>
-	The new <a href="download.html">XML Security Library 1.1.1</a> release
-	adds <X509Data/> node templates support to xmlsec-nss (Tej);
-	includes new functions for reading keys and certificates from memory 
-	for xmlsec-core and xmlsec-openssl (Joachim); fixes several problems
-	in xmlsec configuration files (Roumen) and a bug in URI attribute 
-	XInclude processing.
-</li>
-
-<br><li>August 5 2003<br>
-	A great patch from Tej that dramaticaly improves xmlsec-nss functionality
-	deserves a minor version number update :). In addition to that, the new 
-	<a href="download.html">XML Security Library 1.1.0</a> 
-	release includes <X509Data/> node templates support
-	for xmlsec-openssl (Roumen); separate pkg-config files for xmlsec-crypto
-	libraries and minor documentation updates (including coding style
-	and some useful commands for xmlsec developers in a new "HACKING" 
-	file).
-</li>
-
-<br><li>July 15 2003<br>
-	There were several minor patches during last month and it's time to do 
-	a new <a href="download.html">XML Security Library 1.0.4</a> 
-	release to pick up them: x509 certificates names comparison function
-	now supports multiple entries woth the same object name (Roumen); 
-	multiple build fixes; documentation mistypes fixes.
-	Also I gave an XML Security presentation at 
-	<a href="http://oreillynet.com/oscon2003/">OSCON 2003</a> last week. 
-	You can download slides <a href="http://www.aleksey.com/xmlsec/extra/xmlsec_oscon_2003.ppt">here</a>.
-</li>
-
-<br><li>June 17 2003<br>
-	The <a href="download.html">XML Security Library 1.0.3</a> 
-	release adds PKCS#8 support for xmlsec-openssl (Tej) and fixes several 
-	configuration and portability problems.
-</li>
-
-<br><li>June 03 2003<br>
-	The <a href="download.html">XML Security Library 1.0.2</a> 
-	release includes several fixes in xmlsec-nss configuration and
-	linking options (Tej), PKCS21 files reading improvements,
-	minor documentation and help file fixes. Also this release
-	includes some code for XKMS support. This is absolutely not usable
-	right now and not configured in by default. Please, don't
-	use or even compile it in.
-</li>
-
-<br><li>April 28 2003<br>
-	The <a href="download.html">XML Security Library 1.0.1</a> 
-	release is a maintanance release. It fixes several compilation 
-	problems found in 1.0.0 release on the following platforms: 
-	OpenBSD/sparc64, Win32 Wacom C, Sun Workshop CC 6.0. 
-	Also from now on Win32 MSVC port enables the threading support 
-	by default (this is a part of the Igor's change to LibXML2/LibXSLT/XMLSec
-	libraries). If you don't use one of these platforms then you'll see 
-	no difference.
-</li>
-<br><li>April 17 2003<br>
-	The <a href="download.html">XML Security Library 1.0.0</a> 
-	release is the major upgrade from 0.0.X version.
-	The new version includes multiple crypto engines support
-	(with "out of the box" support for OpenSSL, GnuTLS and NSS);
-	simplified and cleaned internal structure and API; 
-	several performance and memory usage improvements;
-	new or updated documentation (tutorial, API reference manual and 
-	examples).
-</li>
-<br><li>April 10 2003<br>
-	The final release candidate <a href="download.html">XML Security 
-	Library 1.0.0rc1</a> is available for download. This release includes 
-	minor API polishing, 
-	complete <a href="api/xmlsec-ref.html">API Reference Manual</a>, 
-	new chapters in the <a href="api/xmlsec-notes.html">tutorial</a> and 
-	several new <a href="api/xmlsec-examples.html">examples</a>.
-	Another big change is using major version number in library files
-	to prevent collisions between different library versions.<br>
-	If no major problems will be found then the 1.0.0 release should
-	happen in a week from now.
-	</li>
-<br><li>April 8 2003<br>
-	The new <a href="download.html">XML Security Library 0.0.15</a> 
-	release is a preparation for the upcomming 1.0.0 release and
-	provides an ability to have both versions installed together 
-	on the same box. 
-	Also this release includes updated expired certificates for 
-	the regression test suite and a fix for minor bug in reading binary 
-	keys on Windows.
-	</li>
-<br><li>April 6 2003<br><table><tr>
-<td>
-	<a href="http://conferences.oreilly.com/oscon/"><img border="0" src="http://conferences.oreillynet.com/images/os2003/banners/130x40.gif" alt="O'Reilly Open Source Convent3Dion"></a>	
-	</td>
-<td width="10"></td>
-<td valign="top">It seems that I'll be giving a 
-	<a href="http://conferences.oreillynet.com/cs/os2003/view/e_sess/3838">presentation</a>
-	at the <a href="http://conferences.oreilly.com/oscon/">O'Reilly Open Source Convention 2003</a>
-	about XML Security and XML Security Library. Stop by to say "Hello!".
-	</td>
-</tr></table>
-</li>
-<br><li>March 26 2003<br><a href="download.html">XML Security Library 0.1.1</a>
-	release is the first release candidate for the new stable 
-	version of XML Security Library. A lot of internal changes 
-	including enchanced processing controls, performance improvements
-	for XML transforms, <a href="api/index.html">new documentation</a>,
-	updated <a href="api/xmlsec-examples.html">examples</a>
-	and many many other small things.<br>
-	Please try this release and report bugs. Again, it's the first
-	release candidate and it's very important for me to get your
-	feedback about it. Also if you are missing some features
-	in the library it's the best time to ask!
-	</li>
-<br><li>March 19 2003<br><a href="download.html">XML Security Library 0.0.14</a> release
-	includes several minor bugfixes in references URI
-	processing, binary transforms processing and xmlsec 
-	command line utility.
-	</li>
-<br><li>March 5 2003<br>
-	The <a href="download.html">XML Security Library 0.1.0</a> release
-	creates a framework for integrating XML Security Library
-	with almost any crypto engine and even combining multiple crypto
-	engines in one application. As an example, basic support for GnuTLS and NSS 
-	libraries is provided (digests, hmac and block ciphers).<br>
-	This is a pre-alpha release <b>not recommended</b> for production
-	(please use the <a href="download.html">stable 0.0.X</a> releases 
-	instead). The new 0.1.X API and ABI will defenetly change.
-	However, if you plan to use XML Security Library with a new crypto
-	engine and plan to write some code then you can start now. 
-	The "backend" API is pretty stable and I do not expect major
-	changes. 
-	</li>
-	<br><li>February 21 2003<br><a href="download.html">XML Security Library 0.0.13</a> release
-	fixes incorrect processing of signatures with more than 3 binary 
-	transforms in a row, improved pkcs12 files support and minor
-	documentation update.
-	</li>
-<br><li>January 26 2003<br>
-	Two major fixes in <a href="http://www.aleksey.com/pipermail/xmlsec/2003/000507.html">HMAC</a> and 
-	<a href="http://www.aleksey.com/pipermail/xmlsec/2003/000516.html">DES/AES</a> 
-	algorithms are the reason for the new <a href="download.html">XML Security Library 0.0.12</a> release.
-	Also there are few other minor features and bug fixes (see Changelog in the 
-	distribution for more details).
-	</li>
-<br><li>December 3 2002<br>
-	New <a href="download.html">XML Security Library 0.0.11</a> release
-	fixes a <a href="http://www.aleksey.com/pipermail/xmlsec/2002/000368.html">major 
-	problem</a> in Reference URI attribute processing. This release
-	also includes several Win32 build process fixes from Igor.	
-	</li>
-<br><li>October 20 2002<br>
-	Almost two months from previous release and a lot of minor 
-	enchancements are good reasons for the new
-	<a href="download.html">XML Security Library 0.0.10</a> release:<br>
-	- added a way to specify "current time" to verify certificates
-	expiration against it;<br>
-	- implemented XML results output format for the xmlsec command
-	line utility;<br>
-	- fixed XMLDSig examples and added a new one (thanks to Devin 
-	Heitmueller);<br>
-	- resolved static link issue and a bunch of other improvements 
-	for Win32 platform builds (Igor Zlatkovic);<br>
-	- added dynamic linking option for xmlsec command line utility
-	to help Debian port (John Belmonte);<br>
-	- minor bug fixes.
-	</li>
 </ul>
-</td></tr>
-<tr><td>
-<br><br><p><a href="bugs.html">Aleksey Sanin</a></p>
-</td></tr>
-</table></td>
+</td></tr></table></td>
 </tr></table></body>
 </html>
diff --git a/docs/news.html b/docs/news.html
index c24d710..cda5958 100644
--- a/docs/news.html
+++ b/docs/news.html
@@ -39,15 +39,47 @@
 <td width="15"></td>
 <td><a href="http://www.openssl.org/"><img src="images/openssl-logo.png" alt="OpenSSL" border="0"></a></td>
 </tr>
+<!--Sponsored links - start--><!--Sponsored links - end-->
 </table>
 </td>
-<td valign="top"><table width="100%" valign="top">
-<tr><td valign="top" align="left" id="xmlsecContent">
+<td valign="top"><table width="100%" valign="top"><tr><td valign="top" align="left" id="xmlsecContent">
 <div align="Center">                                   
       <h1>XML Security Library News</h1>
       </div>
 <ul>
-<li>August 25 2004<br>
+<li>July 12 2005<br>
+	The new <a href="download.html">XML Security Library 1.2.9</a> release
+	includes few bug fixes and adds support for the recently released 
+	<a href="http://openssl.org">OpenSSL 0.9.8</a> including several 
+	new algorithms for <a href="xmldsig.html">xmlsec-openssl</a>:
+	<ul>
+<li>SHA224/SHA256/SHA384/SHA512</li>
+	    <li>HMAC-SHA224/SHA256/SHA384/SHA512</li>
+	    <li>RSA-MD5/RIPEMD160/SHA224/SHA256/SHA384/SHA512</li>
+	</ul>
+</li>
+<br><li>March 30 2005<br>
+	The new <a href="download.html">XML Security Library 1.2.8</a> release
+	merges OpenOffice.org changes to xmlsec-mscrypto and xmlsec-nss into
+	main xmlsec source tree.
+</li>
+<br><li>February 23 2005<br>
+	The new <a href="download.html">XML Security Library 1.2.7</a> release
+	includes several bug fixes and minor enchancements:
+	<ul>
+<li>(core) added xmlSecSimpleKeysStoreGetKeys() function;</li>
+	<li>(core) added functions to create <X509Data/> node children
+	     in the signature template;</li>
+	<li>(core) fixed xmlSecGenerateID() function;</li>
+	<li>(core) fixed dynamic linking initialization/shutdown when custom memory 
+	    allocation functions are used;</li>
+	<li>(core) fixed encrypted text parsing and xmlParseInNodeContext() function;</li>
+	<li>(openssl) fixed parsing quoted values in the certificate subject;</li>
+	<li>(mscrypto) negative numbers support in xmlSecBnFromString()/xmlSecBnToString() functions.</li>
+	</ul>
+</li>
+
+<br><li>August 25 2004<br>
 	The new <a href="download.html">XML Security Library 1.2.6</a> 
 	fixes several minor bugs and adds support for loading keys and
 	certificates from memory.
@@ -423,10 +455,6 @@ from           <a href="http://lists.w3.org/Archives/Public/w3c-ietf-xmldsig/200
 me  your comments/suggestions. </li>
                                        
       </ul>
-</td></tr>
-<tr><td>
-<br><br><p><a href="bugs.html">Aleksey Sanin</a></p>
-</td></tr>
-</table></td>
+</td></tr></table></td>
 </tr></table></body>
 </html>
diff --git a/docs/related.html b/docs/related.html
index 94d67ef..9bcc435 100644
--- a/docs/related.html
+++ b/docs/related.html
@@ -39,10 +39,10 @@
 <td width="15"></td>
 <td><a href="http://www.openssl.org/"><img src="images/openssl-logo.png" alt="OpenSSL" border="0"></a></td>
 </tr>
+<!--Sponsored links - start--><!--Sponsored links - end-->
 </table>
 </td>
-<td valign="top"><table width="100%" valign="top">
-<tr><td valign="top" align="left" id="xmlsecContent">
+<td valign="top"><table width="100%" valign="top"><tr><td valign="top" align="left" id="xmlsecContent">
 <div align="center">
             <h1>Related</h1>
             </div>
@@ -105,6 +105,10 @@ ports. </li>
 <a href="http://pyxmlsec.labs.libre-entreprise.org/">PyXMLSec
 Library</a> - Python bindings for XMLSec Library. </li>
               <li>
+<a href="http://lasso.entrouvert.org/">Lasso
+Library</a> - the <a href="http://www.projectliberty.org/">Liberty Alliance</a> 
+standards implementation.</li>
+              <li>
 <a href="http://glasnost.entrouvert.org/">Glasnost</a>
 - content management, electronic vote and groupware sysem. </li>
               <li> <a href="http://www.opensaml.org/">OpenSAML</a> -
@@ -154,10 +158,6 @@ for securing your XML documents</a> by Brian Schaffner, Builder.com.</li>
 Benchmark</a>.<br>
 </li>
             </ul>
-</td></tr>
-<tr><td>
-<br><br><p><a href="bugs.html">Aleksey Sanin</a></p>
-</td></tr>
-</table></td>
+</td></tr></table></td>
 </tr></table></body>
 </html>
diff --git a/docs/xmldsig-verifier.html b/docs/xmldsig-verifier.html
index 7ddc8ae..a92bc12 100644
--- a/docs/xmldsig-verifier.html
+++ b/docs/xmldsig-verifier.html
@@ -39,10 +39,10 @@
 <td width="15"></td>
 <td><a href="http://www.openssl.org/"><img src="images/openssl-logo.png" alt="OpenSSL" border="0"></a></td>
 </tr>
+<!--Sponsored links - start--><!--Sponsored links - end-->
 </table>
 </td>
-<td valign="top"><table width="100%" valign="top">
-<tr><td valign="top" align="left" id="xmlsecContent"><div align="Center">              
+<td valign="top"><table width="100%" valign="top"><tr><td valign="top" align="left" id="xmlsecContent"><div align="Center">              
       <h2>Online XML Digital Signature Verifer</h2>
       <div align="Left">The online XML Digital Signature Verifier is a simple
 cgi script (<a href="http://www.aleksey.com/xmlsec/api-0.0.x/examples/dsig5/xmldsigverify.c">source code</a>) 
@@ -94,16 +94,16 @@ reasons.
 <a href="tests/aleksey-xmldsig-01/enveloping-dsa-x509chain.xml">aleksey-xmldsig-01/enveloping-dsa-x509chain.xml</a>
 </li>
 <li>
-<a href="tests/aleksey-xmldsig-01/enveloping-hmac-md5-64.xml">aleksey-xmldsig-01/enveloping-hmac-md5-64.xml</a>
+<a href="tests/aleksey-xmldsig-01/enveloping-md5-hmac-md5-64.xml">aleksey-xmldsig-01/enveloping-md5-hmac-md5-64.xml</a>
 </li>
 <li>
-<a href="tests/aleksey-xmldsig-01/enveloping-hmac-md5.xml">aleksey-xmldsig-01/enveloping-hmac-md5.xml</a>
+<a href="tests/aleksey-xmldsig-01/enveloping-md5-hmac-md5.xml">aleksey-xmldsig-01/enveloping-md5-hmac-md5.xml</a>
 </li>
 <li>
-<a href="tests/aleksey-xmldsig-01/enveloping-hmac-ripemd160-64.xml">aleksey-xmldsig-01/enveloping-hmac-ripemd160-64.xml</a>
+<a href="tests/aleksey-xmldsig-01/enveloping-ripemd160-hmac-ripemd160-64.xml">aleksey-xmldsig-01/enveloping-ripemd160-hmac-ripemd160-64.xml</a>
 </li>
 <li>
-<a href="tests/aleksey-xmldsig-01/enveloping-hmac-ripemd160.xml">aleksey-xmldsig-01/enveloping-hmac-ripemd160.xml</a>
+<a href="tests/aleksey-xmldsig-01/enveloping-ripemd160-hmac-ripemd160.xml">aleksey-xmldsig-01/enveloping-ripemd160-hmac-ripemd160.xml</a>
 </li>
 <li>
 <a href="tests/aleksey-xmldsig-01/enveloping-rsa-x509chain.xml">aleksey-xmldsig-01/enveloping-rsa-x509chain.xml</a>
@@ -140,10 +140,6 @@ reasons.
 </li>
 </ul>
 </div>
-        </div></td></tr>
-<tr><td>
-<br><br><p><a href="bugs.html">Aleksey Sanin</a></p>
-</td></tr>
-</table></td>
+        </div></td></tr></table></td>
 </tr></table></body>
 </html>
diff --git a/docs/xmldsig.html b/docs/xmldsig.html
index ef4231e..3acbfbb 100644
--- a/docs/xmldsig.html
+++ b/docs/xmldsig.html
@@ -39,500 +39,850 @@
 <td width="15"></td>
 <td><a href="http://www.openssl.org/"><img src="images/openssl-logo.png" alt="OpenSSL" border="0"></a></td>
 </tr>
+<!--Sponsored links - start--><!--Sponsored links - end-->
 </table>
 </td>
-<td valign="top"><table width="100%" valign="top">
-<tr><td valign="top" align="left" id="xmlsecContent">
-<div align="center">                     
+<td valign="top"><table width="100%" valign="top"><tr><td valign="top" align="left" id="xmlsecContent">
+<div align="center">
             <h2>XML Digital Signature</h2>
- </div>
-<p> <a href="http://www.w3.org/TR/xmldsig-core">XML Digital Signature</a> 
-     provides       <a href="http://www.w3.org/TR/xmldsig-core/#def-Integrity" class="link-def">integrity,</a>       <a href="http://www.w3.org/TR/xmldsig-core/#def-AuthenticationMessage" class="link-def">message authentication,</a>      and/or       <a href="http://www.w3.org/TR/xmldsig-core/#def-AuthenticationSigner" class="link-def">signer  authentication</a>       services for data of any
-type, whether located within the XML that includes the signature or elsewhere. 
-     </p>
-<p>      XML Security Library supports <a href="xmldsig-interop.html">all</a> MUST/SHOULD/MAY      features and algorithms
-described in the W3C standard and provides API to sign prepared document templates,
-add signature(s)   to a document "on-the-fly" or verify the signature(s)
- in the document.             </p>
-<p>       <a href="http://www.aleksey.com/xmlsec/xmldsig-verifier.html">XML Digital Signature
-Online Verifier</a>       is an example of a real application based on XML
-Security Library.        Using this tool you can verify any XML Signature
-and get        detailed report on what and how was signed.        </p>
-<div align="center">                     
-            <h3>XML Security Library XML Signature  Interoperability Report</h3>
- </div>
-<br><div align="center">       
-            <table cellpadding="2" cellspacing="2" border="1" width="85%"><tbody>
+            </div>
+<p> <a href="http://www.w3.org/TR/xmldsig-core">XML
+Digital Signature</a> provides <a href="http://www.w3.org/TR/xmldsig-core/#def-Integrity" class="link-def">integrity,</a> <a href="http://www.w3.org/TR/xmldsig-core/#def-AuthenticationMessage" class="link-def">message authentication,</a> and/or <a href="http://www.w3.org/TR/xmldsig-core/#def-AuthenticationSigner" class="link-def">signer authentication</a> services for data of any
+type, whether located within the XML that includes the signature or
+elsewhere. </p>
+<p> XML Security Library supports all MUST/SHOULD/MAY
+features and algorithms
+described in the W3C standard and provides API to sign prepared
+document templates,
+add signature(s) to a document "on-the-fly" or verify the signature(s)
+in the document. </p>
+<p> <a href="http://www.aleksey.com/xmlsec/xmldsig-verifier.html">XML Digital
+Signature
+Online Verifier</a> is an example of a real application based on XML
+Security Library. Using this tool you can verify any XML Signature
+and get detailed report on what and how was signed. </p>
+<div align="center">
+            <h3>XML Security Library Interoperability Report</h3>
+            </div>
+<h4 style="text-align: center;">XML Signature (<a href="http://www.ietf.org/rfc/rfc3275.txt">RFC 3275</a>)</h4>
+<div align="center">
+            <table style="width: 85%;" border="1" cellpadding="2" cellspacing="2"><tbody>
 <tr>
-<td valign="top" align="left"><b>Features and algorithms<br></b></td>
-             <td valign="top" align="left"><b>Key Word<br></b></td>
-             <td valign="top" align="left"> <b>XMLSec with OpenSSL </b> </td>
-             <td style="vertical-align: top;"><b>XMLSec with GnuTLS</b></td>
-             <td style="vertical-align: top;"> <b>XMLSec with NSS</b><b><a href="#new-version"></a></b> </td>
-             <td style="vertical-align: top;"> <b>XMLSec with MSCrypto</b> </td>
-
-           </tr>
+<td style="width: 40%;" align="left" valign="top"><b>Features
+and
+algorithms<br></b></td>
+                  <td align="left" valign="top"> <b>XMLSec with
+OpenSSL </b> </td>
+                  <td style="vertical-align: top;"><b>XMLSec with GnuTLS</b></td>
+                  <td style="vertical-align: top;"> <b>XMLSec with NSS</b>
+                  </td>
+                  <td style="vertical-align: top;"> <b>XMLSec with
+MSCrypto</b> </td>
+                </tr>
 <tr>
-<td valign="top" align="left"> <a class="link-def" href="http://www.w3.org/TR/2000/WD-xmldsig-core-20001012/#def-SignatureDetac%20hed"> 
-Detached</a> Signature<br>
+<td style="width: 40%;" align="left" valign="top"> <span class="link-def">Detached</span>
+Signature<br>
 </td>
-             <td valign="top" align="left">MUST <br>
+                  <td align="left" valign="top">Y<br>
 </td>
-             <td valign="top" align="left">Y<br>
+                  <td style="vertical-align: top;">Y<br>
 </td>
-             <td style="vertical-align: top;">Y<br>
+                  <td style="vertical-align: top;">Y<br>
 </td>
-             <td style="vertical-align: top;">Y<br>
+                  <td style="vertical-align: top;">Y<br>
 </td>
-             <td style="vertical-align: top;">Y<br>
+                </tr>
+<tr>
+<td style="width: 40%;" align="left" valign="top"> <span class="link-def">Enveloping</span>
+Signature: same document reference with fragment
+(URI="#Object1")<br>
+</td>
+                  <td align="left" valign="top">Y<br>
+</td>
+                  <td style="vertical-align: top;">Y<br>
 </td>
-
-           </tr>
+                  <td style="vertical-align: top;">Y<br>
+</td>
+                  <td style="vertical-align: top;">Y<br>
+</td>
+                </tr>
 <tr>
-<td valign="top" align="left"> <a class="link-def" href="http://www.w3.org/TR/2000/WD-xmldsig-core-20001012/#def-SignatureEnvel%20oping"> 
-Enveloping</a> Signature: same document reference with fragment (URI="#Object1")<br>
+<td style="width: 40%;" align="left" valign="top"> <span class="link-def">Enveloped</span>
+Signature: same document reference (URI="") with Enveloped Signature
+Transform .<br>
+</td>
+                  <td align="left" valign="top">Y<br>
 </td>
-             <td valign="top" align="left">MUST <br>
+                  <td style="vertical-align: top;">Y<br>
 </td>
-             <td valign="top" align="left">Y<br>
+                  <td style="vertical-align: top;">Y<br>
 </td>
-             <td style="vertical-align: top;">Y<br>
+                  <td style="vertical-align: top;">Y<br>
 </td>
-             <td style="vertical-align: top;">Y<br>
+                </tr>
+<tr>
+<td style="width: 40%;" align="left" valign="top">SignatureValue
+generation/validation<br>
+</td>
+                  <td align="left" valign="top">Y<br>
+</td>
+                  <td style="vertical-align: top;">Y<br>
 </td>
-             <td style="vertical-align: top;">Y<br>
+                  <td style="vertical-align: top;">Y<br>
 </td>
-
-           </tr>
+                  <td style="vertical-align: top;">Y<br>
+</td>
+                </tr>
 <tr>
-<td valign="top" align="left"> <a class="link-def" href="http://www.w3.org/TR/2000/WD-xmldsig-core-20001012/#def-SignatureEnvel%20oped"> 
-Enveloped</a> Signature: same document reference (URI="") with <a href="http://www.w3.org/Signature/2001/04/05-xmldsig-interop.html#sec-EnvelopedSignature"> 
-Enveloped Signature Transform</a> .<br>
+<td style="width: 40%;" align="left" valign="top">Manifest
+DigestValue
+generation/valdiation<br>
+</td>
+                  <td align="left" valign="top">Y<br>
 </td>
-             <td valign="top" align="left">MUST <br>
+                  <td style="vertical-align: top;">Y<br>
+</td>
+                  <td style="vertical-align: top;">Y<br>
+</td>
+                  <td style="vertical-align: top;">Y<br>
+</td>
+                </tr>
+<tr>
+<td style="width: 40%;" align="left" valign="top">Feature:
+laxly schema
+valid
+Signature element generation<br>
+</td>
+                  <td align="left" valign="top">Y<br>
+</td>
+                  <td style="vertical-align: top;">Y<br>
+</td>
+                  <td style="vertical-align: top;">Y<br>
+</td>
+                  <td style="vertical-align: top;">Y<br>
+</td>
+                </tr>
+<tr>
+<td style="width: 40%;" align="left" valign="top">XPointers
+'#xpointer(/)'<br>
 </td>
-             <td valign="top" align="left">Y<br>
+                  <td align="left" valign="top">Y<br>
 </td>
-             <td style="vertical-align: top;">Y<br>
+                  <td style="vertical-align: top;">Y<br>
 </td>
-             <td style="vertical-align: top;">Y<br>
+                  <td style="vertical-align: top;">Y<br>
 </td>
-             <td style="vertical-align: top;">Y<br>
+                  <td style="vertical-align: top;">Y<br>
 </td>
-
-           </tr>
+                </tr>
 <tr>
-<td valign="top" align="left"> <a href="http://www.w3.org/TR/2000/WD-xmldsig-core-20001012/#sec-SignatureValue%20"> 
-SignatureValue</a> generation/validation<br>
+<td style="width: 40%;" align="left" valign="top">XPointers
+'#xpointer(id("<em>ID</em>"))'<br>
+</td>
+                  <td align="left" valign="top">Y<br>
+</td>
+                  <td style="vertical-align: top;">Y<br>
 </td>
-             <td valign="top" align="left">MUST<br>
+                  <td style="vertical-align: top;">Y<br>
 </td>
-             <td valign="top" align="left">Y<br>
+                  <td style="vertical-align: top;">Y<br>
+</td>
+                </tr>
+<tr>
+<td style="width: 40%;" align="left" valign="top">XPointers:
+full suppport </td>
+                  <td align="left" valign="top">Y<br>
 </td>
-             <td style="vertical-align: top;">Y<br>
+                  <td style="vertical-align: top;">Y<br>
 </td>
-             <td style="vertical-align: top;">Y<br>
+                  <td style="vertical-align: top;">Y<br>
 </td>
-             <td style="vertical-align: top;">Y<br>
+                  <td style="vertical-align: top;">Y<br>
 </td>
-
-           </tr>
+                </tr>
 <tr>
-<td valign="top" align="left"> <a href="http://www.w3.org/TR/xmldsig-core/#sec-Manifest"> Manifest</a> DigestValue
-generation/valdiation<br>
+<td style="width: 40%;" align="left" valign="top">XPath
+                  <br>
 </td>
-             <td valign="top" align="left">MAY</td>
-             <td valign="top" align="left">Y<br>
+                  <td align="left" valign="top">Y<br>
 </td>
-             <td style="vertical-align: top;">Y<br>
+                  <td style="vertical-align: top;">Y<br>
 </td>
-             <td style="vertical-align: top;">Y<br>
+                  <td style="vertical-align: top;">Y<br>
 </td>
-             <td style="vertical-align: top;">Y<br>
+                  <td style="vertical-align: top;">Y<br>
 </td>
-
-           </tr>
+                </tr>
 <tr>
-<td valign="top" align="left"> Feature: <a href="http://www.w3.org/TR/xmldsig-core/#sec-Signature"> laxly schema valid
-Signature element</a> generation<br>
+<td style="width: 40%;" align="left" valign="top">the
+dsig XPath 'here()'
+function (can be used to implement enveloped signature)<br>
 </td>
-             <td valign="top" align="left">MUST<br>
+                  <td align="left" valign="top">Y<br>
 </td>
-             <td valign="top" align="left">Y<br>
+                  <td style="vertical-align: top;">Y<br>
 </td>
-             <td style="vertical-align: top;">Y<br>
+                  <td style="vertical-align: top;">Y<br>
+</td>
+                  <td style="vertical-align: top;">Y<br>
+</td>
+                </tr>
+<tr>
+<td style="width: 40%;" align="left" valign="top">XSLT
+(note, the child <code>
+XSLT</code>
+element of Transform has been deprecated.)<br>
 </td>
-             <td style="vertical-align: top;">Y<br>
+                  <td align="left" valign="top">Y<br>
 </td>
-             <td style="vertical-align: top;">Y<br>
+                  <td style="vertical-align: top;">Y<br>
 </td>
-
-           </tr>
+                  <td style="vertical-align: top;">Y<br>
+</td>
+                  <td style="vertical-align: top;">Y<br>
+</td>
+                </tr>
 <tr>
-<td valign="top" align="left"> <a href="http://www.w3.org/TR/xmldsig-core/#sec-ReferenceProcessingModel"> XPointers</a>
-'#xpointer(/)'<br>
+<td style="width: 40%;" align="left" valign="top">RetrievalMethod
+(e.g.,
+X509Data)<br>
 </td>
-             <td valign="top" align="left">SHOULD <br>
+                  <td align="left" valign="top">Y<br>
 </td>
-             <td valign="top" align="left">Y<br>
+                  <td style="vertical-align: top;">Y<br>
 </td>
-             <td style="vertical-align: top;">Y<br>
+                  <td style="vertical-align: top;">Y<br>
 </td>
-             <td style="vertical-align: top;">Y<br>
+                  <td style="vertical-align: top;">Y<br>
+</td>
+                </tr>
+<tr>
+<td style="width: 40%;" align="left" valign="top">SHA1
+                  <br>
 </td>
-             <td style="vertical-align: top;">Y<br>
+                  <td align="left" valign="top">Y<br>
 </td>
-
-           </tr>
+                  <td style="vertical-align: top;">Y<br>
+</td>
+                  <td style="vertical-align: top;">Y<br>
+</td>
+                  <td style="vertical-align: top;">Y<br>
+</td>
+                </tr>
 <tr>
-<td valign="top" align="left"> <a href="http://www.w3.org/TR/xmldsig-core/#sec-ReferenceProcessingModel"> XPointers</a>
-'#xpointer(id("<em>ID</em>"))'<br>
+<td style="width: 40%;" align="left" valign="top">Base64
+                  <br>
 </td>
-             <td valign="top" align="left">SHOULD <br>
+                  <td align="left" valign="top">Y<br>
 </td>
-             <td valign="top" align="left">Y<br>
+                  <td style="vertical-align: top;">Y<br>
 </td>
-             <td style="vertical-align: top;">Y<br>
+                  <td style="vertical-align: top;">Y<br>
 </td>
-             <td style="vertical-align: top;">Y<br>
+                  <td style="vertical-align: top;">Y<br>
 </td>
-             <td style="vertical-align: top;">Y<br>
+                </tr>
+<tr>
+<td style="width: 40%;" align="left" valign="top">HMAC-SHA1
+                  <br>
+</td>
+                  <td align="left" valign="top">Y<br>
+</td>
+                  <td style="vertical-align: top;">Y<br>
+</td>
+                  <td style="vertical-align: top;">Y<br>
+</td>
+                  <td style="vertical-align: top;">N<br>
 </td>
-
-           </tr>
+                </tr>
 <tr>
-<td valign="top" align="left"> <a href="http://www.w3.org/TR/xmldsig-core/#sec-ReferenceProcessingModel"> XPointers</a>:
-full suppport </td>
-             <td valign="top" align="left">MAY <br>
+<td style="width: 40%;" align="left" valign="top">DSAwithSHA1<br>
+(DSS) <br>
 </td>
-             <td valign="top" align="left">Y<br>
+                  <td align="left" valign="top">Y<a href="#dsa-sha1"><sup>(1)</sup></a>
+                  <br>
 </td>
-             <td style="vertical-align: top;">Y<br>
+                  <td style="vertical-align: top;">N<br>
 </td>
-             <td style="vertical-align: top;">Y<br>
+                  <td style="vertical-align: top;">Y<br>
 </td>
-             <td style="vertical-align: top;">Y<br>
+                  <td style="vertical-align: top;">Y<br>
 </td>
-
-           </tr>
+                </tr>
 <tr>
-<td valign="top" align="left"> <a href="http://www.w3.org/TR/xmldsig-core/#sec-XPath"> XPath</a> <br>
+<td style="width: 40%;" align="left" valign="top">RSAwithSHA1
+                  <br>
 </td>
-             <td valign="top" align="left">SHOULD <br>
+                  <td align="left" valign="top">Y<br>
 </td>
-             <td valign="top" align="left">Y<br>
+                  <td style="vertical-align: top;">N<br>
 </td>
-             <td style="vertical-align: top;">Y<br>
+                  <td style="vertical-align: top;">Y<br>
+</td>
+                  <td style="vertical-align: top;">Y<br>
+</td>
+                </tr>
+<tr>
+<td style="width: 40%;" valign="top">X509 support<br>
 </td>
-             <td style="vertical-align: top;">Y<br>
+                  <td valign="top">Y<br>
 </td>
-             <td style="vertical-align: top;">Y<br>
+                  <td style="vertical-align: top;">N<br>
 </td>
-
-           </tr>
+                  <td style="vertical-align: top;">Y<br>
+</td>
+                  <td style="vertical-align: top;">Y<br>
+</td>
+                </tr>
 <tr>
-<td valign="top" align="left"> the dsig <a href="http://www.w3.org/TR/xmldsig-core/#sec-XPath"> XPath 'here()'</a>
-function (can be used to implement enveloped signature)<br>
+<td style="width: 40%;" align="left" valign="top">Minimal
+C14N (deprecated)<br>
 </td>
-             <td valign="top" align="left">SHOULD <br>
+                  <td align="left" valign="top">N<br>
 </td>
-             <td valign="top" align="left">Y<br>
+                  <td style="vertical-align: top;">N<br>
 </td>
-             <td style="vertical-align: top;">Y<br>
+                  <td style="vertical-align: top;">N<br>
 </td>
-             <td style="vertical-align: top;">Y<br>
+                  <td style="vertical-align: top;">N<br>
+</td>
+                </tr>
+<tr>
+<td style="width: 40%;" align="left" valign="top">Canonical
+XML
+(20010315)<br>
 </td>
-             <td style="vertical-align: top;">Y<br>
+                  <td align="left" valign="top">Y<br>
 </td>
-
-           </tr>
+                  <td style="vertical-align: top;">Y<br>
+</td>
+                  <td style="vertical-align: top;">Y<br>
+</td>
+                  <td style="vertical-align: top;">Y<br>
+</td>
+                </tr>
 <tr>
-<td valign="top" align="left"> XSLT (note, the child <code> XSLT</code>
-element of Transform has been   deprecated.)<br>
+<td style="width: 40%;" align="left" valign="top">Canonical
+XML
+with comments<br>
+</td>
+                  <td align="left" valign="top">Y<br>
 </td>
-             <td valign="top" align="left">MAY<br>
+                  <td style="vertical-align: top;">Y<br>
 </td>
-             <td valign="top" align="left">Y<br>
+                  <td style="vertical-align: top;">Y<br>
 </td>
-             <td style="vertical-align: top;">Y<br>
+                  <td style="vertical-align: top;">Y<br>
 </td>
-             <td style="vertical-align: top;">Y<br>
+                </tr>
+<tr>
+<td style="width: 40%;" align="left" valign="top">Exlusive
+Canonical
+XML <br>
+</td>
+                  <td align="left" valign="top">Y<br>
+</td>
+                  <td style="vertical-align: top;">Y<br>
 </td>
-             <td style="vertical-align: top;">Y<br>
+                  <td style="vertical-align: top;">Y<br>
 </td>
-
-           </tr>
+                  <td style="vertical-align: top;">Y<br>
+</td>
+                </tr>
 <tr>
-<td valign="top" align="left"> RetrievalMethod (e.g., X509Data)<br>
+<td style="width: 40%;" align="left" valign="top">Exlusive
+Canonical
+XML with comments<br>
+</td>
+                  <td align="left" valign="top">Y<br>
+</td>
+                  <td style="vertical-align: top;">Y<br>
 </td>
-             <td valign="top" align="left">SHOULD <br>
+                  <td style="vertical-align: top;">Y<br>
 </td>
-             <td valign="top" align="left">Y<br>
+                  <td style="vertical-align: top;">Y<br>
 </td>
-             <td style="vertical-align: top;">Y<br>
+                </tr>
+<tr>
+<td style="width: 40%;" align="left" valign="top">Enveloped
+Signature <br>
+</td>
+                  <td align="left" valign="top">Y<br>
 </td>
-             <td style="vertical-align: top;">Y<br>
+                  <td style="vertical-align: top;">Y<br>
 </td>
-             <td style="vertical-align: top;">Y<br>
+                  <td style="vertical-align: top;">Y<br>
 </td>
-
-           </tr>
+                  <td style="vertical-align: top;"><br></td>
+                </tr>
+</tbody></table>
+<div align="left"> <br><h4 style="text-align: center;">Additional XML Security
+Algorithms (<a href="http://www.ietf.org/rfc/rfc4051.txt">RFC 4051</a>)</h4>
+            <table style="width: 85%; text-align: left; margin-left: auto; margin-right: auto;" border="1" cellpadding="2" cellspacing="2"><tbody>
 <tr>
-<td valign="top" align="left"> <a href="http://www.w3.org/2000/09/xmldsig#sha1"> SHA1</a> <br>
+<td style="width: 40%;" align="left" valign="top"><b>Features
+and
+algorithms<br></b></td>
+                  <td align="left" valign="top"> <b>XMLSec with
+OpenSSL </b> </td>
+                  <td style="vertical-align: top;"><b>XMLSec with GnuTLS</b></td>
+                  <td style="vertical-align: top;"> <b>XMLSec with NSS</b>
+                  </td>
+                  <td style="vertical-align: top;"> <b>XMLSec with
+MSCrypto</b> </td>
+                </tr>
+<tr>
+<td style="vertical-align: top; width: 40%;">MD5<br>
+</td>
+                  <td style="vertical-align: top;">Y<br>
 </td>
-             <td valign="top" align="left">MUST<br>
+                  <td style="vertical-align: top;">N<br>
 </td>
-             <td valign="top" align="left">Y<br>
+                  <td style="vertical-align: top;">N<br>
 </td>
-             <td style="vertical-align: top;">Y<br>
+                  <td style="vertical-align: top;">N<br>
 </td>
-             <td style="vertical-align: top;">Y<br>
+                </tr>
+<tr>
+<td style="vertical-align: top; width: 40%;">SHA224<br>
 </td>
-             <td style="vertical-align: top;">Y<br>
+                  <td style="vertical-align: top;">Y<br>
 </td>
-
-           </tr>
+                  <td style="vertical-align: top;">N<br>
+</td>
+                  <td style="vertical-align: top;">N<br>
+</td>
+                  <td style="vertical-align: top;">N<br>
+</td>
+                </tr>
 <tr>
-<td valign="top" align="left"> <a href="http://www.w3.org/2000/09/xmldsig#base64"> Base64</a> <br>
+<td style="vertical-align: top; width: 40%;">SHA256<br>
 </td>
-             <td valign="top" align="left">MUST<br>
+                  <td style="vertical-align: top;">Y<br>
 </td>
-             <td valign="top" align="left">Y<br>
+                  <td style="vertical-align: top;">N<br>
 </td>
-             <td style="vertical-align: top;">Y<br>
+                  <td style="vertical-align: top;">N<br>
+</td>
+                  <td style="vertical-align: top;">N<br>
+</td>
+                </tr>
+<tr>
+<td style="vertical-align: top; width: 40%;">SHA384<br>
 </td>
-             <td style="vertical-align: top;">Y<br>
+                  <td style="vertical-align: top;">Y<br>
 </td>
-             <td style="vertical-align: top;">Y<br>
+                  <td style="vertical-align: top;">N<br>
 </td>
-
-           </tr>
+                  <td style="vertical-align: top;">N<br>
+</td>
+                  <td style="vertical-align: top;">N<br>
+</td>
+                </tr>
 <tr>
-<td valign="top" align="left"> <a href="http://www.w3.org/2000/09/xmldsig#hmac-sha1"> HMAC-SHA1</a> <br>
+<td style="vertical-align: top; width: 40%;">SHA512<br>
+</td>
+                  <td style="vertical-align: top;">Y<br>
 </td>
-             <td valign="top" align="left">MUST<br>
+                  <td style="vertical-align: top;">N<br>
 </td>
-             <td valign="top" align="left">Y<br>
+                  <td style="vertical-align: top;">N<br>
 </td>
-             <td style="vertical-align: top;">Y<br>
+                  <td style="vertical-align: top;">N<br>
+</td>
+                </tr>
+<tr>
+<td style="width: 40%;" align="left" valign="top">HMAC-MD5<br>
 </td>
-             <td style="vertical-align: top;">Y<br>
+                  <td align="left" valign="top">Y <br>
 </td>
-             <td style="vertical-align: top;">N<br>
+                  <td style="vertical-align: top;">Y<br>
 </td>
-
-           </tr>
+                  <td style="vertical-align: top;">Y<br>
+</td>
+                  <td style="vertical-align: top;">N<br>
+</td>
+                </tr>
 <tr>
-<td valign="top" align="left"> <a href="http://www.w3.org/2000/09/xmldsig#dsa"> DSAwithSHA1<br>
- (DSS)</a> <br>
+<td style="vertical-align: top; width: 40%;">HMAC-SHA224<br>
 </td>
-             <td valign="top" align="left">MUST<br>
+                  <td style="vertical-align: top;">Y<br>
 </td>
-             <td valign="top" align="left">Y<a href="#dsa-sha1"><sup>(1)</sup></a>
-                  <br>
+                  <td style="vertical-align: top;">N<br>
+</td>
+                  <td style="vertical-align: top;">N<br>
+</td>
+                  <td style="vertical-align: top;">N<br>
+</td>
+                </tr>
+<tr>
+<td style="vertical-align: top; width: 40%;">HMAC-SHA256</td>
+                  <td style="vertical-align: top;">Y<br>
 </td>
-             <td style="vertical-align: top;">N<br>
+                  <td style="vertical-align: top;">N<br>
 </td>
-             <td style="vertical-align: top;">Y<br>
+                  <td style="vertical-align: top;">N<br>
 </td>
-             <td style="vertical-align: top;">Y<br>
+                  <td style="vertical-align: top;">N<br>
 </td>
-
-           </tr>
+                </tr>
 <tr>
-<td valign="top" align="left"> <a href="http://www.w3.org/2000/09/xmldsig#rsa-sha1"> RSAwithSHA1</a> <br>
+<td style="vertical-align: top; width: 40%;">HMAC-SHA384</td>
+                  <td style="vertical-align: top;">Y<br>
+</td>
+                  <td style="vertical-align: top;">N<br>
+</td>
+                  <td style="vertical-align: top;">N<br>
 </td>
-             <td valign="top" align="left">SHOULD <br>
+                  <td style="vertical-align: top;">N<br>
 </td>
-             <td valign="top" align="left">Y<br>
+                </tr>
+<tr>
+<td style="width: 40%;" align="left" valign="top">HMAC-SHA512</td>
+                  <td align="left" valign="top">Y<br>
 </td>
-             <td style="vertical-align: top;">N<br>
+                  <td style="vertical-align: top;">N<br>
 </td>
-             <td style="vertical-align: top;">Y<br>
+                  <td style="vertical-align: top;">N<br>
 </td>
-             <td style="vertical-align: top;">Y<br>
+                  <td style="vertical-align: top;">N<br>
 </td>
-
-           </tr>
+                </tr>
 <tr>
-<td valign="top">X509 support<br>
+<td style="width: 40%;" valign="top">HMAC-RIPEMD160<br>
+</td>
+                  <td valign="top">Y<br>
 </td>
-             <td valign="top">SHOULD<br>
+                  <td style="vertical-align: top;">Y<br>
 </td>
-             <td valign="top">Y<br>
+                  <td style="vertical-align: top;">N<br>
 </td>
-             <td style="vertical-align: top;">N<br>
+                  <td style="vertical-align: top;">N<br>
 </td>
-             <td style="vertical-align: top;">Y<br>
+                </tr>
+<tr>
+<td style="vertical-align: top; width: 40%;">RSA-MD5<br>
 </td>
-             <td style="vertical-align: top;">Y<br>
+                  <td style="vertical-align: top;">Y<br>
 </td>
-
-           </tr>
+                  <td style="vertical-align: top;">N<br>
+</td>
+                  <td style="vertical-align: top;">N<br>
+</td>
+                  <td style="vertical-align: top;">N<br>
+</td>
+                </tr>
 <tr>
-<td valign="top" align="left"> <a href="http://www.w3.org/2000/09/xmldsig#minimal"> minimal</a> (deprecated)<br>
+<td style="vertical-align: top; width: 40%;">RSA-SHA224<br>
 </td>
-             <td valign="top" align="left">n/a<br>
+                  <td style="vertical-align: top;">Y<br>
 </td>
-             <td valign="top" align="left">N<br>
+                  <td style="vertical-align: top;">N<br>
 </td>
-             <td style="vertical-align: top;">N<br>
+                  <td style="vertical-align: top;">N<br>
+</td>
+                  <td style="vertical-align: top;">N<br>
+</td>
+                </tr>
+<tr>
+<td style="vertical-align: top; width: 40%;">RSA-SHA256<br>
 </td>
-             <td style="vertical-align: top;">N<br>
+                  <td style="vertical-align: top;">Y<br>
 </td>
-             <td style="vertical-align: top;">N<br>
+                  <td style="vertical-align: top;">N<br>
 </td>
-
-           </tr>
+                  <td style="vertical-align: top;">N<br>
+</td>
+                  <td style="vertical-align: top;">N<br>
+</td>
+                </tr>
 <tr>
-<td valign="top" align="left"> <a href="http://www.w3.org/TR/2000/WD-xml-c14n-20001011"> Canonical XML</a> 
-(20010315)<br>
+<td style="vertical-align: top; width: 40%;">RSA-SHA384<br>
+</td>
+                  <td style="vertical-align: top;">Y<br>
+</td>
+                  <td style="vertical-align: top;">N<br>
 </td>
-             <td valign="top" align="left">MUST<br>
+                  <td style="vertical-align: top;">N<br>
 </td>
-             <td valign="top" align="left">Y<br>
+                  <td style="vertical-align: top;">N<br>
 </td>
-             <td style="vertical-align: top;">Y<br>
+                </tr>
+<tr>
+<td style="vertical-align: top; width: 40%;">RSA-SHA512<br>
+</td>
+                  <td style="vertical-align: top;">Y<br>
+</td>
+                  <td style="vertical-align: top;">N<br>
 </td>
-             <td style="vertical-align: top;">Y<br>
+                  <td style="vertical-align: top;">N<br>
 </td>
-             <td style="vertical-align: top;">Y<br>
+                  <td style="vertical-align: top;">N<br>
 </td>
-
-           </tr>
+                </tr>
 <tr>
-<td valign="top" align="left"> <a href="http://www.w3.org/TR/2000/WD-xml-c14n-20001011"> Canonical XML</a> 
-with comments<br>
+<td style="vertical-align: top; width: 40%;">RSA-RIPEMD160</td>
+                  <td style="vertical-align: top;">Y<br>
+</td>
+                  <td style="vertical-align: top;">N<br>
+</td>
+                  <td style="vertical-align: top;">N<br>
 </td>
-             <td valign="top" align="left">SHOULD <br>
+                  <td style="vertical-align: top;">N<br>
 </td>
-             <td valign="top" align="left">Y<br>
+                </tr>
+<tr>
+<td style="vertical-align: top; width: 40%;">ECDSA-SHA1<br>
+</td>
+                  <td style="vertical-align: top;">N<br>
 </td>
-             <td style="vertical-align: top;">Y<br>
+                  <td style="vertical-align: top;">N<br>
 </td>
-             <td style="vertical-align: top;">Y<br>
+                  <td style="vertical-align: top;">N<br>
 </td>
-             <td style="vertical-align: top;">Y<br>
+                  <td style="vertical-align: top;">N<br>
 </td>
-
-           </tr>
+                </tr>
 <tr>
-<td valign="top" align="left"> <a href="http://www.w3.org/TR/2002/CR-xml-exc-c14n-20020212"> Exlusive Canonical
-XML</a> <br>
+<td style="vertical-align: top; width: 40%;">ECDSA-SHA224<br>
+</td>
+                  <td style="vertical-align: top;">N<br>
 </td>
-             <td valign="top" align="left">SHOULD <br>
+                  <td style="vertical-align: top;">N<br>
 </td>
-             <td valign="top" align="left">Y<br>
+                  <td style="vertical-align: top;">N<br>
+</td>
+                  <td style="vertical-align: top;">N<br>
+</td>
+                </tr>
+<tr>
+<td style="vertical-align: top; width: 40%;">ECDSA-SHA256</td>
+                  <td style="vertical-align: top;">N<br>
 </td>
-             <td style="vertical-align: top;">Y<br>
+                  <td style="vertical-align: top;">N<br>
 </td>
-             <td style="vertical-align: top;">Y<br>
+                  <td style="vertical-align: top;">N<br>
 </td>
-             <td style="vertical-align: top;">Y<br>
+                  <td style="vertical-align: top;">N<br>
 </td>
-
-           </tr>
+                </tr>
 <tr>
-<td valign="top" align="left"> <a href="http://www.w3.org/TR/2002/CR-xml-exc-c14n-20020212"> Exlusive Canonical
-XML</a> with comments<br>
+<td style="vertical-align: top; width: 40%;">ECDSA-SHA384</td>
+                  <td style="vertical-align: top;">N<br>
 </td>
-             <td valign="top" align="left">SHOULD <br>
+                  <td style="vertical-align: top;">N<br>
 </td>
-             <td valign="top" align="left">Y<br>
+                  <td style="vertical-align: top;">N<br>
 </td>
-             <td style="vertical-align: top;">Y<br>
+                  <td style="vertical-align: top;">N<br>
 </td>
-             <td style="vertical-align: top;">Y<br>
+                </tr>
+<tr>
+<td style="vertical-align: top; width: 40%;">ECDSA-SHA512</td>
+                  <td style="vertical-align: top;">N<br>
+</td>
+                  <td style="vertical-align: top;">N<br>
+</td>
+                  <td style="vertical-align: top;">N<br>
 </td>
-             <td style="vertical-align: top;">Y<br>
+                  <td style="vertical-align: top;">N<br>
 </td>
-
-           </tr>
+                </tr>
 <tr>
-<td valign="top" align="left"> <a href="http://www.w3.org/Signature/2001/04/05-xmldsig-interop.html#sec-EnvelopedSignature"> 
-Enveloped Signature</a> <br>
+<td style="vertical-align: top; width: 40%;">ESIGN-SHA1<br>
 </td>
-             <td valign="top" align="left">MUST<br>
+                  <td style="vertical-align: top;">N<br>
 </td>
-             <td valign="top" align="left">Y<br>
+                  <td style="vertical-align: top;">N<br>
 </td>
-             <td style="vertical-align: top;">Y<br>
+                  <td style="vertical-align: top;">N<br>
+</td>
+                  <td style="vertical-align: top;">N<br>
+</td>
+                </tr>
+<tr>
+<td style="vertical-align: top; width: 40%;">ESIGN-SHA224</td>
+                  <td style="vertical-align: top;">N<br>
 </td>
-             <td style="vertical-align: top;">Y<br>
+                  <td style="vertical-align: top;">N<br>
 </td>
-             <td style="vertical-align: top;">Y<br>
+                  <td style="vertical-align: top;">N<br>
 </td>
-
-           </tr>
+                  <td style="vertical-align: top;">N<br>
+</td>
+                </tr>
 <tr>
-<td valign="top"> <b>Additional algorithms</b> 	    (<a href="http://www.ietf.org/internet-drafts/draft-eastlake-xmldsig-uri-02.txt"> 
-*</a> )<br>
+<td style="vertical-align: top; width: 40%;">ESIGN-SHA256</td>
+                  <td style="vertical-align: top;">N<br>
+</td>
+                  <td style="vertical-align: top;">N<br>
+</td>
+                  <td style="vertical-align: top;">N<br>
 </td>
-             <td valign="top"><br></td>
-             <td valign="top"><br></td>
-             <td style="vertical-align: top;"><br></td>
-             <td style="vertical-align: top;"><br></td>
-             <td style="vertical-align: top;"><br></td>
-
-           </tr>
+                  <td style="vertical-align: top;">N<br>
+</td>
+                </tr>
 <tr>
-<td valign="top" align="left">HMAC-MD5<br>
+<td style="vertical-align: top; width: 40%;">ESIGN-SHA384</td>
+                  <td style="vertical-align: top;">N<br>
 </td>
-             <td valign="top" align="left">� <br>
+                  <td style="vertical-align: top;">N<br>
 </td>
-             <td valign="top" align="left">Y <br>
+                  <td style="vertical-align: top;">N<br>
 </td>
-             <td style="vertical-align: top;">Y<br>
+                  <td style="vertical-align: top;">N<br>
 </td>
-             <td style="vertical-align: top;">Y<br>
+                </tr>
+<tr>
+<td style="vertical-align: top; width: 40%;">ESIGN-SHA512</td>
+                  <td style="vertical-align: top;">N<br>
 </td>
-             <td style="vertical-align: top;">N<br>
+                  <td style="vertical-align: top;">N<br>
 </td>
-
-           </tr>
+                  <td style="vertical-align: top;">N<br>
+</td>
+                  <td style="vertical-align: top;">N<br>
+</td>
+                </tr>
+<tr>
+<td style="vertical-align: top; width: 40%;">Minimal
+C14N (deprecated) </td>
+                  <td style="vertical-align: top;">N<br>
+</td>
+                  <td style="vertical-align: top;">N<br>
+</td>
+                  <td style="vertical-align: top;">N<br>
+</td>
+                  <td style="vertical-align: top;">N<br>
+</td>
+                </tr>
 <tr>
-<td valign="top">HMAC-RIPEMD160<br>
+<td style="width: 40%;" align="left" valign="top">XPointer
+transform<br>
+</td>
+                  <td align="left" valign="top">Y <br>
+</td>
+                  <td style="vertical-align: top;">Y<br>
 </td>
-             <td valign="top">�<br>
+                  <td style="vertical-align: top;">Y<br>
+</td>
+                  <td style="vertical-align: top;">Y<br>
+</td>
+                </tr>
+<tr>
+<td style="vertical-align: top; width: 40%;">ARCFOUR
+Encryption<br>
 </td>
-             <td valign="top">Y<br>
+                  <td style="vertical-align: top;">N<br>
+</td>
+                  <td style="vertical-align: top;">N<br>
+</td>
+                  <td style="vertical-align: top;">N<br>
+</td>
+                  <td style="vertical-align: top;">N<br>
+</td>
+                </tr>
+<tr>
+<td style="vertical-align: top; width: 40%;">Camellia
+Block
+Encryption 128<br>
+</td>
+                  <td style="vertical-align: top;">N<br>
+</td>
+                  <td style="vertical-align: top;">N<br>
+</td>
+                  <td style="vertical-align: top;">N<br>
+</td>
+                  <td style="vertical-align: top;">N<br>
+</td>
+                </tr>
+<tr>
+<td style="vertical-align: top; width: 40%;">Camellia
+Block
+Encryption 192</td>
+                  <td style="vertical-align: top;">N<br>
 </td>
-             <td style="vertical-align: top;">Y<br>
+                  <td style="vertical-align: top;">N<br>
 </td>
-             <td style="vertical-align: top;">N<br>
+                  <td style="vertical-align: top;">N<br>
 </td>
-             <td style="vertical-align: top;">N<br>
+                  <td style="vertical-align: top;">N<br>
 </td>
-
-           </tr>
+                </tr>
 <tr>
-<td valign="top" align="left">XPointer transform<br>
+<td style="vertical-align: top; width: 40%;">Camellia
+Block
+Encryption 256<br>
 </td>
-             <td valign="top" align="left">� <br>
+                  <td style="vertical-align: top;">N<br>
+</td>
+                  <td style="vertical-align: top;">N<br>
+</td>
+                  <td style="vertical-align: top;">N<br>
+</td>
+                  <td style="vertical-align: top;">N<br>
+</td>
+                </tr>
+<tr>
+<td style="vertical-align: top; width: 40%;">Camellia
+Key Wrap 128<br>
+</td>
+                  <td style="vertical-align: top;">N<br>
+</td>
+                  <td style="vertical-align: top;">N<br>
+</td>
+                  <td style="vertical-align: top;">N<br>
+</td>
+                  <td style="vertical-align: top;">N<br>
+</td>
+                </tr>
+<tr>
+<td style="vertical-align: top; width: 40%;">Camellia
+Key Wrap 192</td>
+                  <td style="vertical-align: top;">N<br>
+</td>
+                  <td style="vertical-align: top;">N<br>
+</td>
+                  <td style="vertical-align: top;">N<br>
+</td>
+                  <td style="vertical-align: top;">N<br>
+</td>
+                </tr>
+<tr>
+<td style="vertical-align: top; width: 40%;">Camellia
+Key Wrap 256<br>
+</td>
+                  <td style="vertical-align: top;">N<br>
+</td>
+                  <td style="vertical-align: top;">N<br>
+</td>
+                  <td style="vertical-align: top;">N<br>
+</td>
+                  <td style="vertical-align: top;">N<br>
+</td>
+                </tr>
+<tr>
+<td style="vertical-align: top; width: 40%;">PSEC-KEM<br>
 </td>
-             <td valign="top" align="left">Y <br>
+                  <td style="vertical-align: top;">N<br>
 </td>
-             <td style="vertical-align: top;">Y<br>
+                  <td style="vertical-align: top;">N<br>
 </td>
-             <td style="vertical-align: top;">Y<br>
+                  <td style="vertical-align: top;">N<br>
 </td>
-             <td style="vertical-align: top;">Y<br>
+                  <td style="vertical-align: top;">N<br>
 </td>
-
-           </tr>
+                </tr>
 </tbody></table>
-<div align="left"> <br><a name="dsa-sha1"></a><sup>(1)</sup> Defining <a href="http://www.w3.org/TR/xmldsig-core/#sec-DSAKeyValue"> DSA key</a> with
+<br><br><a name="dsa-sha1"></a><sup>(1)</sup> Defining <a href="http://www.w3.org/TR/xmldsig-core/#sec-DSAKeyValue"> DSA key</a>
+with
 Seed and PgenCounter is not supported.<br><p>Test vectors (from <a href="http://www.w3.org/Signature/2001/04/05-xmldsig-interop.html">IETF/W3C
-XML  Signature WG: XML Signature Interoperability page</a>): <br><a href="http://lists.w3.org/Archives/Public/w3c-ietf-xmldsig/2002AprJun/att-0016/01-merlin-xmldsig-twenty-three.tar.gz"> 
-merlin-xmldsig-twenty-three.tar.gz</a> <br><a href="http://lists.w3.org/Archives/Public/w3c-ietf-xmldsig/2001AprJun/att-00%2033/01-merlin-xmldsig-sixteen.tar.gz"> 
-merlin-xmldsig-sixteen.tar.gz</a> (features, deprecated)<br><a href="http://lists.w3.org/Archives/Public/w3c-ietf-xmldsig/2001JanMar/att-0155/04-merlin-xmldsig-fifteen.tar.gz"> 
-merlin-xmldsig-fifteen.tar.gz</a> (algorithms, deprecated)<br></p>
-       </div>
-       </div>
-</td></tr>
-<tr><td>
-<br><br><p><a href="bugs.html">Aleksey Sanin</a></p>
-</td></tr>
-</table></td>
+XML Signature WG: XML Signature Interoperability page</a>): <br><a href="http://lists.w3.org/Archives/Public/w3c-ietf-xmldsig/2002AprJun/att-0016/01-merlin-xmldsig-twenty-three.tar.gz">merlin-xmldsig-twenty-three.tar.gz</a>
+            <br><a href="http://lists.w3.org/Archives/Public/w3c-ietf-xmldsig/2001AprJun/att-00%2033/01-merlin-xmldsig-sixteen.tar.gz">merlin-xmldsig-sixteen.tar.gz</a>
+(features, deprecated)<br><a href="http://lists.w3.org/Archives/Public/w3c-ietf-xmldsig/2001JanMar/att-0155/04-merlin-xmldsig-fifteen.tar.gz">merlin-xmldsig-fifteen.tar.gz</a>
+(algorithms, deprecated)<br></p>
+            </div>
+            </div>
+</td></tr></table></td>
 </tr></table></body>
 </html>
diff --git a/docs/xmlenc.html b/docs/xmlenc.html
index f465fc4..bac3e93 100644
--- a/docs/xmlenc.html
+++ b/docs/xmlenc.html
@@ -39,649 +39,523 @@
 <td width="15"></td>
 <td><a href="http://www.openssl.org/"><img src="images/openssl-logo.png" alt="OpenSSL" border="0"></a></td>
 </tr>
+<!--Sponsored links - start--><!--Sponsored links - end-->
 </table>
 </td>
-<td valign="top"><table width="100%" valign="top">
-<tr><td valign="top" align="left" id="xmlsecContent"><div align="center">       
-            <h2>  XML Encryption </h2>
-                               
-            <div align="left"> <a href="http://www.w3.org/TR/xmlenc-core">XML Encryption</a>    standard specifies
-the process for encryptind data and representing the  result in XML document.
-The data may be an XML element, or an XML element  content, or any arbitrary
-data (including XML document).                  </div>
-  
-            <div align="center"> 
-            <h3>XML Encryption Implementation and  Interoperability Report</h3>
- </div>
- 
-            <div align="center"> 
-            <p>       </p>
- 
-            <table cellpadding="2" cellspacing="2" border="1" width="85%"><tbody>
-<tr>
-<td valign="top" align="left"><b>Features and algorithms<br></b></td>
-             <td valign="top" align="left"><b>Key Word<br></b></td>
-             <td valign="top" align="left"> <b>XMLSec with OpenSSL</b> </td>
-             <td style="vertical-align: top;"><b>XMLSec with GnuTLS</b></td>
-             <td style="vertical-align: top;"> <b>XMLSec with NSS</b> </td>
-             <td style="vertical-align: top;"> <b>XMLSec with MSCrypto</b> </td>
-
-           </tr>
-<tr>
-<td valign="top" align="left"> <a href="http://www.w3.org/TR/xmlenc-core/#sec-Encryption-Syntax"> Laxly   valid
-schema generation</a> of <a href="http://www.w3.org/TR/xmlenc-core/#sec-EncryptedData">EncryptedData</a> 
-/<a href="http://www.w3.org/TR/xmlenc-core/#sec-EncryptedKey">EncryptedKey</a>
-                  <br>
-</td>
-             <td valign="top" align="left">MUST<br>
-</td>
-             <td valign="top" align="left">Y<br>
-</td>
-             <td style="vertical-align: top;">Y<br>
-</td>
-             <td style="vertical-align: top;">Y</td>
-             <td style="vertical-align: top;">Y</td>
-
-           </tr>
-<tr>
-<td valign="top" align="left">             
+<td valign="top"><table width="100%" valign="top"><tr><td valign="top" align="left" id="xmlsecContent"><div align="center">
+            <h2> XML Encryption </h2>
+            <div align="left"> <a href="http://www.w3.org/TR/xmlenc-core">XML Encryption</a> standard
+specifies
+the process for encryptind data and representing the result in XML
+document.
+The data may be an XML element, or an XML element content, or any
+arbitrary
+data (including XML document). </div>
+            <div align="center">
+            <h3>XML Security Library Interoperability Report</h3>
+            <h4 style="text-align: center;">XML Encryption (<a href="http://www.w3.org/TR/xmlenc-core/">W3C Recommendation</a>)</h4>
+            </div>
+            <div align="center">
+            <p> </p>
+            <table style="width: 85%;" border="1" cellpadding="2" cellspacing="2"><tbody>
+<tr>
+<td style="width: 40%;" align="left" valign="top"><b>Features
+and
+algorithms<br></b></td>
+                  <td align="left" valign="top"> <b>XMLSec with OpenSSL</b>
+                  </td>
+                  <td style="vertical-align: top;"><b>XMLSec with GnuTLS</b></td>
+                  <td style="vertical-align: top;"> <b>XMLSec with NSS</b>
+                  </td>
+                  <td style="vertical-align: top;"> <b>XMLSec with
+MSCrypto</b> </td>
+                </tr>
+<tr>
+<td style="width: 40%;" align="left" valign="top">Laxly
+valid
+schema generation of EncryptedData
+/EncryptedKey <br>
+</td>
+                  <td align="left" valign="top">Y<br>
+</td>
+                  <td style="vertical-align: top;">Y<br>
+</td>
+                  <td style="vertical-align: top;">Y</td>
+                  <td style="vertical-align: top;">Y</td>
+                </tr>
+<tr>
+<td style="width: 40%;" align="left" valign="top">
                   <ul>
 <li> Normalized Form C generations. </li>
-             
                   </ul>
 </td>
-             <td valign="top" align="left">SHOULD <br>
-</td>
-             <td valign="top" align="left">Y<br>
+                  <td align="left" valign="top">Y<br>
 </td>
-             <td style="vertical-align: top;">Y</td>
-             <td style="vertical-align: top;">Y</td>
-             <td style="vertical-align: top;">Y</td>
-
-           </tr>
+                  <td style="vertical-align: top;">Y</td>
+                  <td style="vertical-align: top;">Y</td>
+                  <td style="vertical-align: top;">Y</td>
+                </tr>
 <tr>
-<td valign="top" align="left"> <a href="http://www.w3.org/TR/xmlenc-core/#sec-EncryptedType"> Type,       MimeType,
-and Encoding</a> <br>
+<td style="width: 40%;" align="left" valign="top">Type,
+MimeType,
+and Encoding <br>
 </td>
-             <td valign="top" align="left">MUST <br>
+                  <td align="left" valign="top">Y<br>
 </td>
-             <td valign="top" align="left">Y<br>
-</td>
-             <td style="vertical-align: top;">Y</td>
-             <td style="vertical-align: top;">Y</td>
-             <td style="vertical-align: top;">Y</td>
-
-           </tr>
+                  <td style="vertical-align: top;">Y</td>
+                  <td style="vertical-align: top;">Y</td>
+                  <td style="vertical-align: top;">Y</td>
+                </tr>
 <tr>
-<td valign="top" align="left"> <a href="http://www.w3.org/TR/xmlenc-core/#sec-CipherReference"> CipherReference
-URI derefencing</a> <br>
-</td>
-             <td valign="top" align="left">MUST <br>
+<td style="width: 40%;" align="left" valign="top">CipherReference
+URI derefencing <br>
 </td>
-             <td valign="top" align="left">Y<br>
+                  <td align="left" valign="top">Y<br>
 </td>
-             <td style="vertical-align: top;">Y</td>
-             <td style="vertical-align: top;">Y</td>
-             <td style="vertical-align: top;">Y</td>
-
-           </tr>
+                  <td style="vertical-align: top;">Y</td>
+                  <td style="vertical-align: top;">Y</td>
+                  <td style="vertical-align: top;">Y</td>
+                </tr>
 <tr>
-<td valign="top" align="left">             
+<td style="width: 40%;" align="left" valign="top">
                   <ul>
 <li> Transforms </li>
-             
                   </ul>
 </td>
-             <td valign="top" align="left">OPTIONAL <br>
-</td>
-             <td valign="top" align="left">Y<br>
+                  <td align="left" valign="top">Y<br>
 </td>
-             <td style="vertical-align: top;">Y</td>
-             <td style="vertical-align: top;">Y</td>
-             <td style="vertical-align: top;">Y</td>
-
-           </tr>
+                  <td style="vertical-align: top;">Y</td>
+                  <td style="vertical-align: top;">Y</td>
+                  <td style="vertical-align: top;">Y</td>
+                </tr>
 <tr>
-<td valign="top" align="left"> <a href="http://www.w3.org/TR/xmlenc-core/#sec-Extensions-to-KeyInfo"> ds:KeyInfo</a>
+<td style="width: 40%;" align="left" valign="top">ds:KeyInfo
                   <br>
 </td>
-             <td valign="top" align="left">MUST <br>
+                  <td align="left" valign="top">Y<br>
 </td>
-             <td valign="top" align="left">Y<br>
-</td>
-             <td style="vertical-align: top;">Y</td>
-             <td style="vertical-align: top;">Y</td>
-             <td style="vertical-align: top;">Y</td>
-
-           </tr>
+                  <td style="vertical-align: top;">Y</td>
+                  <td style="vertical-align: top;">Y</td>
+                  <td style="vertical-align: top;">Y</td>
+                </tr>
 <tr>
-<td valign="top" align="left">             
+<td style="width: 40%;" align="left" valign="top">
                   <ul>
 <li> enc:DHKeyValue </li>
-             
                   </ul>
 </td>
-             <td valign="top" align="left">OPTIONAL <br>
-</td>
-             <td valign="top" align="left">N<br>
+                  <td align="left" valign="top">N<br>
 </td>
-             <td style="vertical-align: top;">N<br>
+                  <td style="vertical-align: top;">N<br>
 </td>
-             <td style="vertical-align: top;">N<br>
+                  <td style="vertical-align: top;">N<br>
 </td>
-             <td style="vertical-align: top;">N<br>
+                  <td style="vertical-align: top;">N<br>
 </td>
-
-           </tr>
+                </tr>
 <tr>
-<td valign="top" align="left">             
+<td style="width: 40%;" align="left" valign="top">
                   <ul>
 <li> ds:KeyName </li>
-             
                   </ul>
 </td>
-             <td valign="top" align="left">RECOMMENDED <br>
-</td>
-             <td valign="top" align="left">Y<br>
+                  <td align="left" valign="top">Y<br>
 </td>
-             <td style="vertical-align: top;">Y</td>
-             <td style="vertical-align: top;">Y</td>
-             <td style="vertical-align: top;">Y</td>
-
-           </tr>
+                  <td style="vertical-align: top;">Y</td>
+                  <td style="vertical-align: top;">Y</td>
+                  <td style="vertical-align: top;">Y</td>
+                </tr>
 <tr>
-<td valign="top" align="left">             
+<td style="width: 40%;" align="left" valign="top">
                   <ul>
-<li> <a href="http://www.w3.org/TR/xmlenc-core/#sec-ds:RetrievalMethod"> 
-ds:RetrievalMethod</a> </li>
-             
+<li> ds:RetrievalMethod </li>
                   </ul>
 </td>
-             <td valign="top" align="left"> REQUIRED<br>
+                  <td align="left" valign="top">Y<br>
 </td>
-             <td valign="top" align="left">Y<br>
-</td>
-             <td style="vertical-align: top;">Y</td>
-             <td style="vertical-align: top;">Y</td>
-             <td style="vertical-align: top;">Y</td>
-
-           </tr>
+                  <td style="vertical-align: top;">Y</td>
+                  <td style="vertical-align: top;">Y</td>
+                  <td style="vertical-align: top;">Y</td>
+                </tr>
 <tr>
-<td valign="top" align="left"> <a href="http://www.w3.org/TR/xmlenc-core/#sec-ReferenceList"> ReferenceList</a>
+<td style="width: 40%;" align="left" valign="top">ReferenceList
                   <br>
 </td>
-             <td valign="top" align="left">OPTIONAL <br>
-</td>
-             <td valign="top" align="left">N<br>
+                  <td align="left" valign="top">N<br>
 </td>
-             <td style="vertical-align: top;">N<br>
+                  <td style="vertical-align: top;">N<br>
 </td>
-             <td style="vertical-align: top;">N<br>
+                  <td style="vertical-align: top;">N<br>
 </td>
-             <td style="vertical-align: top;">N<br>
+                  <td style="vertical-align: top;">N<br>
 </td>
-
-           </tr>
+                </tr>
 <tr>
-<td valign="top" align="left"> <a href="http://www.w3.org/TR/xmlenc-core/#sec-EncryptionProperties"> EncryptionProperties</a>
+<td style="width: 40%;" align="left" valign="top">EncryptionProperties
                   <br>
 </td>
-             <td valign="top" align="left">OPTIONAL <br>
-</td>
-             <td valign="top" align="left">Y<br>
+                  <td align="left" valign="top">Y<br>
 </td>
-             <td style="vertical-align: top;">Y</td>
-             <td style="vertical-align: top;">Y</td>
-             <td style="vertical-align: top;">Y</td>
-
-           </tr>
+                  <td style="vertical-align: top;">Y</td>
+                  <td style="vertical-align: top;">Y</td>
+                  <td style="vertical-align: top;">Y</td>
+                </tr>
 <tr>
-<td valign="top" align="left"> Satisfactory Performance<br>
+<td style="width: 40%;" align="left" valign="top">Satisfactory
+Performance<br>
 </td>
-             <td valign="top" align="left">(required!)<br>
+                  <td align="left" valign="top">Y<br>
 </td>
-             <td valign="top" align="left">Y<br>
-</td>
-             <td style="vertical-align: top;">Y</td>
-             <td style="vertical-align: top;">Y</td>
-             <td style="vertical-align: top;">Y</td>
-
-           </tr>
+                  <td style="vertical-align: top;">Y</td>
+                  <td style="vertical-align: top;">Y</td>
+                  <td style="vertical-align: top;">Y</td>
+                </tr>
 <tr>
-<td valign="top" align="left"> <a href="http://www.w3.org/TR/xmlenc-core/#sec-Processing-XML"> Required   Type
-support: Element and Content.</a> <br>
-</td>
-             <td valign="top" align="left">MUST <br>
+<td style="width: 40%;" align="left" valign="top">Required
+Type
+support: Element and Content. <br>
 </td>
-             <td valign="top" align="left">Y<br>
+                  <td align="left" valign="top">Y<br>
 </td>
-             <td style="vertical-align: top;">Y</td>
-             <td style="vertical-align: top;">Y</td>
-             <td style="vertical-align: top;">Y</td>
-
-           </tr>
+                  <td style="vertical-align: top;">Y</td>
+                  <td style="vertical-align: top;">Y</td>
+                  <td style="vertical-align: top;">Y</td>
+                </tr>
 <tr>
-<td valign="top" align="left"> <a href="http://www.w3.org/TR/xmlenc-core/#sec-Processing-Encryption"> Encryption</a>
+<td style="width: 40%;" align="left" valign="top">Encryption
                   <br>
 </td>
-             <td valign="top" align="left">MUST <br>
-</td>
-             <td valign="top" align="left">Y<br>
+                  <td align="left" valign="top">Y<br>
 </td>
-             <td style="vertical-align: top;">Y</td>
-             <td style="vertical-align: top;">Y</td>
-             <td style="vertical-align: top;">Y</td>
-
-           </tr>
+                  <td style="vertical-align: top;">Y</td>
+                  <td style="vertical-align: top;">Y</td>
+                  <td style="vertical-align: top;">Y</td>
+                </tr>
 <tr>
-<td valign="top" align="left">             
+<td style="width: 40%;" align="left" valign="top">
                   <ul>
-<li> Serialization of XML Element and Content.                         
-  
+<li> Serialization of XML Element and Content.
                       <ol>
-<li> NFC conversion from non-Unicode  encodings.     </li>
-                 
+<li> NFC conversion from non-Unicode encodings.
+                        </li>
                       </ol>
 </li>
-             
                   </ul>
 </td>
-             <td valign="top" align="left">MAY<br>
- MUST <br>
+                  <td align="left" valign="top">Y<br>
 </td>
-             <td valign="top" align="left">Y<br>
-</td>
-             <td style="vertical-align: top;">Y</td>
-             <td style="vertical-align: top;">Y</td>
-             <td style="vertical-align: top;">Y</td>
-
-           </tr>
+                  <td style="vertical-align: top;">Y</td>
+                  <td style="vertical-align: top;">Y</td>
+                  <td style="vertical-align: top;">Y</td>
+                </tr>
 <tr>
-<td valign="top" align="left">             
+<td style="width: 40%;" align="left" valign="top">
                   <ul>
-<li> Encryptor returns EncryptedData structure.           </li>
-             
+<li> Encryptor returns EncryptedData structure. </li>
                   </ul>
 </td>
-             <td valign="top" align="left">MUST <br>
-</td>
-             <td valign="top" align="left">Y<br>
+                  <td align="left" valign="top">Y<br>
 </td>
-             <td style="vertical-align: top;">Y</td>
-             <td style="vertical-align: top;">Y</td>
-             <td style="vertical-align: top;">Y</td>
-
-           </tr>
+                  <td style="vertical-align: top;">Y</td>
+                  <td style="vertical-align: top;">Y</td>
+                  <td style="vertical-align: top;">Y</td>
+                </tr>
 <tr>
-<td valign="top" align="left">             
+<td style="width: 40%;" align="left" valign="top">
                   <ul>
-<li> Encryptor replaces EncryptedData into  source document (when Type is
-                Element or Content).      </li>
-             
+<li> Encryptor replaces EncryptedData into source
+document (when Type is Element or Content). </li>
                   </ul>
 </td>
-             <td valign="top" align="left">SHOULD <br>
-</td>
-             <td valign="top" align="left">Y<br>
+                  <td align="left" valign="top">Y<br>
 </td>
-             <td style="vertical-align: top;">Y</td>
-             <td style="vertical-align: top;">Y</td>
-             <td style="vertical-align: top;">Y</td>
-
-           </tr>
+                  <td style="vertical-align: top;">Y</td>
+                  <td style="vertical-align: top;">Y</td>
+                  <td style="vertical-align: top;">Y</td>
+                </tr>
 <tr>
-<td valign="top"> <a href="http://www.w3.org/TR/xmlenc-core/#sec-Processing-Decryption"> Decryption</a>
-                  <br>
-</td>
-             <td valign="top">MUST <br>
+<td style="width: 40%;" valign="top"> Decryption <br>
 </td>
-             <td valign="top">Y<br>
+                  <td valign="top">Y<br>
 </td>
-             <td style="vertical-align: top;">Y</td>
-             <td style="vertical-align: top;">Y</td>
-             <td style="vertical-align: top;">Y</td>
-
-           </tr>
+                  <td style="vertical-align: top;">Y</td>
+                  <td style="vertical-align: top;">Y</td>
+                  <td style="vertical-align: top;">Y</td>
+                </tr>
 <tr>
-<td valign="top" align="left">             
+<td style="width: 40%;" align="left" valign="top">
                   <ul>
-<li> The decryptor returns the data and its  Type to the application (be
-it                 an octet sequence or key value).    </li>
-             
+<li> The decryptor returns the data and its Type to
+the application (be
+it an octet sequence or key value). </li>
                   </ul>
 </td>
-             <td valign="top" align="left">MUST <br>
-</td>
-             <td valign="top" align="left">Y<br>
+                  <td align="left" valign="top">Y<br>
 </td>
-             <td style="vertical-align: top;">Y</td>
-             <td style="vertical-align: top;">Y</td>
-             <td style="vertical-align: top;">Y</td>
-
-           </tr>
+                  <td style="vertical-align: top;">Y</td>
+                  <td style="vertical-align: top;">Y</td>
+                  <td style="vertical-align: top;">Y</td>
+                </tr>
 <tr>
-<td valign="top" align="left">             
+<td style="width: 40%;" align="left" valign="top">
                   <ul>
-<li> If data is Element or Content the decryptor  return the UTF-8 encoding
-                XML character data. </li>
-             
+<li> If data is Element or Content the decryptor
+return the UTF-8 encoding XML character data. </li>
                   </ul>
 </td>
-             <td valign="top" align="left">MUST <br>
+                  <td align="left" valign="top">Y<br>
 </td>
-             <td valign="top" align="left">Y<br>
-</td>
-             <td style="vertical-align: top;">Y</td>
-             <td style="vertical-align: top;">Y</td>
-             <td style="vertical-align: top;">Y</td>
-
-           </tr>
+                  <td style="vertical-align: top;">Y</td>
+                  <td style="vertical-align: top;">Y</td>
+                  <td style="vertical-align: top;">Y</td>
+                </tr>
 <tr>
-<td valign="top" align="left">             
+<td style="width: 40%;" align="left" valign="top">
                   <ul>
-<li> If data is Element or Content the decryptor  replaces the EncryptedData
-                in the source document with the  decrypted data. </li>
-             
+<li> If data is Element or Content the decryptor
+replaces the EncryptedData in the source document with the decrypted
+data. </li>
                   </ul>
 </td>
-             <td valign="top" align="left">SHOULD <br>
-</td>
-             <td valign="top" align="left">Y<br>
+                  <td align="left" valign="top">Y<br>
 </td>
-             <td style="vertical-align: top;">Y</td>
-             <td style="vertical-align: top;">Y</td>
-             <td style="vertical-align: top;">Y</td>
-
-           </tr>
+                  <td style="vertical-align: top;">Y</td>
+                  <td style="vertical-align: top;">Y</td>
+                  <td style="vertical-align: top;">Y</td>
+                </tr>
 <tr>
-<td valign="top" align="left"> TRIPLEDES<br>
-</td>
-             <td valign="top" align="left"> REQUIRED<br>
+<td style="width: 40%;" align="left" valign="top">TRIPLEDES<br>
 </td>
-             <td valign="top" align="left">Y<br>
+                  <td align="left" valign="top">Y<br>
 </td>
-             <td style="vertical-align: top;">Y</td>
-             <td style="vertical-align: top;">Y</td>
-             <td style="vertical-align: top;">Y</td>
-
-           </tr>
+                  <td style="vertical-align: top;">Y</td>
+                  <td style="vertical-align: top;">Y</td>
+                  <td style="vertical-align: top;">Y</td>
+                </tr>
 <tr>
-<td valign="top" align="left"> AES-128<br>
+<td style="width: 40%;" align="left" valign="top">AES-128<br>
 </td>
-             <td valign="top" align="left"> REQUIRED<br>
+                  <td align="left" valign="top">Y<br>
 </td>
-             <td valign="top" align="left">Y<br>
-</td>
-             <td style="vertical-align: top;">Y</td>
-             <td style="vertical-align: top;">Y</td>
-             <td style="vertical-align: top;">Y</td>
-
-           </tr>
+                  <td style="vertical-align: top;">Y</td>
+                  <td style="vertical-align: top;">Y</td>
+                  <td style="vertical-align: top;">Y</td>
+                </tr>
 <tr>
-<td valign="top" align="left"> AES-256<br>
-</td>
-             <td valign="top" align="left"> REQUIRED<br>
+<td style="width: 40%;" align="left" valign="top">AES-256<br>
 </td>
-             <td valign="top" align="left">Y<br>
+                  <td align="left" valign="top">Y<br>
 </td>
-             <td style="vertical-align: top;">Y</td>
-             <td style="vertical-align: top;">Y</td>
-             <td style="vertical-align: top;">Y</td>
-
-           </tr>
+                  <td style="vertical-align: top;">Y</td>
+                  <td style="vertical-align: top;">Y</td>
+                  <td style="vertical-align: top;">Y</td>
+                </tr>
 <tr>
-<td valign="top"> AES-192<br>
-</td>
-             <td valign="top">OPTIONAL <br>
+<td style="width: 40%;" valign="top"> AES-192<br>
 </td>
-             <td valign="top">Y<br>
+                  <td valign="top">Y<br>
 </td>
-             <td style="vertical-align: top;">Y</td>
-             <td style="vertical-align: top;">Y</td>
-             <td style="vertical-align: top;">Y</td>
-
-           </tr>
+                  <td style="vertical-align: top;">Y</td>
+                  <td style="vertical-align: top;">Y</td>
+                  <td style="vertical-align: top;">Y</td>
+                </tr>
 <tr>
-<td valign="top" align="left"> RSA-v1.5 (192 bit  keys for AES or DES)<br>
+<td style="width: 40%;" align="left" valign="top">RSA-v1.5
+(192 bit keys
+for AES or DES)<br>
 </td>
-             <td valign="top" align="left"> REQUIRED<br>
+                  <td align="left" valign="top">Y<br>
 </td>
-             <td valign="top" align="left">Y<br>
+                  <td style="vertical-align: top;">N<br>
 </td>
-             <td style="vertical-align: top;">N<br>
-</td>
-             <td style="vertical-align: top;">N</td>
-             <td style="vertical-align: top;">Y</td>
-
-           </tr>
+                  <td style="vertical-align: top;">N</td>
+                  <td style="vertical-align: top;">Y</td>
+                </tr>
 <tr>
-<td valign="top"> RSA-OAEP (128 and 256 bit keys  for AES)<br>
-</td>
-             <td valign="top"> REQUIRED<br>
+<td style="width: 40%;" valign="top"> RSA-OAEP (128
+and 256 bit keys for
+AES)<br>
 </td>
-             <td valign="top">Y<a href="#rsa-oaep"><sup>(1)</sup></a> <br>
+                  <td valign="top">Y<a href="#rsa-oaep"><sup>(1)</sup></a>
+                  <br>
 </td>
-             <td style="vertical-align: top;">N</td>
-             <td style="vertical-align: top;">N</td>
-             <td style="vertical-align: top;">N</td>
-
-           </tr>
+                  <td style="vertical-align: top;">N</td>
+                  <td style="vertical-align: top;">N</td>
+                  <td style="vertical-align: top;">N</td>
+                </tr>
 <tr>
-<td valign="top"> Diffie-Hellman Key Agreement<br>
+<td style="width: 40%;" valign="top"> Diffie-Hellman
+Key Agreement<br>
 </td>
-             <td valign="top">OPTIONAL <br>
+                  <td valign="top">N<br>
 </td>
-             <td valign="top">N<br>
-</td>
-             <td style="vertical-align: top;">N</td>
-             <td style="vertical-align: top;">N</td>
-             <td style="vertical-align: top;">N</td>
-
-           </tr>
+                  <td style="vertical-align: top;">N</td>
+                  <td style="vertical-align: top;">N</td>
+                  <td style="vertical-align: top;">N</td>
+                </tr>
 <tr>
-<td valign="top"> TRIPLEDES Key Wrap<br>
-</td>
-             <td valign="top"> REQUIRED<br>
+<td style="width: 40%;" valign="top"> TRIPLEDES Key
+Wrap<br>
 </td>
-             <td valign="top">Y<br>
+                  <td valign="top">Y<br>
 </td>
-             <td style="vertical-align: top;">N</td>
-             <td style="vertical-align: top;">Y</td>
-             <td style="vertical-align: top;">N</td>
-
-           </tr>
+                  <td style="vertical-align: top;">N</td>
+                  <td style="vertical-align: top;">Y</td>
+                  <td style="vertical-align: top;">N</td>
+                </tr>
 <tr>
-<td valign="top"> AES-128 Key Wrap (128 bit keys)<br>
-</td>
-             <td valign="top"> REQUIRED<br>
+<td style="width: 40%;" valign="top"> AES-128 Key
+Wrap (128 bit keys)<br>
 </td>
-             <td valign="top">Y<br>
+                  <td valign="top">Y<br>
 </td>
-             <td style="vertical-align: top;">N</td>
-             <td style="vertical-align: top;">Y<br>
+                  <td style="vertical-align: top;">N</td>
+                  <td style="vertical-align: top;">Y<br>
 </td>
-             <td style="vertical-align: top;">N<br>
+                  <td style="vertical-align: top;">N<br>
 </td>
-
-           </tr>
+                </tr>
 <tr>
-<td valign="top"> AES-256 Key Wrap (256 bit keys)<br>
+<td style="width: 40%;" valign="top"> AES-256 Key
+Wrap (256 bit keys)<br>
 </td>
-             <td valign="top"> REQUIRED<br>
+                  <td valign="top">Y<br>
 </td>
-             <td valign="top">Y<br>
+                  <td style="vertical-align: top;">N</td>
+                  <td style="vertical-align: top;">Y<br>
 </td>
-             <td style="vertical-align: top;">N</td>
-             <td style="vertical-align: top;">Y<br>
+                  <td style="vertical-align: top;">N<br>
 </td>
-             <td style="vertical-align: top;">N<br>
-</td>
-
-           </tr>
+                </tr>
 <tr>
-<td valign="top"> AES-192 Key Wrap<br>
-</td>
-             <td valign="top">OPTIONAL <br>
+<td style="width: 40%;" valign="top"> AES-192 Key Wrap<br>
 </td>
-             <td valign="top">Y<br>
+                  <td valign="top">Y<br>
 </td>
-             <td style="vertical-align: top;">N</td>
-             <td style="vertical-align: top;">Y<br>
+                  <td style="vertical-align: top;">N</td>
+                  <td style="vertical-align: top;">Y<br>
 </td>
-             <td style="vertical-align: top;">N</td>
-
-           </tr>
+                  <td style="vertical-align: top;">N</td>
+                </tr>
 <tr>
-<td valign="top"> SHA1<br>
-</td>
-             <td valign="top">REQUIRED<br>
+<td style="width: 40%;" valign="top"> SHA1<br>
 </td>
-             <td valign="top">Y<br>
+                  <td valign="top">Y<br>
 </td>
-             <td style="vertical-align: top;">Y<br>
+                  <td style="vertical-align: top;">Y<br>
 </td>
-             <td style="vertical-align: top;">Y<br>
+                  <td style="vertical-align: top;">Y<br>
 </td>
-             <td style="vertical-align: top;">Y<br>
+                  <td style="vertical-align: top;">Y<br>
 </td>
-
-           </tr>
+                </tr>
 <tr>
-<td valign="top"> SHA256<br>
+<td style="width: 40%;" valign="top"> SHA256<br>
 </td>
-             <td valign="top">RECOMMENDED <br>
+                  <td valign="top">Y�<br>
 </td>
-             <td valign="top">N <br>
-</td>
-             <td style="vertical-align: top;">N</td>
-             <td style="vertical-align: top;">N</td>
-             <td style="vertical-align: top;">N</td>
-
-           </tr>
+                  <td style="vertical-align: top;">N</td>
+                  <td style="vertical-align: top;">N</td>
+                  <td style="vertical-align: top;">N</td>
+                </tr>
 <tr>
-<td valign="top"> SHA512<br>
-</td>
-             <td valign="top">OPTIONAL <br>
+<td style="width: 40%;" valign="top"> SHA512<br>
 </td>
-             <td valign="top">N <br>
+                  <td valign="top">Y<br>
 </td>
-             <td style="vertical-align: top;">N</td>
-             <td style="vertical-align: top;">N</td>
-             <td style="vertical-align: top;">N</td>
-
-           </tr>
+                  <td style="vertical-align: top;">N</td>
+                  <td style="vertical-align: top;">N</td>
+                  <td style="vertical-align: top;">N</td>
+                </tr>
 <tr>
-<td valign="top"> RIPEMD-160<br>
-</td>
-             <td valign="top">OPTIONAL <br>
+<td style="width: 40%;" valign="top"> RIPEMD-160<br>
 </td>
-             <td valign="top">Y<br>
+                  <td valign="top">Y<br>
 </td>
-             <td style="vertical-align: top;">Y<br>
+                  <td style="vertical-align: top;">Y<br>
 </td>
-             <td style="vertical-align: top;">N<br>
+                  <td style="vertical-align: top;">N<br>
 </td>
-             <td style="vertical-align: top;">N<br>
+                  <td style="vertical-align: top;">N<br>
 </td>
-
-           </tr>
+                </tr>
 <tr>
-<td valign="top"> <a href="http://www.w3.org/TR/xmldsig-core/"> XML Digital
-Signature</a> <br>
+<td style="width: 40%;" valign="top"> XML Digital
+Signature <br>
 </td>
-             <td valign="top">RECOMMENDED <br>
+                  <td valign="top">Y<br>
 </td>
-             <td valign="top">Y<br>
+                  <td style="vertical-align: top;">Y<br>
 </td>
-             <td style="vertical-align: top;">Y<br>
+                  <td style="vertical-align: top;">Y<br>
 </td>
-             <td style="vertical-align: top;">Y<br>
+                  <td style="vertical-align: top;">Y<br>
 </td>
-             <td style="vertical-align: top;">Y<br>
-</td>
-
-           </tr>
+                </tr>
 <tr>
-<td valign="top"> <a name="decryption-transform" id="decryption-transform" href="http://www.w3.org/TR/xmlenc-decrypt"> Decryption
-Transform for XML             Signature</a> <br>
-</td>
-             <td valign="top">RECOMMENDED <br>
+<td style="width: 40%;" valign="top"> Decryption
+Transform for XML Signature <br>
 </td>
-             <td valign="top">N<br>
+                  <td valign="top">N<br>
 </td>
-             <td style="vertical-align: top;">N</td>
-             <td style="vertical-align: top;">N</td>
-             <td style="vertical-align: top;">N</td>
-
-           </tr>
+                  <td style="vertical-align: top;">N</td>
+                  <td style="vertical-align: top;">N</td>
+                  <td style="vertical-align: top;">N</td>
+                </tr>
 <tr>
-<td valign="top">             
+<td style="width: 40%;" valign="top">
                   <ul>
-<li> XPointer support in <code>Except</code><code> URI</code>.</li>
-             
+<li> XPointer support in <code>Except</code><code>
+URI</code>.</li>
                   </ul>
 </td>
-             <td valign="top">OPTIONAL <br>
-</td>
-             <td valign="top">N<br>
+                  <td valign="top">N<br>
 </td>
-             <td style="vertical-align: top;">N</td>
-             <td style="vertical-align: top;">N</td>
-             <td style="vertical-align: top;">N</td>
-
-           </tr>
+                  <td style="vertical-align: top;">N</td>
+                  <td style="vertical-align: top;">N</td>
+                  <td style="vertical-align: top;">N</td>
+                </tr>
 <tr>
-<td valign="top">             
-                  <p> <a href="http://www.w3.org/TR/xml-c14n">Canonical XML</a> 
-(with and               without comments) </p>
-             </td>
-             <td valign="top">OPTIONAL <br>
+<td style="width: 40%;" valign="top">
+                  <p> Canonical
+XML (with and without comments) </p>
+                  </td>
+                  <td valign="top">Y<br>
 </td>
-             <td valign="top">Y<br>
+                  <td style="vertical-align: top;">Y<br>
 </td>
-             <td style="vertical-align: top;">Y<br>
-</td>
-             <td style="vertical-align: top;">Y</td>
-             <td style="vertical-align: top;">Y</td>
-
-           </tr>
+                  <td style="vertical-align: top;">Y</td>
+                  <td style="vertical-align: top;">Y</td>
+                </tr>
 <tr>
-<td valign="top"> <a href="http://www.w3.org/TR/xml-exc-c14n"> Exclusive
-Canonicalization</a> (with and without comments)<br>
-</td>
-             <td valign="top">OPTIONAL <br>
+<td style="width: 40%;" valign="top"> Exclusive
+Canonicalization (with and without comments)<br>
 </td>
-             <td valign="top">Y<br>
+                  <td valign="top">Y<br>
 </td>
-             <td style="vertical-align: top;">Y</td>
-             <td style="vertical-align: top;">Y</td>
-             <td style="vertical-align: top;">Y</td>
-
-           </tr>
+                  <td style="vertical-align: top;">Y</td>
+                  <td style="vertical-align: top;">Y</td>
+                  <td style="vertical-align: top;">Y</td>
+                </tr>
 <tr>
-<td valign="top"> base64 Encoding<br>
-</td>
-             <td valign="top"> REQUIRED<br>
+<td style="width: 40%;" valign="top">Base64 Encoding<br>
 </td>
-             <td valign="top">Y<br>
+                  <td valign="top">Y<br>
 </td>
-             <td style="vertical-align: top;">Y</td>
-             <td style="vertical-align: top;">Y</td>
-             <td style="vertical-align: top;">Y</td>
-
-           </tr>
+                  <td style="vertical-align: top;">Y</td>
+                  <td style="vertical-align: top;">Y</td>
+                  <td style="vertical-align: top;">Y</td>
+                </tr>
 </tbody></table>
-<div align="left"> <br><a name="rsa-oaep"></a> <sup>(1)</sup> OpenSSL (and XML Security 
-Library) supports only SHA1 as the digest in the RSA-OAEP key transport.<br><p> <b>Test vectors (from <a href="http://www.w3.org/Encryption/2002/02-xenc-interop.html">W3C XML  Encryption
-interop page</a>):  </b><br><a href="http://lists.w3.org/Archives/Public/xml-encryption/2002Mar/0008.html"> 
-merlin-xmlenc-five.tar.gz</a> <br><a href="http://lists.w3.org/Archives/Public/xml-encryption/2002Mar/att-0052/01-phaos-xmlenc-3.zip"> 
-phaos-xmlenc-3.zip</a> <br></p>
-       </div>
-       </div>
- </div></td></tr>
-<tr><td>
-<br><br><p><a href="bugs.html">Aleksey Sanin</a></p>
-</td></tr>
-</table></td>
+<div align="left"> <br><a name="rsa-oaep"></a> <sup>(1)</sup> OpenSSL (and XML
+Security Library) supports only SHA1 as the digest in the RSA-OAEP key
+transport.<br><p> <b>Test vectors (from <a href="http://www.w3.org/Encryption/2002/02-xenc-interop.html">W3C XML
+Encryption
+interop page</a>): </b><br><a href="http://lists.w3.org/Archives/Public/xml-encryption/2002Mar/0008.html">merlin-xmlenc-five.tar.gz</a>
+            <br><a href="http://lists.w3.org/Archives/Public/xml-encryption/2002Mar/att-0052/01-phaos-xmlenc-3.zip">phaos-xmlenc-3.zip</a>
+            <br></p>
+            </div>
+            </div>
+            </div></td></tr></table></td>
 </tr></table></body>
 </html>
diff --git a/docs/xmlsec-man.html b/docs/xmlsec-man.html
index fc52335..07bb38c 100644
--- a/docs/xmlsec-man.html
+++ b/docs/xmlsec-man.html
@@ -39,12 +39,12 @@
 <td width="15"></td>
 <td><a href="http://www.openssl.org/"><img src="images/openssl-logo.png" alt="OpenSSL" border="0"></a></td>
 </tr>
+<!--Sponsored links - start--><!--Sponsored links - end-->
 </table>
 </td>
-<td valign="top"><table width="100%" valign="top">
-<tr><td valign="top" align="left" id="xmlsecContent">
+<td valign="top"><table width="100%" valign="top"><tr><td valign="top" align="left" id="xmlsecContent">
 <h1>XMLSEC1</h1>
-<p> Section: User Commands (1)<br>Updated: August 2004<br><a href="#index">Index</a> <a href="http://localhost/cgi-bin/man/man2html">Return to Main Contents</a></p>
+<p> Section: User Commands (1)<br>Updated: July 2005<br><a href="#index">Index</a> <a href="http://localhost/cgi-bin/man/man2html">Return to Main Contents</a></p>
 <hr>
 <a name="lbAB">�</a><h2>NAME</h2>
 <p>  xmlsec1 - sign, verify, encrypt and decrypt XML documents <a name="lbAC">�</a> </p>
@@ -292,11 +292,7 @@
 <dd> </dd>
 </dl>
 <hr>
-<p> This document was created by <a href="http://localhost/cgi-bin/man/man2html">man2html</a>, using the manual pages.<br> Time: 04:05:59 GMT, August 26, 2004 </p>
-</td></tr>
-<tr><td>
-<br><br><p><a href="bugs.html">Aleksey Sanin</a></p>
-</td></tr>
-</table></td>
+<p> This document was created by <a href="http://localhost/cgi-bin/man/man2html">man2html</a>, using the manual pages.<br> Time: 01:42:30 GMT, July 13, 2005 </p>
+</td></tr></table></td>
 </tr></table></body>
 </html>
diff --git a/include/Makefile.in b/include/Makefile.in
index e97f2cf..fdec126 100644
--- a/include/Makefile.in
+++ b/include/Makefile.in
@@ -1,4 +1,4 @@
-# Makefile.in generated by automake 1.8.3 from Makefile.am.
+# Makefile.in generated by automake 1.9.2 from Makefile.am.
 # @configure_input@
 
 # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
@@ -33,6 +33,7 @@ POST_INSTALL = :
 NORMAL_UNINSTALL = :
 PRE_UNINSTALL = :
 POST_UNINSTALL = :
+build_triplet = @build@
 host_triplet = @host@
 subdir = include
 DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in
@@ -103,8 +104,6 @@ LIBADD_DL = @LIBADD_DL@
 LIBOBJS = @LIBOBJS@
 LIBS = @LIBS@
 LIBTOOL = @LIBTOOL@
-LIBXML262_CFLAGS = @LIBXML262_CFLAGS@
-LIBXML262_LIBS = @LIBXML262_LIBS@
 LIBXML_CFLAGS = @LIBXML_CFLAGS@
 LIBXML_CONFIG = @LIBXML_CONFIG@
 LIBXML_LIBS = @LIBXML_LIBS@
@@ -128,8 +127,6 @@ NSS_CRYPTO_LIB = @NSS_CRYPTO_LIB@
 NSS_LIBS = @NSS_LIBS@
 NSS_MIN_VERSION = @NSS_MIN_VERSION@
 OBJEXT = @OBJEXT@
-OPENSSL097_CFLAGS = @OPENSSL097_CFLAGS@
-OPENSSL097_LIBS = @OPENSSL097_LIBS@
 OPENSSL_CFLAGS = @OPENSSL_CFLAGS@
 OPENSSL_CRYPTO_LIB = @OPENSSL_CRYPTO_LIB@
 OPENSSL_LIBS = @OPENSSL_LIBS@
@@ -192,6 +189,9 @@ XMLSEC_NO_HMAC = @XMLSEC_NO_HMAC@
 XMLSEC_NO_HMAC_FALSE = @XMLSEC_NO_HMAC_FALSE@
 XMLSEC_NO_HMAC_TRUE = @XMLSEC_NO_HMAC_TRUE@
 XMLSEC_NO_LIBXSLT = @XMLSEC_NO_LIBXSLT@
+XMLSEC_NO_MD5 = @XMLSEC_NO_MD5@
+XMLSEC_NO_MD5_FALSE = @XMLSEC_NO_MD5_FALSE@
+XMLSEC_NO_MD5_TRUE = @XMLSEC_NO_MD5_TRUE@
 XMLSEC_NO_NSS = @XMLSEC_NO_NSS@
 XMLSEC_NO_NSS_FALSE = @XMLSEC_NO_NSS_FALSE@
 XMLSEC_NO_NSS_TRUE = @XMLSEC_NO_NSS_TRUE@
@@ -207,6 +207,18 @@ XMLSEC_NO_RSA_TRUE = @XMLSEC_NO_RSA_TRUE@
 XMLSEC_NO_SHA1 = @XMLSEC_NO_SHA1@
 XMLSEC_NO_SHA1_FALSE = @XMLSEC_NO_SHA1_FALSE@
 XMLSEC_NO_SHA1_TRUE = @XMLSEC_NO_SHA1_TRUE@
+XMLSEC_NO_SHA224 = @XMLSEC_NO_SHA224@
+XMLSEC_NO_SHA224_FALSE = @XMLSEC_NO_SHA224_FALSE@
+XMLSEC_NO_SHA224_TRUE = @XMLSEC_NO_SHA224_TRUE@
+XMLSEC_NO_SHA256 = @XMLSEC_NO_SHA256@
+XMLSEC_NO_SHA256_FALSE = @XMLSEC_NO_SHA256_FALSE@
+XMLSEC_NO_SHA256_TRUE = @XMLSEC_NO_SHA256_TRUE@
+XMLSEC_NO_SHA384 = @XMLSEC_NO_SHA384@
+XMLSEC_NO_SHA384_FALSE = @XMLSEC_NO_SHA384_FALSE@
+XMLSEC_NO_SHA384_TRUE = @XMLSEC_NO_SHA384_TRUE@
+XMLSEC_NO_SHA512 = @XMLSEC_NO_SHA512@
+XMLSEC_NO_SHA512_FALSE = @XMLSEC_NO_SHA512_FALSE@
+XMLSEC_NO_SHA512_TRUE = @XMLSEC_NO_SHA512_TRUE@
 XMLSEC_NO_X509 = @XMLSEC_NO_X509@
 XMLSEC_NO_X509_FALSE = @XMLSEC_NO_X509_FALSE@
 XMLSEC_NO_X509_TRUE = @XMLSEC_NO_X509_TRUE@
@@ -244,6 +256,8 @@ am__fastdepCXX_TRUE = @am__fastdepCXX_TRUE@
 am__include = @am__include@
 am__leading_dot = @am__leading_dot@
 am__quote = @am__quote@
+am__tar = @am__tar@
+am__untar = @am__untar@
 bindir = @bindir@
 build = @build@
 build_alias = @build_alias@
@@ -389,14 +403,16 @@ TAGS: tags-recursive $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
 		$(TAGS_FILES) $(LISP)
 	tags=; \
 	here=`pwd`; \
-	if (etags --etags-include --version) >/dev/null 2>&1; then \
+	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 && \
+	    test ! -f $$subdir/TAGS || \
 	      tags="$$tags $$include_option=$$here/$$subdir/TAGS"; \
 	  fi; \
 	done; \
@@ -406,9 +422,11 @@ TAGS: tags-recursive $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
 	  done | \
 	  $(AWK) '    { files[$$0] = 1; } \
 	       END { for (i in files) print i; }'`; \
-	test -z "$(ETAGS_ARGS)$$tags$$unique" \
-	  || $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
-	     $$tags $$unique
+	if test -z "$(ETAGS_ARGS)$$tags$$unique"; then :; else \
+	  test -n "$$unique" || unique=$$empty_fix; \
+	  $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+	    $$tags $$unique; \
+	fi
 ctags: CTAGS
 CTAGS: ctags-recursive $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
 		$(TAGS_FILES) $(LISP)
@@ -459,15 +477,17 @@ distdir: $(DISTFILES)
 	    || exit 1; \
 	  fi; \
 	done
-	list='$(SUBDIRS)'; for subdir in $$list; do \
+	list='$(DIST_SUBDIRS)'; for subdir in $$list; do \
 	  if test "$$subdir" = .; then :; else \
 	    test -d "$(distdir)/$$subdir" \
-	    || mkdir "$(distdir)/$$subdir" \
+	    || $(mkdir_p) "$(distdir)/$$subdir" \
 	    || exit 1; \
+	    distdir=`$(am__cd) $(distdir) && pwd`; \
+	    top_distdir=`$(am__cd) $(top_distdir) && pwd`; \
 	    (cd $$subdir && \
 	      $(MAKE) $(AM_MAKEFLAGS) \
-	        top_distdir="../$(top_distdir)" \
-	        distdir="../$(distdir)/$$subdir" \
+	        top_distdir="$$top_distdir" \
+	        distdir="$$distdir/$$subdir" \
 	        distdir) \
 	      || exit 1; \
 	  fi; \
@@ -496,7 +516,7 @@ mostlyclean-generic:
 clean-generic:
 
 distclean-generic:
-	-rm -f $(CONFIG_CLEAN_FILES)
+	-test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
 
 maintainer-clean-generic:
 	@echo "This command is intended for maintainers to use"
diff --git a/include/xmlsec/Makefile.in b/include/xmlsec/Makefile.in
index 0d4bd1e..2912789 100644
--- a/include/xmlsec/Makefile.in
+++ b/include/xmlsec/Makefile.in
@@ -1,4 +1,4 @@
-# Makefile.in generated by automake 1.8.3 from Makefile.am.
+# Makefile.in generated by automake 1.9.2 from Makefile.am.
 # @configure_input@
 
 # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
@@ -34,6 +34,7 @@ POST_INSTALL = :
 NORMAL_UNINSTALL = :
 PRE_UNINSTALL = :
 POST_UNINSTALL = :
+build_triplet = @build@
 host_triplet = @host@
 subdir = include/xmlsec
 DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in \
@@ -53,6 +54,12 @@ RECURSIVE_TARGETS = all-recursive check-recursive dvi-recursive \
 	install-recursive installcheck-recursive installdirs-recursive \
 	pdf-recursive ps-recursive uninstall-info-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 = `echo $$p | sed -e 's|^.*/||'`;
 am__installdirs = "$(DESTDIR)$(xmlsecincdir)"
 xmlsecincHEADERS_INSTALL = $(INSTALL_HEADER)
 HEADERS = $(xmlsecinc_HEADERS)
@@ -108,8 +115,6 @@ LIBADD_DL = @LIBADD_DL@
 LIBOBJS = @LIBOBJS@
 LIBS = @LIBS@
 LIBTOOL = @LIBTOOL@
-LIBXML262_CFLAGS = @LIBXML262_CFLAGS@
-LIBXML262_LIBS = @LIBXML262_LIBS@
 LIBXML_CFLAGS = @LIBXML_CFLAGS@
 LIBXML_CONFIG = @LIBXML_CONFIG@
 LIBXML_LIBS = @LIBXML_LIBS@
@@ -133,8 +138,6 @@ NSS_CRYPTO_LIB = @NSS_CRYPTO_LIB@
 NSS_LIBS = @NSS_LIBS@
 NSS_MIN_VERSION = @NSS_MIN_VERSION@
 OBJEXT = @OBJEXT@
-OPENSSL097_CFLAGS = @OPENSSL097_CFLAGS@
-OPENSSL097_LIBS = @OPENSSL097_LIBS@
 OPENSSL_CFLAGS = @OPENSSL_CFLAGS@
 OPENSSL_CRYPTO_LIB = @OPENSSL_CRYPTO_LIB@
 OPENSSL_LIBS = @OPENSSL_LIBS@
@@ -197,6 +200,9 @@ XMLSEC_NO_HMAC = @XMLSEC_NO_HMAC@
 XMLSEC_NO_HMAC_FALSE = @XMLSEC_NO_HMAC_FALSE@
 XMLSEC_NO_HMAC_TRUE = @XMLSEC_NO_HMAC_TRUE@
 XMLSEC_NO_LIBXSLT = @XMLSEC_NO_LIBXSLT@
+XMLSEC_NO_MD5 = @XMLSEC_NO_MD5@
+XMLSEC_NO_MD5_FALSE = @XMLSEC_NO_MD5_FALSE@
+XMLSEC_NO_MD5_TRUE = @XMLSEC_NO_MD5_TRUE@
 XMLSEC_NO_NSS = @XMLSEC_NO_NSS@
 XMLSEC_NO_NSS_FALSE = @XMLSEC_NO_NSS_FALSE@
 XMLSEC_NO_NSS_TRUE = @XMLSEC_NO_NSS_TRUE@
@@ -212,6 +218,18 @@ XMLSEC_NO_RSA_TRUE = @XMLSEC_NO_RSA_TRUE@
 XMLSEC_NO_SHA1 = @XMLSEC_NO_SHA1@
 XMLSEC_NO_SHA1_FALSE = @XMLSEC_NO_SHA1_FALSE@
 XMLSEC_NO_SHA1_TRUE = @XMLSEC_NO_SHA1_TRUE@
+XMLSEC_NO_SHA224 = @XMLSEC_NO_SHA224@
+XMLSEC_NO_SHA224_FALSE = @XMLSEC_NO_SHA224_FALSE@
+XMLSEC_NO_SHA224_TRUE = @XMLSEC_NO_SHA224_TRUE@
+XMLSEC_NO_SHA256 = @XMLSEC_NO_SHA256@
+XMLSEC_NO_SHA256_FALSE = @XMLSEC_NO_SHA256_FALSE@
+XMLSEC_NO_SHA256_TRUE = @XMLSEC_NO_SHA256_TRUE@
+XMLSEC_NO_SHA384 = @XMLSEC_NO_SHA384@
+XMLSEC_NO_SHA384_FALSE = @XMLSEC_NO_SHA384_FALSE@
+XMLSEC_NO_SHA384_TRUE = @XMLSEC_NO_SHA384_TRUE@
+XMLSEC_NO_SHA512 = @XMLSEC_NO_SHA512@
+XMLSEC_NO_SHA512_FALSE = @XMLSEC_NO_SHA512_FALSE@
+XMLSEC_NO_SHA512_TRUE = @XMLSEC_NO_SHA512_TRUE@
 XMLSEC_NO_X509 = @XMLSEC_NO_X509@
 XMLSEC_NO_X509_FALSE = @XMLSEC_NO_X509_FALSE@
 XMLSEC_NO_X509_TRUE = @XMLSEC_NO_X509_TRUE@
@@ -249,6 +267,8 @@ am__fastdepCXX_TRUE = @am__fastdepCXX_TRUE@
 am__include = @am__include@
 am__leading_dot = @am__leading_dot@
 am__quote = @am__quote@
+am__tar = @am__tar@
+am__untar = @am__untar@
 bindir = @bindir@
 build = @build@
 build_alias = @build_alias@
@@ -362,7 +382,7 @@ install-xmlsecincHEADERS: $(xmlsecinc_HEADERS)
 	test -z "$(xmlsecincdir)" || $(mkdir_p) "$(DESTDIR)$(xmlsecincdir)"
 	@list='$(xmlsecinc_HEADERS)'; for p in $$list; do \
 	  if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
-	  f="`echo $$p | sed -e 's|^.*/||'`"; \
+	  f=$(am__strip_dir) \
 	  echo " $(xmlsecincHEADERS_INSTALL) '$$d$$p' '$(DESTDIR)$(xmlsecincdir)/$$f'"; \
 	  $(xmlsecincHEADERS_INSTALL) "$$d$$p" "$(DESTDIR)$(xmlsecincdir)/$$f"; \
 	done
@@ -370,7 +390,7 @@ install-xmlsecincHEADERS: $(xmlsecinc_HEADERS)
 uninstall-xmlsecincHEADERS:
 	@$(NORMAL_UNINSTALL)
 	@list='$(xmlsecinc_HEADERS)'; for p in $$list; do \
-	  f="`echo $$p | sed -e 's|^.*/||'`"; \
+	  f=$(am__strip_dir) \
 	  echo " rm -f '$(DESTDIR)$(xmlsecincdir)/$$f'"; \
 	  rm -f "$(DESTDIR)$(xmlsecincdir)/$$f"; \
 	done
@@ -448,14 +468,16 @@ TAGS: tags-recursive $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
 		$(TAGS_FILES) $(LISP)
 	tags=; \
 	here=`pwd`; \
-	if (etags --etags-include --version) >/dev/null 2>&1; then \
+	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 && \
+	    test ! -f $$subdir/TAGS || \
 	      tags="$$tags $$include_option=$$here/$$subdir/TAGS"; \
 	  fi; \
 	done; \
@@ -465,9 +487,11 @@ TAGS: tags-recursive $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
 	  done | \
 	  $(AWK) '    { files[$$0] = 1; } \
 	       END { for (i in files) print i; }'`; \
-	test -z "$(ETAGS_ARGS)$$tags$$unique" \
-	  || $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
-	     $$tags $$unique
+	if test -z "$(ETAGS_ARGS)$$tags$$unique"; then :; else \
+	  test -n "$$unique" || unique=$$empty_fix; \
+	  $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+	    $$tags $$unique; \
+	fi
 ctags: CTAGS
 CTAGS: ctags-recursive $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
 		$(TAGS_FILES) $(LISP)
@@ -518,15 +542,17 @@ distdir: $(DISTFILES)
 	    || exit 1; \
 	  fi; \
 	done
-	list='$(SUBDIRS)'; for subdir in $$list; do \
+	list='$(DIST_SUBDIRS)'; for subdir in $$list; do \
 	  if test "$$subdir" = .; then :; else \
 	    test -d "$(distdir)/$$subdir" \
-	    || mkdir "$(distdir)/$$subdir" \
+	    || $(mkdir_p) "$(distdir)/$$subdir" \
 	    || exit 1; \
+	    distdir=`$(am__cd) $(distdir) && pwd`; \
+	    top_distdir=`$(am__cd) $(top_distdir) && pwd`; \
 	    (cd $$subdir && \
 	      $(MAKE) $(AM_MAKEFLAGS) \
-	        top_distdir="../$(top_distdir)" \
-	        distdir="../$(distdir)/$$subdir" \
+	        top_distdir="$$top_distdir" \
+	        distdir="$$distdir/$$subdir" \
 	        distdir) \
 	      || exit 1; \
 	  fi; \
@@ -558,7 +584,7 @@ mostlyclean-generic:
 clean-generic:
 
 distclean-generic:
-	-rm -f $(CONFIG_CLEAN_FILES)
+	-test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
 
 maintainer-clean-generic:
 	@echo "This command is intended for maintainers to use"
@@ -619,8 +645,8 @@ uninstall-info: uninstall-info-recursive
 	ctags-recursive distclean distclean-generic distclean-libtool \
 	distclean-recursive distclean-tags distdir dvi dvi-am html \
 	html-am info info-am install install-am install-data \
-	install-data-am install-exec install-exec-am install-info \
-	install-info-am install-man install-strip \
+	install-data-am install-exec install-exec-am install-exec-hook \
+	install-info install-info-am install-man install-strip \
 	install-xmlsecincHEADERS installcheck installcheck-am \
 	installdirs installdirs-am maintainer-clean \
 	maintainer-clean-generic maintainer-clean-recursive \
diff --git a/include/xmlsec/app.h b/include/xmlsec/app.h
index 72c4a00..571cfe9 100644
--- a/include/xmlsec/app.h
+++ b/include/xmlsec/app.h
@@ -175,13 +175,14 @@ XMLSEC_EXPORT xmlSecTransformId			xmlSecTransformKWDes3GetKlass	(void);
  */
 #define xmlSecTransformDsaSha1Id		xmlSecTransformDsaSha1GetKlass()
 XMLSEC_EXPORT xmlSecTransformId			xmlSecTransformDsaSha1GetKlass	(void);	
+
 /**
- * xmlSecTransformHmacSha1Id:
+ * xmlSecTransformHmacMd5Id:
  * 
- * The HMAC with SHA1 signature transform klass.
+ * The HMAC with MD5 signature transform klass.
  */
-#define xmlSecTransformHmacSha1Id		xmlSecTransformHmacSha1GetKlass()
-XMLSEC_EXPORT xmlSecTransformId			xmlSecTransformHmacSha1GetKlass	(void);	
+#define xmlSecTransformHmacMd5Id		xmlSecTransformHmacMd5GetKlass()
+XMLSEC_EXPORT xmlSecTransformId			xmlSecTransformHmacMd5GetKlass	(void);	
 /**
  * xmlSecTransformHmacRipemd160Id:
  * 
@@ -190,12 +191,47 @@ XMLSEC_EXPORT xmlSecTransformId			xmlSecTransformHmacSha1GetKlass	(void);
 #define xmlSecTransformHmacRipemd160Id		xmlSecTransformHmacRipemd160GetKlass()
 XMLSEC_EXPORT xmlSecTransformId			xmlSecTransformHmacRipemd160GetKlass(void);
 /**
- * xmlSecTransformHmacMd5Id:
+ * xmlSecTransformHmacSha1Id:
  * 
- * The HMAC with MD5 signature transform klass.
+ * The HMAC with SHA1 signature transform klass.
  */
-#define xmlSecTransformHmacMd5Id		xmlSecTransformHmacMd5GetKlass()
-XMLSEC_EXPORT xmlSecTransformId			xmlSecTransformHmacMd5GetKlass	(void);	
+#define xmlSecTransformHmacSha1Id		xmlSecTransformHmacSha1GetKlass()
+XMLSEC_EXPORT xmlSecTransformId			xmlSecTransformHmacSha1GetKlass	(void);	
+/**
+ * xmlSecTransformHmacSha224Id:
+ * 
+ * The HMAC with SHA224 signature transform klass.
+ */
+#define xmlSecTransformHmacSha224Id		xmlSecTransformHmacSha224GetKlass()
+XMLSEC_EXPORT xmlSecTransformId			xmlSecTransformHmacSha224GetKlass	(void);	
+/**
+ * xmlSecTransformHmacSha256Id:
+ * 
+ * The HMAC with SHA256 signature transform klass.
+ */
+#define xmlSecTransformHmacSha256Id		xmlSecTransformHmacSha256GetKlass()
+XMLSEC_EXPORT xmlSecTransformId			xmlSecTransformHmacSha256GetKlass	(void);	
+/**
+ * xmlSecTransformHmacSha384Id:
+ * 
+ * The HMAC with SHA384 signature transform klass.
+ */
+#define xmlSecTransformHmacSha384Id		xmlSecTransformHmacSha384GetKlass()
+XMLSEC_EXPORT xmlSecTransformId			xmlSecTransformHmacSha384GetKlass	(void);	
+/**
+ * xmlSecTransformHmacSha512Id:
+ * 
+ * The HMAC with SHA512 signature transform klass.
+ */
+#define xmlSecTransformHmacSha512Id		xmlSecTransformHmacSha512GetKlass()
+XMLSEC_EXPORT xmlSecTransformId			xmlSecTransformHmacSha512GetKlass	(void);	
+/**
+ * xmlSecTransformMd5Id:
+ * 
+ * The MD5 digest transform klass.
+ */
+#define xmlSecTransformMd5Id			xmlSecTransformMd5GetKlass()
+XMLSEC_EXPORT xmlSecTransformId			xmlSecTransformMd5GetKlass(void);
 /**
  * xmlSecTransformRipemd160Id:
  * 
@@ -204,6 +240,20 @@ XMLSEC_EXPORT xmlSecTransformId			xmlSecTransformHmacMd5GetKlass	(void);
 #define xmlSecTransformRipemd160Id		xmlSecTransformRipemd160GetKlass()
 XMLSEC_EXPORT xmlSecTransformId			xmlSecTransformRipemd160GetKlass(void);
 /**
+ * xmlSecTransformRsaMd5Id:
+ * 
+ * The RSA-MD5 signature transform klass.
+ */
+#define xmlSecTransformRsaMd5Id			xmlSecTransformRsaMd5GetKlass()
+XMLSEC_EXPORT xmlSecTransformId			xmlSecTransformRsaMd5GetKlass	(void);	
+/**
+ * xmlSecTransformRsaRipemd160Id:
+ * 
+ * The RSA-RIPEMD160 signature transform klass.
+ */
+#define xmlSecTransformRsaRipemd160Id		xmlSecTransformRsaRipemd160GetKlass()
+XMLSEC_EXPORT xmlSecTransformId			xmlSecTransformRsaRipemd160GetKlass	(void);	
+/**
  * xmlSecTransformRsaSha1Id:
  * 
  * The RSA-SHA1 signature transform klass.
@@ -211,6 +261,35 @@ XMLSEC_EXPORT xmlSecTransformId			xmlSecTransformRipemd160GetKlass(void);
 #define xmlSecTransformRsaSha1Id		xmlSecTransformRsaSha1GetKlass()
 XMLSEC_EXPORT xmlSecTransformId			xmlSecTransformRsaSha1GetKlass	(void);	
 /**
+ * xmlSecTransformRsaSha224Id:
+ * 
+ * The RSA-SHA224 signature transform klass.
+ */
+#define xmlSecTransformRsaSha224Id		xmlSecTransformRsaSha224GetKlass()
+XMLSEC_EXPORT xmlSecTransformId			xmlSecTransformRsaSha224GetKlass	(void);	
+/**
+ * xmlSecTransformRsaSha256Id:
+ * 
+ * The RSA-SHA256 signature transform klass.
+ */
+#define xmlSecTransformRsaSha256Id		xmlSecTransformRsaSha256GetKlass()
+XMLSEC_EXPORT xmlSecTransformId			xmlSecTransformRsaSha256GetKlass	(void);	
+/**
+ * xmlSecTransformRsaSha384Id:
+ * 
+ * The RSA-SHA384 signature transform klass.
+ */
+#define xmlSecTransformRsaSha384Id		xmlSecTransformRsaSha384GetKlass()
+XMLSEC_EXPORT xmlSecTransformId			xmlSecTransformRsaSha384GetKlass	(void);	
+/**
+ * xmlSecTransformRsaSha512Id:
+ * 
+ * The RSA-SHA512 signature transform klass.
+ */
+#define xmlSecTransformRsaSha512Id		xmlSecTransformRsaSha512GetKlass()
+XMLSEC_EXPORT xmlSecTransformId			xmlSecTransformRsaSha512GetKlass	(void);	
+
+/**
  * xmlSecTransformRsaPkcs1Id:
  * 
  * The RSA PKCS1 key transport transform klass.
@@ -231,6 +310,34 @@ XMLSEC_EXPORT xmlSecTransformId			xmlSecTransformRsaOaepGetKlass	(void);
  */
 #define xmlSecTransformSha1Id			xmlSecTransformSha1GetKlass()
 XMLSEC_EXPORT xmlSecTransformId			xmlSecTransformSha1GetKlass	(void);
+/**
+ * xmlSecTransformSha224Id:
+ * 
+ * The SHA224 digest transform klass.
+ */
+#define xmlSecTransformSha224Id			xmlSecTransformSha224GetKlass()
+XMLSEC_EXPORT xmlSecTransformId			xmlSecTransformSha224GetKlass	(void);
+/**
+ * xmlSecTransformSha256Id:
+ * 
+ * The SHA256 digest transform klass.
+ */
+#define xmlSecTransformSha256Id			xmlSecTransformSha256GetKlass()
+XMLSEC_EXPORT xmlSecTransformId			xmlSecTransformSha256GetKlass	(void);
+/**
+ * xmlSecTransformSha384Id:
+ * 
+ * The SHA384 digest transform klass.
+ */
+#define xmlSecTransformSha384Id			xmlSecTransformSha384GetKlass()
+XMLSEC_EXPORT xmlSecTransformId			xmlSecTransformSha384GetKlass	(void);
+/**
+ * xmlSecTransformSha512Id:
+ * 
+ * The SHA512 digest transform klass.
+ */
+#define xmlSecTransformSha512Id			xmlSecTransformSha512GetKlass()
+XMLSEC_EXPORT xmlSecTransformId			xmlSecTransformSha512GetKlass	(void);
 
 /*********************************************************************
  *
diff --git a/include/xmlsec/gnutls/Makefile.in b/include/xmlsec/gnutls/Makefile.in
index 6ca022c..beedfe5 100644
--- a/include/xmlsec/gnutls/Makefile.in
+++ b/include/xmlsec/gnutls/Makefile.in
@@ -1,4 +1,4 @@
-# Makefile.in generated by automake 1.8.3 from Makefile.am.
+# Makefile.in generated by automake 1.9.2 from Makefile.am.
 # @configure_input@
 
 # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
@@ -34,6 +34,7 @@ POST_INSTALL = :
 NORMAL_UNINSTALL = :
 PRE_UNINSTALL = :
 POST_UNINSTALL = :
+build_triplet = @build@
 host_triplet = @host@
 subdir = include/xmlsec/gnutls
 DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in \
@@ -47,6 +48,12 @@ CONFIG_HEADER = $(top_builddir)/config.h
 CONFIG_CLEAN_FILES =
 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 = `echo $$p | sed -e 's|^.*/||'`;
 am__installdirs = "$(DESTDIR)$(xmlsecgnutlsincdir)"
 xmlsecgnutlsincHEADERS_INSTALL = $(INSTALL_HEADER)
 HEADERS = $(xmlsecgnutlsinc_HEADERS)
@@ -101,8 +108,6 @@ LIBADD_DL = @LIBADD_DL@
 LIBOBJS = @LIBOBJS@
 LIBS = @LIBS@
 LIBTOOL = @LIBTOOL@
-LIBXML262_CFLAGS = @LIBXML262_CFLAGS@
-LIBXML262_LIBS = @LIBXML262_LIBS@
 LIBXML_CFLAGS = @LIBXML_CFLAGS@
 LIBXML_CONFIG = @LIBXML_CONFIG@
 LIBXML_LIBS = @LIBXML_LIBS@
@@ -126,8 +131,6 @@ NSS_CRYPTO_LIB = @NSS_CRYPTO_LIB@
 NSS_LIBS = @NSS_LIBS@
 NSS_MIN_VERSION = @NSS_MIN_VERSION@
 OBJEXT = @OBJEXT@
-OPENSSL097_CFLAGS = @OPENSSL097_CFLAGS@
-OPENSSL097_LIBS = @OPENSSL097_LIBS@
 OPENSSL_CFLAGS = @OPENSSL_CFLAGS@
 OPENSSL_CRYPTO_LIB = @OPENSSL_CRYPTO_LIB@
 OPENSSL_LIBS = @OPENSSL_LIBS@
@@ -190,6 +193,9 @@ XMLSEC_NO_HMAC = @XMLSEC_NO_HMAC@
 XMLSEC_NO_HMAC_FALSE = @XMLSEC_NO_HMAC_FALSE@
 XMLSEC_NO_HMAC_TRUE = @XMLSEC_NO_HMAC_TRUE@
 XMLSEC_NO_LIBXSLT = @XMLSEC_NO_LIBXSLT@
+XMLSEC_NO_MD5 = @XMLSEC_NO_MD5@
+XMLSEC_NO_MD5_FALSE = @XMLSEC_NO_MD5_FALSE@
+XMLSEC_NO_MD5_TRUE = @XMLSEC_NO_MD5_TRUE@
 XMLSEC_NO_NSS = @XMLSEC_NO_NSS@
 XMLSEC_NO_NSS_FALSE = @XMLSEC_NO_NSS_FALSE@
 XMLSEC_NO_NSS_TRUE = @XMLSEC_NO_NSS_TRUE@
@@ -205,6 +211,18 @@ XMLSEC_NO_RSA_TRUE = @XMLSEC_NO_RSA_TRUE@
 XMLSEC_NO_SHA1 = @XMLSEC_NO_SHA1@
 XMLSEC_NO_SHA1_FALSE = @XMLSEC_NO_SHA1_FALSE@
 XMLSEC_NO_SHA1_TRUE = @XMLSEC_NO_SHA1_TRUE@
+XMLSEC_NO_SHA224 = @XMLSEC_NO_SHA224@
+XMLSEC_NO_SHA224_FALSE = @XMLSEC_NO_SHA224_FALSE@
+XMLSEC_NO_SHA224_TRUE = @XMLSEC_NO_SHA224_TRUE@
+XMLSEC_NO_SHA256 = @XMLSEC_NO_SHA256@
+XMLSEC_NO_SHA256_FALSE = @XMLSEC_NO_SHA256_FALSE@
+XMLSEC_NO_SHA256_TRUE = @XMLSEC_NO_SHA256_TRUE@
+XMLSEC_NO_SHA384 = @XMLSEC_NO_SHA384@
+XMLSEC_NO_SHA384_FALSE = @XMLSEC_NO_SHA384_FALSE@
+XMLSEC_NO_SHA384_TRUE = @XMLSEC_NO_SHA384_TRUE@
+XMLSEC_NO_SHA512 = @XMLSEC_NO_SHA512@
+XMLSEC_NO_SHA512_FALSE = @XMLSEC_NO_SHA512_FALSE@
+XMLSEC_NO_SHA512_TRUE = @XMLSEC_NO_SHA512_TRUE@
 XMLSEC_NO_X509 = @XMLSEC_NO_X509@
 XMLSEC_NO_X509_FALSE = @XMLSEC_NO_X509_FALSE@
 XMLSEC_NO_X509_TRUE = @XMLSEC_NO_X509_TRUE@
@@ -242,6 +260,8 @@ am__fastdepCXX_TRUE = @am__fastdepCXX_TRUE@
 am__include = @am__include@
 am__leading_dot = @am__leading_dot@
 am__quote = @am__quote@
+am__tar = @am__tar@
+am__untar = @am__untar@
 bindir = @bindir@
 build = @build@
 build_alias = @build_alias@
@@ -325,7 +345,7 @@ install-xmlsecgnutlsincHEADERS: $(xmlsecgnutlsinc_HEADERS)
 	test -z "$(xmlsecgnutlsincdir)" || $(mkdir_p) "$(DESTDIR)$(xmlsecgnutlsincdir)"
 	@list='$(xmlsecgnutlsinc_HEADERS)'; for p in $$list; do \
 	  if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
-	  f="`echo $$p | sed -e 's|^.*/||'`"; \
+	  f=$(am__strip_dir) \
 	  echo " $(xmlsecgnutlsincHEADERS_INSTALL) '$$d$$p' '$(DESTDIR)$(xmlsecgnutlsincdir)/$$f'"; \
 	  $(xmlsecgnutlsincHEADERS_INSTALL) "$$d$$p" "$(DESTDIR)$(xmlsecgnutlsincdir)/$$f"; \
 	done
@@ -333,7 +353,7 @@ install-xmlsecgnutlsincHEADERS: $(xmlsecgnutlsinc_HEADERS)
 uninstall-xmlsecgnutlsincHEADERS:
 	@$(NORMAL_UNINSTALL)
 	@list='$(xmlsecgnutlsinc_HEADERS)'; for p in $$list; do \
-	  f="`echo $$p | sed -e 's|^.*/||'`"; \
+	  f=$(am__strip_dir) \
 	  echo " rm -f '$(DESTDIR)$(xmlsecgnutlsincdir)/$$f'"; \
 	  rm -f "$(DESTDIR)$(xmlsecgnutlsincdir)/$$f"; \
 	done
@@ -358,9 +378,11 @@ TAGS:  $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
 	  done | \
 	  $(AWK) '    { files[$$0] = 1; } \
 	       END { for (i in files) print i; }'`; \
-	test -z "$(ETAGS_ARGS)$$tags$$unique" \
-	  || $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
-	     $$tags $$unique
+	if test -z "$(ETAGS_ARGS)$$tags$$unique"; then :; else \
+	  test -n "$$unique" || unique=$$empty_fix; \
+	  $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+	    $$tags $$unique; \
+	fi
 ctags: CTAGS
 CTAGS:  $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
 		$(TAGS_FILES) $(LISP)
@@ -437,7 +459,7 @@ mostlyclean-generic:
 clean-generic:
 
 distclean-generic:
-	-rm -f $(CONFIG_CLEAN_FILES)
+	-test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
 
 maintainer-clean-generic:
 	@echo "This command is intended for maintainers to use"
@@ -495,8 +517,8 @@ uninstall-am: uninstall-info-am uninstall-xmlsecgnutlsincHEADERS
 	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-exec install-exec-am install-info \
-	install-info-am install-man install-strip \
+	install-data-am install-exec install-exec-am install-exec-hook \
+	install-info install-info-am install-man install-strip \
 	install-xmlsecgnutlsincHEADERS installcheck installcheck-am \
 	installdirs maintainer-clean maintainer-clean-generic \
 	mostlyclean mostlyclean-generic mostlyclean-libtool pdf pdf-am \
diff --git a/include/xmlsec/gnutls/crypto.h b/include/xmlsec/gnutls/crypto.h
index 08b93c8..dd80436 100644
--- a/include/xmlsec/gnutls/crypto.h
+++ b/include/xmlsec/gnutls/crypto.h
@@ -125,13 +125,14 @@ XMLSEC_CRYPTO_EXPORT int		xmlSecGnuTLSKeyDataHmacSet	(xmlSecKeyDataPtr data,
 									 const xmlSecByte* buf,
 									 xmlSecSize bufSize);
 /**
- * xmlSecGnuTLSTransformHmacSha1Id:
+ * xmlSecGnuTLSTransformHmacMd5Id:
  * 
- * The HMAC with SHA1 signature transform klass.
+ * The HMAC with MD5 signature transform klass.
  */
-#define xmlSecGnuTLSTransformHmacSha1Id \
-	xmlSecGnuTLSTransformHmacSha1GetKlass()
-XMLSEC_CRYPTO_EXPORT xmlSecTransformId xmlSecGnuTLSTransformHmacSha1GetKlass(void);
+#define xmlSecGnuTLSTransformHmacMd5Id \
+	xmlSecGnuTLSTransformHmacMd5GetKlass()
+XMLSEC_CRYPTO_EXPORT xmlSecTransformId xmlSecGnuTLSTransformHmacMd5GetKlass(void);
+#endif /* XMLSEC_NO_HMAC */
 
 /**
  * xmlSecGnuTLSTransformHmacRipemd160Id:
@@ -143,14 +144,14 @@ XMLSEC_CRYPTO_EXPORT xmlSecTransformId xmlSecGnuTLSTransformHmacSha1GetKlass(voi
 XMLSEC_CRYPTO_EXPORT xmlSecTransformId xmlSecGnuTLSTransformHmacRipemd160GetKlass(void);
 
 /**
- * xmlSecGnuTLSTransformHmacMd5Id:
+ * xmlSecGnuTLSTransformHmacSha1Id:
  * 
- * The HMAC with MD5 signature transform klass.
+ * The HMAC with SHA1 signature transform klass.
  */
-#define xmlSecGnuTLSTransformHmacMd5Id \
-	xmlSecGnuTLSTransformHmacMd5GetKlass()
-XMLSEC_CRYPTO_EXPORT xmlSecTransformId xmlSecGnuTLSTransformHmacMd5GetKlass(void);
-#endif /* XMLSEC_NO_HMAC */
+#define xmlSecGnuTLSTransformHmacSha1Id \
+	xmlSecGnuTLSTransformHmacSha1GetKlass()
+XMLSEC_CRYPTO_EXPORT xmlSecTransformId xmlSecGnuTLSTransformHmacSha1GetKlass(void);
+
 
 
 /********************************************************************
diff --git a/include/xmlsec/gnutls/symbols.h b/include/xmlsec/gnutls/symbols.h
index 48bfde3..0fcd861 100644
--- a/include/xmlsec/gnutls/symbols.h
+++ b/include/xmlsec/gnutls/symbols.h
@@ -58,9 +58,9 @@ extern "C" {
 #define xmlSecTransformDes3CbcId		xmlSecGnuTLSTransformDes3CbcId
 #define xmlSecTransformKWDes3Id			xmlSecGnuTLSTransformKWDes3Id
 #define xmlSecTransformDsaSha1Id		xmlSecGnuTLSTransformDsaSha1Id
-#define xmlSecTransformHmacSha1Id		xmlSecGnuTLSTransformHmacSha1Id
-#define xmlSecTransformHmacRipemd160Id		xmlSecGnuTLSTransformHmacRipemd160Id
 #define xmlSecTransformHmacMd5Id		xmlSecGnuTLSTransformHmacMd5Id
+#define xmlSecTransformHmacRipemd160Id		xmlSecGnuTLSTransformHmacRipemd160Id
+#define xmlSecTransformHmacSha1Id		xmlSecGnuTLSTransformHmacSha1Id
 #define xmlSecTransformRipemd160Id		xmlSecGnuTLSTransformRipemd160Id
 #define xmlSecTransformRsaSha1Id		xmlSecGnuTLSTransformRsaSha1Id
 #define xmlSecTransformRsaPkcs1Id		xmlSecGnuTLSTransformRsaPkcs1Id
diff --git a/include/xmlsec/keysmngr.h b/include/xmlsec/keysmngr.h
index aa42697..a8f8209 100644
--- a/include/xmlsec/keysmngr.h
+++ b/include/xmlsec/keysmngr.h
@@ -253,6 +253,7 @@ XMLSEC_EXPORT int			xmlSecSimpleKeysStoreLoad 	(xmlSecKeyStorePtr store,
 XMLSEC_EXPORT int			xmlSecSimpleKeysStoreSave	(xmlSecKeyStorePtr store, 
 									 const char *filename,
 									 xmlSecKeyDataType type);
+XMLSEC_EXPORT xmlSecPtrListPtr		xmlSecSimpleKeysStoreGetKeys	(xmlSecKeyStorePtr store);
 
 
 #ifdef __cplusplus
diff --git a/include/xmlsec/mscrypto/app.h b/include/xmlsec/mscrypto/app.h
index 4548015..964cffc 100644
--- a/include/xmlsec/mscrypto/app.h
+++ b/include/xmlsec/mscrypto/app.h
@@ -18,6 +18,9 @@ extern "C" {
 #include <xmlsec/keysmngr.h>
 #include <xmlsec/transforms.h>
 
+#include <windows.h>
+#include <wincrypt.h>
+
 /**
  * Init/shutdown
  */
@@ -28,29 +31,52 @@ XMLSEC_CRYPTO_EXPORT const char*xmlSecMSCryptoAppGetCertStoreName		(void);
 /** 
  * Keys Manager
  */
-XMLSEC_CRYPTO_EXPORT int	xmlSecMSCryptoAppDefaultKeysMngrInit(xmlSecKeysMngrPtr mngr);
-XMLSEC_CRYPTO_EXPORT int 	xmlSecMSCryptoAppDefaultKeysMngrAdoptKey(xmlSecKeysMngrPtr mngr,
-																xmlSecKeyPtr key);
-XMLSEC_CRYPTO_EXPORT int 	xmlSecMSCryptoAppDefaultKeysMngrLoad(xmlSecKeysMngrPtr mngr,
-									 const char* uri);
-XMLSEC_CRYPTO_EXPORT int 	xmlSecMSCryptoAppDefaultKeysMngrSave(xmlSecKeysMngrPtr mngr,
-									 const char* filename,
-									 xmlSecKeyDataType type);
+XMLSEC_CRYPTO_EXPORT int	xmlSecMSCryptoAppDefaultKeysMngrInit(
+                                    xmlSecKeysMngrPtr mngr);
+XMLSEC_CRYPTO_EXPORT int 	xmlSecMSCryptoAppDefaultKeysMngrAdoptKey(
+                                    xmlSecKeysMngrPtr mngr,
+                                    xmlSecKeyPtr key);
+XMLSEC_CRYPTO_EXPORT int 	xmlSecMSCryptoAppDefaultKeysMngrLoad(
+                                    xmlSecKeysMngrPtr mngr,
+									const char* uri);
+XMLSEC_CRYPTO_EXPORT int 	xmlSecMSCryptoAppDefaultKeysMngrSave(
+                                    xmlSecKeysMngrPtr mngr,
+									const char* filename,
+									xmlSecKeyDataType type);
+XMLSEC_CRYPTO_EXPORT int 	xmlSecMSCryptoAppDefaultKeysMngrPrivateKeyLoad(
+                                    xmlSecKeysMngrPtr mngr,
+                                    HCRYPTKEY hKey);
+XMLSEC_CRYPTO_EXPORT int 	xmlSecMSCryptoAppDefaultKeysMngrPublicKeyLoad(
+                                    xmlSecKeysMngrPtr mngr,
+                                    HCRYPTKEY hKey);
+XMLSEC_CRYPTO_EXPORT int 	xmlSecMSCryptoAppDefaultKeysMngrSymKeyLoad(
+                                    xmlSecKeysMngrPtr mngr,
+                                    HCRYPTKEY hKey);
 #ifndef XMLSEC_NO_X509
-XMLSEC_CRYPTO_EXPORT int	xmlSecMSCryptoAppKeysMngrCertLoad	(xmlSecKeysMngrPtr mngr, 
-									 const char *filename, 
-									 xmlSecKeyDataFormat format, 
-									 xmlSecKeyDataType type);
-XMLSEC_CRYPTO_EXPORT int	xmlSecMSCryptoAppKeysMngrCertLoadMemory(xmlSecKeysMngrPtr mngr, 
-									 const xmlSecByte* data,
-									 xmlSecSize dataSize, 
-									 xmlSecKeyDataFormat format,
-									 xmlSecKeyDataType type);
-/* TODO
-XMLSEC_CRYPTO_EXPORT int	xmlSecMSCryptoAppKeyCertLoadMemory	(xmlSecKeyPtr key,
-									 const xmlSecByte* data,
-									 xmlSecSize dataSize, 
-									 xmlSecKeyDataFormat format);*/
+XMLSEC_CRYPTO_EXPORT int    xmlSecMSCryptoAppDefaultKeysMngrAdoptKeyStore(
+                                    xmlSecKeysMngrPtr mngr,
+                                    HCERTSTORE keyStore);
+
+XMLSEC_CRYPTO_EXPORT int    xmlSecMSCryptoAppDefaultKeysMngrAdoptTrustedStore(
+                                    xmlSecKeysMngrPtr mngr, 
+                                    HCERTSTORE trustedStore);
+
+XMLSEC_CRYPTO_EXPORT int    xmlSecMSCryptoAppDefaultKeysMngrAdoptUntrustedStore(
+                                    xmlSecKeysMngrPtr mngr,
+                                    HCERTSTORE untrustedStore);
+
+XMLSEC_CRYPTO_EXPORT int	xmlSecMSCryptoAppKeysMngrCertLoad(
+                                    xmlSecKeysMngrPtr mngr, 
+									const char *filename, 
+									xmlSecKeyDataFormat format, 
+									xmlSecKeyDataType type);
+XMLSEC_CRYPTO_EXPORT int	xmlSecMSCryptoAppKeysMngrCertLoadMemory(
+                                    xmlSecKeysMngrPtr mngr, 
+									const xmlSecByte* data,
+									xmlSecSize dataSize, 
+									xmlSecKeyDataFormat format,
+									xmlSecKeyDataType type);
+
 #endif /* XMLSEC_NO_X509 */
 
 
diff --git a/include/xmlsec/mscrypto/symbols.h b/include/xmlsec/mscrypto/symbols.h
index 2aeefa4..5a60f68 100644
--- a/include/xmlsec/mscrypto/symbols.h
+++ b/include/xmlsec/mscrypto/symbols.h
@@ -58,9 +58,9 @@ extern "C" {
 #define xmlSecTransformDes3CbcId		xmlSecMSCryptoTransformDes3CbcId
 #define xmlSecTransformKWDes3Id			xmlSecMSCryptoTransformKWDes3Id
 #define xmlSecTransformDsaSha1Id		xmlSecMSCryptoTransformDsaSha1Id
-#define xmlSecTransformHmacSha1Id		xmlSecMSCryptoTransformHmacSha1Id
-#define xmlSecTransformHmacRipemd160Id		xmlSecMSCryptoTransformHmacRipemd160Id
 #define xmlSecTransformHmacMd5Id		xmlSecMSCryptoTransformHmacMd5Id
+#define xmlSecTransformHmacRipemd160Id		xmlSecMSCryptoTransformHmacRipemd160Id
+#define xmlSecTransformHmacSha1Id		xmlSecMSCryptoTransformHmacSha1Id
 #define xmlSecTransformRipemd160Id		xmlSecMSCryptoTransformRipemd160Id
 #define xmlSecTransformRsaSha1Id		xmlSecMSCryptoTransformRsaSha1Id
 #define xmlSecTransformRsaPkcs1Id		xmlSecMSCryptoTransformRsaPkcs1Id
diff --git a/include/xmlsec/mscrypto/x509.h b/include/xmlsec/mscrypto/x509.h
index 52a4ff0..1c8b9be 100644
--- a/include/xmlsec/mscrypto/x509.h
+++ b/include/xmlsec/mscrypto/x509.h
@@ -19,6 +19,9 @@ extern "C" {
 #include <xmlsec/keys.h>
 #include <xmlsec/transforms.h>
 
+#include <windows.h>
+#include <wincrypt.h>
+
 /**
  * xmlSecMSCryptoKeyDataX509Id:
  * 
@@ -77,6 +80,21 @@ XMLSEC_CRYPTO_EXPORT int		xmlSecMSCryptoX509StoreAdoptCert 	(xmlSecKeyDataStoreP
 										 PCCERT_CONTEXT cert,
 										 xmlSecKeyDataType type);
 
+XMLSEC_CRYPTO_EXPORT int		xmlSecMSCryptoX509StoreAdoptKeyStore (
+										xmlSecKeyDataStorePtr store,
+										HCERTSTORE keyStore
+								) ;
+
+XMLSEC_CRYPTO_EXPORT int		xmlSecMSCryptoX509StoreAdoptTrustedStore (
+										xmlSecKeyDataStorePtr store,
+										HCERTSTORE trustedStore
+								) ;
+
+XMLSEC_CRYPTO_EXPORT int		xmlSecMSCryptoX509StoreAdoptUntrustedStore (
+										xmlSecKeyDataStorePtr store,
+										HCERTSTORE untrustedStore
+								) ;
+
 
 #endif /* XMLSEC_NO_X509 */
 
diff --git a/include/xmlsec/nss/Makefile.in b/include/xmlsec/nss/Makefile.in
index 7545a76..048f47d 100644
--- a/include/xmlsec/nss/Makefile.in
+++ b/include/xmlsec/nss/Makefile.in
@@ -1,4 +1,4 @@
-# Makefile.in generated by automake 1.8.3 from Makefile.am.
+# Makefile.in generated by automake 1.9.2 from Makefile.am.
 # @configure_input@
 
 # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
@@ -34,6 +34,7 @@ POST_INSTALL = :
 NORMAL_UNINSTALL = :
 PRE_UNINSTALL = :
 POST_UNINSTALL = :
+build_triplet = @build@
 host_triplet = @host@
 subdir = include/xmlsec/nss
 DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in \
@@ -47,6 +48,12 @@ CONFIG_HEADER = $(top_builddir)/config.h
 CONFIG_CLEAN_FILES =
 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 = `echo $$p | sed -e 's|^.*/||'`;
 am__installdirs = "$(DESTDIR)$(xmlsecnssincdir)"
 xmlsecnssincHEADERS_INSTALL = $(INSTALL_HEADER)
 HEADERS = $(xmlsecnssinc_HEADERS)
@@ -101,8 +108,6 @@ LIBADD_DL = @LIBADD_DL@
 LIBOBJS = @LIBOBJS@
 LIBS = @LIBS@
 LIBTOOL = @LIBTOOL@
-LIBXML262_CFLAGS = @LIBXML262_CFLAGS@
-LIBXML262_LIBS = @LIBXML262_LIBS@
 LIBXML_CFLAGS = @LIBXML_CFLAGS@
 LIBXML_CONFIG = @LIBXML_CONFIG@
 LIBXML_LIBS = @LIBXML_LIBS@
@@ -126,8 +131,6 @@ NSS_CRYPTO_LIB = @NSS_CRYPTO_LIB@
 NSS_LIBS = @NSS_LIBS@
 NSS_MIN_VERSION = @NSS_MIN_VERSION@
 OBJEXT = @OBJEXT@
-OPENSSL097_CFLAGS = @OPENSSL097_CFLAGS@
-OPENSSL097_LIBS = @OPENSSL097_LIBS@
 OPENSSL_CFLAGS = @OPENSSL_CFLAGS@
 OPENSSL_CRYPTO_LIB = @OPENSSL_CRYPTO_LIB@
 OPENSSL_LIBS = @OPENSSL_LIBS@
@@ -190,6 +193,9 @@ XMLSEC_NO_HMAC = @XMLSEC_NO_HMAC@
 XMLSEC_NO_HMAC_FALSE = @XMLSEC_NO_HMAC_FALSE@
 XMLSEC_NO_HMAC_TRUE = @XMLSEC_NO_HMAC_TRUE@
 XMLSEC_NO_LIBXSLT = @XMLSEC_NO_LIBXSLT@
+XMLSEC_NO_MD5 = @XMLSEC_NO_MD5@
+XMLSEC_NO_MD5_FALSE = @XMLSEC_NO_MD5_FALSE@
+XMLSEC_NO_MD5_TRUE = @XMLSEC_NO_MD5_TRUE@
 XMLSEC_NO_NSS = @XMLSEC_NO_NSS@
 XMLSEC_NO_NSS_FALSE = @XMLSEC_NO_NSS_FALSE@
 XMLSEC_NO_NSS_TRUE = @XMLSEC_NO_NSS_TRUE@
@@ -205,6 +211,18 @@ XMLSEC_NO_RSA_TRUE = @XMLSEC_NO_RSA_TRUE@
 XMLSEC_NO_SHA1 = @XMLSEC_NO_SHA1@
 XMLSEC_NO_SHA1_FALSE = @XMLSEC_NO_SHA1_FALSE@
 XMLSEC_NO_SHA1_TRUE = @XMLSEC_NO_SHA1_TRUE@
+XMLSEC_NO_SHA224 = @XMLSEC_NO_SHA224@
+XMLSEC_NO_SHA224_FALSE = @XMLSEC_NO_SHA224_FALSE@
+XMLSEC_NO_SHA224_TRUE = @XMLSEC_NO_SHA224_TRUE@
+XMLSEC_NO_SHA256 = @XMLSEC_NO_SHA256@
+XMLSEC_NO_SHA256_FALSE = @XMLSEC_NO_SHA256_FALSE@
+XMLSEC_NO_SHA256_TRUE = @XMLSEC_NO_SHA256_TRUE@
+XMLSEC_NO_SHA384 = @XMLSEC_NO_SHA384@
+XMLSEC_NO_SHA384_FALSE = @XMLSEC_NO_SHA384_FALSE@
+XMLSEC_NO_SHA384_TRUE = @XMLSEC_NO_SHA384_TRUE@
+XMLSEC_NO_SHA512 = @XMLSEC_NO_SHA512@
+XMLSEC_NO_SHA512_FALSE = @XMLSEC_NO_SHA512_FALSE@
+XMLSEC_NO_SHA512_TRUE = @XMLSEC_NO_SHA512_TRUE@
 XMLSEC_NO_X509 = @XMLSEC_NO_X509@
 XMLSEC_NO_X509_FALSE = @XMLSEC_NO_X509_FALSE@
 XMLSEC_NO_X509_TRUE = @XMLSEC_NO_X509_TRUE@
@@ -242,6 +260,8 @@ am__fastdepCXX_TRUE = @am__fastdepCXX_TRUE@
 am__include = @am__include@
 am__leading_dot = @am__leading_dot@
 am__quote = @am__quote@
+am__tar = @am__tar@
+am__untar = @am__untar@
 bindir = @bindir@
 build = @build@
 build_alias = @build_alias@
@@ -329,7 +349,7 @@ install-xmlsecnssincHEADERS: $(xmlsecnssinc_HEADERS)
 	test -z "$(xmlsecnssincdir)" || $(mkdir_p) "$(DESTDIR)$(xmlsecnssincdir)"
 	@list='$(xmlsecnssinc_HEADERS)'; for p in $$list; do \
 	  if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
-	  f="`echo $$p | sed -e 's|^.*/||'`"; \
+	  f=$(am__strip_dir) \
 	  echo " $(xmlsecnssincHEADERS_INSTALL) '$$d$$p' '$(DESTDIR)$(xmlsecnssincdir)/$$f'"; \
 	  $(xmlsecnssincHEADERS_INSTALL) "$$d$$p" "$(DESTDIR)$(xmlsecnssincdir)/$$f"; \
 	done
@@ -337,7 +357,7 @@ install-xmlsecnssincHEADERS: $(xmlsecnssinc_HEADERS)
 uninstall-xmlsecnssincHEADERS:
 	@$(NORMAL_UNINSTALL)
 	@list='$(xmlsecnssinc_HEADERS)'; for p in $$list; do \
-	  f="`echo $$p | sed -e 's|^.*/||'`"; \
+	  f=$(am__strip_dir) \
 	  echo " rm -f '$(DESTDIR)$(xmlsecnssincdir)/$$f'"; \
 	  rm -f "$(DESTDIR)$(xmlsecnssincdir)/$$f"; \
 	done
@@ -362,9 +382,11 @@ TAGS:  $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
 	  done | \
 	  $(AWK) '    { files[$$0] = 1; } \
 	       END { for (i in files) print i; }'`; \
-	test -z "$(ETAGS_ARGS)$$tags$$unique" \
-	  || $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
-	     $$tags $$unique
+	if test -z "$(ETAGS_ARGS)$$tags$$unique"; then :; else \
+	  test -n "$$unique" || unique=$$empty_fix; \
+	  $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+	    $$tags $$unique; \
+	fi
 ctags: CTAGS
 CTAGS:  $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
 		$(TAGS_FILES) $(LISP)
@@ -441,7 +463,7 @@ mostlyclean-generic:
 clean-generic:
 
 distclean-generic:
-	-rm -f $(CONFIG_CLEAN_FILES)
+	-test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
 
 maintainer-clean-generic:
 	@echo "This command is intended for maintainers to use"
@@ -499,8 +521,8 @@ uninstall-am: uninstall-info-am uninstall-xmlsecnssincHEADERS
 	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-exec install-exec-am install-info \
-	install-info-am install-man install-strip \
+	install-data-am install-exec install-exec-am install-exec-hook \
+	install-info install-info-am install-man install-strip \
 	install-xmlsecnssincHEADERS installcheck installcheck-am \
 	installdirs maintainer-clean maintainer-clean-generic \
 	mostlyclean mostlyclean-generic mostlyclean-libtool pdf pdf-am \
diff --git a/include/xmlsec/nss/crypto.h b/include/xmlsec/nss/crypto.h
index 06c1032..f1cd44e 100644
--- a/include/xmlsec/nss/crypto.h
+++ b/include/xmlsec/nss/crypto.h
@@ -16,6 +16,7 @@ extern "C" {
 
 #include <nspr.h>
 #include <nss.h>
+#include <pk11func.h>
 
 #include <xmlsec/xmlsec.h>
 #include <xmlsec/keys.h>
@@ -42,6 +43,8 @@ XMLSEC_CRYPTO_EXPORT void		xmlSecNssErrorsDefaultCallback	(const char* file,
 									int reason, 
 									const char* msg);
 
+XMLSEC_CRYPTO_EXPORT PK11SlotInfo * xmlSecNssGetInternalKeySlot(void);
+
 /********************************************************************
  *
  * AES transforms
@@ -200,13 +203,13 @@ XMLSEC_CRYPTO_EXPORT int		xmlSecNssKeyDataHmacSet		(xmlSecKeyDataPtr data,
 									 const xmlSecByte* buf,
 									 xmlSecSize bufSize);
 /**
- * xmlSecNssTransformHmacSha1Id:
+ * xmlSecNssTransformHmacMd5Id:
  * 
- * The HMAC with SHA1 signature transform klass.
+ * The HMAC with MD5 signature transform klass.
  */
-#define xmlSecNssTransformHmacSha1Id \
-	xmlSecNssTransformHmacSha1GetKlass()
-XMLSEC_CRYPTO_EXPORT xmlSecTransformId xmlSecNssTransformHmacSha1GetKlass(void);
+#define xmlSecNssTransformHmacMd5Id \
+	xmlSecNssTransformHmacMd5GetKlass()
+XMLSEC_CRYPTO_EXPORT xmlSecTransformId xmlSecNssTransformHmacMd5GetKlass(void);
 
 /**
  * xmlSecNssTransformHmacRipemd160Id:
@@ -218,13 +221,13 @@ XMLSEC_CRYPTO_EXPORT xmlSecTransformId xmlSecNssTransformHmacSha1GetKlass(void);
 XMLSEC_CRYPTO_EXPORT xmlSecTransformId xmlSecNssTransformHmacRipemd160GetKlass(void);
 
 /**
- * xmlSecNssTransformHmacMd5Id:
+ * xmlSecNssTransformHmacSha1Id:
  * 
- * The HMAC with MD5 signature transform klass.
+ * The HMAC with SHA1 signature transform klass.
  */
-#define xmlSecNssTransformHmacMd5Id \
-	xmlSecNssTransformHmacMd5GetKlass()
-XMLSEC_CRYPTO_EXPORT xmlSecTransformId xmlSecNssTransformHmacMd5GetKlass(void);
+#define xmlSecNssTransformHmacSha1Id \
+	xmlSecNssTransformHmacSha1GetKlass()
+XMLSEC_CRYPTO_EXPORT xmlSecTransformId xmlSecNssTransformHmacSha1GetKlass(void);
 
 
 #endif /* XMLSEC_NO_HMAC */
@@ -264,6 +267,20 @@ XMLSEC_CRYPTO_EXPORT xmlSecTransformId xmlSecNssTransformRsaSha1GetKlass(void);
         xmlSecNssTransformRsaPkcs1GetKlass()
 XMLSEC_CRYPTO_EXPORT xmlSecTransformId xmlSecNssTransformRsaPkcs1GetKlass(void);
 
+
+/* RSA OAEP is not supported by NSS yet */
+#ifdef TODO
+/**
+ * xmlSecNssTransformRsaOaepId:
+ * 
+ * The RSA OAEP key transport transform klass.
+ */
+
+#define xmlSecNssTransformRsaOaepId \
+        xmlSecNssTransformRsaOaepGetKlass()
+XMLSEC_CRYPTO_EXPORT xmlSecTransformId xmlSecNssTransformRsaOaepGetKlass(void);
+#endif /* TODO: RSA OAEP is not supported by NSS yet */
+
 #endif /* XMLSEC_NO_RSA */
 
 
diff --git a/include/xmlsec/nss/symbols.h b/include/xmlsec/nss/symbols.h
index 004aafc..b01a1fa 100644
--- a/include/xmlsec/nss/symbols.h
+++ b/include/xmlsec/nss/symbols.h
@@ -60,9 +60,9 @@ extern "C" {
 #define xmlSecTransformDes3CbcId		xmlSecNssTransformDes3CbcId
 #define xmlSecTransformKWDes3Id			xmlSecNssTransformKWDes3Id
 #define xmlSecTransformDsaSha1Id		xmlSecNssTransformDsaSha1Id
-#define xmlSecTransformHmacSha1Id		xmlSecNssTransformHmacSha1Id
-#define xmlSecTransformHmacRipemd160Id		xmlSecNssTransformHmacRipemd160Id
 #define xmlSecTransformHmacMd5Id		xmlSecNssTransformHmacMd5Id
+#define xmlSecTransformHmacRipemd160Id		xmlSecNssTransformHmacRipemd160Id
+#define xmlSecTransformHmacSha1Id		xmlSecNssTransformHmacSha1Id
 #define xmlSecTransformRipemd160Id		xmlSecNssTransformRipemd160Id
 #define xmlSecTransformRsaSha1Id		xmlSecNssTransformRsaSha1Id
 #define xmlSecTransformRsaPkcs1Id		xmlSecNssTransformRsaPkcs1Id
diff --git a/include/xmlsec/openssl/Makefile.in b/include/xmlsec/openssl/Makefile.in
index 08dd8f5..fd8a74b 100644
--- a/include/xmlsec/openssl/Makefile.in
+++ b/include/xmlsec/openssl/Makefile.in
@@ -1,4 +1,4 @@
-# Makefile.in generated by automake 1.8.3 from Makefile.am.
+# Makefile.in generated by automake 1.9.2 from Makefile.am.
 # @configure_input@
 
 # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
@@ -34,6 +34,7 @@ POST_INSTALL = :
 NORMAL_UNINSTALL = :
 PRE_UNINSTALL = :
 POST_UNINSTALL = :
+build_triplet = @build@
 host_triplet = @host@
 subdir = include/xmlsec/openssl
 DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in \
@@ -47,6 +48,12 @@ CONFIG_HEADER = $(top_builddir)/config.h
 CONFIG_CLEAN_FILES =
 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 = `echo $$p | sed -e 's|^.*/||'`;
 am__installdirs = "$(DESTDIR)$(xmlsecopensslincdir)"
 xmlsecopensslincHEADERS_INSTALL = $(INSTALL_HEADER)
 HEADERS = $(xmlsecopensslinc_HEADERS)
@@ -101,8 +108,6 @@ LIBADD_DL = @LIBADD_DL@
 LIBOBJS = @LIBOBJS@
 LIBS = @LIBS@
 LIBTOOL = @LIBTOOL@
-LIBXML262_CFLAGS = @LIBXML262_CFLAGS@
-LIBXML262_LIBS = @LIBXML262_LIBS@
 LIBXML_CFLAGS = @LIBXML_CFLAGS@
 LIBXML_CONFIG = @LIBXML_CONFIG@
 LIBXML_LIBS = @LIBXML_LIBS@
@@ -126,8 +131,6 @@ NSS_CRYPTO_LIB = @NSS_CRYPTO_LIB@
 NSS_LIBS = @NSS_LIBS@
 NSS_MIN_VERSION = @NSS_MIN_VERSION@
 OBJEXT = @OBJEXT@
-OPENSSL097_CFLAGS = @OPENSSL097_CFLAGS@
-OPENSSL097_LIBS = @OPENSSL097_LIBS@
 OPENSSL_CFLAGS = @OPENSSL_CFLAGS@
 OPENSSL_CRYPTO_LIB = @OPENSSL_CRYPTO_LIB@
 OPENSSL_LIBS = @OPENSSL_LIBS@
@@ -190,6 +193,9 @@ XMLSEC_NO_HMAC = @XMLSEC_NO_HMAC@
 XMLSEC_NO_HMAC_FALSE = @XMLSEC_NO_HMAC_FALSE@
 XMLSEC_NO_HMAC_TRUE = @XMLSEC_NO_HMAC_TRUE@
 XMLSEC_NO_LIBXSLT = @XMLSEC_NO_LIBXSLT@
+XMLSEC_NO_MD5 = @XMLSEC_NO_MD5@
+XMLSEC_NO_MD5_FALSE = @XMLSEC_NO_MD5_FALSE@
+XMLSEC_NO_MD5_TRUE = @XMLSEC_NO_MD5_TRUE@
 XMLSEC_NO_NSS = @XMLSEC_NO_NSS@
 XMLSEC_NO_NSS_FALSE = @XMLSEC_NO_NSS_FALSE@
 XMLSEC_NO_NSS_TRUE = @XMLSEC_NO_NSS_TRUE@
@@ -205,6 +211,18 @@ XMLSEC_NO_RSA_TRUE = @XMLSEC_NO_RSA_TRUE@
 XMLSEC_NO_SHA1 = @XMLSEC_NO_SHA1@
 XMLSEC_NO_SHA1_FALSE = @XMLSEC_NO_SHA1_FALSE@
 XMLSEC_NO_SHA1_TRUE = @XMLSEC_NO_SHA1_TRUE@
+XMLSEC_NO_SHA224 = @XMLSEC_NO_SHA224@
+XMLSEC_NO_SHA224_FALSE = @XMLSEC_NO_SHA224_FALSE@
+XMLSEC_NO_SHA224_TRUE = @XMLSEC_NO_SHA224_TRUE@
+XMLSEC_NO_SHA256 = @XMLSEC_NO_SHA256@
+XMLSEC_NO_SHA256_FALSE = @XMLSEC_NO_SHA256_FALSE@
+XMLSEC_NO_SHA256_TRUE = @XMLSEC_NO_SHA256_TRUE@
+XMLSEC_NO_SHA384 = @XMLSEC_NO_SHA384@
+XMLSEC_NO_SHA384_FALSE = @XMLSEC_NO_SHA384_FALSE@
+XMLSEC_NO_SHA384_TRUE = @XMLSEC_NO_SHA384_TRUE@
+XMLSEC_NO_SHA512 = @XMLSEC_NO_SHA512@
+XMLSEC_NO_SHA512_FALSE = @XMLSEC_NO_SHA512_FALSE@
+XMLSEC_NO_SHA512_TRUE = @XMLSEC_NO_SHA512_TRUE@
 XMLSEC_NO_X509 = @XMLSEC_NO_X509@
 XMLSEC_NO_X509_FALSE = @XMLSEC_NO_X509_FALSE@
 XMLSEC_NO_X509_TRUE = @XMLSEC_NO_X509_TRUE@
@@ -242,6 +260,8 @@ am__fastdepCXX_TRUE = @am__fastdepCXX_TRUE@
 am__include = @am__include@
 am__leading_dot = @am__leading_dot@
 am__quote = @am__quote@
+am__tar = @am__tar@
+am__untar = @am__untar@
 bindir = @bindir@
 build = @build@
 build_alias = @build_alias@
@@ -328,7 +348,7 @@ install-xmlsecopensslincHEADERS: $(xmlsecopensslinc_HEADERS)
 	test -z "$(xmlsecopensslincdir)" || $(mkdir_p) "$(DESTDIR)$(xmlsecopensslincdir)"
 	@list='$(xmlsecopensslinc_HEADERS)'; for p in $$list; do \
 	  if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
-	  f="`echo $$p | sed -e 's|^.*/||'`"; \
+	  f=$(am__strip_dir) \
 	  echo " $(xmlsecopensslincHEADERS_INSTALL) '$$d$$p' '$(DESTDIR)$(xmlsecopensslincdir)/$$f'"; \
 	  $(xmlsecopensslincHEADERS_INSTALL) "$$d$$p" "$(DESTDIR)$(xmlsecopensslincdir)/$$f"; \
 	done
@@ -336,7 +356,7 @@ install-xmlsecopensslincHEADERS: $(xmlsecopensslinc_HEADERS)
 uninstall-xmlsecopensslincHEADERS:
 	@$(NORMAL_UNINSTALL)
 	@list='$(xmlsecopensslinc_HEADERS)'; for p in $$list; do \
-	  f="`echo $$p | sed -e 's|^.*/||'`"; \
+	  f=$(am__strip_dir) \
 	  echo " rm -f '$(DESTDIR)$(xmlsecopensslincdir)/$$f'"; \
 	  rm -f "$(DESTDIR)$(xmlsecopensslincdir)/$$f"; \
 	done
@@ -361,9 +381,11 @@ TAGS:  $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
 	  done | \
 	  $(AWK) '    { files[$$0] = 1; } \
 	       END { for (i in files) print i; }'`; \
-	test -z "$(ETAGS_ARGS)$$tags$$unique" \
-	  || $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
-	     $$tags $$unique
+	if test -z "$(ETAGS_ARGS)$$tags$$unique"; then :; else \
+	  test -n "$$unique" || unique=$$empty_fix; \
+	  $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+	    $$tags $$unique; \
+	fi
 ctags: CTAGS
 CTAGS:  $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
 		$(TAGS_FILES) $(LISP)
@@ -440,7 +462,7 @@ mostlyclean-generic:
 clean-generic:
 
 distclean-generic:
-	-rm -f $(CONFIG_CLEAN_FILES)
+	-test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
 
 maintainer-clean-generic:
 	@echo "This command is intended for maintainers to use"
@@ -498,8 +520,8 @@ uninstall-am: uninstall-info-am uninstall-xmlsecopensslincHEADERS
 	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-exec install-exec-am install-info \
-	install-info-am install-man install-strip \
+	install-data-am install-exec install-exec-am install-exec-hook \
+	install-info install-info-am install-man install-strip \
 	install-xmlsecopensslincHEADERS installcheck installcheck-am \
 	installdirs maintainer-clean maintainer-clean-generic \
 	mostlyclean mostlyclean-generic mostlyclean-libtool pdf pdf-am \
diff --git a/include/xmlsec/openssl/crypto.h b/include/xmlsec/openssl/crypto.h
index 0639e51..2274e35 100644
--- a/include/xmlsec/openssl/crypto.h
+++ b/include/xmlsec/openssl/crypto.h
@@ -20,6 +20,18 @@ extern "C" {
 
 #include <openssl/err.h>
 
+/* OpenSSL 0.9.6 and 0.9.7 do not have SHA 224/256/384/512 */
+#if defined(XMLSEC_OPENSSL_096) || defined(XMLSEC_OPENSSL_097)
+#define XMLSEC_NO_SHA224 1
+#define XMLSEC_NO_SHA256 1
+#define XMLSEC_NO_SHA384 1
+#define XMLSEC_NO_SHA512 1
+#endif /* defined(XMLSEC_OPENSSL_096) || defined(XMLSEC_OPENSSL_097) */
+
+/* OpenSSL 0.9.6 does not have AES */
+#if defined(XMLSEC_OPENSSL_096)
+#define XMLSEC_NO_AES	 1
+#endif /* XMLSEC_OPENSSL_096 */
 
 XMLSEC_CRYPTO_EXPORT xmlSecCryptoDLFunctionsPtr	xmlSecCryptoGetFunctions_openssl(void);
 
@@ -42,7 +54,6 @@ XMLSEC_CRYPTO_EXPORT const xmlChar*	xmlSecOpenSSLGetDefaultTrustedCertsFolder(vo
  *
  *******************************************************************/
 #ifndef XMLSEC_NO_AES
-#ifndef XMLSEC_OPENSSL_096
 /**
  * xmlSecOpenSSLKeyDataAesId:
  * 
@@ -108,7 +119,6 @@ XMLSEC_CRYPTO_EXPORT xmlSecTransformId	xmlSecOpenSSLTransformKWAes192GetKlass(vo
 	xmlSecOpenSSLTransformKWAes256GetKlass()
 XMLSEC_CRYPTO_EXPORT xmlSecTransformId	xmlSecOpenSSLTransformKWAes256GetKlass(void);
 
-#endif /* XMLSEC_OPENSSL_096 */
 #endif /* XMLSEC_NO_AES */
 
 /********************************************************************
@@ -171,6 +181,7 @@ XMLSEC_CRYPTO_EXPORT int		xmlSecOpenSSLKeyDataDsaAdoptEvp	(xmlSecKeyDataPtr data
 									 EVP_PKEY* pKey);
 XMLSEC_CRYPTO_EXPORT EVP_PKEY*		xmlSecOpenSSLKeyDataDsaGetEvp	(xmlSecKeyDataPtr data);
 
+#ifndef XMLSEC_NO_SHA1
 /**
  * xmlSecOpenSSLTransformDsaSha1Id:
  * 
@@ -179,6 +190,7 @@ XMLSEC_CRYPTO_EXPORT EVP_PKEY*		xmlSecOpenSSLKeyDataDsaGetEvp	(xmlSecKeyDataPtr
 #define xmlSecOpenSSLTransformDsaSha1Id \
 	xmlSecOpenSSLTransformDsaSha1GetKlass()
 XMLSEC_CRYPTO_EXPORT xmlSecTransformId xmlSecOpenSSLTransformDsaSha1GetKlass(void);
+#endif /* XMLSEC_NO_SHA1 */
 
 #endif /* XMLSEC_NO_DSA */
 
@@ -199,15 +211,19 @@ XMLSEC_CRYPTO_EXPORT xmlSecKeyDataId	xmlSecOpenSSLKeyDataHmacGetKlass(void);
 XMLSEC_CRYPTO_EXPORT int		xmlSecOpenSSLKeyDataHmacSet	(xmlSecKeyDataPtr data,
 									 const xmlSecByte* buf,
 									 xmlSecSize bufSize);
+
+#ifndef XMLSEC_NO_MD5									 
 /**
- * xmlSecOpenSSLTransformHmacSha1Id:
+ * xmlSecOpenSSLTransformHmacMd5Id:
  * 
- * The HMAC with SHA1 signature transform klass.
+ * The HMAC with MD5 signature transform klass.
  */
-#define xmlSecOpenSSLTransformHmacSha1Id \
-	xmlSecOpenSSLTransformHmacSha1GetKlass()
-XMLSEC_CRYPTO_EXPORT xmlSecTransformId xmlSecOpenSSLTransformHmacSha1GetKlass(void);
+#define xmlSecOpenSSLTransformHmacMd5Id \
+	xmlSecOpenSSLTransformHmacMd5GetKlass()
+XMLSEC_CRYPTO_EXPORT xmlSecTransformId xmlSecOpenSSLTransformHmacMd5GetKlass(void);
+#endif /* XMLSEC_NO_MD5 */
 
+#ifndef XMLSEC_NO_RIPEMD160
 /**
  * xmlSecOpenSSLTransformHmacRipemd160Id:
  * 
@@ -216,20 +232,84 @@ XMLSEC_CRYPTO_EXPORT xmlSecTransformId xmlSecOpenSSLTransformHmacSha1GetKlass(vo
 #define xmlSecOpenSSLTransformHmacRipemd160Id \
 	xmlSecOpenSSLTransformHmacRipemd160GetKlass()
 XMLSEC_CRYPTO_EXPORT xmlSecTransformId xmlSecOpenSSLTransformHmacRipemd160GetKlass(void);
+#endif /* XMLSEC_NO_RIPEMD160 */
 
+#ifndef XMLSEC_NO_SHA1
 /**
- * xmlSecOpenSSLTransformHmacMd5Id:
+ * xmlSecOpenSSLTransformHmacSha1Id:
  * 
- * The HMAC with MD5 signature transform klass.
+ * The HMAC with SHA1 signature transform klass.
  */
-#define xmlSecOpenSSLTransformHmacMd5Id \
-	xmlSecOpenSSLTransformHmacMd5GetKlass()
-XMLSEC_CRYPTO_EXPORT xmlSecTransformId xmlSecOpenSSLTransformHmacMd5GetKlass(void);
+#define xmlSecOpenSSLTransformHmacSha1Id \
+	xmlSecOpenSSLTransformHmacSha1GetKlass()
+XMLSEC_CRYPTO_EXPORT xmlSecTransformId xmlSecOpenSSLTransformHmacSha1GetKlass(void);
+#endif /* XMLSEC_NO_SHA1 */
+
+#ifndef XMLSEC_NO_SHA224
+/**
+ * xmlSecOpenSSLTransformHmacSha224Id:
+ * 
+ * The HMAC with SHA224 signature transform klass.
+ */
+#define xmlSecOpenSSLTransformHmacSha224Id \
+	xmlSecOpenSSLTransformHmacSha224GetKlass()
+XMLSEC_CRYPTO_EXPORT xmlSecTransformId xmlSecOpenSSLTransformHmacSha224GetKlass(void);
+#endif /* XMLSEC_NO_SHA224 */
+
+#ifndef XMLSEC_NO_SHA256
+/**
+ * xmlSecOpenSSLTransformHmacSha256Id:
+ * 
+ * The HMAC with SHA256 signature transform klass.
+ */
+#define xmlSecOpenSSLTransformHmacSha256Id \
+	xmlSecOpenSSLTransformHmacSha256GetKlass()
+XMLSEC_CRYPTO_EXPORT xmlSecTransformId xmlSecOpenSSLTransformHmacSha256GetKlass(void);
+#endif /* XMLSEC_NO_SHA256 */
+
+#ifndef XMLSEC_NO_SHA384
+/**
+ * xmlSecOpenSSLTransformHmacSha384Id:
+ * 
+ * The HMAC with SHA384 signature transform klass.
+ */
+#define xmlSecOpenSSLTransformHmacSha384Id \
+	xmlSecOpenSSLTransformHmacSha384GetKlass()
+XMLSEC_CRYPTO_EXPORT xmlSecTransformId xmlSecOpenSSLTransformHmacSha384GetKlass(void);
+#endif /* XMLSEC_NO_SHA384 */
+
+#ifndef XMLSEC_NO_SHA512
+/**
+ * xmlSecOpenSSLTransformHmacSha512Id:
+ * 
+ * The HMAC with SHA512 signature transform klass.
+ */
+#define xmlSecOpenSSLTransformHmacSha512Id \
+	xmlSecOpenSSLTransformHmacSha512GetKlass()
+XMLSEC_CRYPTO_EXPORT xmlSecTransformId xmlSecOpenSSLTransformHmacSha512GetKlass(void);
+#endif /* XMLSEC_NO_SHA512 */
 
 #endif /* XMLSEC_NO_HMAC */
 
 /********************************************************************
  *
+ * Md5 transforms
+ *
+ *******************************************************************/
+#ifndef XMLSEC_NO_MD5
+/**
+ * xmlSecOpenSSLTransformMd5Id:
+ * 
+ * The MD5 digest transform klass.
+ */
+#define xmlSecOpenSSLTransformMd5Id \
+	xmlSecOpenSSLTransformMd5GetKlass()
+XMLSEC_CRYPTO_EXPORT xmlSecTransformId xmlSecOpenSSLTransformMd5GetKlass(void);
+#endif /* XMLSEC_NO_MD5 */
+
+
+/********************************************************************
+ *
  * RipeMD160 transforms
  *
  *******************************************************************/
@@ -268,6 +348,29 @@ XMLSEC_CRYPTO_EXPORT int		xmlSecOpenSSLKeyDataRsaAdoptEvp	(xmlSecKeyDataPtr data
 									 EVP_PKEY* pKey);
 XMLSEC_CRYPTO_EXPORT EVP_PKEY*		xmlSecOpenSSLKeyDataRsaGetEvp	(xmlSecKeyDataPtr data);
 
+#ifndef XMLSEC_NO_MD5
+/**
+ * xmlSecOpenSSLTransformRsaMd5Id:
+ * 
+ * The RSA-MD5 signature transform klass.
+ */
+#define xmlSecOpenSSLTransformRsaMd5Id	\
+	xmlSecOpenSSLTransformRsaMd5GetKlass()
+XMLSEC_CRYPTO_EXPORT xmlSecTransformId xmlSecOpenSSLTransformRsaMd5GetKlass(void);
+#endif /* XMLSEC_NO_MD5 */
+
+#ifndef XMLSEC_NO_RIPEMD160
+/**
+ * xmlSecOpenSSLTransformRsaRipemd160Id:
+ * 
+ * The RSA-RIPEMD160 signature transform klass.
+ */
+#define xmlSecOpenSSLTransformRsaRipemd160Id	\
+	xmlSecOpenSSLTransformRsaRipemd160GetKlass()
+XMLSEC_CRYPTO_EXPORT xmlSecTransformId xmlSecOpenSSLTransformRsaRipemd160GetKlass(void);
+#endif /* XMLSEC_NO_RIPEMD160 */
+
+#ifndef XMLSEC_NO_SHA1
 /**
  * xmlSecOpenSSLTransformRsaSha1Id:
  * 
@@ -276,6 +379,51 @@ XMLSEC_CRYPTO_EXPORT EVP_PKEY*		xmlSecOpenSSLKeyDataRsaGetEvp	(xmlSecKeyDataPtr
 #define xmlSecOpenSSLTransformRsaSha1Id	\
 	xmlSecOpenSSLTransformRsaSha1GetKlass()
 XMLSEC_CRYPTO_EXPORT xmlSecTransformId xmlSecOpenSSLTransformRsaSha1GetKlass(void);
+#endif /* XMLSEC_NO_SHA1 */
+
+#ifndef XMLSEC_NO_SHA224
+/**
+ * xmlSecOpenSSLTransformRsaSha224Id:
+ * 
+ * The RSA-SHA224 signature transform klass.
+ */
+#define xmlSecOpenSSLTransformRsaSha224Id	\
+	xmlSecOpenSSLTransformRsaSha224GetKlass()
+XMLSEC_CRYPTO_EXPORT xmlSecTransformId xmlSecOpenSSLTransformRsaSha224GetKlass(void);
+#endif /* XMLSEC_NO_SHA224 */
+
+#ifndef XMLSEC_NO_SHA256
+/**
+ * xmlSecOpenSSLTransformRsaSha256Id:
+ * 
+ * The RSA-SHA256 signature transform klass.
+ */
+#define xmlSecOpenSSLTransformRsaSha256Id	\
+	xmlSecOpenSSLTransformRsaSha256GetKlass()
+XMLSEC_CRYPTO_EXPORT xmlSecTransformId xmlSecOpenSSLTransformRsaSha256GetKlass(void);
+#endif /* XMLSEC_NO_SHA256 */
+
+#ifndef XMLSEC_NO_SHA384
+/**
+ * xmlSecOpenSSLTransformRsaSha384Id:
+ * 
+ * The RSA-SHA384 signature transform klass.
+ */
+#define xmlSecOpenSSLTransformRsaSha384Id	\
+	xmlSecOpenSSLTransformRsaSha384GetKlass()
+XMLSEC_CRYPTO_EXPORT xmlSecTransformId xmlSecOpenSSLTransformRsaSha384GetKlass(void);
+#endif /* XMLSEC_NO_SHA384 */
+
+#ifndef XMLSEC_NO_SHA512
+/**
+ * xmlSecOpenSSLTransformRsaSha512Id:
+ * 
+ * The RSA-SHA512 signature transform klass.
+ */
+#define xmlSecOpenSSLTransformRsaSha512Id	\
+	xmlSecOpenSSLTransformRsaSha512GetKlass()
+XMLSEC_CRYPTO_EXPORT xmlSecTransformId xmlSecOpenSSLTransformRsaSha512GetKlass(void);
+#endif /* XMLSEC_NO_SHA512 */
 
 /**
  * xmlSecOpenSSLTransformRsaPkcs1Id:
@@ -315,6 +463,74 @@ XMLSEC_CRYPTO_EXPORT xmlSecTransformId xmlSecOpenSSLTransformSha1GetKlass(void);
 #endif /* XMLSEC_NO_SHA1 */
 
 
+/********************************************************************
+ *
+ * SHA224 transform
+ *
+ *******************************************************************/
+#ifndef XMLSEC_NO_SHA224
+/**
+ * xmlSecOpenSSLTransformSha224Id:
+ * 
+ * The SHA224 digest transform klass.
+ */
+#define xmlSecOpenSSLTransformSha224Id \
+	xmlSecOpenSSLTransformSha224GetKlass()
+XMLSEC_CRYPTO_EXPORT xmlSecTransformId xmlSecOpenSSLTransformSha224GetKlass(void);
+#endif /* XMLSEC_NO_SHA224 */
+
+
+/********************************************************************
+ *
+ * SHA256 transform
+ *
+ *******************************************************************/
+#ifndef XMLSEC_NO_SHA256
+/**
+ * xmlSecOpenSSLTransformSha256Id:
+ * 
+ * The SHA256 digest transform klass.
+ */
+#define xmlSecOpenSSLTransformSha256Id \
+	xmlSecOpenSSLTransformSha256GetKlass()
+XMLSEC_CRYPTO_EXPORT xmlSecTransformId xmlSecOpenSSLTransformSha256GetKlass(void);
+#endif /* XMLSEC_NO_SHA256 */
+
+/********************************************************************
+ *
+ * SHA384 transform
+ *
+ *******************************************************************/
+#ifndef XMLSEC_NO_SHA384
+/**
+ * xmlSecOpenSSLTransformSha384Id:
+ * 
+ * The SHA384 digest transform klass.
+ */
+#define xmlSecOpenSSLTransformSha384Id \
+	xmlSecOpenSSLTransformSha384GetKlass()
+XMLSEC_CRYPTO_EXPORT xmlSecTransformId xmlSecOpenSSLTransformSha384GetKlass(void);
+#endif /* XMLSEC_NO_SHA384 */
+
+/********************************************************************
+ *
+ * SHA512 transform
+ *
+ *******************************************************************/
+#ifndef XMLSEC_NO_SHA512
+/**
+ * xmlSecOpenSSLTransformSha512Id:
+ * 
+ * The SHA512 digest transform klass.
+ */
+#define xmlSecOpenSSLTransformSha512Id \
+	xmlSecOpenSSLTransformSha512GetKlass()
+XMLSEC_CRYPTO_EXPORT xmlSecTransformId xmlSecOpenSSLTransformSha512GetKlass(void);
+#endif /* XMLSEC_NO_SHA512 */
+
+
+
+
 /**************************************************************
  *
  * Error constants for OpenSSL 
diff --git a/include/xmlsec/openssl/symbols.h b/include/xmlsec/openssl/symbols.h
index 444ef69..295c234 100644
--- a/include/xmlsec/openssl/symbols.h
+++ b/include/xmlsec/openssl/symbols.h
@@ -58,14 +58,29 @@ extern "C" {
 #define xmlSecTransformDes3CbcId		xmlSecOpenSSLTransformDes3CbcId
 #define xmlSecTransformKWDes3Id			xmlSecOpenSSLTransformKWDes3Id
 #define xmlSecTransformDsaSha1Id		xmlSecOpenSSLTransformDsaSha1Id
-#define xmlSecTransformHmacSha1Id		xmlSecOpenSSLTransformHmacSha1Id
-#define xmlSecTransformHmacRipemd160Id		xmlSecOpenSSLTransformHmacRipemd160Id
 #define xmlSecTransformHmacMd5Id		xmlSecOpenSSLTransformHmacMd5Id
+#define xmlSecTransformHmacRipemd160Id		xmlSecOpenSSLTransformHmacRipemd160Id
+#define xmlSecTransformHmacSha1Id		xmlSecOpenSSLTransformHmacSha1Id
+#define xmlSecTransformHmacSha224Id		xmlSecOpenSSLTransformHmacSha224Id
+#define xmlSecTransformHmacSha256Id		xmlSecOpenSSLTransformHmacSha256Id
+#define xmlSecTransformHmacSha384Id		xmlSecOpenSSLTransformHmacSha384Id
+#define xmlSecTransformHmacSha512Id		xmlSecOpenSSLTransformHmacSha512Id
+#define xmlSecTransformMd5Id			xmlSecOpenSSLTransformMd5Id
 #define xmlSecTransformRipemd160Id		xmlSecOpenSSLTransformRipemd160Id
+#define xmlSecTransformRsaMd5Id			xmlSecOpenSSLTransformRsaMd5Id
+#define xmlSecTransformRsaRipemd160Id		xmlSecOpenSSLTransformRsaRipemd160Id
 #define xmlSecTransformRsaSha1Id		xmlSecOpenSSLTransformRsaSha1Id
+#define xmlSecTransformRsaSha224Id		xmlSecOpenSSLTransformRsaSha224Id
+#define xmlSecTransformRsaSha256Id		xmlSecOpenSSLTransformRsaSha256Id
+#define xmlSecTransformRsaSha384Id		xmlSecOpenSSLTransformRsaSha384Id
+#define xmlSecTransformRsaSha512Id		xmlSecOpenSSLTransformRsaSha512Id
 #define xmlSecTransformRsaPkcs1Id		xmlSecOpenSSLTransformRsaPkcs1Id
 #define xmlSecTransformRsaOaepId		xmlSecOpenSSLTransformRsaOaepId
 #define xmlSecTransformSha1Id			xmlSecOpenSSLTransformSha1Id
+#define xmlSecTransformSha224Id			xmlSecOpenSSLTransformSha224Id
+#define xmlSecTransformSha256Id			xmlSecOpenSSLTransformSha256Id
+#define xmlSecTransformSha384Id			xmlSecOpenSSLTransformSha384Id
+#define xmlSecTransformSha512Id			xmlSecOpenSSLTransformSha512Id
 
 /**
  * High level routines form xmlsec command line utility
diff --git a/include/xmlsec/private.h b/include/xmlsec/private.h
index 104c85a..2cf3aa9 100644
--- a/include/xmlsec/private.h
+++ b/include/xmlsec/private.h
@@ -348,14 +348,29 @@ typedef int			(*xmlSecCryptoAppKeyCertLoadMemoryMethod)(xmlSecKeyPtr key,
  * @transformDes3CbcGetKlass:	the method to get pointer to Triple DES encryption transform.
  * @transformKWDes3GetKlass:	the method to get pointer to Triple DES key wrapper transform.
  * @transformDsaSha1GetKlass:	the method to get pointer to DSA-SHA1 signature transform.
- * @transformHmacSha1GetKlass:	the method to get pointer to HMAC-SHA1 transform.
- * @transformHmacRipemd160GetKlass: the method to get pointer to HMAC-RIPEMD160 transform.
  * @transformHmacMd5GetKlass:	the method to get pointer to HMAC-MD5 transform.
+ * @transformHmacRipemd160GetKlass: the method to get pointer to HMAC-RIPEMD160 transform.
+ * @transformHmacSha1GetKlass:	the method to get pointer to HMAC-SHA1 transform.
+ * @transformHmacSha224GetKlass: the method to get pointer to HMAC-SHA224 transform.
+ * @transformHmacSha256GetKlass: the method to get pointer to HMAC-SHA256 transform.
+ * @transformHmacSha384GetKlass: the method to get pointer to HMAC-SHA384 transform.
+ * @transformHmacSha512GetKlass: the method to get pointer to HMAC-SHA512 transform.
+ * @transformMd5GetKlass:	the method to get pointer to MD5 digest transform.
  * @transformRipemd160GetKlass:	the method to get pointer to RIPEMD160 digest transform.
+ * @transformRsaMd5GetKlass:	the method to get pointer to RSA-MD5 signature transform.
+ * @transformRsaRipemd160GetKlass: the method to get pointer to RSA-RIPEMD160 signature transform.
  * @transformRsaSha1GetKlass:	the method to get pointer to RSA-SHA1 signature transform.
+ * @transformRsaSha224GetKlass:	the method to get pointer to RSA-SHA224 signature transform.
+ * @transformRsaSha256GetKlass:	the method to get pointer to RSA-SHA256 signature transform.
+ * @transformRsaSha384GetKlass:	the method to get pointer to RSA-SHA384 signature transform.
+ * @transformRsaSha512GetKlass:	the method to get pointer to RSA-SHA512 signature transform.
  * @transformRsaPkcs1GetKlass:	the method to get pointer to RSA-PKCS1_5 key transport transform.
  * @transformRsaOaepGetKlass:	the method to get pointer to RSA-OAEP key transport transform.
  * @transformSha1GetKlass:	the method to get pointer to SHA1 digest transform.
+ * @transformSha224GetKlass:	the method to get pointer to SHA224 digest transform.
+ * @transformSha256GetKlass:	the method to get pointer to SHA256 digest transform.
+ * @transformSha384GetKlass:	the method to get pointer to SHA384 digest transform.
+ * @transformSha512GetKlass:	the method to get pointer to SHA512 digest transform.
  * @cryptoAppInit:		the default crypto engine initialization method.
  * @cryptoAppShutdown:		the default crypto engine shutdown method.
  * @cryptoAppDefaultKeysMngrInit: 	the default keys manager init method.
@@ -410,15 +425,30 @@ struct _xmlSecCryptoDLFunctions {
     xmlSecCryptoTransformGetKlassMethod		 transformDes3CbcGetKlass;
     xmlSecCryptoTransformGetKlassMethod		 transformKWDes3GetKlass;
     xmlSecCryptoTransformGetKlassMethod		 transformDsaSha1GetKlass;
-    xmlSecCryptoTransformGetKlassMethod		 transformHmacSha1GetKlass;
-    xmlSecCryptoTransformGetKlassMethod		 transformHmacRipemd160GetKlass;
     xmlSecCryptoTransformGetKlassMethod		 transformHmacMd5GetKlass;
+    xmlSecCryptoTransformGetKlassMethod		 transformHmacRipemd160GetKlass;
+    xmlSecCryptoTransformGetKlassMethod		 transformHmacSha1GetKlass;
+    xmlSecCryptoTransformGetKlassMethod		 transformHmacSha224GetKlass;
+    xmlSecCryptoTransformGetKlassMethod		 transformHmacSha256GetKlass;
+    xmlSecCryptoTransformGetKlassMethod		 transformHmacSha384GetKlass;
+    xmlSecCryptoTransformGetKlassMethod		 transformHmacSha512GetKlass;
+    xmlSecCryptoTransformGetKlassMethod		 transformMd5GetKlass;
     xmlSecCryptoTransformGetKlassMethod		 transformRipemd160GetKlass;
+    xmlSecCryptoTransformGetKlassMethod		 transformRsaMd5GetKlass;
+    xmlSecCryptoTransformGetKlassMethod		 transformRsaRipemd160GetKlass;
     xmlSecCryptoTransformGetKlassMethod		 transformRsaSha1GetKlass;
+    xmlSecCryptoTransformGetKlassMethod		 transformRsaSha224GetKlass;
+    xmlSecCryptoTransformGetKlassMethod		 transformRsaSha256GetKlass;
+    xmlSecCryptoTransformGetKlassMethod		 transformRsaSha384GetKlass;
+    xmlSecCryptoTransformGetKlassMethod		 transformRsaSha512GetKlass;
     xmlSecCryptoTransformGetKlassMethod		 transformRsaPkcs1GetKlass;
     xmlSecCryptoTransformGetKlassMethod		 transformRsaOaepGetKlass;
     xmlSecCryptoTransformGetKlassMethod		 transformSha1GetKlass;
-     
+    xmlSecCryptoTransformGetKlassMethod		 transformSha224GetKlass;
+    xmlSecCryptoTransformGetKlassMethod		 transformSha256GetKlass;
+    xmlSecCryptoTransformGetKlassMethod		 transformSha384GetKlass;
+    xmlSecCryptoTransformGetKlassMethod		 transformSha512GetKlass;
+    
     /**
      * High level routines form xmlsec command line utility
      */ 
@@ -439,36 +469,9 @@ struct _xmlSecCryptoDLFunctions {
     void*					 cryptoAppDefaultPwdCallback;
 };
 
-#ifdef XMLSEC_LIBXML_260
 #include <libxml/xmlstring.h>
 #define xmlSecStrPrintf 	xmlStrPrintf
-#else  /* XMLSEC_LIBXML_260 */
-#ifdef HAVE_SNPRINTF
-#define xmlSecStrPrintf 	snprintf
-#else  /* HAVE_SNPRINTF */
-#ifdef _MSC_VER
-#define xmlSecStrPrintf 	_snprintf
-#else  /* _MSC_VER */
-#error No snprintf function found
-#endif /* _MSC_VER */
-#endif /* HAVE_SNPRINTF */
-#endif /* XMLSEC_LIBXML_260 */
-
-#ifdef XMLSEC_LIBXML_260
-#include <libxml/xmlstring.h>
 #define xmlSecStrVPrintf 	xmlStrVPrintf
-#else  /* XMLSEC_LIBXML_260 */
-#ifdef HAVE_VSNPRINTF
-#define xmlSecStrVPrintf 	vsnprintf
-#else  /* HAVE_VSNPRINTF */
-#ifdef _MSC_VER
-#define xmlSecStrVPrintf 	_vsnprintf
-#else  /* _MSC_VER */
-#error No vsnprintf function found
-#endif /* _MSC_VER */
-#endif /* HAVE_VSNPRINTF */
-#endif /* XMLSEC_LIBXML_260 */
-
 
 #ifdef __cplusplus
 }
diff --git a/include/xmlsec/private/Makefile.in b/include/xmlsec/private/Makefile.in
index 316d07d..7850c51 100644
--- a/include/xmlsec/private/Makefile.in
+++ b/include/xmlsec/private/Makefile.in
@@ -1,4 +1,4 @@
-# Makefile.in generated by automake 1.8.3 from Makefile.am.
+# Makefile.in generated by automake 1.9.2 from Makefile.am.
 # @configure_input@
 
 # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
@@ -34,6 +34,7 @@ POST_INSTALL = :
 NORMAL_UNINSTALL = :
 PRE_UNINSTALL = :
 POST_UNINSTALL = :
+build_triplet = @build@
 host_triplet = @host@
 subdir = include/xmlsec/private
 DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in \
@@ -47,6 +48,12 @@ CONFIG_HEADER = $(top_builddir)/config.h
 CONFIG_CLEAN_FILES =
 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 = `echo $$p | sed -e 's|^.*/||'`;
 am__installdirs = "$(DESTDIR)$(xmlsecprivateincdir)"
 xmlsecprivateincHEADERS_INSTALL = $(INSTALL_HEADER)
 HEADERS = $(xmlsecprivateinc_HEADERS)
@@ -101,8 +108,6 @@ LIBADD_DL = @LIBADD_DL@
 LIBOBJS = @LIBOBJS@
 LIBS = @LIBS@
 LIBTOOL = @LIBTOOL@
-LIBXML262_CFLAGS = @LIBXML262_CFLAGS@
-LIBXML262_LIBS = @LIBXML262_LIBS@
 LIBXML_CFLAGS = @LIBXML_CFLAGS@
 LIBXML_CONFIG = @LIBXML_CONFIG@
 LIBXML_LIBS = @LIBXML_LIBS@
@@ -126,8 +131,6 @@ NSS_CRYPTO_LIB = @NSS_CRYPTO_LIB@
 NSS_LIBS = @NSS_LIBS@
 NSS_MIN_VERSION = @NSS_MIN_VERSION@
 OBJEXT = @OBJEXT@
-OPENSSL097_CFLAGS = @OPENSSL097_CFLAGS@
-OPENSSL097_LIBS = @OPENSSL097_LIBS@
 OPENSSL_CFLAGS = @OPENSSL_CFLAGS@
 OPENSSL_CRYPTO_LIB = @OPENSSL_CRYPTO_LIB@
 OPENSSL_LIBS = @OPENSSL_LIBS@
@@ -190,6 +193,9 @@ XMLSEC_NO_HMAC = @XMLSEC_NO_HMAC@
 XMLSEC_NO_HMAC_FALSE = @XMLSEC_NO_HMAC_FALSE@
 XMLSEC_NO_HMAC_TRUE = @XMLSEC_NO_HMAC_TRUE@
 XMLSEC_NO_LIBXSLT = @XMLSEC_NO_LIBXSLT@
+XMLSEC_NO_MD5 = @XMLSEC_NO_MD5@
+XMLSEC_NO_MD5_FALSE = @XMLSEC_NO_MD5_FALSE@
+XMLSEC_NO_MD5_TRUE = @XMLSEC_NO_MD5_TRUE@
 XMLSEC_NO_NSS = @XMLSEC_NO_NSS@
 XMLSEC_NO_NSS_FALSE = @XMLSEC_NO_NSS_FALSE@
 XMLSEC_NO_NSS_TRUE = @XMLSEC_NO_NSS_TRUE@
@@ -205,6 +211,18 @@ XMLSEC_NO_RSA_TRUE = @XMLSEC_NO_RSA_TRUE@
 XMLSEC_NO_SHA1 = @XMLSEC_NO_SHA1@
 XMLSEC_NO_SHA1_FALSE = @XMLSEC_NO_SHA1_FALSE@
 XMLSEC_NO_SHA1_TRUE = @XMLSEC_NO_SHA1_TRUE@
+XMLSEC_NO_SHA224 = @XMLSEC_NO_SHA224@
+XMLSEC_NO_SHA224_FALSE = @XMLSEC_NO_SHA224_FALSE@
+XMLSEC_NO_SHA224_TRUE = @XMLSEC_NO_SHA224_TRUE@
+XMLSEC_NO_SHA256 = @XMLSEC_NO_SHA256@
+XMLSEC_NO_SHA256_FALSE = @XMLSEC_NO_SHA256_FALSE@
+XMLSEC_NO_SHA256_TRUE = @XMLSEC_NO_SHA256_TRUE@
+XMLSEC_NO_SHA384 = @XMLSEC_NO_SHA384@
+XMLSEC_NO_SHA384_FALSE = @XMLSEC_NO_SHA384_FALSE@
+XMLSEC_NO_SHA384_TRUE = @XMLSEC_NO_SHA384_TRUE@
+XMLSEC_NO_SHA512 = @XMLSEC_NO_SHA512@
+XMLSEC_NO_SHA512_FALSE = @XMLSEC_NO_SHA512_FALSE@
+XMLSEC_NO_SHA512_TRUE = @XMLSEC_NO_SHA512_TRUE@
 XMLSEC_NO_X509 = @XMLSEC_NO_X509@
 XMLSEC_NO_X509_FALSE = @XMLSEC_NO_X509_FALSE@
 XMLSEC_NO_X509_TRUE = @XMLSEC_NO_X509_TRUE@
@@ -242,6 +260,8 @@ am__fastdepCXX_TRUE = @am__fastdepCXX_TRUE@
 am__include = @am__include@
 am__leading_dot = @am__leading_dot@
 am__quote = @am__quote@
+am__tar = @am__tar@
+am__untar = @am__untar@
 bindir = @bindir@
 build = @build@
 build_alias = @build_alias@
@@ -323,7 +343,7 @@ install-xmlsecprivateincHEADERS: $(xmlsecprivateinc_HEADERS)
 	test -z "$(xmlsecprivateincdir)" || $(mkdir_p) "$(DESTDIR)$(xmlsecprivateincdir)"
 	@list='$(xmlsecprivateinc_HEADERS)'; for p in $$list; do \
 	  if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
-	  f="`echo $$p | sed -e 's|^.*/||'`"; \
+	  f=$(am__strip_dir) \
 	  echo " $(xmlsecprivateincHEADERS_INSTALL) '$$d$$p' '$(DESTDIR)$(xmlsecprivateincdir)/$$f'"; \
 	  $(xmlsecprivateincHEADERS_INSTALL) "$$d$$p" "$(DESTDIR)$(xmlsecprivateincdir)/$$f"; \
 	done
@@ -331,7 +351,7 @@ install-xmlsecprivateincHEADERS: $(xmlsecprivateinc_HEADERS)
 uninstall-xmlsecprivateincHEADERS:
 	@$(NORMAL_UNINSTALL)
 	@list='$(xmlsecprivateinc_HEADERS)'; for p in $$list; do \
-	  f="`echo $$p | sed -e 's|^.*/||'`"; \
+	  f=$(am__strip_dir) \
 	  echo " rm -f '$(DESTDIR)$(xmlsecprivateincdir)/$$f'"; \
 	  rm -f "$(DESTDIR)$(xmlsecprivateincdir)/$$f"; \
 	done
@@ -356,9 +376,11 @@ TAGS:  $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
 	  done | \
 	  $(AWK) '    { files[$$0] = 1; } \
 	       END { for (i in files) print i; }'`; \
-	test -z "$(ETAGS_ARGS)$$tags$$unique" \
-	  || $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
-	     $$tags $$unique
+	if test -z "$(ETAGS_ARGS)$$tags$$unique"; then :; else \
+	  test -n "$$unique" || unique=$$empty_fix; \
+	  $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+	    $$tags $$unique; \
+	fi
 ctags: CTAGS
 CTAGS:  $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
 		$(TAGS_FILES) $(LISP)
@@ -435,7 +457,7 @@ mostlyclean-generic:
 clean-generic:
 
 distclean-generic:
-	-rm -f $(CONFIG_CLEAN_FILES)
+	-test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
 
 maintainer-clean-generic:
 	@echo "This command is intended for maintainers to use"
@@ -493,8 +515,8 @@ uninstall-am: uninstall-info-am uninstall-xmlsecprivateincHEADERS
 	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-exec install-exec-am install-info \
-	install-info-am install-man install-strip \
+	install-data-am install-exec install-exec-am install-exec-hook \
+	install-info install-info-am install-man install-strip \
 	install-xmlsecprivateincHEADERS installcheck installcheck-am \
 	installdirs maintainer-clean maintainer-clean-generic \
 	mostlyclean mostlyclean-generic mostlyclean-libtool pdf pdf-am \
diff --git a/include/xmlsec/skeleton/symbols.h b/include/xmlsec/skeleton/symbols.h
index 22cc435..1473f01 100644
--- a/include/xmlsec/skeleton/symbols.h
+++ b/include/xmlsec/skeleton/symbols.h
@@ -58,14 +58,27 @@ extern "C" {
 #define xmlSecTransformDes3CbcId		xmlSecSkeletonTransformDes3CbcId
 #define xmlSecTransformKWDes3Id			xmlSecSkeletonTransformKWDes3Id
 #define xmlSecTransformDsaSha1Id		xmlSecSkeletonTransformDsaSha1Id
-#define xmlSecTransformHmacSha1Id		xmlSecSkeletonTransformHmacSha1Id
-#define xmlSecTransformHmacRipemd160Id		xmlSecSkeletonTransformHmacRipemd160Id
 #define xmlSecTransformHmacMd5Id		xmlSecSkeletonTransformHmacMd5Id
+#define xmlSecTransformHmacRipemd160Id		xmlSecSkeletonTransformHmacRipemd160Id
+#define xmlSecTransformHmacSha1Id		xmlSecSkeletonTransformHmacSha1Id
+#define xmlSecTransformHmacSha224Id		xmlSecSkeletonTransformHmacSha224Id
+#define xmlSecTransformHmacSha256Id		xmlSecSkeletonTransformHmacSha256Id
+#define xmlSecTransformHmacSha384Id		xmlSecSkeletonTransformHmacSha384Id
+#define xmlSecTransformHmacSha512Id		xmlSecSkeletonTransformHmacSha512Id
+#define xmlSecTransformMd5Id			xmlSecSkeletonTransformMd5Id
 #define xmlSecTransformRipemd160Id		xmlSecSkeletonTransformRipemd160Id
 #define xmlSecTransformRsaSha1Id		xmlSecSkeletonTransformRsaSha1Id
+#define xmlSecTransformRsaSha224Id		xmlSecSkeletonTransformRsaSha224Id
+#define xmlSecTransformRsaSha256Id		xmlSecSkeletonTransformRsaSha256Id
+#define xmlSecTransformRsaSha384Id		xmlSecSkeletonTransformRsaSha384Id
+#define xmlSecTransformRsaSha512Id		xmlSecSkeletonTransformRsaSha512Id
 #define xmlSecTransformRsaPkcs1Id		xmlSecSkeletonTransformRsaPkcs1Id
 #define xmlSecTransformRsaOaepId		xmlSecSkeletonTransformRsaOaepId
 #define xmlSecTransformSha1Id			xmlSecSkeletonTransformSha1Id
+#define xmlSecTransformSha224Id			xmlSecSkeletonTransformSha224Id
+#define xmlSecTransformSha256Id			xmlSecSkeletonTransformSha256Id
+#define xmlSecTransformSha384Id			xmlSecSkeletonTransformSha384Id
+#define xmlSecTransformSha512Id			xmlSecSkeletonTransformSha512Id
 
 /**
  * High level routines form xmlsec command line utility
diff --git a/include/xmlsec/strings.h b/include/xmlsec/strings.h
index 7ba037a..0574bab 100644
--- a/include/xmlsec/strings.h
+++ b/include/xmlsec/strings.h
@@ -340,14 +340,26 @@ XMLSEC_EXPORT_VAR const xmlChar xmlSecHrefHMACKeyValue[];
 
 XMLSEC_EXPORT_VAR const xmlChar xmlSecNodeHMACOutputLength[];
 
-XMLSEC_EXPORT_VAR const xmlChar xmlSecNameHmacSha1[];
-XMLSEC_EXPORT_VAR const xmlChar xmlSecHrefHmacSha1[];
+XMLSEC_EXPORT_VAR const xmlChar xmlSecNameHmacMd5[];
+XMLSEC_EXPORT_VAR const xmlChar xmlSecHrefHmacMd5[];
 
 XMLSEC_EXPORT_VAR const xmlChar xmlSecNameHmacRipemd160[];
 XMLSEC_EXPORT_VAR const xmlChar xmlSecHrefHmacRipemd160[];
 
-XMLSEC_EXPORT_VAR const xmlChar xmlSecNameHmacMd5[];
-XMLSEC_EXPORT_VAR const xmlChar xmlSecHrefHmacMd5[];
+XMLSEC_EXPORT_VAR const xmlChar xmlSecNameHmacSha1[];
+XMLSEC_EXPORT_VAR const xmlChar xmlSecHrefHmacSha1[];
+
+XMLSEC_EXPORT_VAR const xmlChar xmlSecNameHmacSha224[];
+XMLSEC_EXPORT_VAR const xmlChar xmlSecHrefHmacSha224[];
+
+XMLSEC_EXPORT_VAR const xmlChar xmlSecNameHmacSha256[];
+XMLSEC_EXPORT_VAR const xmlChar xmlSecHrefHmacSha256[];
+
+XMLSEC_EXPORT_VAR const xmlChar xmlSecNameHmacSha384[];
+XMLSEC_EXPORT_VAR const xmlChar xmlSecHrefHmacSha384[];
+
+XMLSEC_EXPORT_VAR const xmlChar xmlSecNameHmacSha512[];
+XMLSEC_EXPORT_VAR const xmlChar xmlSecHrefHmacSha512[];
 
 /*************************************************************************
  *
@@ -374,6 +386,14 @@ XMLSEC_EXPORT_VAR const xmlChar xmlSecNameMemBuf[];
 
 /*************************************************************************
  *
+ * MD5 strings
+ *
+ ************************************************************************/
+XMLSEC_EXPORT_VAR const xmlChar xmlSecNameMd5[];
+XMLSEC_EXPORT_VAR const xmlChar xmlSecHrefMd5[];
+
+/*************************************************************************
+ *
  * RetrievalMethod
  *
  ************************************************************************/
@@ -401,9 +421,27 @@ XMLSEC_EXPORT_VAR const xmlChar xmlSecNodeRSAModulus[];
 XMLSEC_EXPORT_VAR const xmlChar xmlSecNodeRSAExponent[];
 XMLSEC_EXPORT_VAR const xmlChar xmlSecNodeRSAPrivateExponent[];
 
+XMLSEC_EXPORT_VAR const xmlChar xmlSecNameRsaMd5[];
+XMLSEC_EXPORT_VAR const xmlChar xmlSecHrefRsaMd5[];
+
+XMLSEC_EXPORT_VAR const xmlChar xmlSecNameRsaRipemd160[];
+XMLSEC_EXPORT_VAR const xmlChar xmlSecHrefRsaRipemd160[];
+
 XMLSEC_EXPORT_VAR const xmlChar xmlSecNameRsaSha1[];
 XMLSEC_EXPORT_VAR const xmlChar xmlSecHrefRsaSha1[];
 
+XMLSEC_EXPORT_VAR const xmlChar xmlSecNameRsaSha224[];
+XMLSEC_EXPORT_VAR const xmlChar xmlSecHrefRsaSha224[];
+
+XMLSEC_EXPORT_VAR const xmlChar xmlSecNameRsaSha256[];
+XMLSEC_EXPORT_VAR const xmlChar xmlSecHrefRsaSha256[];
+
+XMLSEC_EXPORT_VAR const xmlChar xmlSecNameRsaSha384[];
+XMLSEC_EXPORT_VAR const xmlChar xmlSecHrefRsaSha384[];
+
+XMLSEC_EXPORT_VAR const xmlChar xmlSecNameRsaSha512[];
+XMLSEC_EXPORT_VAR const xmlChar xmlSecHrefRsaSha512[];
+
 XMLSEC_EXPORT_VAR const xmlChar xmlSecNameRsaPkcs1[];
 XMLSEC_EXPORT_VAR const xmlChar xmlSecHrefRsaPkcs1[];
 
@@ -419,6 +457,18 @@ XMLSEC_EXPORT_VAR const xmlChar xmlSecNodeRsaOAEPparams[];
 XMLSEC_EXPORT_VAR const xmlChar xmlSecNameSha1[];
 XMLSEC_EXPORT_VAR const xmlChar xmlSecHrefSha1[];
 
+XMLSEC_EXPORT_VAR const xmlChar xmlSecNameSha224[];
+XMLSEC_EXPORT_VAR const xmlChar xmlSecHrefSha224[];
+
+XMLSEC_EXPORT_VAR const xmlChar xmlSecNameSha256[];
+XMLSEC_EXPORT_VAR const xmlChar xmlSecHrefSha256[];
+
+XMLSEC_EXPORT_VAR const xmlChar xmlSecNameSha384[];
+XMLSEC_EXPORT_VAR const xmlChar xmlSecHrefSha384[];
+
+XMLSEC_EXPORT_VAR const xmlChar xmlSecNameSha512[];
+XMLSEC_EXPORT_VAR const xmlChar xmlSecHrefSha512[];
+
 /*************************************************************************
  *
  * X509 strings
diff --git a/include/xmlsec/templates.h b/include/xmlsec/templates.h
index c675b78..e20288f 100644
--- a/include/xmlsec/templates.h
+++ b/include/xmlsec/templates.h
@@ -110,7 +110,18 @@ XMLSEC_EXPORT xmlNodePtr xmlSecTmplKeyInfoAddEncryptedKey	(xmlNodePtr keyInfoNod
 								 const xmlChar *id,
 								 const xmlChar *type,
 								 const xmlChar *recipient);
-    
+
+/***********************************************************************
+ *
+ * <dsig:X509Data> node
+ *
+ **********************************************************************/ 
+XMLSEC_EXPORT xmlNodePtr xmlSecTmplX509DataAddIssuerSerial	(xmlNodePtr x509DataNode);
+XMLSEC_EXPORT xmlNodePtr xmlSecTmplX509DataAddSubjectName	(xmlNodePtr x509DataNode);
+XMLSEC_EXPORT xmlNodePtr xmlSecTmplX509DataAddSKI		(xmlNodePtr x509DataNode);
+XMLSEC_EXPORT xmlNodePtr xmlSecTmplX509DataAddCertificate	(xmlNodePtr x509DataNode);
+XMLSEC_EXPORT xmlNodePtr xmlSecTmplX509DataAddCRL		(xmlNodePtr x509DataNode);
+
 /***********************************************************************
  *
  * <dsig:Transform> node
diff --git a/include/xmlsec/version.h b/include/xmlsec/version.h
index bdba2f7..cbb9b9f 100644
--- a/include/xmlsec/version.h
+++ b/include/xmlsec/version.h
@@ -21,7 +21,7 @@ extern "C" {
  * The library version string in the format
  * "<major-number>.<minor-number>.<sub-minor-number>".
  */
-#define XMLSEC_VERSION			"1.2.6"
+#define XMLSEC_VERSION			"1.2.9"
 
 /**
  * XMLSEC_VERSION_MAJOR:
@@ -42,7 +42,7 @@ extern "C" {
  *
  * The library sub-minor version number.
  */
-#define XMLSEC_VERSION_SUBMINOR		6
+#define XMLSEC_VERSION_SUBMINOR		9
 
 /**
  * XMLSEC_VERSION_INFO:
@@ -50,7 +50,7 @@ extern "C" {
  * The library version info string in the format
  * "<major-number>+<minor-number>:<sub-minor-number>:<minor-number>".
  */
-#define XMLSEC_VERSION_INFO		"3:6:2"
+#define XMLSEC_VERSION_INFO		"3:9:2"
 
 
 #ifdef __cplusplus
diff --git a/man/Makefile.in b/man/Makefile.in
index 8c81250..624b328 100644
--- a/man/Makefile.in
+++ b/man/Makefile.in
@@ -1,4 +1,4 @@
-# Makefile.in generated by automake 1.8.3 from Makefile.am.
+# Makefile.in generated by automake 1.9.2 from Makefile.am.
 # @configure_input@
 
 # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
@@ -33,6 +33,7 @@ POST_INSTALL = :
 NORMAL_UNINSTALL = :
 PRE_UNINSTALL = :
 POST_UNINSTALL = :
+build_triplet = @build@
 host_triplet = @host@
 subdir = man
 DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in
@@ -98,8 +99,6 @@ LIBADD_DL = @LIBADD_DL@
 LIBOBJS = @LIBOBJS@
 LIBS = @LIBS@
 LIBTOOL = @LIBTOOL@
-LIBXML262_CFLAGS = @LIBXML262_CFLAGS@
-LIBXML262_LIBS = @LIBXML262_LIBS@
 LIBXML_CFLAGS = @LIBXML_CFLAGS@
 LIBXML_CONFIG = @LIBXML_CONFIG@
 LIBXML_LIBS = @LIBXML_LIBS@
@@ -123,8 +122,6 @@ NSS_CRYPTO_LIB = @NSS_CRYPTO_LIB@
 NSS_LIBS = @NSS_LIBS@
 NSS_MIN_VERSION = @NSS_MIN_VERSION@
 OBJEXT = @OBJEXT@
-OPENSSL097_CFLAGS = @OPENSSL097_CFLAGS@
-OPENSSL097_LIBS = @OPENSSL097_LIBS@
 OPENSSL_CFLAGS = @OPENSSL_CFLAGS@
 OPENSSL_CRYPTO_LIB = @OPENSSL_CRYPTO_LIB@
 OPENSSL_LIBS = @OPENSSL_LIBS@
@@ -187,6 +184,9 @@ XMLSEC_NO_HMAC = @XMLSEC_NO_HMAC@
 XMLSEC_NO_HMAC_FALSE = @XMLSEC_NO_HMAC_FALSE@
 XMLSEC_NO_HMAC_TRUE = @XMLSEC_NO_HMAC_TRUE@
 XMLSEC_NO_LIBXSLT = @XMLSEC_NO_LIBXSLT@
+XMLSEC_NO_MD5 = @XMLSEC_NO_MD5@
+XMLSEC_NO_MD5_FALSE = @XMLSEC_NO_MD5_FALSE@
+XMLSEC_NO_MD5_TRUE = @XMLSEC_NO_MD5_TRUE@
 XMLSEC_NO_NSS = @XMLSEC_NO_NSS@
 XMLSEC_NO_NSS_FALSE = @XMLSEC_NO_NSS_FALSE@
 XMLSEC_NO_NSS_TRUE = @XMLSEC_NO_NSS_TRUE@
@@ -202,6 +202,18 @@ XMLSEC_NO_RSA_TRUE = @XMLSEC_NO_RSA_TRUE@
 XMLSEC_NO_SHA1 = @XMLSEC_NO_SHA1@
 XMLSEC_NO_SHA1_FALSE = @XMLSEC_NO_SHA1_FALSE@
 XMLSEC_NO_SHA1_TRUE = @XMLSEC_NO_SHA1_TRUE@
+XMLSEC_NO_SHA224 = @XMLSEC_NO_SHA224@
+XMLSEC_NO_SHA224_FALSE = @XMLSEC_NO_SHA224_FALSE@
+XMLSEC_NO_SHA224_TRUE = @XMLSEC_NO_SHA224_TRUE@
+XMLSEC_NO_SHA256 = @XMLSEC_NO_SHA256@
+XMLSEC_NO_SHA256_FALSE = @XMLSEC_NO_SHA256_FALSE@
+XMLSEC_NO_SHA256_TRUE = @XMLSEC_NO_SHA256_TRUE@
+XMLSEC_NO_SHA384 = @XMLSEC_NO_SHA384@
+XMLSEC_NO_SHA384_FALSE = @XMLSEC_NO_SHA384_FALSE@
+XMLSEC_NO_SHA384_TRUE = @XMLSEC_NO_SHA384_TRUE@
+XMLSEC_NO_SHA512 = @XMLSEC_NO_SHA512@
+XMLSEC_NO_SHA512_FALSE = @XMLSEC_NO_SHA512_FALSE@
+XMLSEC_NO_SHA512_TRUE = @XMLSEC_NO_SHA512_TRUE@
 XMLSEC_NO_X509 = @XMLSEC_NO_X509@
 XMLSEC_NO_X509_FALSE = @XMLSEC_NO_X509_FALSE@
 XMLSEC_NO_X509_TRUE = @XMLSEC_NO_X509_TRUE@
@@ -239,6 +251,8 @@ am__fastdepCXX_TRUE = @am__fastdepCXX_TRUE@
 am__include = @am__include@
 am__leading_dot = @am__leading_dot@
 am__quote = @am__quote@
+am__tar = @am__tar@
+am__untar = @am__untar@
 bindir = @bindir@
 build = @build@
 build_alias = @build_alias@
@@ -428,7 +442,7 @@ mostlyclean-generic:
 clean-generic:
 
 distclean-generic:
-	-rm -f $(CONFIG_CLEAN_FILES)
+	-test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
 
 maintainer-clean-generic:
 	@echo "This command is intended for maintainers to use"
diff --git a/man/xmlsec1-config.1 b/man/xmlsec1-config.1
index c348570..7926b09 100644
--- a/man/xmlsec1-config.1
+++ b/man/xmlsec1-config.1
@@ -1,5 +1,5 @@
 .\" DO NOT MODIFY THIS FILE!  It was generated by help2man 1.33.
-.TH XMLSEC1-CONFIG "1" "August 2004" "xmlsec1-config 1.2.6" "User Commands"
+.TH XMLSEC1-CONFIG "1" "July 2005" "xmlsec1-config 1.2.9" "User Commands"
 .SH NAME
 xmlsec1-config \- detail installed version of xmlsec library
 .SH SYNOPSIS
diff --git a/man/xmlsec1.1 b/man/xmlsec1.1
index fbd23cf..9fd4931 100644
--- a/man/xmlsec1.1
+++ b/man/xmlsec1.1
@@ -1,5 +1,5 @@
 .\" DO NOT MODIFY THIS FILE!  It was generated by help2man 1.33.
-.TH XMLSEC1 "1" "August 2004" "xmlsec1 1.2.6 (openssl)" "User Commands"
+.TH XMLSEC1 "1" "July 2005" "xmlsec1 1.2.9 (openssl)" "User Commands"
 .SH NAME
 xmlsec1 \- sign, verify, encrypt and decrypt XML documents
 .SH SYNOPSIS
diff --git a/scripts/push_release.sh b/scripts/push_release.sh
index 7067acc..13be6f6 100755
--- a/scripts/push_release.sh
+++ b/scripts/push_release.sh
@@ -18,12 +18,12 @@ scp $rpm_root/SOURCES/$module-$version.tar.gz \
     $rpm_root/RPMS/$build_target/$module-nss-devel-$version-*.$build_target.rpm \
     $remote_root
 
-echo "Uploading to redhat.com"
-ncftpput incoming.redhat.com /libc6 \
-    $rpm_root/SRPMS/$module-$version-*.src.rpm \
-    $rpm_root/RPMS/$build_target/$module-$version-*.$build_target.rpm \
-    $rpm_root/RPMS/$build_target/$module-devel-$version-*.$build_target.rpm \
-    $rpm_root/RPMS/$build_target/$module-openssl-$version-*.$build_target.rpm \
-    $rpm_root/RPMS/$build_target/$module-openssl-devel-$version-*.$build_target.rpm \
-    $rpm_root/RPMS/$build_target/$module-nss-$version-*.$build_target.rpm \
-    $rpm_root/RPMS/$build_target/$module-nss-devel-$version-*.$build_target.rpm
+#echo "Uploading to redhat.com"
+#ncftpput incoming.redhat.com /libc6 \
+#    $rpm_root/SRPMS/$module-$version-*.src.rpm \
+#    $rpm_root/RPMS/$build_target/$module-$version-*.$build_target.rpm \
+#    $rpm_root/RPMS/$build_target/$module-devel-$version-*.$build_target.rpm \
+#    $rpm_root/RPMS/$build_target/$module-openssl-$version-*.$build_target.rpm \
+#    $rpm_root/RPMS/$build_target/$module-openssl-devel-$version-*.$build_target.rpm \
+#    $rpm_root/RPMS/$build_target/$module-nss-$version-*.$build_target.rpm \
+#    $rpm_root/RPMS/$build_target/$module-nss-devel-$version-*.$build_target.rpm
diff --git a/src/Makefile.in b/src/Makefile.in
index c71c5a1..947c25f 100644
--- a/src/Makefile.in
+++ b/src/Makefile.in
@@ -1,4 +1,4 @@
-# Makefile.in generated by automake 1.8.3 from Makefile.am.
+# Makefile.in generated by automake 1.9.2 from Makefile.am.
 # @configure_input@
 
 # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
@@ -36,6 +36,7 @@ POST_INSTALL = :
 NORMAL_UNINSTALL = :
 PRE_UNINSTALL = :
 POST_UNINSTALL = :
+build_triplet = @build@
 host_triplet = @host@
 subdir = src
 DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in
@@ -46,6 +47,12 @@ am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
 mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs
 CONFIG_HEADER = $(top_builddir)/config.h
 CONFIG_CLEAN_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 = `echo $$p | sed -e 's|^.*/||'`;
 am__installdirs = "$(DESTDIR)$(libdir)"
 libLTLIBRARIES_INSTALL = $(INSTALL)
 LTLIBRARIES = $(lib_LTLIBRARIES)
@@ -74,28 +81,13 @@ libxmlsec1_la_OBJECTS = $(am_libxmlsec1_la_OBJECTS)
 DEFAULT_INCLUDES = -I. -I$(srcdir) -I$(top_builddir)
 depcomp = $(SHELL) $(top_srcdir)/depcomp
 am__depfiles_maybe = depfiles
- at AMDEP_TRUE@DEP_FILES = ./$(DEPDIR)/app.Plo ./$(DEPDIR)/base64.Plo \
- at AMDEP_TRUE@	./$(DEPDIR)/bn.Plo ./$(DEPDIR)/buffer.Plo \
- at AMDEP_TRUE@	./$(DEPDIR)/c14n.Plo ./$(DEPDIR)/dl.Plo \
- at AMDEP_TRUE@	./$(DEPDIR)/enveloped.Plo ./$(DEPDIR)/errors.Plo \
- at AMDEP_TRUE@	./$(DEPDIR)/io.Plo ./$(DEPDIR)/keyinfo.Plo \
- at AMDEP_TRUE@	./$(DEPDIR)/keys.Plo ./$(DEPDIR)/keysdata.Plo \
- at AMDEP_TRUE@	./$(DEPDIR)/keysmngr.Plo ./$(DEPDIR)/list.Plo \
- at AMDEP_TRUE@	./$(DEPDIR)/membuf.Plo ./$(DEPDIR)/nodeset.Plo \
- at AMDEP_TRUE@	./$(DEPDIR)/parser.Plo ./$(DEPDIR)/soap.Plo \
- at AMDEP_TRUE@	./$(DEPDIR)/strings.Plo ./$(DEPDIR)/templates.Plo \
- at AMDEP_TRUE@	./$(DEPDIR)/transforms.Plo ./$(DEPDIR)/x509.Plo \
- at AMDEP_TRUE@	./$(DEPDIR)/xkms.Plo ./$(DEPDIR)/xmldsig.Plo \
- at AMDEP_TRUE@	./$(DEPDIR)/xmlenc.Plo ./$(DEPDIR)/xmlsec-ltdl.Plo \
- at AMDEP_TRUE@	./$(DEPDIR)/xmlsec.Plo ./$(DEPDIR)/xmltree.Plo \
- at AMDEP_TRUE@	./$(DEPDIR)/xpath.Plo ./$(DEPDIR)/xslt.Plo
 COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \
 	$(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
-LTCOMPILE = $(LIBTOOL) --mode=compile $(CC) $(DEFS) \
+LTCOMPILE = $(LIBTOOL) --mode=compile --tag=CC $(CC) $(DEFS) \
 	$(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \
 	$(AM_CFLAGS) $(CFLAGS)
 CCLD = $(CC)
-LINK = $(LIBTOOL) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \
+LINK = $(LIBTOOL) --mode=link --tag=CC $(CCLD) $(AM_CFLAGS) $(CFLAGS) \
 	$(AM_LDFLAGS) $(LDFLAGS) -o $@
 SOURCES = $(libxmlsec1_la_SOURCES)
 DIST_SOURCES = $(am__libxmlsec1_la_SOURCES_DIST)
@@ -157,8 +149,6 @@ LIBADD_DL = @LIBADD_DL@
 LIBOBJS = @LIBOBJS@
 LIBS = @LIBS@
 LIBTOOL = @LIBTOOL@
-LIBXML262_CFLAGS = @LIBXML262_CFLAGS@
-LIBXML262_LIBS = @LIBXML262_LIBS@
 LIBXML_CFLAGS = @LIBXML_CFLAGS@
 LIBXML_CONFIG = @LIBXML_CONFIG@
 LIBXML_LIBS = @LIBXML_LIBS@
@@ -182,8 +172,6 @@ NSS_CRYPTO_LIB = @NSS_CRYPTO_LIB@
 NSS_LIBS = @NSS_LIBS@
 NSS_MIN_VERSION = @NSS_MIN_VERSION@
 OBJEXT = @OBJEXT@
-OPENSSL097_CFLAGS = @OPENSSL097_CFLAGS@
-OPENSSL097_LIBS = @OPENSSL097_LIBS@
 OPENSSL_CFLAGS = @OPENSSL_CFLAGS@
 OPENSSL_CRYPTO_LIB = @OPENSSL_CRYPTO_LIB@
 OPENSSL_LIBS = @OPENSSL_LIBS@
@@ -246,6 +234,9 @@ XMLSEC_NO_HMAC = @XMLSEC_NO_HMAC@
 XMLSEC_NO_HMAC_FALSE = @XMLSEC_NO_HMAC_FALSE@
 XMLSEC_NO_HMAC_TRUE = @XMLSEC_NO_HMAC_TRUE@
 XMLSEC_NO_LIBXSLT = @XMLSEC_NO_LIBXSLT@
+XMLSEC_NO_MD5 = @XMLSEC_NO_MD5@
+XMLSEC_NO_MD5_FALSE = @XMLSEC_NO_MD5_FALSE@
+XMLSEC_NO_MD5_TRUE = @XMLSEC_NO_MD5_TRUE@
 XMLSEC_NO_NSS = @XMLSEC_NO_NSS@
 XMLSEC_NO_NSS_FALSE = @XMLSEC_NO_NSS_FALSE@
 XMLSEC_NO_NSS_TRUE = @XMLSEC_NO_NSS_TRUE@
@@ -261,6 +252,18 @@ XMLSEC_NO_RSA_TRUE = @XMLSEC_NO_RSA_TRUE@
 XMLSEC_NO_SHA1 = @XMLSEC_NO_SHA1@
 XMLSEC_NO_SHA1_FALSE = @XMLSEC_NO_SHA1_FALSE@
 XMLSEC_NO_SHA1_TRUE = @XMLSEC_NO_SHA1_TRUE@
+XMLSEC_NO_SHA224 = @XMLSEC_NO_SHA224@
+XMLSEC_NO_SHA224_FALSE = @XMLSEC_NO_SHA224_FALSE@
+XMLSEC_NO_SHA224_TRUE = @XMLSEC_NO_SHA224_TRUE@
+XMLSEC_NO_SHA256 = @XMLSEC_NO_SHA256@
+XMLSEC_NO_SHA256_FALSE = @XMLSEC_NO_SHA256_FALSE@
+XMLSEC_NO_SHA256_TRUE = @XMLSEC_NO_SHA256_TRUE@
+XMLSEC_NO_SHA384 = @XMLSEC_NO_SHA384@
+XMLSEC_NO_SHA384_FALSE = @XMLSEC_NO_SHA384_FALSE@
+XMLSEC_NO_SHA384_TRUE = @XMLSEC_NO_SHA384_TRUE@
+XMLSEC_NO_SHA512 = @XMLSEC_NO_SHA512@
+XMLSEC_NO_SHA512_FALSE = @XMLSEC_NO_SHA512_FALSE@
+XMLSEC_NO_SHA512_TRUE = @XMLSEC_NO_SHA512_TRUE@
 XMLSEC_NO_X509 = @XMLSEC_NO_X509@
 XMLSEC_NO_X509_FALSE = @XMLSEC_NO_X509_FALSE@
 XMLSEC_NO_X509_TRUE = @XMLSEC_NO_X509_TRUE@
@@ -298,6 +301,8 @@ am__fastdepCXX_TRUE = @am__fastdepCXX_TRUE@
 am__include = @am__include@
 am__leading_dot = @am__leading_dot@
 am__quote = @am__quote@
+am__tar = @am__tar@
+am__untar = @am__untar@
 bindir = @bindir@
 build = @build@
 build_alias = @build_alias@
@@ -444,7 +449,7 @@ install-libLTLIBRARIES: $(lib_LTLIBRARIES)
 	test -z "$(libdir)" || $(mkdir_p) "$(DESTDIR)$(libdir)"
 	@list='$(lib_LTLIBRARIES)'; for p in $$list; do \
 	  if test -f $$p; then \
-	    f="`echo $$p | sed -e 's|^.*/||'`"; \
+	    f=$(am__strip_dir) \
 	    echo " $(LIBTOOL) --mode=install $(libLTLIBRARIES_INSTALL) $(INSTALL_STRIP_FLAG) '$$p' '$(DESTDIR)$(libdir)/$$f'"; \
 	    $(LIBTOOL) --mode=install $(libLTLIBRARIES_INSTALL) $(INSTALL_STRIP_FLAG) "$$p" "$(DESTDIR)$(libdir)/$$f"; \
 	  else :; fi; \
@@ -452,8 +457,8 @@ install-libLTLIBRARIES: $(lib_LTLIBRARIES)
 
 uninstall-libLTLIBRARIES:
 	@$(NORMAL_UNINSTALL)
-	@list='$(lib_LTLIBRARIES)'; for p in $$list; do \
-	    p="`echo $$p | sed -e 's|^.*/||'`"; \
+	@set -x; list='$(lib_LTLIBRARIES)'; for p in $$list; do \
+	  p=$(am__strip_dir) \
 	  echo " $(LIBTOOL) --mode=uninstall rm -f '$(DESTDIR)$(libdir)/$$p'"; \
 	  $(LIBTOOL) --mode=uninstall rm -f "$(DESTDIR)$(libdir)/$$p"; \
 	done
@@ -462,7 +467,7 @@ 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=.; \
+	  test "$$dir" != "$$p" || dir=.; \
 	  echo "rm -f \"$${dir}/so_locations\""; \
 	  rm -f "$${dir}/so_locations"; \
 	done
@@ -510,24 +515,21 @@ distclean-compile:
 @am__fastdepCC_TRUE@	if $(COMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" -c -o $@ $<; \
 @am__fastdepCC_TRUE@	then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Po"; else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; fi
 @AMDEP_TRUE@@am__fastdepCC_FALSE@	source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	depfile='$(DEPDIR)/$*.Po' tmpdepfile='$(DEPDIR)/$*.TPo' @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	$(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @am__fastdepCC_FALSE@	$(COMPILE) -c $<
 
 .c.obj:
 @am__fastdepCC_TRUE@	if $(COMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" -c -o $@ `$(CYGPATH_W) '$<'`; \
 @am__fastdepCC_TRUE@	then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Po"; else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; fi
 @AMDEP_TRUE@@am__fastdepCC_FALSE@	source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	depfile='$(DEPDIR)/$*.Po' tmpdepfile='$(DEPDIR)/$*.TPo' @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	$(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @am__fastdepCC_FALSE@	$(COMPILE) -c `$(CYGPATH_W) '$<'`
 
 .c.lo:
 @am__fastdepCC_TRUE@	if $(LTCOMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" -c -o $@ $<; \
 @am__fastdepCC_TRUE@	then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Plo"; else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; fi
 @AMDEP_TRUE@@am__fastdepCC_FALSE@	source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	depfile='$(DEPDIR)/$*.Plo' tmpdepfile='$(DEPDIR)/$*.TPlo' @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	$(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @am__fastdepCC_FALSE@	$(LTCOMPILE) -c -o $@ $<
 
 mostlyclean-libtool:
@@ -613,14 +615,16 @@ TAGS: tags-recursive $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
 		$(TAGS_FILES) $(LISP)
 	tags=; \
 	here=`pwd`; \
-	if (etags --etags-include --version) >/dev/null 2>&1; then \
+	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 && \
+	    test ! -f $$subdir/TAGS || \
 	      tags="$$tags $$include_option=$$here/$$subdir/TAGS"; \
 	  fi; \
 	done; \
@@ -630,9 +634,11 @@ TAGS: tags-recursive $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
 	  done | \
 	  $(AWK) '    { files[$$0] = 1; } \
 	       END { for (i in files) print i; }'`; \
-	test -z "$(ETAGS_ARGS)$$tags$$unique" \
-	  || $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
-	     $$tags $$unique
+	if test -z "$(ETAGS_ARGS)$$tags$$unique"; then :; else \
+	  test -n "$$unique" || unique=$$empty_fix; \
+	  $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+	    $$tags $$unique; \
+	fi
 ctags: CTAGS
 CTAGS: ctags-recursive $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
 		$(TAGS_FILES) $(LISP)
@@ -683,15 +689,17 @@ distdir: $(DISTFILES)
 	    || exit 1; \
 	  fi; \
 	done
-	list='$(SUBDIRS)'; for subdir in $$list; do \
+	list='$(DIST_SUBDIRS)'; for subdir in $$list; do \
 	  if test "$$subdir" = .; then :; else \
 	    test -d "$(distdir)/$$subdir" \
-	    || mkdir "$(distdir)/$$subdir" \
+	    || $(mkdir_p) "$(distdir)/$$subdir" \
 	    || exit 1; \
+	    distdir=`$(am__cd) $(distdir) && pwd`; \
+	    top_distdir=`$(am__cd) $(top_distdir) && pwd`; \
 	    (cd $$subdir && \
 	      $(MAKE) $(AM_MAKEFLAGS) \
-	        top_distdir="../$(top_distdir)" \
-	        distdir="../$(distdir)/$$subdir" \
+	        top_distdir="$$top_distdir" \
+	        distdir="$$distdir/$$subdir" \
 	        distdir) \
 	      || exit 1; \
 	  fi; \
@@ -723,7 +731,7 @@ mostlyclean-generic:
 clean-generic:
 
 distclean-generic:
-	-rm -f $(CONFIG_CLEAN_FILES)
+	-test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
 
 maintainer-clean-generic:
 	@echo "This command is intended for maintainers to use"
diff --git a/src/app.c b/src/app.c
index f6dd839..c1865f4 100644
--- a/src/app.c
+++ b/src/app.c
@@ -506,26 +506,26 @@ xmlSecTransformDsaSha1GetKlass(void) {
 }
 
 /** 
- * xmlSecTransformHmacSha1GetKlass:
+ * xmlSecTransformHmacMd5GetKlass:
  *
- * The HMAC-SHA1 transform klass.
+ * The HMAC-MD5 transform klass.
  *
- * Returns the HMAC-SHA1 transform klass or NULL if an error
+ * Returns the HMAC-MD5 transform klass or NULL if an error
  * occurs (the xmlsec-crypto library is not loaded or this transform is not
  * implemented).
  */
 xmlSecTransformId 
-xmlSecTransformHmacSha1GetKlass(void) {	
-    if((xmlSecCryptoDLGetFunctions() == NULL) || (xmlSecCryptoDLGetFunctions()->transformHmacSha1GetKlass == NULL)) {
+xmlSecTransformHmacMd5GetKlass(void) {	
+    if((xmlSecCryptoDLGetFunctions() == NULL) || (xmlSecCryptoDLGetFunctions()->transformHmacMd5GetKlass == NULL)) {
 	xmlSecError(XMLSEC_ERRORS_HERE,
 		    NULL,
-		    "transformHmacSha1Id",
+		    "transformHmacMd5Id",
 		    XMLSEC_ERRORS_R_NOT_IMPLEMENTED,
 		    XMLSEC_ERRORS_NO_MESSAGE);
         return(xmlSecTransformIdUnknown);
     }
     
-    return(xmlSecCryptoDLGetFunctions()->transformHmacSha1GetKlass());
+    return(xmlSecCryptoDLGetFunctions()->transformHmacMd5GetKlass());
 }
 
 /** 
@@ -552,26 +552,141 @@ xmlSecTransformHmacRipemd160GetKlass(void) {
 }
 
 /** 
- * xmlSecTransformHmacMd5GetKlass:
+ * xmlSecTransformHmacSha1GetKlass:
  *
- * The HMAC-MD5 transform klass.
+ * The HMAC-SHA1 transform klass.
  *
- * Returns the HMAC-MD5 transform klass or NULL if an error
+ * Returns the HMAC-SHA1 transform klass or NULL if an error
  * occurs (the xmlsec-crypto library is not loaded or this transform is not
  * implemented).
  */
 xmlSecTransformId 
-xmlSecTransformHmacMd5GetKlass(void) {	
-    if((xmlSecCryptoDLGetFunctions() == NULL) || (xmlSecCryptoDLGetFunctions()->transformHmacMd5GetKlass == NULL)) {
+xmlSecTransformHmacSha1GetKlass(void) {	
+    if((xmlSecCryptoDLGetFunctions() == NULL) || (xmlSecCryptoDLGetFunctions()->transformHmacSha1GetKlass == NULL)) {
 	xmlSecError(XMLSEC_ERRORS_HERE,
 		    NULL,
-		    "transformHmacMd5Id",
+		    "transformHmacSha1Id",
 		    XMLSEC_ERRORS_R_NOT_IMPLEMENTED,
 		    XMLSEC_ERRORS_NO_MESSAGE);
         return(xmlSecTransformIdUnknown);
     }
     
-    return(xmlSecCryptoDLGetFunctions()->transformHmacMd5GetKlass());
+    return(xmlSecCryptoDLGetFunctions()->transformHmacSha1GetKlass());
+}
+
+/** 
+ * xmlSecTransformHmacSha224GetKlass:
+ *
+ * The HMAC-SHA224 transform klass.
+ *
+ * Returns the HMAC-SHA224 transform klass or NULL if an error
+ * occurs (the xmlsec-crypto library is not loaded or this transform is not
+ * implemented).
+ */
+xmlSecTransformId 
+xmlSecTransformHmacSha224GetKlass(void) {	
+    if((xmlSecCryptoDLGetFunctions() == NULL) || (xmlSecCryptoDLGetFunctions()->transformHmacSha224GetKlass == NULL)) {
+	xmlSecError(XMLSEC_ERRORS_HERE,
+		    NULL,
+		    "transformHmacSha224Id",
+		    XMLSEC_ERRORS_R_NOT_IMPLEMENTED,
+		    XMLSEC_ERRORS_NO_MESSAGE);
+        return(xmlSecTransformIdUnknown);
+    }
+    
+    return(xmlSecCryptoDLGetFunctions()->transformHmacSha224GetKlass());
+}
+
+/** 
+ * xmlSecTransformHmacSha256GetKlass:
+ *
+ * The HMAC-SHA256 transform klass.
+ *
+ * Returns the HMAC-SHA256 transform klass or NULL if an error
+ * occurs (the xmlsec-crypto library is not loaded or this transform is not
+ * implemented).
+ */
+xmlSecTransformId 
+xmlSecTransformHmacSha256GetKlass(void) {	
+    if((xmlSecCryptoDLGetFunctions() == NULL) || (xmlSecCryptoDLGetFunctions()->transformHmacSha256GetKlass == NULL)) {
+	xmlSecError(XMLSEC_ERRORS_HERE,
+		    NULL,
+		    "transformHmacSha256Id",
+		    XMLSEC_ERRORS_R_NOT_IMPLEMENTED,
+		    XMLSEC_ERRORS_NO_MESSAGE);
+        return(xmlSecTransformIdUnknown);
+    }
+    
+    return(xmlSecCryptoDLGetFunctions()->transformHmacSha256GetKlass());
+}
+
+/** 
+ * xmlSecTransformHmacSha384GetKlass:
+ *
+ * The HMAC-SHA384 transform klass.
+ *
+ * Returns the HMAC-SHA384 transform klass or NULL if an error
+ * occurs (the xmlsec-crypto library is not loaded or this transform is not
+ * implemented).
+ */
+xmlSecTransformId 
+xmlSecTransformHmacSha384GetKlass(void) {	
+    if((xmlSecCryptoDLGetFunctions() == NULL) || (xmlSecCryptoDLGetFunctions()->transformHmacSha384GetKlass == NULL)) {
+	xmlSecError(XMLSEC_ERRORS_HERE,
+		    NULL,
+		    "transformHmacSha384Id",
+		    XMLSEC_ERRORS_R_NOT_IMPLEMENTED,
+		    XMLSEC_ERRORS_NO_MESSAGE);
+        return(xmlSecTransformIdUnknown);
+    }
+    
+    return(xmlSecCryptoDLGetFunctions()->transformHmacSha384GetKlass());
+}
+
+/** 
+ * xmlSecTransformHmacSha512GetKlass:
+ *
+ * The HMAC-SHA512 transform klass.
+ *
+ * Returns the HMAC-SHA512 transform klass or NULL if an error
+ * occurs (the xmlsec-crypto library is not loaded or this transform is not
+ * implemented).
+ */
+xmlSecTransformId 
+xmlSecTransformHmacSha512GetKlass(void) {	
+    if((xmlSecCryptoDLGetFunctions() == NULL) || (xmlSecCryptoDLGetFunctions()->transformHmacSha512GetKlass == NULL)) {
+	xmlSecError(XMLSEC_ERRORS_HERE,
+		    NULL,
+		    "transformHmacSha512Id",
+		    XMLSEC_ERRORS_R_NOT_IMPLEMENTED,
+		    XMLSEC_ERRORS_NO_MESSAGE);
+        return(xmlSecTransformIdUnknown);
+    }
+    
+    return(xmlSecCryptoDLGetFunctions()->transformHmacSha512GetKlass());
+}
+
+/** 
+ * xmlSecTransformMd5GetKlass:
+ *
+ * MD5 digest transform klass.
+ *
+ * Returns pointer to MD5 digest transform klass or NULL if an error
+ * occurs (the xmlsec-crypto library is not loaded or this transform is not
+ * implemented).
+ */
+xmlSecTransformId 
+xmlSecTransformMd5GetKlass(void) {
+    if((xmlSecCryptoDLGetFunctions() == NULL) || (xmlSecCryptoDLGetFunctions()->transformMd5GetKlass == NULL)) {
+	xmlSecError(XMLSEC_ERRORS_HERE,
+		    NULL,
+		    "transformMd5Id",
+		    XMLSEC_ERRORS_R_NOT_IMPLEMENTED,
+		    XMLSEC_ERRORS_NO_MESSAGE);
+        return(xmlSecTransformIdUnknown);
+    }
+    
+    return(xmlSecCryptoDLGetFunctions()->transformMd5GetKlass());
 }
 
 /** 
@@ -598,6 +713,52 @@ xmlSecTransformRipemd160GetKlass(void) {
 }
 
 /**
+ * xmlSecTransformRsaMd5GetKlass:
+ * 
+ * The RSA-MD5 signature transform klass.
+ *
+ * Returns RSA-MD5 signature transform klass or NULL if an error
+ * occurs (the xmlsec-crypto library is not loaded or this transform is not
+ * implemented).
+ */
+xmlSecTransformId
+xmlSecTransformRsaMd5GetKlass(void) {	
+    if((xmlSecCryptoDLGetFunctions() == NULL) || (xmlSecCryptoDLGetFunctions()->transformRsaMd5GetKlass == NULL)) {
+	xmlSecError(XMLSEC_ERRORS_HERE,
+		    NULL,
+		    "transformRsaMd5Id",
+		    XMLSEC_ERRORS_R_NOT_IMPLEMENTED,
+		    XMLSEC_ERRORS_NO_MESSAGE);
+        return(xmlSecTransformIdUnknown);
+    }
+    
+    return(xmlSecCryptoDLGetFunctions()->transformRsaMd5GetKlass());
+}
+
+/**
+ * xmlSecTransformRsaRipemd160GetKlass:
+ * 
+ * The RSA-RIPEMD160 signature transform klass.
+ *
+ * Returns RSA-RIPEMD160 signature transform klass or NULL if an error
+ * occurs (the xmlsec-crypto library is not loaded or this transform is not
+ * implemented).
+ */
+xmlSecTransformId
+xmlSecTransformRsaRipemd160GetKlass(void) {	
+    if((xmlSecCryptoDLGetFunctions() == NULL) || (xmlSecCryptoDLGetFunctions()->transformRsaRipemd160GetKlass == NULL)) {
+	xmlSecError(XMLSEC_ERRORS_HERE,
+		    NULL,
+		    "transformRsaRipemd160Id",
+		    XMLSEC_ERRORS_R_NOT_IMPLEMENTED,
+		    XMLSEC_ERRORS_NO_MESSAGE);
+        return(xmlSecTransformIdUnknown);
+    }
+    
+    return(xmlSecCryptoDLGetFunctions()->transformRsaRipemd160GetKlass());
+}
+
+/**
  * xmlSecTransformRsaSha1GetKlass:
  * 
  * The RSA-SHA1 signature transform klass.
@@ -620,6 +781,98 @@ xmlSecTransformRsaSha1GetKlass(void) {
     return(xmlSecCryptoDLGetFunctions()->transformRsaSha1GetKlass());
 }
 
+/**
+ * xmlSecTransformRsaSha224GetKlass:
+ * 
+ * The RSA-SHA224 signature transform klass.
+ *
+ * Returns RSA-SHA224 signature transform klass or NULL if an error
+ * occurs (the xmlsec-crypto library is not loaded or this transform is not
+ * implemented).
+ */
+xmlSecTransformId
+xmlSecTransformRsaSha224GetKlass(void) {	
+    if((xmlSecCryptoDLGetFunctions() == NULL) || (xmlSecCryptoDLGetFunctions()->transformRsaSha224GetKlass == NULL)) {
+	xmlSecError(XMLSEC_ERRORS_HERE,
+		    NULL,
+		    "transformRsaSha224Id",
+		    XMLSEC_ERRORS_R_NOT_IMPLEMENTED,
+		    XMLSEC_ERRORS_NO_MESSAGE);
+        return(xmlSecTransformIdUnknown);
+    }
+    
+    return(xmlSecCryptoDLGetFunctions()->transformRsaSha224GetKlass());
+}
+
+/**
+ * xmlSecTransformRsaSha256GetKlass:
+ * 
+ * The RSA-SHA256 signature transform klass.
+ *
+ * Returns RSA-SHA256 signature transform klass or NULL if an error
+ * occurs (the xmlsec-crypto library is not loaded or this transform is not
+ * implemented).
+ */
+xmlSecTransformId
+xmlSecTransformRsaSha256GetKlass(void) {	
+    if((xmlSecCryptoDLGetFunctions() == NULL) || (xmlSecCryptoDLGetFunctions()->transformRsaSha256GetKlass == NULL)) {
+	xmlSecError(XMLSEC_ERRORS_HERE,
+		    NULL,
+		    "transformRsaSha256Id",
+		    XMLSEC_ERRORS_R_NOT_IMPLEMENTED,
+		    XMLSEC_ERRORS_NO_MESSAGE);
+        return(xmlSecTransformIdUnknown);
+    }
+    
+    return(xmlSecCryptoDLGetFunctions()->transformRsaSha256GetKlass());
+}
+
+/**
+ * xmlSecTransformRsaSha384GetKlass:
+ * 
+ * The RSA-SHA384 signature transform klass.
+ *
+ * Returns RSA-SHA384 signature transform klass or NULL if an error
+ * occurs (the xmlsec-crypto library is not loaded or this transform is not
+ * implemented).
+ */
+xmlSecTransformId
+xmlSecTransformRsaSha384GetKlass(void) {	
+    if((xmlSecCryptoDLGetFunctions() == NULL) || (xmlSecCryptoDLGetFunctions()->transformRsaSha384GetKlass == NULL)) {
+	xmlSecError(XMLSEC_ERRORS_HERE,
+		    NULL,
+		    "transformRsaSha384Id",
+		    XMLSEC_ERRORS_R_NOT_IMPLEMENTED,
+		    XMLSEC_ERRORS_NO_MESSAGE);
+        return(xmlSecTransformIdUnknown);
+    }
+    
+    return(xmlSecCryptoDLGetFunctions()->transformRsaSha384GetKlass());
+}
+
+/**
+ * xmlSecTransformRsaSha512GetKlass:
+ * 
+ * The RSA-SHA512 signature transform klass.
+ *
+ * Returns RSA-SHA512 signature transform klass or NULL if an error
+ * occurs (the xmlsec-crypto library is not loaded or this transform is not
+ * implemented).
+ */
+xmlSecTransformId
+xmlSecTransformRsaSha512GetKlass(void) {	
+    if((xmlSecCryptoDLGetFunctions() == NULL) || (xmlSecCryptoDLGetFunctions()->transformRsaSha512GetKlass == NULL)) {
+	xmlSecError(XMLSEC_ERRORS_HERE,
+		    NULL,
+		    "transformRsaSha512Id",
+		    XMLSEC_ERRORS_R_NOT_IMPLEMENTED,
+		    XMLSEC_ERRORS_NO_MESSAGE);
+        return(xmlSecTransformIdUnknown);
+    }
+    
+    return(xmlSecCryptoDLGetFunctions()->transformRsaSha512GetKlass());
+}
+
 /** 
  * xmlSecTransformRsaPkcs1GetKlass:
  *
@@ -689,6 +942,98 @@ xmlSecTransformSha1GetKlass(void) {
     return(xmlSecCryptoDLGetFunctions()->transformSha1GetKlass());
 }
 
+/** 
+ * xmlSecTransformSha224GetKlass:
+ *
+ * SHA224 digest transform klass.
+ *
+ * Returns pointer to SHA224 digest transform klass or NULL if an error
+ * occurs (the xmlsec-crypto library is not loaded or this transform is not
+ * implemented).
+ */
+xmlSecTransformId 
+xmlSecTransformSha224GetKlass(void) {
+    if((xmlSecCryptoDLGetFunctions() == NULL) || (xmlSecCryptoDLGetFunctions()->transformSha224GetKlass == NULL)) {
+	xmlSecError(XMLSEC_ERRORS_HERE,
+		    NULL,
+		    "transformSha224Id",
+		    XMLSEC_ERRORS_R_NOT_IMPLEMENTED,
+		    XMLSEC_ERRORS_NO_MESSAGE);
+        return(xmlSecTransformIdUnknown);
+    }
+    
+    return(xmlSecCryptoDLGetFunctions()->transformSha224GetKlass());
+}
+
+/** 
+ * xmlSecTransformSha256GetKlass:
+ *
+ * SHA256 digest transform klass.
+ *
+ * Returns pointer to SHA256 digest transform klass or NULL if an error
+ * occurs (the xmlsec-crypto library is not loaded or this transform is not
+ * implemented).
+ */
+xmlSecTransformId 
+xmlSecTransformSha256GetKlass(void) {
+    if((xmlSecCryptoDLGetFunctions() == NULL) || (xmlSecCryptoDLGetFunctions()->transformSha256GetKlass == NULL)) {
+	xmlSecError(XMLSEC_ERRORS_HERE,
+		    NULL,
+		    "transformSha256Id",
+		    XMLSEC_ERRORS_R_NOT_IMPLEMENTED,
+		    XMLSEC_ERRORS_NO_MESSAGE);
+        return(xmlSecTransformIdUnknown);
+    }
+    
+    return(xmlSecCryptoDLGetFunctions()->transformSha256GetKlass());
+}
+
+/** 
+ * xmlSecTransformSha384GetKlass:
+ *
+ * SHA384 digest transform klass.
+ *
+ * Returns pointer to SHA384 digest transform klass or NULL if an error
+ * occurs (the xmlsec-crypto library is not loaded or this transform is not
+ * implemented).
+ */
+xmlSecTransformId 
+xmlSecTransformSha384GetKlass(void) {
+    if((xmlSecCryptoDLGetFunctions() == NULL) || (xmlSecCryptoDLGetFunctions()->transformSha384GetKlass == NULL)) {
+	xmlSecError(XMLSEC_ERRORS_HERE,
+		    NULL,
+		    "transformSha384Id",
+		    XMLSEC_ERRORS_R_NOT_IMPLEMENTED,
+		    XMLSEC_ERRORS_NO_MESSAGE);
+        return(xmlSecTransformIdUnknown);
+    }
+    
+    return(xmlSecCryptoDLGetFunctions()->transformSha384GetKlass());
+}
+
+/** 
+ * xmlSecTransformSha512GetKlass:
+ *
+ * SHA512 digest transform klass.
+ *
+ * Returns pointer to SHA512 digest transform klass or NULL if an error
+ * occurs (the xmlsec-crypto library is not loaded or this transform is not
+ * implemented).
+ */
+xmlSecTransformId 
+xmlSecTransformSha512GetKlass(void) {
+    if((xmlSecCryptoDLGetFunctions() == NULL) || (xmlSecCryptoDLGetFunctions()->transformSha512GetKlass == NULL)) {
+	xmlSecError(XMLSEC_ERRORS_HERE,
+		    NULL,
+		    "transformSha512Id",
+		    XMLSEC_ERRORS_R_NOT_IMPLEMENTED,
+		    XMLSEC_ERRORS_NO_MESSAGE);
+        return(xmlSecTransformIdUnknown);
+    }
+    
+    return(xmlSecCryptoDLGetFunctions()->transformSha512GetKlass());
+}
+
 /******************************************************************************
  *
  * High level routines form xmlsec command line utility
diff --git a/src/bn.c b/src/bn.c
index 2321840..8c16ba3 100644
--- a/src/bn.c
+++ b/src/bn.c
@@ -170,8 +170,10 @@ xmlSecBnZero(xmlSecBnPtr bn) {
  */
 int 
 xmlSecBnFromString(xmlSecBnPtr bn, const xmlChar* str, xmlSecSize base) {
-    xmlSecSize i, len;
+    xmlSecSize i, len, size;
     xmlSecByte ch;
+    xmlSecByte* data;
+    int positive;
     int nn;
     int ret;
 
@@ -183,7 +185,7 @@ xmlSecBnFromString(xmlSecBnPtr bn, const xmlChar* str, xmlSecSize base) {
     /* trivial case */
     len = xmlStrlen(str);
     if(len == 0) {
-	return(0);
+        return(0);
     }
     
     /* The result size could not exceed the input string length
@@ -191,54 +193,131 @@ xmlSecBnFromString(xmlSecBnPtr bn, const xmlChar* str, xmlSecSize base) {
      * In truth, it would be likely less than 1/2 input string length
      * because each byte is represented by 2 chars. If needed, 
      * buffer size would be increased by Mul/Add functions.
+     * Finally, we can add one byte for 00 or 10 prefix.
      */
-    ret = xmlSecBufferSetMaxSize(bn, xmlSecBufferGetSize(bn) + len / 2 + 1);
+    ret = xmlSecBufferSetMaxSize(bn, xmlSecBufferGetSize(bn) + len / 2 + 1 + 1);
     if(ret < 0) {
-	xmlSecError(XMLSEC_ERRORS_HERE,
-		    NULL,
-		    "xmlSecBnRevLookupTable",
-		    XMLSEC_ERRORS_R_XMLSEC_FAILED,
-		    "size=%d", len / 2 + 1);
-	return (-1);
+        xmlSecError(XMLSEC_ERRORS_HERE,
+		        NULL,
+		        "xmlSecBnRevLookupTable",
+		        XMLSEC_ERRORS_R_XMLSEC_FAILED,
+		        "size=%d", len / 2 + 1);
+        return (-1);
     }
 
-    for(i = 0; i < len; i++) {
-	ch = str[i];
-	if(isspace(ch)) {
-	    continue;
-	}
+    /* figure out if it is positive or negative number */
+    positive = 1;
+    i = 0;
+    while(i < len) {
+        ch = str[i++];
+
+        /* skip spaces */
+        if(isspace(ch)) {
+	        continue;
+        } 
+        
+        /* check if it is + or - */
+        if(ch == '+') {
+            positive = 1;
+            break;
+        } else if(ch == '-') {
+            positive = 0;
+            break;
+        }
+
+        /* otherwise, it must be start of the number */
+        nn = xmlSecBnLookupTable[ch];
+        if((nn >= 0) && ((xmlSecSize)nn < base)) {
+            xmlSecAssert2(i > 0, -1);
+
+            /* no sign, positive by default */
+            positive = 1;
+            --i; /* make sure that we will look at this character in next loop */
+            break;
+        } else {
+	        xmlSecError(XMLSEC_ERRORS_HERE,
+		        NULL,
+		        NULL,
+		        XMLSEC_ERRORS_R_INVALID_DATA,
+		        "char=%c;base=%d", 
+		        ch, base);
+    	        return (-1);
+        }
+    }
 
-	xmlSecAssert2(ch <= sizeof(xmlSecBnLookupTable), -1);
-	nn = xmlSecBnLookupTable[ch];
-	if((nn < 0) || ((xmlSecSize)nn > base)) {
-	    xmlSecError(XMLSEC_ERRORS_HERE,
-			NULL,
-			NULL,
-			XMLSEC_ERRORS_R_INVALID_DATA,
-			"char=%c;base=%d", 
-			ch, base);
-    	    return (-1);
-	}
-	
-	ret = xmlSecBnMul(bn, base);
-	if(ret < 0) {
-	    xmlSecError(XMLSEC_ERRORS_HERE,
-			NULL,
-			"xmlSecBnMul",
-			XMLSEC_ERRORS_R_XMLSEC_FAILED,
-			"base=%d", base);
-	    return (-1);
-	}
+    /* now parse the number itself */
+    while(i < len) {
+        ch = str[i++];
+        if(isspace(ch)) {
+	        continue;
+        }
+
+        xmlSecAssert2(ch <= sizeof(xmlSecBnLookupTable), -1);
+        nn = xmlSecBnLookupTable[ch];
+        if((nn < 0) || ((xmlSecSize)nn > base)) {
+	        xmlSecError(XMLSEC_ERRORS_HERE,
+		        NULL,
+		        NULL,
+		        XMLSEC_ERRORS_R_INVALID_DATA,
+		        "char=%c;base=%d", 
+		        ch, base);
+    	        return (-1);
+        }
+
+        ret = xmlSecBnMul(bn, base);
+        if(ret < 0) {
+	        xmlSecError(XMLSEC_ERRORS_HERE,
+		        NULL,
+		        "xmlSecBnMul",
+		        XMLSEC_ERRORS_R_XMLSEC_FAILED,
+		        "base=%d", base);
+	        return (-1);
+        }
+
+        ret = xmlSecBnAdd(bn, nn);
+        if(ret < 0) {
+	        xmlSecError(XMLSEC_ERRORS_HERE,
+		        NULL,
+		        "xmlSecBnAdd",
+		        XMLSEC_ERRORS_R_XMLSEC_FAILED,
+		        "base=%d", base);
+	        return (-1);
+}	
+    }
 
-	ret = xmlSecBnAdd(bn, nn);
-	if(ret < 0) {
-	    xmlSecError(XMLSEC_ERRORS_HERE,
-			NULL,
-			"xmlSecBnAdd",
-			XMLSEC_ERRORS_R_XMLSEC_FAILED,
-			"base=%d", base);
-	    return (-1);
-	}	
+    /* check if we need to add 00 prefix, do this for empty bn too */
+    data = xmlSecBufferGetData(bn);
+    size = xmlSecBufferGetSize(bn);
+    if(((size > 0) && (data[0] > 127)) || (size == 0))  {
+        ch = 0;
+        ret = xmlSecBufferPrepend(bn, &ch, 1);
+        if(ret < 0) {
+            xmlSecError(XMLSEC_ERRORS_HERE,
+                NULL,
+                "xmlSecBufferPrepend",
+                XMLSEC_ERRORS_R_XMLSEC_FAILED,
+                "base=%d", base);
+            return (-1);
+        }
+    }
+
+    /* do 2's compliment and add 1 to represent negative value */
+    if(positive == 0) {
+        data = xmlSecBufferGetData(bn);
+        size = xmlSecBufferGetSize(bn);
+        for(i = 0; i < size; ++i) {
+            data[i] ^= 0xFF;
+        }
+        
+        ret = xmlSecBnAdd(bn, 1);
+        if(ret < 0) {
+            xmlSecError(XMLSEC_ERRORS_HERE,
+                NULL,
+                "xmlSecBnAdd",
+                XMLSEC_ERRORS_R_XMLSEC_FAILED,
+                "base=%d", base);
+            return (-1);
+        }
     }
 
     return(0);
@@ -256,8 +335,12 @@ xmlSecBnFromString(xmlSecBnPtr bn, const xmlChar* str, xmlSecSize base) {
  */
 xmlChar* 
 xmlSecBnToString(xmlSecBnPtr bn, xmlSecSize base) {
+    xmlSecBn bn2;
+    int positive = 1;
     xmlChar* res;
-    xmlSecSize i, len;
+    xmlSecSize i, len, size;
+    xmlSecByte* data;
+    int ret;
     int nn;
     xmlChar ch;
 
@@ -265,35 +348,86 @@ xmlSecBnToString(xmlSecBnPtr bn, xmlSecSize base) {
     xmlSecAssert2(base > 1, NULL);
     xmlSecAssert2(base <= sizeof(xmlSecBnRevLookupTable), NULL);
 
+
+    /* copy bn */
+    data = xmlSecBufferGetData(bn);
+    size = xmlSecBufferGetSize(bn);
+    ret = xmlSecBnInitialize(&bn2, size);
+    if(ret < 0) {
+        xmlSecError(XMLSEC_ERRORS_HERE,
+            NULL,
+            "xmlSecBnCreate",
+            XMLSEC_ERRORS_R_XMLSEC_FAILED,
+            "size=%d", size);
+        return (NULL);
+    }
+    
+    ret = xmlSecBnSetData(&bn2, data, size);
+    if(ret < 0) {
+        xmlSecError(XMLSEC_ERRORS_HERE,
+            NULL,
+            "xmlSecBnSetData",
+            XMLSEC_ERRORS_R_XMLSEC_FAILED,
+            "size=%d", size);
+        xmlSecBnFinalize(&bn2);
+        return (NULL);
+    }
+
+    /* check if it is a negative number or not */
+    data = xmlSecBufferGetData(&bn2);
+    size = xmlSecBufferGetSize(&bn2);
+    if((size > 0) && (data[0] > 127)) {
+        /* subtract 1 and do 2's compliment */
+        ret = xmlSecBnAdd(&bn2, -1);
+        if(ret < 0) {
+            xmlSecError(XMLSEC_ERRORS_HERE,
+                        NULL,
+                        "xmlSecBnAdd",
+                        XMLSEC_ERRORS_R_XMLSEC_FAILED,
+                        "size=%d", size);
+            xmlSecBnFinalize(&bn2);
+            return (NULL);
+        }
+        for(i = 0; i < size; ++i) {
+            data[i] ^= 0xFF;
+        }
+
+        positive = 0;
+    } else {
+        positive = 1;
+    }
+
     /* Result string len is
      *	    len = log base (256) * <bn size>
      * Since the smallest base == 2 then we can get away with 
      *	    len = 8 * <bn size>
      */
-    len = 8 * xmlSecBufferGetSize(bn) + 1;
+    len = 8 * size + 1 + 1;
     res = (xmlChar*)xmlMalloc(len + 1);
     if(res == NULL) {
-	xmlSecError(XMLSEC_ERRORS_HERE,
-		    NULL,
-		    NULL,
-		    XMLSEC_ERRORS_R_MALLOC_FAILED,
-		    "len=%d", len);
-	return (NULL);
+        xmlSecError(XMLSEC_ERRORS_HERE,
+		            NULL,
+		            NULL,
+		            XMLSEC_ERRORS_R_MALLOC_FAILED,
+		            "len=%d", len);
+        xmlSecBnFinalize(&bn2);
+        return (NULL);
     }
     memset(res, 0, len + 1);
 
-    for(i = 0; (xmlSecBufferGetSize(bn) > 0) && (i < len); i++) {
-	if(xmlSecBnDiv(bn, base, &nn) < 0) {
-	    xmlSecError(XMLSEC_ERRORS_HERE,
-			NULL,
-			"xmlSecBnDiv",
-			XMLSEC_ERRORS_R_XMLSEC_FAILED,
-			"base=%d", base);
-	    xmlFree(res);
-    	    return (NULL);
-	}
-	xmlSecAssert2((size_t)nn < sizeof(xmlSecBnRevLookupTable), NULL);
-	res[i] = xmlSecBnRevLookupTable[nn];
+    for(i = 0; (xmlSecBufferGetSize(&bn2) > 0) && (i < len); i++) {
+        if(xmlSecBnDiv(&bn2, base, &nn) < 0) {
+            xmlSecError(XMLSEC_ERRORS_HERE,
+                        NULL,
+                        "xmlSecBnDiv",
+                        XMLSEC_ERRORS_R_XMLSEC_FAILED,
+                        "base=%d", base);
+            xmlFree(res);
+            xmlSecBnFinalize(&bn2);
+            return (NULL);
+        }
+        xmlSecAssert2((size_t)nn < sizeof(xmlSecBnRevLookupTable), NULL);
+        res[i] = xmlSecBnRevLookupTable[nn];
     }
     xmlSecAssert2(i < len, NULL);
 
@@ -301,13 +435,20 @@ xmlSecBnToString(xmlSecBnPtr bn, xmlSecSize base) {
     for(len = i; (len > 1) && (res[len - 1] == '0'); len--);
     res[len] = '\0';
 
+    /* add "-" for negative numbers */
+    if(positive == 0) {
+        res[len] = '-';
+        res[++len] = '\0';
+    }
+
     /* swap the string because we wrote it in reverse order */
     for(i = 0; i < len / 2; i++) {
-	ch = res[i];
-	res[i] = res[len - i - 1];
-	res[len - i - 1] = ch;
+        ch = res[i];
+        res[i] = res[len - i - 1];
+        res[len - i - 1] = ch;
     }
 
+    xmlSecBnFinalize(&bn2);
     return(res);
 }
 
@@ -392,7 +533,9 @@ xmlSecBnMul(xmlSecBnPtr bn, int multiplier) {
     }
 
     data = xmlSecBufferGetData(bn);
-    for(over = 0, i = xmlSecBufferGetSize(bn); i > 0;) {
+    i = xmlSecBufferGetSize(bn);
+    over = 0; 
+    while(i > 0) {
 	xmlSecAssert2(data != NULL, -1);
 
 	over	= over + multiplier * data[--i];
@@ -487,43 +630,57 @@ xmlSecBnDiv(xmlSecBnPtr bn, int divider, int* mod) {
  */
 int 
 xmlSecBnAdd(xmlSecBnPtr bn, int delta) {
-    int over;
+    int over, tmp;
     xmlSecByte* data;
     xmlSecSize i;
     xmlSecByte ch;
     int ret;
 
     xmlSecAssert2(bn != NULL, -1);
-    xmlSecAssert2(delta >= 0, -1);
 
     if(delta == 0) {
-	return(0);
+    	return(0);
     }
 
     data = xmlSecBufferGetData(bn);
-    for(over = delta, i = xmlSecBufferGetSize(bn); i > 0;) {
-	xmlSecAssert2(data != NULL, -1);
+    if(delta > 0) {
+        for(over = delta, i = xmlSecBufferGetSize(bn); (i > 0) && (over > 0) ;) {
+	        xmlSecAssert2(data != NULL, -1);
 	
-	over   += data[--i];
-	data[i]	= over % 256;
-	over	= over / 256;
-    }
+            tmp     = data[--i];
+        	over   += tmp;
+	        data[i]	= over % 256;
+	        over	= over / 256;
+        }
     
-    while(over > 0) {
-	ch	= over % 256;
-	over	= over / 256;
+        while(over > 0) {
+	        ch	= over % 256;
+	        over	= over / 256;
 	
-	ret = xmlSecBufferPrepend(bn, &ch, 1);
-	if(ret < 0) {
-	    xmlSecError(XMLSEC_ERRORS_HERE,
-			NULL,
-			"xmlSecBufferPrepend",
-			XMLSEC_ERRORS_R_XMLSEC_FAILED,
-			"size=1");
-	    return (-1);
-	}
+        	ret = xmlSecBufferPrepend(bn, &ch, 1);
+	        if(ret < 0) {
+	            xmlSecError(XMLSEC_ERRORS_HERE,
+			        NULL,
+			        "xmlSecBufferPrepend",
+			        XMLSEC_ERRORS_R_XMLSEC_FAILED,
+			        "size=1");
+	            return (-1);
+	        }
+        }
+    } else {
+        for(over = -delta, i = xmlSecBufferGetSize(bn); (i > 0) && (over > 0);) {
+	        xmlSecAssert2(data != NULL, -1);
+	
+            tmp     = data[--i];
+            if(tmp < over) {
+                data[i]	= 0;
+                over = (over - tmp) / 256;
+            } else {
+                data[i] = tmp - over;
+                over = 0;
+            }
+        }
     }
-    
     return(0);
 }
 
@@ -787,7 +944,7 @@ xmlSecBnSetNodeValue(xmlSecBnPtr bn, xmlNodePtr cur, xmlSecBnFormat format, int
     }
 
     if(addLineBreaks) {
-	xmlNodeAddContent(cur, BAD_CAST "\n");
+	xmlNodeAddContent(cur, xmlSecStringCR);
     }
 
     switch(format) {
@@ -833,7 +990,7 @@ xmlSecBnSetNodeValue(xmlSecBnPtr bn, xmlNodePtr cur, xmlSecBnFormat format, int
     }
 
     if(addLineBreaks) {
-	xmlNodeAddContent(cur, BAD_CAST "\n");
+	xmlNodeAddContent(cur, xmlSecStringCR);
     }
 
     return(0);
diff --git a/src/dl.c b/src/dl.c
index a5078d3..c20dd1a 100644
--- a/src/dl.c
+++ b/src/dl.c
@@ -339,6 +339,9 @@ xmlSecCryptoDLInit(void) {
         return(-1);
     }
 
+    /* use xmlMalloc/xmlFree */
+    xmlsec_lt_dlmalloc	= xmlSecCryptoDLMalloc;
+    xmlsec_lt_dlfree	= xmlSecCryptoDLFree;
     ret = xmlsec_lt_dlinit ();
     if(ret != 0) {
 	xmlSecError(XMLSEC_ERRORS_HERE,
@@ -350,9 +353,6 @@ xmlSecCryptoDLInit(void) {
     }
     /* TODO: LTDL_SET_PRELOADED_SYMBOLS(); */
     
-    /* use xmlMalloc/xmlFree */
-    xmlsec_lt_dlmalloc	= xmlSecCryptoDLMalloc;
-    xmlsec_lt_dlfree	= xmlSecCryptoDLFree;
     return(0);
 }
 
@@ -705,9 +705,9 @@ xmlSecCryptoDLFunctionsRegisterKeyDataAndTransforms(struct _xmlSecCryptoDLFuncti
 	return(-1);
     }    
 
-    if((functions->transformHmacSha1GetKlass != NULL) && xmlSecTransformIdsRegister(functions->transformHmacSha1GetKlass()) < 0) {
+    if((functions->transformHmacMd5GetKlass != NULL) && xmlSecTransformIdsRegister(functions->transformHmacMd5GetKlass()) < 0) {
 	xmlSecError(XMLSEC_ERRORS_HERE,
-		    xmlSecErrorsSafeString(xmlSecTransformKlassGetName(functions->transformHmacSha1GetKlass())),
+		    xmlSecErrorsSafeString(xmlSecTransformKlassGetName(functions->transformHmacMd5GetKlass())),
 		    "xmlSecTransformIdsRegister",
 		    XMLSEC_ERRORS_R_XMLSEC_FAILED,
 		    XMLSEC_ERRORS_NO_MESSAGE);
@@ -723,9 +723,54 @@ xmlSecCryptoDLFunctionsRegisterKeyDataAndTransforms(struct _xmlSecCryptoDLFuncti
 	return(-1);
     }    
 
-    if((functions->transformHmacMd5GetKlass != NULL) && xmlSecTransformIdsRegister(functions->transformHmacMd5GetKlass()) < 0) {
+    if((functions->transformHmacSha1GetKlass != NULL) && xmlSecTransformIdsRegister(functions->transformHmacSha1GetKlass()) < 0) {
 	xmlSecError(XMLSEC_ERRORS_HERE,
-		    xmlSecErrorsSafeString(xmlSecTransformKlassGetName(functions->transformHmacMd5GetKlass())),
+		    xmlSecErrorsSafeString(xmlSecTransformKlassGetName(functions->transformHmacSha1GetKlass())),
+		    "xmlSecTransformIdsRegister",
+		    XMLSEC_ERRORS_R_XMLSEC_FAILED,
+		    XMLSEC_ERRORS_NO_MESSAGE);
+	return(-1);
+    }    
+
+    if((functions->transformHmacSha224GetKlass != NULL) && xmlSecTransformIdsRegister(functions->transformHmacSha224GetKlass()) < 0) {
+	xmlSecError(XMLSEC_ERRORS_HERE,
+		    xmlSecErrorsSafeString(xmlSecTransformKlassGetName(functions->transformHmacSha224GetKlass())),
+		    "xmlSecTransformIdsRegister",
+		    XMLSEC_ERRORS_R_XMLSEC_FAILED,
+		    XMLSEC_ERRORS_NO_MESSAGE);
+	return(-1);
+    }    
+
+    if((functions->transformHmacSha256GetKlass != NULL) && xmlSecTransformIdsRegister(functions->transformHmacSha256GetKlass()) < 0) {
+	xmlSecError(XMLSEC_ERRORS_HERE,
+		    xmlSecErrorsSafeString(xmlSecTransformKlassGetName(functions->transformHmacSha256GetKlass())),
+		    "xmlSecTransformIdsRegister",
+		    XMLSEC_ERRORS_R_XMLSEC_FAILED,
+		    XMLSEC_ERRORS_NO_MESSAGE);
+	return(-1);
+    }    
+
+    if((functions->transformHmacSha384GetKlass != NULL) && xmlSecTransformIdsRegister(functions->transformHmacSha384GetKlass()) < 0) {
+	xmlSecError(XMLSEC_ERRORS_HERE,
+		    xmlSecErrorsSafeString(xmlSecTransformKlassGetName(functions->transformHmacSha384GetKlass())),
+		    "xmlSecTransformIdsRegister",
+		    XMLSEC_ERRORS_R_XMLSEC_FAILED,
+		    XMLSEC_ERRORS_NO_MESSAGE);
+	return(-1);
+    }    
+
+    if((functions->transformHmacSha512GetKlass != NULL) && xmlSecTransformIdsRegister(functions->transformHmacSha512GetKlass()) < 0) {
+	xmlSecError(XMLSEC_ERRORS_HERE,
+		    xmlSecErrorsSafeString(xmlSecTransformKlassGetName(functions->transformHmacSha512GetKlass())),
+		    "xmlSecTransformIdsRegister",
+		    XMLSEC_ERRORS_R_XMLSEC_FAILED,
+		    XMLSEC_ERRORS_NO_MESSAGE);
+	return(-1);
+    }
+
+    if((functions->transformMd5GetKlass != NULL) && xmlSecTransformIdsRegister(functions->transformMd5GetKlass()) < 0) {
+	xmlSecError(XMLSEC_ERRORS_HERE,
+		    xmlSecErrorsSafeString(xmlSecTransformKlassGetName(functions->transformMd5GetKlass())),
 		    "xmlSecTransformIdsRegister",
 		    XMLSEC_ERRORS_R_XMLSEC_FAILED,
 		    XMLSEC_ERRORS_NO_MESSAGE);
@@ -741,6 +786,24 @@ xmlSecCryptoDLFunctionsRegisterKeyDataAndTransforms(struct _xmlSecCryptoDLFuncti
 	return(-1);
     }    
 
+    if((functions->transformRsaMd5GetKlass != NULL) && xmlSecTransformIdsRegister(functions->transformRsaMd5GetKlass()) < 0) {
+	xmlSecError(XMLSEC_ERRORS_HERE,
+		    xmlSecErrorsSafeString(xmlSecTransformKlassGetName(functions->transformRsaMd5GetKlass())),
+		    "xmlSecTransformIdsRegister",
+		    XMLSEC_ERRORS_R_XMLSEC_FAILED,
+		    XMLSEC_ERRORS_NO_MESSAGE);
+	return(-1);
+    }    
+
+    if((functions->transformRsaRipemd160GetKlass != NULL) && xmlSecTransformIdsRegister(functions->transformRsaRipemd160GetKlass()) < 0) {
+	xmlSecError(XMLSEC_ERRORS_HERE,
+		    xmlSecErrorsSafeString(xmlSecTransformKlassGetName(functions->transformRsaRipemd160GetKlass())),
+		    "xmlSecTransformIdsRegister",
+		    XMLSEC_ERRORS_R_XMLSEC_FAILED,
+		    XMLSEC_ERRORS_NO_MESSAGE);
+	return(-1);
+    }    
+
     if((functions->transformRsaSha1GetKlass != NULL) && xmlSecTransformIdsRegister(functions->transformRsaSha1GetKlass()) < 0) {
 	xmlSecError(XMLSEC_ERRORS_HERE,
 		    xmlSecErrorsSafeString(xmlSecTransformKlassGetName(functions->transformRsaSha1GetKlass())),
@@ -750,6 +813,42 @@ xmlSecCryptoDLFunctionsRegisterKeyDataAndTransforms(struct _xmlSecCryptoDLFuncti
 	return(-1);
     }    
 
+    if((functions->transformRsaSha224GetKlass != NULL) && xmlSecTransformIdsRegister(functions->transformRsaSha224GetKlass()) < 0) {
+	xmlSecError(XMLSEC_ERRORS_HERE,
+		    xmlSecErrorsSafeString(xmlSecTransformKlassGetName(functions->transformRsaSha224GetKlass())),
+		    "xmlSecTransformIdsRegister",
+		    XMLSEC_ERRORS_R_XMLSEC_FAILED,
+		    XMLSEC_ERRORS_NO_MESSAGE);
+	return(-1);
+    }    
+
+    if((functions->transformRsaSha256GetKlass != NULL) && xmlSecTransformIdsRegister(functions->transformRsaSha256GetKlass()) < 0) {
+	xmlSecError(XMLSEC_ERRORS_HERE,
+		    xmlSecErrorsSafeString(xmlSecTransformKlassGetName(functions->transformRsaSha256GetKlass())),
+		    "xmlSecTransformIdsRegister",
+		    XMLSEC_ERRORS_R_XMLSEC_FAILED,
+		    XMLSEC_ERRORS_NO_MESSAGE);
+	return(-1);
+    }    
+
+    if((functions->transformRsaSha384GetKlass != NULL) && xmlSecTransformIdsRegister(functions->transformRsaSha384GetKlass()) < 0) {
+	xmlSecError(XMLSEC_ERRORS_HERE,
+		    xmlSecErrorsSafeString(xmlSecTransformKlassGetName(functions->transformRsaSha384GetKlass())),
+		    "xmlSecTransformIdsRegister",
+		    XMLSEC_ERRORS_R_XMLSEC_FAILED,
+		    XMLSEC_ERRORS_NO_MESSAGE);
+	return(-1);
+    }    
+
+    if((functions->transformRsaSha512GetKlass != NULL) && xmlSecTransformIdsRegister(functions->transformRsaSha512GetKlass()) < 0) {
+	xmlSecError(XMLSEC_ERRORS_HERE,
+		    xmlSecErrorsSafeString(xmlSecTransformKlassGetName(functions->transformRsaSha512GetKlass())),
+		    "xmlSecTransformIdsRegister",
+		    XMLSEC_ERRORS_R_XMLSEC_FAILED,
+		    XMLSEC_ERRORS_NO_MESSAGE);
+	return(-1);
+    }
+
     if((functions->transformRsaPkcs1GetKlass != NULL) && xmlSecTransformIdsRegister(functions->transformRsaPkcs1GetKlass()) < 0) {
 	xmlSecError(XMLSEC_ERRORS_HERE,
 		    xmlSecErrorsSafeString(xmlSecTransformKlassGetName(functions->transformRsaPkcs1GetKlass())),
@@ -777,6 +876,42 @@ xmlSecCryptoDLFunctionsRegisterKeyDataAndTransforms(struct _xmlSecCryptoDLFuncti
 	return(-1);
     }    
 
+    if((functions->transformSha224GetKlass != NULL) && xmlSecTransformIdsRegister(functions->transformSha224GetKlass()) < 0) {
+	xmlSecError(XMLSEC_ERRORS_HERE,
+		    xmlSecErrorsSafeString(xmlSecTransformKlassGetName(functions->transformSha224GetKlass())),
+		    "xmlSecTransformIdsRegister",
+		    XMLSEC_ERRORS_R_XMLSEC_FAILED,
+		    XMLSEC_ERRORS_NO_MESSAGE);
+	return(-1);
+    }    
+
+    if((functions->transformSha256GetKlass != NULL) && xmlSecTransformIdsRegister(functions->transformSha256GetKlass()) < 0) {
+	xmlSecError(XMLSEC_ERRORS_HERE,
+		    xmlSecErrorsSafeString(xmlSecTransformKlassGetName(functions->transformSha256GetKlass())),
+		    "xmlSecTransformIdsRegister",
+		    XMLSEC_ERRORS_R_XMLSEC_FAILED,
+		    XMLSEC_ERRORS_NO_MESSAGE);
+	return(-1);
+    }    
+
+    if((functions->transformSha384GetKlass != NULL) && xmlSecTransformIdsRegister(functions->transformSha384GetKlass()) < 0) {
+	xmlSecError(XMLSEC_ERRORS_HERE,
+		    xmlSecErrorsSafeString(xmlSecTransformKlassGetName(functions->transformSha384GetKlass())),
+		    "xmlSecTransformIdsRegister",
+		    XMLSEC_ERRORS_R_XMLSEC_FAILED,
+		    XMLSEC_ERRORS_NO_MESSAGE);
+	return(-1);
+    }    
+
+    if((functions->transformSha512GetKlass != NULL) && xmlSecTransformIdsRegister(functions->transformSha512GetKlass()) < 0) {
+	xmlSecError(XMLSEC_ERRORS_HERE,
+		    xmlSecErrorsSafeString(xmlSecTransformKlassGetName(functions->transformSha512GetKlass())),
+		    "xmlSecTransformIdsRegister",
+		    XMLSEC_ERRORS_R_XMLSEC_FAILED,
+		    XMLSEC_ERRORS_NO_MESSAGE);
+	return(-1);
+    }    
+
     return(0);     
 }
 
diff --git a/src/gnutls/Makefile.in b/src/gnutls/Makefile.in
index 9be2064..d84a303 100644
--- a/src/gnutls/Makefile.in
+++ b/src/gnutls/Makefile.in
@@ -1,4 +1,4 @@
-# Makefile.in generated by automake 1.8.3 from Makefile.am.
+# Makefile.in generated by automake 1.9.2 from Makefile.am.
 # @configure_input@
 
 # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
@@ -36,6 +36,7 @@ POST_INSTALL = :
 NORMAL_UNINSTALL = :
 PRE_UNINSTALL = :
 POST_UNINSTALL = :
+build_triplet = @build@
 host_triplet = @host@
 subdir = src/gnutls
 DIST_COMMON = README $(srcdir)/Makefile.am $(srcdir)/Makefile.in
@@ -46,6 +47,12 @@ am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
 mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs
 CONFIG_HEADER = $(top_builddir)/config.h
 CONFIG_CLEAN_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 = `echo $$p | sed -e 's|^.*/||'`;
 am__installdirs = "$(DESTDIR)$(libdir)"
 libLTLIBRARIES_INSTALL = $(INSTALL)
 LTLIBRARIES = $(lib_LTLIBRARIES)
@@ -60,16 +67,13 @@ libxmlsec1_gnutls_la_OBJECTS = $(am_libxmlsec1_gnutls_la_OBJECTS)
 DEFAULT_INCLUDES = -I. -I$(srcdir) -I$(top_builddir)
 depcomp = $(SHELL) $(top_srcdir)/depcomp
 am__depfiles_maybe = depfiles
- at AMDEP_TRUE@DEP_FILES = ./$(DEPDIR)/app.Plo ./$(DEPDIR)/ciphers.Plo \
- at AMDEP_TRUE@	./$(DEPDIR)/crypto.Plo ./$(DEPDIR)/digests.Plo \
- at AMDEP_TRUE@	./$(DEPDIR)/hmac.Plo ./$(DEPDIR)/symkeys.Plo
 COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \
 	$(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
-LTCOMPILE = $(LIBTOOL) --mode=compile $(CC) $(DEFS) \
+LTCOMPILE = $(LIBTOOL) --mode=compile --tag=CC $(CC) $(DEFS) \
 	$(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \
 	$(AM_CFLAGS) $(CFLAGS)
 CCLD = $(CC)
-LINK = $(LIBTOOL) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \
+LINK = $(LIBTOOL) --mode=link --tag=CC $(CCLD) $(AM_CFLAGS) $(CFLAGS) \
 	$(AM_LDFLAGS) $(LDFLAGS) -o $@
 SOURCES = $(libxmlsec1_gnutls_la_SOURCES)
 DIST_SOURCES = $(libxmlsec1_gnutls_la_SOURCES)
@@ -124,8 +128,6 @@ LIBADD_DL = @LIBADD_DL@
 LIBOBJS = @LIBOBJS@
 LIBS = @LIBS@
 LIBTOOL = @LIBTOOL@
-LIBXML262_CFLAGS = @LIBXML262_CFLAGS@
-LIBXML262_LIBS = @LIBXML262_LIBS@
 LIBXML_CFLAGS = @LIBXML_CFLAGS@
 LIBXML_CONFIG = @LIBXML_CONFIG@
 LIBXML_LIBS = @LIBXML_LIBS@
@@ -149,8 +151,6 @@ NSS_CRYPTO_LIB = @NSS_CRYPTO_LIB@
 NSS_LIBS = @NSS_LIBS@
 NSS_MIN_VERSION = @NSS_MIN_VERSION@
 OBJEXT = @OBJEXT@
-OPENSSL097_CFLAGS = @OPENSSL097_CFLAGS@
-OPENSSL097_LIBS = @OPENSSL097_LIBS@
 OPENSSL_CFLAGS = @OPENSSL_CFLAGS@
 OPENSSL_CRYPTO_LIB = @OPENSSL_CRYPTO_LIB@
 OPENSSL_LIBS = @OPENSSL_LIBS@
@@ -213,6 +213,9 @@ XMLSEC_NO_HMAC = @XMLSEC_NO_HMAC@
 XMLSEC_NO_HMAC_FALSE = @XMLSEC_NO_HMAC_FALSE@
 XMLSEC_NO_HMAC_TRUE = @XMLSEC_NO_HMAC_TRUE@
 XMLSEC_NO_LIBXSLT = @XMLSEC_NO_LIBXSLT@
+XMLSEC_NO_MD5 = @XMLSEC_NO_MD5@
+XMLSEC_NO_MD5_FALSE = @XMLSEC_NO_MD5_FALSE@
+XMLSEC_NO_MD5_TRUE = @XMLSEC_NO_MD5_TRUE@
 XMLSEC_NO_NSS = @XMLSEC_NO_NSS@
 XMLSEC_NO_NSS_FALSE = @XMLSEC_NO_NSS_FALSE@
 XMLSEC_NO_NSS_TRUE = @XMLSEC_NO_NSS_TRUE@
@@ -228,6 +231,18 @@ XMLSEC_NO_RSA_TRUE = @XMLSEC_NO_RSA_TRUE@
 XMLSEC_NO_SHA1 = @XMLSEC_NO_SHA1@
 XMLSEC_NO_SHA1_FALSE = @XMLSEC_NO_SHA1_FALSE@
 XMLSEC_NO_SHA1_TRUE = @XMLSEC_NO_SHA1_TRUE@
+XMLSEC_NO_SHA224 = @XMLSEC_NO_SHA224@
+XMLSEC_NO_SHA224_FALSE = @XMLSEC_NO_SHA224_FALSE@
+XMLSEC_NO_SHA224_TRUE = @XMLSEC_NO_SHA224_TRUE@
+XMLSEC_NO_SHA256 = @XMLSEC_NO_SHA256@
+XMLSEC_NO_SHA256_FALSE = @XMLSEC_NO_SHA256_FALSE@
+XMLSEC_NO_SHA256_TRUE = @XMLSEC_NO_SHA256_TRUE@
+XMLSEC_NO_SHA384 = @XMLSEC_NO_SHA384@
+XMLSEC_NO_SHA384_FALSE = @XMLSEC_NO_SHA384_FALSE@
+XMLSEC_NO_SHA384_TRUE = @XMLSEC_NO_SHA384_TRUE@
+XMLSEC_NO_SHA512 = @XMLSEC_NO_SHA512@
+XMLSEC_NO_SHA512_FALSE = @XMLSEC_NO_SHA512_FALSE@
+XMLSEC_NO_SHA512_TRUE = @XMLSEC_NO_SHA512_TRUE@
 XMLSEC_NO_X509 = @XMLSEC_NO_X509@
 XMLSEC_NO_X509_FALSE = @XMLSEC_NO_X509_FALSE@
 XMLSEC_NO_X509_TRUE = @XMLSEC_NO_X509_TRUE@
@@ -265,6 +280,8 @@ am__fastdepCXX_TRUE = @am__fastdepCXX_TRUE@
 am__include = @am__include@
 am__leading_dot = @am__leading_dot@
 am__quote = @am__quote@
+am__tar = @am__tar@
+am__untar = @am__untar@
 bindir = @bindir@
 build = @build@
 build_alias = @build_alias@
@@ -371,7 +388,7 @@ install-libLTLIBRARIES: $(lib_LTLIBRARIES)
 	test -z "$(libdir)" || $(mkdir_p) "$(DESTDIR)$(libdir)"
 	@list='$(lib_LTLIBRARIES)'; for p in $$list; do \
 	  if test -f $$p; then \
-	    f="`echo $$p | sed -e 's|^.*/||'`"; \
+	    f=$(am__strip_dir) \
 	    echo " $(LIBTOOL) --mode=install $(libLTLIBRARIES_INSTALL) $(INSTALL_STRIP_FLAG) '$$p' '$(DESTDIR)$(libdir)/$$f'"; \
 	    $(LIBTOOL) --mode=install $(libLTLIBRARIES_INSTALL) $(INSTALL_STRIP_FLAG) "$$p" "$(DESTDIR)$(libdir)/$$f"; \
 	  else :; fi; \
@@ -379,8 +396,8 @@ install-libLTLIBRARIES: $(lib_LTLIBRARIES)
 
 uninstall-libLTLIBRARIES:
 	@$(NORMAL_UNINSTALL)
-	@list='$(lib_LTLIBRARIES)'; for p in $$list; do \
-	    p="`echo $$p | sed -e 's|^.*/||'`"; \
+	@set -x; list='$(lib_LTLIBRARIES)'; for p in $$list; do \
+	  p=$(am__strip_dir) \
 	  echo " $(LIBTOOL) --mode=uninstall rm -f '$(DESTDIR)$(libdir)/$$p'"; \
 	  $(LIBTOOL) --mode=uninstall rm -f "$(DESTDIR)$(libdir)/$$p"; \
 	done
@@ -389,7 +406,7 @@ 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=.; \
+	  test "$$dir" != "$$p" || dir=.; \
 	  echo "rm -f \"$${dir}/so_locations\""; \
 	  rm -f "$${dir}/so_locations"; \
 	done
@@ -413,24 +430,21 @@ distclean-compile:
 @am__fastdepCC_TRUE@	if $(COMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" -c -o $@ $<; \
 @am__fastdepCC_TRUE@	then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Po"; else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; fi
 @AMDEP_TRUE@@am__fastdepCC_FALSE@	source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	depfile='$(DEPDIR)/$*.Po' tmpdepfile='$(DEPDIR)/$*.TPo' @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	$(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @am__fastdepCC_FALSE@	$(COMPILE) -c $<
 
 .c.obj:
 @am__fastdepCC_TRUE@	if $(COMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" -c -o $@ `$(CYGPATH_W) '$<'`; \
 @am__fastdepCC_TRUE@	then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Po"; else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; fi
 @AMDEP_TRUE@@am__fastdepCC_FALSE@	source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	depfile='$(DEPDIR)/$*.Po' tmpdepfile='$(DEPDIR)/$*.TPo' @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	$(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @am__fastdepCC_FALSE@	$(COMPILE) -c `$(CYGPATH_W) '$<'`
 
 .c.lo:
 @am__fastdepCC_TRUE@	if $(LTCOMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" -c -o $@ $<; \
 @am__fastdepCC_TRUE@	then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Plo"; else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; fi
 @AMDEP_TRUE@@am__fastdepCC_FALSE@	source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	depfile='$(DEPDIR)/$*.Plo' tmpdepfile='$(DEPDIR)/$*.TPlo' @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	$(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @am__fastdepCC_FALSE@	$(LTCOMPILE) -c -o $@ $<
 
 mostlyclean-libtool:
@@ -463,9 +477,11 @@ TAGS:  $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
 	  done | \
 	  $(AWK) '    { files[$$0] = 1; } \
 	       END { for (i in files) print i; }'`; \
-	test -z "$(ETAGS_ARGS)$$tags$$unique" \
-	  || $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
-	     $$tags $$unique
+	if test -z "$(ETAGS_ARGS)$$tags$$unique"; then :; else \
+	  test -n "$$unique" || unique=$$empty_fix; \
+	  $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+	    $$tags $$unique; \
+	fi
 ctags: CTAGS
 CTAGS:  $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
 		$(TAGS_FILES) $(LISP)
@@ -542,7 +558,7 @@ mostlyclean-generic:
 clean-generic:
 
 distclean-generic:
-	-rm -f $(CONFIG_CLEAN_FILES)
+	-test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
 
 maintainer-clean-generic:
 	@echo "This command is intended for maintainers to use"
diff --git a/src/gnutls/crypto.c b/src/gnutls/crypto.c
index b3e9fcf..44d301b 100644
--- a/src/gnutls/crypto.c
+++ b/src/gnutls/crypto.c
@@ -107,7 +107,7 @@ xmlSecCryptoGetFunctions_gnutls(void) {
     gXmlSecGnuTLSFunctions->cryptoAppKeyCertLoad 		= xmlSecGnuTLSAppKeyCertLoad;
 #endif /* XMLSEC_NO_X509 */
     gXmlSecGnuTLSFunctions->cryptoAppKeyLoad 			= xmlSecGnuTLSAppKeyLoad; 
-    gXmlSecGnuTLSFunctions->cryptoAppDefaultPwdCallback		= (void*)xmlSecGnuTLSAppGetDefaultPwdCallback;
+    gXmlSecGnuTLSFunctions->cryptoAppDefaultPwdCallback		= (void*)xmlSecGnuTLSAppGetDefaultPwdCallback();
 
     return(gXmlSecGnuTLSFunctions);
 }
diff --git a/src/keysmngr.c b/src/keysmngr.c
index 9e44607..e49e2f2 100644
--- a/src/keysmngr.c
+++ b/src/keysmngr.c
@@ -664,6 +664,25 @@ xmlSecSimpleKeysStoreSave(xmlSecKeyStorePtr store, const char *filename, xmlSecK
     return(0);
 }
 
+/** 
+ * xmlSecSimpleKeysStoreGetKeys:
+ * @store:		the pointer to simple keys store.
+ * 
+ * Returns pointer to the list of keys stored in the keys store or NULL
+ * if an error occurs.
+ */
+xmlSecPtrListPtr 
+xmlSecSimpleKeysStoreGetKeys(xmlSecKeyStorePtr store) {
+    xmlSecPtrListPtr list;
+
+    xmlSecAssert2(xmlSecKeyStoreCheckId(store, xmlSecSimpleKeysStoreId), NULL);
+
+    list = xmlSecSimpleKeysStoreGetList(store);
+    xmlSecAssert2(xmlSecPtrListCheckId(list, xmlSecKeyPtrListId), NULL);
+
+    return list;
+}
+
 static int
 xmlSecSimpleKeysStoreInitialize(xmlSecKeyStorePtr store) {
     xmlSecPtrListPtr list;
diff --git a/src/mscrypto/app.c b/src/mscrypto/app.c
index 756538d..e0dcc14 100644
--- a/src/mscrypto/app.c
+++ b/src/mscrypto/app.c
@@ -909,6 +909,123 @@ xmlSecMSCryptoAppKeysMngrCertLoadMemory(xmlSecKeysMngrPtr mngr, const xmlSecByte
     return(0);
 }
 
+/** 
+ * xmlSecMSCryptoAppDefaultKeysMngrAdoptKeyStore: 
+ * @mngr: 		        the keys manager.
+ * @keyStore:           the pointer to keys store.
+ *
+ * Adds @keyStore to the list of key stores in the keys manager @mngr.
+ *
+ * Returns 0 on success or a negative value if an error occurs.
+ */
+int 
+xmlSecMSCryptoAppDefaultKeysMngrAdoptKeyStore(xmlSecKeysMngrPtr mngr, HCERTSTORE keyStore)
+{
+	xmlSecKeyDataStorePtr x509Store ;
+
+	xmlSecAssert2( mngr != NULL, -1 ) ;
+	xmlSecAssert2( keyStore != NULL, -1 ) ;
+
+    x509Store = xmlSecKeysMngrGetDataStore( mngr, xmlSecMSCryptoX509StoreId) ;
+	if( x509Store == NULL ) {
+		xmlSecError( XMLSEC_ERRORS_HERE ,
+			NULL ,
+			"xmlSecKeysMngrGetDataStore" ,
+			XMLSEC_ERRORS_R_XMLSEC_FAILED ,
+			XMLSEC_ERRORS_NO_MESSAGE ) ;
+		return(-1) ;
+	}
+
+	if( xmlSecMSCryptoX509StoreAdoptKeyStore( x509Store, keyStore ) < 0 ) {
+		xmlSecError( XMLSEC_ERRORS_HERE ,
+			xmlSecErrorsSafeString( xmlSecKeyDataStoreGetName( x509Store ) ) ,
+			"xmlSecMSCryptoX509StoreAdoptKeyStore" ,
+			XMLSEC_ERRORS_R_XMLSEC_FAILED ,
+			XMLSEC_ERRORS_NO_MESSAGE ) ;
+		return(-1) ;
+	}
+
+	return (0) ;
+}
+
+/** 
+ * xmlSecMSCryptoAppDefaultKeysMngrAdoptTrustedStore: 
+ * @mngr: 		        the keys manager.
+ * @trustedStore:       the pointer to certs store.
+ *
+ * Adds @trustedStore to the list of trusted cert stores in the keys manager @mngr.
+ *
+ * Returns 0 on success or a negative value if an error occurs.
+ */
+int
+xmlSecMSCryptoAppDefaultKeysMngrAdoptTrustedStore(xmlSecKeysMngrPtr mngr, HCERTSTORE trustedStore)
+{
+	xmlSecKeyDataStorePtr x509Store ;
+
+	xmlSecAssert2( mngr != NULL, -1 ) ;
+	xmlSecAssert2( trustedStore != NULL, -1 ) ;
+
+    x509Store = xmlSecKeysMngrGetDataStore( mngr, xmlSecMSCryptoX509StoreId ) ;
+	if( x509Store == NULL ) {
+		xmlSecError( XMLSEC_ERRORS_HERE ,
+			NULL ,
+			"xmlSecKeysMngrGetDataStore" ,
+			XMLSEC_ERRORS_R_XMLSEC_FAILED ,
+			XMLSEC_ERRORS_NO_MESSAGE ) ;
+		return(-1) ;
+	}
+
+	if( xmlSecMSCryptoX509StoreAdoptTrustedStore( x509Store, trustedStore ) < 0 ) {
+		xmlSecError( XMLSEC_ERRORS_HERE ,
+			xmlSecErrorsSafeString( xmlSecKeyDataStoreGetName( x509Store ) ) ,
+			"xmlSecMSCryptoX509StoreAdoptKeyStore" ,
+			XMLSEC_ERRORS_R_XMLSEC_FAILED ,
+			XMLSEC_ERRORS_NO_MESSAGE ) ;
+		return(-1) ;
+	}
+
+	return(0);
+}
+
+/** 
+ * xmlSecMSCryptoAppDefaultKeysMngrAdoptUntrustedStore: 
+ * @mngr: 		        the keys manager.
+ * @untrustedStore:     the pointer to certs store.
+ *
+ * Adds @trustedStore to the list of un-trusted cert stores in the keys manager @mngr.
+ *
+ * Returns 0 on success or a negative value if an error occurs.
+ */
+int
+xmlSecMSCryptoAppDefaultKeysMngrAdoptUntrustedStore(xmlSecKeysMngrPtr mngr, HCERTSTORE untrustedStore)
+{
+	xmlSecKeyDataStorePtr x509Store ;
+
+	xmlSecAssert2( mngr != NULL, -1 ) ;
+	xmlSecAssert2( untrustedStore != NULL, -1 ) ;
+
+    x509Store = xmlSecKeysMngrGetDataStore( mngr, xmlSecMSCryptoX509StoreId);
+	if( x509Store == NULL ) {
+		xmlSecError( XMLSEC_ERRORS_HERE ,
+			NULL ,
+			"xmlSecKeysMngrGetDataStore" ,
+			XMLSEC_ERRORS_R_XMLSEC_FAILED ,
+			XMLSEC_ERRORS_NO_MESSAGE ) ;
+		return(-1);
+	}
+
+	if( xmlSecMSCryptoX509StoreAdoptUntrustedStore( x509Store, untrustedStore ) < 0) {
+		xmlSecError( XMLSEC_ERRORS_HERE ,
+			xmlSecErrorsSafeString( xmlSecKeyDataStoreGetName( x509Store ) ) ,
+			"xmlSecMSCryptoX509StoreAdoptKeyStore" ,
+			XMLSEC_ERRORS_R_XMLSEC_FAILED ,
+			XMLSEC_ERRORS_NO_MESSAGE ) ;
+		return(-1);
+	}
+
+	return(0) ;
+}
+
 #endif /* XMLSEC_NO_X509 */
 
 /**
@@ -954,12 +1071,12 @@ xmlSecMSCryptoAppDefaultKeysMngrInit(xmlSecKeysMngrPtr mngr) {
 
     ret = xmlSecMSCryptoKeysMngrInit(mngr);    
     if(ret < 0) {
-	xmlSecError(XMLSEC_ERRORS_HERE,
-		    NULL,
-		    "xmlSecMSCryptoKeysMngrInit",
-		    XMLSEC_ERRORS_R_XMLSEC_FAILED,
-		    XMLSEC_ERRORS_NO_MESSAGE);
-	return(-1); 
+        xmlSecError(XMLSEC_ERRORS_HERE,
+		        NULL,
+		        "xmlSecMSCryptoKeysMngrInit",
+		        XMLSEC_ERRORS_R_XMLSEC_FAILED,
+		        XMLSEC_ERRORS_NO_MESSAGE);
+        return(-1); 
     }
     
     mngr->getKey = xmlSecKeysMngrGetKey;
@@ -1051,7 +1168,7 @@ xmlSecMSCryptoAppDefaultKeysMngrLoad(xmlSecKeysMngrPtr mngr, const char* uri) {
 /**
  * xmlSecMSCryptoAppDefaultKeysMngrSave:
  * @mngr: 		the pointer to keys manager.
- * @filename:		the destination filename.
+ * @filename:   the destination filename.
  * @type:		the type of keys to save (public/private/symmetric).
  *
  * Saves keys from @mngr to  XML keys file.
@@ -1068,28 +1185,82 @@ xmlSecMSCryptoAppDefaultKeysMngrSave(xmlSecKeysMngrPtr mngr, const char* filenam
     
     store = xmlSecKeysMngrGetKeysStore(mngr);
     if(store == NULL) {
-	xmlSecError(XMLSEC_ERRORS_HERE,
-		    NULL,
-		    "xmlSecKeysMngrGetKeysStore",
-		    XMLSEC_ERRORS_R_XMLSEC_FAILED,
-		    XMLSEC_ERRORS_NO_MESSAGE);
-	return(-1);
+        xmlSecError(XMLSEC_ERRORS_HERE,
+		        NULL,
+		        "xmlSecKeysMngrGetKeysStore",
+		        XMLSEC_ERRORS_R_XMLSEC_FAILED,
+		        XMLSEC_ERRORS_NO_MESSAGE);
+        return(-1);
     }
     
     ret = xmlSecMSCryptoKeysStoreSave(store, filename, type);
     if(ret < 0) {
-	xmlSecError(XMLSEC_ERRORS_HERE,
-		    NULL,
-		    "xmlSecMSCryptoKeysStoreSave",
-		    XMLSEC_ERRORS_R_XMLSEC_FAILED,
-		    "filename%s", xmlSecErrorsSafeString(filename));
-	return(-1);
+        xmlSecError(XMLSEC_ERRORS_HERE,
+		        NULL,
+		        "xmlSecMSCryptoKeysStoreSave",
+		        XMLSEC_ERRORS_R_XMLSEC_FAILED,
+		        "filename%s", xmlSecErrorsSafeString(filename));
+        return(-1);
     }
     
     return(0);
 }
 
 /**
+ * xmlSecMSCryptoAppDefaultKeysMngrPrivateKeyLoad:
+ * @mngr: 		the pointer to keys manager.
+ * @hKey:       the key handle.
+ *  
+ * Adds private key @hKey to the keys manager @mngr.
+ * 
+ * Returns 0 on success or a negative value otherwise.
+ */ 
+int
+xmlSecMSCryptoAppDefaultKeysMngrPrivateKeyLoad(xmlSecKeysMngrPtr mngr, HCRYPTKEY hKey) {
+    xmlSecAssert2(mngr != NULL, -1);
+    xmlSecAssert2(hKey != 0, -1);
+
+    /* TODO */
+    return(0);
+}
+
+/**
+ * xmlSecMSCryptoAppDefaultKeysMngrPublicKeyLoad:
+ * @mngr: 		the pointer to keys manager.
+ * @hKey:       the key handle.
+ *  
+ * Adds public key @hKey to the keys manager @mngr.
+ * 
+ * Returns 0 on success or a negative value otherwise.
+ */ 
+int 
+xmlSecMSCryptoAppDefaultKeysMngrPublicKeyLoad(xmlSecKeysMngrPtr mngr, HCRYPTKEY hKey) {
+    xmlSecAssert2(mngr != NULL, -1);
+    xmlSecAssert2(hKey != 0, -1);
+
+    /* TODO */
+    return(0);
+}
+
+/**
+ * xmlSecMSCryptoAppDefaultKeysMngrSymKeyLoad:
+ * @mngr: 		the pointer to keys manager.
+ * @hKey:       the key handle.
+ *  
+ * Adds symmetric key @hKey to the keys manager @mngr.
+ * 
+ * Returns 0 on success or a negative value otherwise.
+ */ 
+int 
+xmlSecMSCryptoAppDefaultKeysMngrSymKeyLoad(xmlSecKeysMngrPtr mngr, HCRYPTKEY hKey) {
+    xmlSecAssert2(mngr != NULL, -1);
+    xmlSecAssert2(hKey != 0, -1);
+
+    /* TODO */
+    return(0);
+}
+
+/**
  * xmlSecMSCryptoAppGetDefaultPwdCallback:
  *
  * Gets default password callback.
diff --git a/src/mscrypto/certkeys.c b/src/mscrypto/certkeys.c
index 3566131..ba8a6cc 100644
--- a/src/mscrypto/certkeys.c
+++ b/src/mscrypto/certkeys.c
@@ -34,6 +34,30 @@
  *************************************************************************/
 typedef struct _xmlSecMSCryptoKeyDataCtx xmlSecMSCryptoKeyDataCtx, 
 						*xmlSecMSCryptoKeyDataCtxPtr;
+
+#ifdef XMLSEC_MSCRYPTO_NT4
+/*-
+ * A wrapper of HCRYPTKEY, a reference countor is introduced, the function is
+ * the same as CryptDuplicateKey. Because the CryptDuplicateKey is not support
+ * by WINNT 4.0, the wrapper will enable the library work on WINNT 4.0
+ */
+struct _mscrypt_key {
+	HCRYPTKEY hKey ;
+	volatile LONG refcnt ;
+} ;
+
+/*-
+ * A wrapper of HCRYPTPROV, a reference countor is introduced, the function is
+ * the same as CryptContextAddRef. Because the CryptContextAddRef is not support
+ * by WINNT 4.0, the wrapper will enable the library work on WINNT 4.0
+ */
+struct _mscrypt_prov {
+	HCRYPTPROV hProv ;
+    BOOL fCallerFreeProv ;
+	volatile LONG refcnt ;
+} ;
+#endif /* XMLSEC_MSCRYPTO_NT4 */
+
 /*
  * Since MSCrypto does not provide direct handles to private keys, we support
  * only private keys linked to a certificate context. The certificate context
@@ -42,16 +66,316 @@ typedef struct _xmlSecMSCryptoKeyDataCtx xmlSecMSCryptoKeyDataCtx,
  * now is however directed to certificates.  Wouter
  */
 struct _xmlSecMSCryptoKeyDataCtx {
+#ifndef XMLSEC_MSCRYPTO_NT4
     HCRYPTPROV		hProv;
-    BOOL		fCallerFreeProv;
-    LPCTSTR		providerName;
-    DWORD		providerType;
-    PCCERT_CONTEXT	pCert;
-    DWORD		dwKeySpec;
+    BOOL		    fCallerFreeProv;
     HCRYPTKEY		hKey;
+#else /* XMLSEC_MSCRYPTO_NT4 */
+	struct _mscrypt_prov* p_prov ;
+    struct _mscrypt_key*  p_key ;   
+#endif /* XMLSEC_MSCRYPTO_NT4 */
+    PCCERT_CONTEXT	pCert;
+    LPCTSTR		    providerName;
+    DWORD		    providerType;
+    DWORD		    dwKeySpec;
     xmlSecKeyDataType	type;
 };	    
 
+#ifndef XMLSEC_MSCRYPTO_NT4
+
+/******************************** Provider *****************************************/
+#define xmlSecMSCryptoKeyDataCtxGetProvider(ctx)            (ctx)->hProv
+
+static void
+xmlSecMSCryptoKeyDataCtxCreateProvider(xmlSecMSCryptoKeyDataCtxPtr ctx) {
+    xmlSecAssert(ctx != NULL);
+
+	ctx->hProv = 0;
+	ctx->fCallerFreeProv = FALSE;
+}
+
+static void
+xmlSecMSCryptoKeyDataCtxDestroyProvider(xmlSecMSCryptoKeyDataCtxPtr ctx) {
+    xmlSecAssert(ctx != NULL);
+ 
+    if ((ctx->hProv != 0) && (ctx->fCallerFreeProv)) {
+	    CryptReleaseContext(ctx->hProv, 0);
+    }
+	ctx->hProv = 0;
+	ctx->fCallerFreeProv = FALSE;
+}
+
+static void
+xmlSecMSCryptoKeyDataCtxSetProvider(xmlSecMSCryptoKeyDataCtxPtr ctx, HCRYPTPROV hProv, BOOL fCallerFreeProv)
+{
+    xmlSecAssert(ctx != NULL);
+ 
+    xmlSecMSCryptoKeyDataCtxDestroyProvider(ctx);
+    ctx->hProv		     = hProv;
+    ctx->fCallerFreeProv = fCallerFreeProv;
+}
+
+static int
+xmlSecMSCryptoKeyDataCtxDuplicateProvider(xmlSecMSCryptoKeyDataCtxPtr ctxDst, xmlSecMSCryptoKeyDataCtxPtr ctxSrc) {
+    xmlSecAssert2(ctxDst != NULL, -1);
+    xmlSecAssert2(ctxSrc != NULL, -1);
+
+    xmlSecMSCryptoKeyDataCtxDestroyProvider(ctxDst);
+
+    if(ctxSrc->hProv != 0) {
+        if(!CryptContextAddRef(ctxSrc->hProv, NULL, 0)) {
+	        xmlSecError(XMLSEC_ERRORS_HERE,
+			    NULL,
+			    "CryptContextAddRef",
+			    XMLSEC_ERRORS_R_CRYPTO_FAILED,
+			    XMLSEC_ERRORS_NO_MESSAGE);
+            return(-1);
+        }
+
+	    ctxDst->hProv		    = ctxSrc->hProv;
+	    ctxDst->fCallerFreeProv = TRUE;
+    }
+    return(0);
+}
+
+/******************************** Key *****************************************/
+#define xmlSecMSCryptoKeyDataCtxGetKey(ctx)            ((ctx)->hKey)
+
+static void
+xmlSecMSCryptoKeyDataCtxCreateKey(xmlSecMSCryptoKeyDataCtxPtr ctx) {
+    xmlSecAssert(ctx != NULL);
+
+    ctx->hKey = 0;
+}
+
+static void
+xmlSecMSCryptoKeyDataCtxDestroyKey(xmlSecMSCryptoKeyDataCtxPtr ctx) {
+    xmlSecAssert(ctx != NULL);
+    
+    if (ctx->hKey != 0) {
+	    CryptDestroyKey(ctx->hKey);
+    }
+    ctx->hKey = 0;
+}
+
+static void
+xmlSecMSCryptoKeyDataCtxSetKey(xmlSecMSCryptoKeyDataCtxPtr ctx, HCRYPTKEY hKey) {
+    xmlSecAssert(ctx != NULL);
+
+    xmlSecMSCryptoKeyDataCtxDestroyKey(ctx);
+    ctx->hKey = hKey;
+}
+
+static int
+xmlSecMSCryptoKeyDataCtxDuplicateKey(xmlSecMSCryptoKeyDataCtxPtr ctxDst, xmlSecMSCryptoKeyDataCtxPtr ctxSrc) {
+    xmlSecAssert2(ctxDst != NULL, -1);
+    xmlSecAssert2(ctxSrc != NULL, -1);
+
+    xmlSecMSCryptoKeyDataCtxDestroyKey(ctxDst);
+    if (ctxSrc->hKey != 0) {
+	    if (!CryptDuplicateKey(ctxSrc->hKey, NULL, 0, &(ctxDst->hKey))) {
+	        xmlSecError(XMLSEC_ERRORS_HERE,
+			    NULL,
+			    "CryptDuplicateKey",
+			    XMLSEC_ERRORS_R_CRYPTO_FAILED,
+			    XMLSEC_ERRORS_NO_MESSAGE);
+	        return(-1);
+	    }
+    }
+
+    return(0);
+}
+
+#else /* XMLSEC_MSCRYPTO_NT4 */
+
+/******************************** Provider *****************************************/
+#define xmlSecMSCryptoKeyDataCtxGetProvider(ctx)            (((ctx)->p_prov) ? ((ctx)->p_prov->hProv) : 0)
+
+static void
+xmlSecMSCryptoKeyDataCtxCreateProvider(xmlSecMSCryptoKeyDataCtxPtr ctx) {
+    xmlSecAssert(ctx != NULL);
+
+	ctx->p_prov = (struct _mscrypt_prov*)xmlMalloc(sizeof(struct _mscrypt_prov));
+	if(ctx->p_prov == NULL ) {
+		xmlSecError( XMLSEC_ERRORS_HERE,
+			"mscrypt_create_prov" ,
+			NULL,
+			XMLSEC_ERRORS_R_MALLOC_FAILED ,
+			XMLSEC_ERRORS_NO_MESSAGE
+		);
+	}
+    memset(ctx->p_prov, 0, sizeof(struct _mscrypt_prov));
+}
+
+static void
+xmlSecMSCryptoKeyDataCtxDestroyProvider(xmlSecMSCryptoKeyDataCtxPtr ctx) {
+    xmlSecAssert(ctx != NULL);
+ 
+	if(ctx->p_prov != NULL) {
+		if(InterlockedDecrement(&(ctx->p_prov->refcnt)) <= 0) {
+			if((ctx->p_prov->hProv != 0) && (ctx->p_prov->fCallerFreeProv)) {
+				CryptReleaseContext(ctx->p_prov->hProv, 0) ;
+			}
+            memset(ctx->p_prov, 0, sizeof(struct _mscrypt_prov));
+			xmlFree(ctx->p_prov) ;
+		}
+        ctx->p_prov = NULL;
+	}
+}
+
+static void
+xmlSecMSCryptoKeyDataCtxSetProvider(xmlSecMSCryptoKeyDataCtxPtr ctx, HCRYPTPROV hProv, BOOL fCallerFreeProv)
+{
+    xmlSecAssert(ctx != NULL);
+ 
+    xmlSecMSCryptoKeyDataCtxDestroyProvider(ctx);
+
+    if((ctx->p_prov != NULL) && (ctx->p_prov->refcnt == 1)) {
+		if((ctx->p_prov->hProv != 0) && (ctx->p_prov->fCallerFreeProv)) {
+			CryptReleaseContext(ctx->p_prov->hProv, 0) ;
+		}
+        memset(ctx->p_prov, 0, sizeof(struct _mscrypt_prov));
+    } else {
+        xmlSecMSCryptoKeyDataCtxDestroyProvider(ctx);
+        xmlSecMSCryptoKeyDataCtxCreateProvider(ctx);
+    }
+
+    ctx->p_prov->hProv = hProv;
+    ctx->p_prov->fCallerFreeProv = fCallerFreeProv;
+    ctx->p_prov->refcnt = 1;
+}
+
+static int
+xmlSecMSCryptoKeyDataCtxDuplicateProvider(xmlSecMSCryptoKeyDataCtxPtr ctxDst, xmlSecMSCryptoKeyDataCtxPtr ctxSrc) {
+    xmlSecAssert2(ctxDst != NULL, -1);
+    xmlSecAssert2(ctxSrc != NULL, -1);
+
+    xmlSecMSCryptoKeyDataCtxDestroyProvider(ctxDst);
+
+    if (ctxSrc->p_prov != NULL) {
+        ctxDst->p_prov = ctxSrc->p_prov;
+        InterlockedIncrement(&(ctxDst->p_prov->refcnt));
+    }
+
+    return(0);
+}
+
+/********************************  Key  *****************************************/
+#define xmlSecMSCryptoKeyDataCtxGetKey(ctx)            (((ctx)->p_key) ? ((ctx)->p_key->hKey) : 0)
+
+static void
+xmlSecMSCryptoKeyDataCtxCreateKey(xmlSecMSCryptoKeyDataCtxPtr ctx) {
+    xmlSecAssert(ctx != NULL);
+
+	ctx->p_key = (struct _mscrypt_key*)xmlMalloc(sizeof(struct _mscrypt_key));
+	if(ctx->p_key == NULL ) {
+		xmlSecError( XMLSEC_ERRORS_HERE,
+			"mscrypt_create_key" ,
+			NULL,
+			XMLSEC_ERRORS_R_MALLOC_FAILED ,
+			XMLSEC_ERRORS_NO_MESSAGE
+		);
+	}
+    memset(ctx->p_key, 0, sizeof(struct _mscrypt_key));
+}
+
+static void
+xmlSecMSCryptoKeyDataCtxDestroyKey(xmlSecMSCryptoKeyDataCtxPtr ctx) {
+    xmlSecAssert(ctx != NULL);
+    
+	if(ctx->p_key != NULL) {
+		if(InterlockedDecrement(&(ctx->p_key->refcnt)) <= 0) {
+			if(ctx->p_key->hKey != 0) {
+				CryptDestroyKey(ctx->p_key->hKey) ;
+			}
+            memset(ctx->p_key, 0, sizeof(struct _mscrypt_key));
+			xmlFree(ctx->p_key) ;
+		}
+        ctx->p_key = NULL;
+	}
+}
+
+static void
+xmlSecMSCryptoKeyDataCtxSetKey(xmlSecMSCryptoKeyDataCtxPtr ctx, HCRYPTKEY hKey) {
+    xmlSecAssert(ctx != NULL);
+
+    if((ctx->p_key != NULL) && (ctx->p_key->refcnt == 1)) {
+		if(ctx->p_key->hKey != 0) {
+			CryptDestroyKey(ctx->p_key->hKey) ;
+		}
+        memset(ctx->p_key, 0, sizeof(struct _mscrypt_key));
+    } else {
+        xmlSecMSCryptoKeyDataCtxDestroyKey(ctx);
+        xmlSecMSCryptoKeyDataCtxCreateKey(ctx);
+    }
+    ctx->p_key->hKey = hKey;
+    ctx->p_key->refcnt = 1;
+}
+
+static int
+xmlSecMSCryptoKeyDataCtxDuplicateKey(xmlSecMSCryptoKeyDataCtxPtr ctxDst, xmlSecMSCryptoKeyDataCtxPtr ctxSrc) {
+    xmlSecAssert2(ctxDst != NULL, -1);
+    xmlSecAssert2(ctxSrc != NULL, -1);
+
+    xmlSecMSCryptoKeyDataCtxDestroyKey(ctxDst);
+    if (ctxSrc->p_key != NULL) {
+        ctxDst->p_key = ctxSrc->p_key;
+        InterlockedIncrement(&(ctxDst->p_key->refcnt));
+    }
+
+    return(0);
+}
+
+#endif /* XMLSEC_MSCRYPTO_NT4 */
+
+/******************************** Cert *****************************************/
+#define xmlSecMSCryptoKeyDataCtxGetCert(ctx)            ((ctx)->pCert)
+
+static void
+xmlSecMSCryptoKeyDataCtxCreateCert(xmlSecMSCryptoKeyDataCtxPtr ctx) {
+    xmlSecAssert(ctx != NULL);
+
+    ctx->pCert = NULL;
+}
+
+static void
+xmlSecMSCryptoKeyDataCtxDestroyCert(xmlSecMSCryptoKeyDataCtxPtr ctx) {
+    xmlSecAssert(ctx != NULL);
+    
+    if(ctx->pCert != NULL) {
+	    CertFreeCertificateContext(ctx->pCert);
+    }
+    ctx->pCert = NULL;
+}
+
+static void
+xmlSecMSCryptoKeyDataCtxSetCert(xmlSecMSCryptoKeyDataCtxPtr ctx, PCCERT_CONTEXT pCert) {
+    xmlSecAssert(ctx != NULL);
+
+    xmlSecMSCryptoKeyDataCtxDestroyCert(ctx);
+    ctx->pCert = pCert;
+}
+
+static int
+xmlSecMSCryptoKeyDataCtxDuplicateCert(xmlSecMSCryptoKeyDataCtxPtr ctxDst, xmlSecMSCryptoKeyDataCtxPtr ctxSrc) {
+    xmlSecAssert2(ctxDst != NULL, -1);
+    xmlSecAssert2(ctxSrc != NULL, -1);
+
+    xmlSecMSCryptoKeyDataCtxDestroyCert(ctxDst);  
+    if(ctxSrc->pCert != NULL) {
+	    ctxDst->pCert = xmlSecMSCryptoCertDup(ctxSrc->pCert);
+	    if(ctxDst->pCert == NULL) {
+	        xmlSecError(XMLSEC_ERRORS_HERE,
+			    NULL,
+			    "xmlSecMSCryptoPCCDup",
+			    XMLSEC_ERRORS_R_XMLSEC_FAILED,
+			    XMLSEC_ERRORS_NO_MESSAGE);
+	        return(-1);
+	    }
+    } 
+    return(0);
+}
+
 /******************************************************************************
  *
  * xmlSecMSCryptoKeyDataCtx is located after xmlSecTransform
@@ -62,7 +386,7 @@ struct _xmlSecMSCryptoKeyDataCtx {
 #define xmlSecMSCryptoKeyDataGetCtx(data) \
     ((xmlSecMSCryptoKeyDataCtxPtr)(((xmlSecByte*)(data)) + sizeof(xmlSecKeyData)))
 
-static int     		xmlSecMSCryptoKeyDataDuplicate	(xmlSecKeyDataPtr dst, xmlSecKeyDataPtr src);
+static int     	xmlSecMSCryptoKeyDataDuplicate	(xmlSecKeyDataPtr dst, xmlSecKeyDataPtr src);
 static void		xmlSecMSCryptoKeyDataFinalize	(xmlSecKeyDataPtr data);
 static int		xmlSecMSCryptoKeyDataGetSize	(xmlSecKeyDataPtr data);
 
@@ -78,6 +402,7 @@ static int		xmlSecMSCryptoKeyDataGetSize	(xmlSecKeyDataPtr data);
 static int 
 xmlSecMSCryptoKeyDataAdoptCert(xmlSecKeyDataPtr data, PCCERT_CONTEXT pCert, xmlSecKeyDataType type) {
     xmlSecMSCryptoKeyDataCtxPtr ctx;
+    HCRYPTKEY hKey = 0;
 
     xmlSecAssert2(xmlSecKeyDataIsValid(data), -1);
     xmlSecAssert2(xmlSecKeyDataCheckSize(data, xmlSecMSCryptoKeyDataSize), -1);
@@ -88,24 +413,9 @@ xmlSecMSCryptoKeyDataAdoptCert(xmlSecKeyDataPtr data, PCCERT_CONTEXT pCert, xmlS
     ctx = xmlSecMSCryptoKeyDataGetCtx(data);
     xmlSecAssert2(ctx != NULL, -1);
 
-    if (ctx->hKey != 0) {
-	CryptDestroyKey(ctx->hKey);
-	ctx->hKey = 0;
-    }
-
-    if(ctx->pCert != NULL) {
-	CertFreeCertificateContext(ctx->pCert);
-	ctx->pCert = NULL;
-    }
-
-    if ((ctx->hProv != 0) && (ctx->fCallerFreeProv)) {
-	CryptReleaseContext(ctx->hProv, 0);
-	ctx->hProv = 0;
-	ctx->fCallerFreeProv = FALSE;
-    } else {
-	ctx->hProv = 0;
-	ctx->fCallerFreeProv = FALSE;
-    }
+    xmlSecMSCryptoKeyDataCtxDestroyProvider(ctx);
+    xmlSecMSCryptoKeyDataCtxDestroyKey(ctx);
+    xmlSecMSCryptoKeyDataCtxDestroyCert(ctx);
 
     ctx->type = type;
 
@@ -113,41 +423,46 @@ xmlSecMSCryptoKeyDataAdoptCert(xmlSecKeyDataPtr data, PCCERT_CONTEXT pCert, xmlS
      * for the real crypto stuff in MS Crypto.
      */
     if((type & xmlSecKeyDataTypePrivate) != 0){
+        HCRYPTPROV hProv = 0;
+        BOOL fCallerFreeProv = FALSE;
+
         if (!CryptAcquireCertificatePrivateKey(pCert, 
 					       CRYPT_ACQUIRE_USE_PROV_INFO_FLAG, 
 					       NULL, 
-					       &(ctx->hProv), 
+					       &hProv, 
 					       &(ctx->dwKeySpec), 
-					       &(ctx->fCallerFreeProv))) {
-	    xmlSecError(XMLSEC_ERRORS_HERE,
-			NULL,
-			"CryptAcquireCertificatePrivateKey",
-			XMLSEC_ERRORS_R_CRYPTO_FAILED,
-			XMLSEC_ERRORS_NO_MESSAGE);
-	    return(-1);
-	}
+					       &fCallerFreeProv)) {
+	        xmlSecError(XMLSEC_ERRORS_HERE,
+			    NULL,
+			    "CryptAcquireCertificatePrivateKey",
+			    XMLSEC_ERRORS_R_CRYPTO_FAILED,
+			    XMLSEC_ERRORS_NO_MESSAGE);
+	        return(-1);
+	    }
+        xmlSecMSCryptoKeyDataCtxSetProvider(ctx, hProv, fCallerFreeProv);
     } else if((type & xmlSecKeyDataTypePublic) != 0){
-	if (!CryptAcquireContext(&(ctx->hProv), 
-				 NULL, 
-				 ctx->providerName, 
-				 ctx->providerType, 
-				 CRYPT_VERIFYCONTEXT)) {
+        HCRYPTPROV hProv = 0;
+        if (!CryptAcquireContext(&hProv, 
+				    NULL, 
+				    NULL, /* ctx->providerName, */
+				    ctx->providerType, 
+				    CRYPT_VERIFYCONTEXT)) {
+	        xmlSecError(XMLSEC_ERRORS_HERE,
+			    NULL,
+			    "CryptAcquireContext",
+			    XMLSEC_ERRORS_R_CRYPTO_FAILED,
+			    XMLSEC_ERRORS_NO_MESSAGE);
+	        return(-1);
+	    }
+        xmlSecMSCryptoKeyDataCtxSetProvider(ctx, hProv, TRUE);
+	    ctx->dwKeySpec = 0;
+    } else {
 	    xmlSecError(XMLSEC_ERRORS_HERE,
-			NULL,
-			"CryptAcquireContext",
-			XMLSEC_ERRORS_R_CRYPTO_FAILED,
-			XMLSEC_ERRORS_NO_MESSAGE);
+		        NULL,
+		        NULL,
+		        XMLSEC_ERRORS_R_XMLSEC_FAILED,
+		        "Unsupported keytype");
 	    return(-1);
-	}
-	ctx->dwKeySpec = 0;
-	ctx->fCallerFreeProv = TRUE;
-    } else {
-	xmlSecError(XMLSEC_ERRORS_HERE,
-		    NULL,
-		    NULL,
-		    XMLSEC_ERRORS_R_XMLSEC_FAILED,
-		    "Unsupported keytype");
-	return(-1);
     }
 
     /* CryptImportPublicKeyInfo is only needed when a real key handle
@@ -157,10 +472,10 @@ xmlSecMSCryptoKeyDataAdoptCert(xmlSecKeyDataPtr data, PCCERT_CONTEXT pCert, xmlS
      * so no unnessecary calls to CryptImportPublicKeyInfo are being
      * made. WK
      */
-    if(!CryptImportPublicKeyInfo(ctx->hProv, 
-	X509_ASN_ENCODING | PKCS_7_ASN_ENCODING, 
-	&(pCert->pCertInfo->SubjectPublicKeyInfo), 
-	&(ctx->hKey))) {
+    if(!CryptImportPublicKeyInfo(xmlSecMSCryptoKeyDataCtxGetProvider(ctx), 
+	        X509_ASN_ENCODING | PKCS_7_ASN_ENCODING, 
+	        &(pCert->pCertInfo->SubjectPublicKeyInfo), 
+	        &hKey)) {
 	    xmlSecError(XMLSEC_ERRORS_HERE,
 			NULL,
 			"CryptImportPublicKeyInfo",
@@ -168,8 +483,9 @@ xmlSecMSCryptoKeyDataAdoptCert(xmlSecKeyDataPtr data, PCCERT_CONTEXT pCert, xmlS
 			XMLSEC_ERRORS_NO_MESSAGE);
 	    return(-1);
     }
-    ctx->pCert = pCert;
-
+    
+    xmlSecMSCryptoKeyDataCtxSetKey(ctx, hKey);
+    xmlSecMSCryptoKeyDataCtxSetCert(ctx, pCert);
     return(0);
 }
 
@@ -190,29 +506,11 @@ xmlSecMSCryptoKeyDataAdoptKey(xmlSecKeyDataPtr data,
     ctx = xmlSecMSCryptoKeyDataGetCtx(data);
     xmlSecAssert2(ctx != NULL, -1);
 
-    if(ctx->hKey != 0) {
-	CryptDestroyKey(ctx->hKey);
-	ctx->hKey = 0;
-    }
-
-    if(ctx->pCert != NULL) {
-	CertFreeCertificateContext(ctx->pCert);
-	ctx->pCert = NULL;
-    }
-    
-    if((ctx->hProv != 0) && ctx->fCallerFreeProv) {
-	CryptReleaseContext(ctx->hProv, 0);
-	ctx->hProv = 0;
-	ctx->fCallerFreeProv = FALSE;
-    } else {
-	ctx->hProv = 0;
-	ctx->fCallerFreeProv = FALSE;
-    }
+    xmlSecMSCryptoKeyDataCtxSetProvider(ctx, hProv, fCallerFreeProv);
+    xmlSecMSCryptoKeyDataCtxSetKey(ctx, hKey);
+    xmlSecMSCryptoKeyDataCtxSetCert(ctx, NULL);
 
-    ctx->hProv		 = hProv;
-    ctx->fCallerFreeProv = fCallerFreeProv;
     ctx->dwKeySpec	 = dwKeySpec;
-    ctx->hKey		 = hKey;
     ctx->type		 = type;
 
     return(0);
@@ -238,7 +536,7 @@ xmlSecMSCryptoKeyDataGetKey(xmlSecKeyDataPtr data, xmlSecKeyDataType type) {
     ctx = xmlSecMSCryptoKeyDataGetCtx(data);
     xmlSecAssert2(ctx != NULL, 0);
  
-    return(ctx->hKey);
+    return(xmlSecMSCryptoKeyDataCtxGetKey(ctx));
 }
 
 /**
@@ -260,7 +558,7 @@ xmlSecMSCryptoKeyDataGetCert(xmlSecKeyDataPtr data) {
     ctx = xmlSecMSCryptoKeyDataGetCtx(data);
     xmlSecAssert2(ctx != NULL, 0);
  
-    return(ctx->pCert);
+    return(xmlSecMSCryptoKeyDataCtxGetCert(ctx));
 }
 
 HCRYPTPROV
@@ -273,7 +571,7 @@ xmlSecMSCryptoKeyDataGetMSCryptoProvider(xmlSecKeyDataPtr data) {
     ctx = xmlSecMSCryptoKeyDataGetCtx(data);
     xmlSecAssert2(ctx != NULL, 0);
 
-    return(ctx->hProv);
+    return(xmlSecMSCryptoKeyDataCtxGetProvider(ctx));
 }
 
 DWORD
@@ -301,40 +599,35 @@ xmlSecMSCryptoKeyDataDuplicate(xmlSecKeyDataPtr dst, xmlSecKeyDataPtr src) {
 
     ctxDst = xmlSecMSCryptoKeyDataGetCtx(dst);
     xmlSecAssert2(ctxDst != NULL, -1);
-    xmlSecAssert2(ctxDst->pCert == NULL, -1);
 
     ctxSrc = xmlSecMSCryptoKeyDataGetCtx(src);
     xmlSecAssert2(ctxSrc != NULL, -1);
 
-    if(ctxSrc->pCert != NULL) {
-	ctxDst->pCert = xmlSecMSCryptoCertDup(ctxSrc->pCert);
-	if(ctxDst->pCert == NULL) {
+    if(xmlSecMSCryptoKeyDataCtxDuplicateProvider(ctxDst, ctxSrc) < 0) {
 	    xmlSecError(XMLSEC_ERRORS_HERE,
 			xmlSecErrorsSafeString(xmlSecKeyDataGetName(dst)),
-			"xmlSecMSCryptoPCCDup",
+			"xmlSecMSCryptoKeyDataCtxDuplicateProvider",
 			XMLSEC_ERRORS_R_XMLSEC_FAILED,
 			XMLSEC_ERRORS_NO_MESSAGE);
 	    return(-1);
-	}
-    } 
+    }
 
-    if (ctxSrc->hKey != 0) {
-	if (!CryptDuplicateKey(ctxSrc->hKey, NULL, 0, &(ctxDst->hKey))) {
+    if(xmlSecMSCryptoKeyDataCtxDuplicateKey(ctxDst, ctxSrc) < 0) {
 	    xmlSecError(XMLSEC_ERRORS_HERE,
 			xmlSecErrorsSafeString(xmlSecKeyDataGetName(dst)),
-			"CryptDuplicateKey",
-			XMLSEC_ERRORS_R_CRYPTO_FAILED,
+			"xmlSecMSCryptoKeyDataCtxDuplicateKey",
+			XMLSEC_ERRORS_R_XMLSEC_FAILED,
 			XMLSEC_ERRORS_NO_MESSAGE);
 	    return(-1);
-	}
     }
-    if(ctxSrc->hProv != 0) {
-	CryptContextAddRef(ctxSrc->hProv, NULL, 0);
-	ctxDst->hProv		= ctxSrc->hProv;
-	ctxDst->fCallerFreeProv = TRUE;
-    } else {
-        ctxDst->hProv		= 0;
-	ctxDst->fCallerFreeProv = FALSE;
+
+    if(xmlSecMSCryptoKeyDataCtxDuplicateCert(ctxDst, ctxSrc) < 0) {
+	    xmlSecError(XMLSEC_ERRORS_HERE,
+			xmlSecErrorsSafeString(xmlSecKeyDataGetName(dst)),
+			"xmlSecMSCryptoKeyDataCtxDuplicateCert",
+			XMLSEC_ERRORS_R_XMLSEC_FAILED,
+			XMLSEC_ERRORS_NO_MESSAGE);
+	    return(-1);
     }
     
     ctxDst->dwKeySpec	    = ctxSrc->dwKeySpec;
@@ -346,6 +639,23 @@ xmlSecMSCryptoKeyDataDuplicate(xmlSecKeyDataPtr dst, xmlSecKeyDataPtr src) {
 }
 
 static void 
+xmlSecMSCryptoKeyDataInitialize(xmlSecKeyDataPtr data) {
+    xmlSecMSCryptoKeyDataCtxPtr ctx;    
+
+    xmlSecAssert(xmlSecKeyDataIsValid(data));
+    xmlSecAssert(xmlSecKeyDataCheckSize(data, xmlSecMSCryptoKeyDataSize));
+
+    ctx = xmlSecMSCryptoKeyDataGetCtx(data);
+    xmlSecAssert(ctx != NULL);
+
+    memset(ctx, 0, sizeof(xmlSecMSCryptoKeyDataCtx));
+
+    xmlSecMSCryptoKeyDataCtxCreateProvider(ctx);
+    xmlSecMSCryptoKeyDataCtxCreateKey(ctx);
+    xmlSecMSCryptoKeyDataCtxCreateCert(ctx);
+}
+
+static void 
 xmlSecMSCryptoKeyDataFinalize(xmlSecKeyDataPtr data) {
     xmlSecMSCryptoKeyDataCtxPtr ctx;
     
@@ -355,17 +665,9 @@ xmlSecMSCryptoKeyDataFinalize(xmlSecKeyDataPtr data) {
     ctx = xmlSecMSCryptoKeyDataGetCtx(data);
     xmlSecAssert(ctx != NULL);
     
-    if (ctx->hKey != 0) {
-	CryptDestroyKey(ctx->hKey);
-    }
-
-    if(ctx->pCert != NULL) {
-	CertFreeCertificateContext(ctx->pCert);
-    }
-
-    if ((ctx->hProv != 0) && ctx->fCallerFreeProv) {
-	CryptReleaseContext(ctx->hProv, 0);
-    }
+    xmlSecMSCryptoKeyDataCtxDestroyProvider(ctx);
+    xmlSecMSCryptoKeyDataCtxDestroyKey(ctx);
+    xmlSecMSCryptoKeyDataCtxDestroyCert(ctx);
 
     memset(ctx, 0, sizeof(xmlSecMSCryptoKeyDataCtx));
 }
@@ -380,15 +682,15 @@ xmlSecMSCryptoKeyDataGetSize(xmlSecKeyDataPtr data) {
     ctx = xmlSecMSCryptoKeyDataGetCtx(data);
     xmlSecAssert2(ctx != NULL, 0);
 
-    if(ctx->pCert != NULL) {
-        xmlSecAssert2(ctx->pCert->pCertInfo != NULL, 0);
+    if(xmlSecMSCryptoKeyDataCtxGetCert(ctx) != NULL) {
+        xmlSecAssert2(xmlSecMSCryptoKeyDataCtxGetCert(ctx)->pCertInfo != NULL, 0);
 	return (CertGetPublicKeyLength(X509_ASN_ENCODING | PKCS_7_ASN_ENCODING, 
-		&(ctx->pCert->pCertInfo->SubjectPublicKeyInfo)));
-    } else if (ctx->hKey != 0) {
+		    &(xmlSecMSCryptoKeyDataCtxGetCert(ctx)->pCertInfo->SubjectPublicKeyInfo)));
+    } else if (xmlSecMSCryptoKeyDataCtxGetKey(ctx) != 0) {
         DWORD length = 0;
-	DWORD lenlen = sizeof(DWORD);
+	    DWORD lenlen = sizeof(DWORD);
 	
-	if (!CryptGetKeyParam(ctx->hKey, KP_KEYLEN, (BYTE *)&length, &lenlen, 0)) {
+	if (!CryptGetKeyParam(xmlSecMSCryptoKeyDataCtxGetKey(ctx), KP_KEYLEN, (BYTE *)&length, &lenlen, 0)) {
 	    xmlSecError(XMLSEC_ERRORS_HERE,
 			NULL,
 			"CertDuplicateCertificateContext",
@@ -635,16 +937,13 @@ static int
 xmlSecMSCryptoKeyDataRsaInitialize(xmlSecKeyDataPtr data) {
     xmlSecMSCryptoKeyDataCtxPtr ctx;
     
-    xmlSecAssert2(xmlSecKeyDataIsValid(data), xmlSecKeyDataTypeUnknown);
-    xmlSecAssert2(xmlSecKeyDataCheckSize(data, xmlSecMSCryptoKeyDataSize), xmlSecKeyDataTypeUnknown);
+    xmlSecAssert2(xmlSecKeyDataCheckId(data, xmlSecMSCryptoKeyDataRsaId), xmlSecKeyDataTypeUnknown);
 
-    xmlSecAssert2(xmlSecKeyDataCheckId(data, xmlSecMSCryptoKeyDataRsaId), -1);
+    xmlSecMSCryptoKeyDataInitialize(data);
 
     ctx = xmlSecMSCryptoKeyDataGetCtx(data);
     xmlSecAssert2(ctx != NULL, -1);
 
-    memset(ctx, 0, sizeof(xmlSecMSCryptoKeyDataCtx));
-
     ctx->providerName = MS_ENHANCED_PROV;
     ctx->providerType = PROV_RSA_FULL;
     
@@ -938,9 +1237,9 @@ xmlSecMSCryptoKeyDataRsaXmlWrite(xmlSecKeyDataId id, xmlSecKeyPtr key,
 
     ctx = xmlSecMSCryptoKeyDataGetCtx(xmlSecKeyGetValue(key));
     xmlSecAssert2(ctx != NULL, -1);
-    xmlSecAssert2(ctx->hKey != 0, -1);
+    xmlSecAssert2(xmlSecMSCryptoKeyDataCtxGetKey(ctx) != 0, -1);
 
-    if (!CryptExportKey(ctx->hKey, 0, PUBLICKEYBLOB, 0, NULL, &dwBlobLen)) {
+    if (!CryptExportKey(xmlSecMSCryptoKeyDataCtxGetKey(ctx), 0, PUBLICKEYBLOB, 0, NULL, &dwBlobLen)) {
 	xmlSecError(XMLSEC_ERRORS_HERE,
 		    xmlSecErrorsSafeString(xmlSecKeyDataKlassGetName(id)),
 		    "CryptExportKey",
@@ -960,7 +1259,7 @@ xmlSecMSCryptoKeyDataRsaXmlWrite(xmlSecKeyDataId id, xmlSecKeyPtr key,
     }
 
     blob = xmlSecBufferGetData(&buf);
-    if (!CryptExportKey(ctx->hKey, 0, PUBLICKEYBLOB, 0, blob, &dwBlobLen)) {
+    if (!CryptExportKey(xmlSecMSCryptoKeyDataCtxGetKey(ctx), 0, PUBLICKEYBLOB, 0, blob, &dwBlobLen)) {
 	xmlSecError(XMLSEC_ERRORS_HERE,
 		    xmlSecErrorsSafeString(xmlSecKeyDataKlassGetName(id)),
 		    "CryptExportKey",
@@ -1349,17 +1648,14 @@ xmlSecMSCryptoKeyDataDsaGetKlass(void) {
 static int
 xmlSecMSCryptoKeyDataDsaInitialize(xmlSecKeyDataPtr data) {
     xmlSecMSCryptoKeyDataCtxPtr ctx;
-    
-    xmlSecAssert2(xmlSecKeyDataIsValid(data), xmlSecKeyDataTypeUnknown);
-    xmlSecAssert2(xmlSecKeyDataCheckSize(data, xmlSecMSCryptoKeyDataSize), xmlSecKeyDataTypeUnknown);
 
-    xmlSecAssert2(xmlSecKeyDataCheckId(data, xmlSecMSCryptoKeyDataDsaId), -1);
+    xmlSecAssert2(xmlSecKeyDataCheckId(data, xmlSecMSCryptoKeyDataDsaId), xmlSecKeyDataTypeUnknown);
+
+    xmlSecMSCryptoKeyDataInitialize(data);
 
     ctx = xmlSecMSCryptoKeyDataGetCtx(data);
     xmlSecAssert2(ctx != NULL, -1);
 
-    memset(ctx, 0, sizeof(xmlSecMSCryptoKeyDataCtx));
-
     ctx->providerName = MS_DEF_DSS_PROV;
     ctx->providerType = PROV_DSS;
     
@@ -1797,9 +2093,9 @@ xmlSecMSCryptoKeyDataDsaXmlWrite(xmlSecKeyDataId id, xmlSecKeyPtr key,
 
     ctx = xmlSecMSCryptoKeyDataGetCtx(xmlSecKeyGetValue(key));
     xmlSecAssert2(ctx != NULL, -1);
-    xmlSecAssert2(ctx->hKey != 0, -1);
+    xmlSecAssert2(xmlSecMSCryptoKeyDataCtxGetKey(ctx) != 0, -1);
     
-    if (!CryptExportKey(ctx->hKey, 0, PUBLICKEYBLOB, 0, NULL, &dwBlobLen)) {
+    if (!CryptExportKey(xmlSecMSCryptoKeyDataCtxGetKey(ctx), 0, PUBLICKEYBLOB, 0, NULL, &dwBlobLen)) {
 	xmlSecError(XMLSEC_ERRORS_HERE,
 		    xmlSecErrorsSafeString(xmlSecKeyDataKlassGetName(id)),
 		    "CryptExportKey",
@@ -1819,7 +2115,7 @@ xmlSecMSCryptoKeyDataDsaXmlWrite(xmlSecKeyDataId id, xmlSecKeyPtr key,
     }
 
     blob = xmlSecBufferGetData(&buf);
-    if (!CryptExportKey(ctx->hKey, 0, PUBLICKEYBLOB, 0, blob, &dwBlobLen)) {
+    if (!CryptExportKey(xmlSecMSCryptoKeyDataCtxGetKey(ctx), 0, PUBLICKEYBLOB, 0, blob, &dwBlobLen)) {
 	xmlSecError(XMLSEC_ERRORS_HERE,
 		    xmlSecErrorsSafeString(xmlSecKeyDataKlassGetName(id)),
 		    "CryptExportKey",
@@ -2021,45 +2317,45 @@ xmlSecMSCryptoKeyDataDsaGenerate(xmlSecKeyDataPtr data, xmlSecSize sizeBits, xml
     ctx = xmlSecMSCryptoKeyDataGetCtx(data);
 
     if(!CryptAcquireContext(&hProv, XMLSEC_CONTAINER_NAME, ctx->providerName, ctx->providerType, 0)) {
-	if (NTE_BAD_KEYSET == GetLastError()) {
-	    if(!CryptAcquireContext(&hProv, XMLSEC_CONTAINER_NAME, ctx->providerName, ctx->providerType, CRYPT_NEWKEYSET)) {
-		xmlSecError(XMLSEC_ERRORS_HERE,
+	    if (NTE_BAD_KEYSET == GetLastError()) {
+	        if(!CryptAcquireContext(&hProv, XMLSEC_CONTAINER_NAME, ctx->providerName, ctx->providerType, CRYPT_NEWKEYSET)) {
+		        xmlSecError(XMLSEC_ERRORS_HERE,
+			            xmlSecErrorsSafeString(xmlSecKeyDataGetName(data)),
+			            "CryptAcquireContext",
+			            XMLSEC_ERRORS_R_CRYPTO_FAILED,
+			            XMLSEC_ERRORS_NO_MESSAGE);
+		        return(-1);
+	        }
+	    } else {
+	        xmlSecError(XMLSEC_ERRORS_HERE,
 			    xmlSecErrorsSafeString(xmlSecKeyDataGetName(data)),
 			    "CryptAcquireContext",
 			    XMLSEC_ERRORS_R_CRYPTO_FAILED,
 			    XMLSEC_ERRORS_NO_MESSAGE);
-		return(-1);
+	        return(-1);
 	    }
-	} else {
-	    xmlSecError(XMLSEC_ERRORS_HERE,
-			xmlSecErrorsSafeString(xmlSecKeyDataGetName(data)),
-			"CryptAcquireContext",
-			XMLSEC_ERRORS_R_CRYPTO_FAILED,
-			XMLSEC_ERRORS_NO_MESSAGE);
-	    return(-1);
-	}
     }
 
     dwKeySpec = AT_SIGNATURE;
     dwSize = ((sizeBits << 16) | CRYPT_EXPORTABLE);
     if (!CryptGenKey(hProv, CALG_DSS_SIGN, dwSize, &hKey)) {
-	xmlSecError(XMLSEC_ERRORS_HERE,
-		    xmlSecErrorsSafeString(xmlSecKeyDataGetName(data)),
-		    "CryptGenKey",
-		    XMLSEC_ERRORS_R_CRYPTO_FAILED,
-		    XMLSEC_ERRORS_NO_MESSAGE);
-	goto done;
+	    xmlSecError(XMLSEC_ERRORS_HERE,
+		        xmlSecErrorsSafeString(xmlSecKeyDataGetName(data)),
+		        "CryptGenKey",
+		        XMLSEC_ERRORS_R_CRYPTO_FAILED,
+		        XMLSEC_ERRORS_NO_MESSAGE);
+	    goto done;
     }
 
     ret = xmlSecMSCryptoKeyDataAdoptKey(data, hProv, TRUE, hKey, dwKeySpec, 
 	xmlSecKeyDataTypePublic | xmlSecKeyDataTypePrivate);
     if(ret < 0) {
-	xmlSecError(XMLSEC_ERRORS_HERE,
-		    xmlSecErrorsSafeString(xmlSecKeyDataGetName(data)),
-		    "xmlSecMSCryptoKeyDataAdoptKey",
-		    XMLSEC_ERRORS_R_XMLSEC_FAILED,
-		    XMLSEC_ERRORS_NO_MESSAGE);
-	goto done;
+	    xmlSecError(XMLSEC_ERRORS_HERE,
+		        xmlSecErrorsSafeString(xmlSecKeyDataGetName(data)),
+		        "xmlSecMSCryptoKeyDataAdoptKey",
+		        XMLSEC_ERRORS_R_XMLSEC_FAILED,
+		        XMLSEC_ERRORS_NO_MESSAGE);
+	    goto done;
     }
     hProv = 0;
     hKey = 0;
@@ -2069,11 +2365,11 @@ xmlSecMSCryptoKeyDataDsaGenerate(xmlSecKeyDataPtr data, xmlSecSize sizeBits, xml
 
 done:
     if (hProv != 0) {
-	CryptReleaseContext(ctx->hProv, 0);
+    	CryptReleaseContext(hProv, 0);
     }
 
     if (hKey != 0) {
-	CryptDestroyKey(hKey);
+	    CryptDestroyKey(hKey);
     }
 
     return(res);
diff --git a/src/mscrypto/crypto.c b/src/mscrypto/crypto.c
index 7b76737..a8a7573 100644
--- a/src/mscrypto/crypto.c
+++ b/src/mscrypto/crypto.c
@@ -126,7 +126,7 @@ xmlSecCryptoGetFunctions_mscrypto(void) {
 #endif /* XMLSEC_NO_X509 */
     gXmlSecMSCryptoFunctions->cryptoAppKeyLoad 			= xmlSecMSCryptoAppKeyLoad; 
     gXmlSecMSCryptoFunctions->cryptoAppKeyLoadMemory		= xmlSecMSCryptoAppKeyLoadMemory; 
-    gXmlSecMSCryptoFunctions->cryptoAppDefaultPwdCallback	= (void*)xmlSecMSCryptoAppGetDefaultPwdCallback;
+    gXmlSecMSCryptoFunctions->cryptoAppDefaultPwdCallback	= (void*)xmlSecMSCryptoAppGetDefaultPwdCallback();
 
     return(gXmlSecMSCryptoFunctions);
 }
@@ -330,13 +330,15 @@ xmlSecMSCryptoErrorsDefaultCallback(const char* file, int line, const char* func
 BYTE* 
 xmlSecMSCryptoCertStrToName(DWORD dwCertEncodingType, LPCTSTR pszX500, DWORD dwStrType, DWORD* len) {
     BYTE* str = NULL; 
-    
+    LPCTSTR ppszError = NULL;
+
     xmlSecAssert2(pszX500 != NULL, NULL);
     xmlSecAssert2(len != NULL, NULL);
 
     if (!CertStrToName(dwCertEncodingType, pszX500, dwStrType, 
-			NULL, NULL, len, NULL)) {
+			NULL, NULL, len, &ppszError)) {
 	/* this might not be an error, string might just not exist */
+                DWORD dw = GetLastError();
 	return(NULL);
     }
 	
diff --git a/src/mscrypto/x509.c b/src/mscrypto/x509.c
index 2ddb1e7..4807f37 100644
--- a/src/mscrypto/x509.c
+++ b/src/mscrypto/x509.c
@@ -1598,70 +1598,98 @@ xmlSecMSCryptoKeyDataX509VerifyAndExtractKey(xmlSecKeyDataPtr data, xmlSecKeyPtr
 
 	cert = xmlSecMSCryptoX509StoreVerify(x509Store, ctx->hMemStore, keyInfoCtx);
 	if(cert != NULL) {
-	    xmlSecKeyDataPtr keyValue;
+	    xmlSecKeyDataPtr keyValue = NULL;
+        PCCERT_CONTEXT pCert = NULL;
 
 	    ctx->keyCert = CertDuplicateCertificateContext(cert);
 	    if(ctx->keyCert == NULL) {
-		xmlSecError(XMLSEC_ERRORS_HERE,
-			    xmlSecErrorsSafeString(xmlSecKeyDataGetName(data)),
-			    "CertDuplicateCertificateContext",
-			    XMLSEC_ERRORS_R_CRYPTO_FAILED,
-			    XMLSEC_ERRORS_NO_MESSAGE);
-		return(-1);
-	    }
-
-	    keyValue = xmlSecMSCryptoX509CertGetKey(ctx->keyCert);
-	    if(keyValue == NULL) {
-		xmlSecError(XMLSEC_ERRORS_HERE,
-			    xmlSecErrorsSafeString(xmlSecKeyDataGetName(data)),
-			    "xmlSecMSCryptoX509CertGetKey",
-			    XMLSEC_ERRORS_R_XMLSEC_FAILED,
-			    XMLSEC_ERRORS_NO_MESSAGE);
-		return(-1);
+		    xmlSecError(XMLSEC_ERRORS_HERE,
+			        xmlSecErrorsSafeString(xmlSecKeyDataGetName(data)),
+			        "CertDuplicateCertificateContext",
+			        XMLSEC_ERRORS_R_CRYPTO_FAILED,
+			        XMLSEC_ERRORS_NO_MESSAGE);
+		    return(-1);
 	    }
+
+		/* search key according to KeyReq */
+		pCert = CertDuplicateCertificateContext( ctx->keyCert ) ;
+		if( pCert == NULL ) {
+			xmlSecError( XMLSEC_ERRORS_HERE,
+		    	xmlSecErrorsSafeString(xmlSecKeyDataGetName(data)),
+				"CertDuplicateCertificateContext",
+				XMLSEC_ERRORS_R_CRYPTO_FAILED,
+				XMLSEC_ERRORS_NO_MESSAGE);
+
+			return(-1);
+		}
+
+		if( ( keyInfoCtx->keyReq.keyType & xmlSecKeyDataTypePrivate ) == xmlSecKeyDataTypePrivate ) {
+			keyValue = xmlSecMSCryptoCertAdopt( pCert, xmlSecKeyDataTypePrivate ) ;
+			if(keyValue == NULL) {
+				xmlSecError(XMLSEC_ERRORS_HERE,
+						xmlSecErrorsSafeString(xmlSecKeyDataGetName(data)),
+						"xmlSecMSCryptoCertAdopt",
+						XMLSEC_ERRORS_R_XMLSEC_FAILED,
+						XMLSEC_ERRORS_NO_MESSAGE);
+				CertFreeCertificateContext( pCert ) ;
+				return(-1);
+			}
+			pCert = NULL ;
+		} else if( ( keyInfoCtx->keyReq.keyType & xmlSecKeyDataTypePublic ) == xmlSecKeyDataTypePublic ) {
+			keyValue = xmlSecMSCryptoCertAdopt( pCert, xmlSecKeyDataTypePublic ) ;
+			if(keyValue == NULL) {
+				xmlSecError(XMLSEC_ERRORS_HERE,
+						xmlSecErrorsSafeString(xmlSecKeyDataGetName(data)),
+						"xmlSecMSCryptoCertAdopt",
+						XMLSEC_ERRORS_R_XMLSEC_FAILED,
+						XMLSEC_ERRORS_NO_MESSAGE);
+				CertFreeCertificateContext( pCert ) ;
+				return(-1);
+			}
+			pCert = NULL ;
+		}
 
 	    /* verify that the key matches our expectations */
 	    if(xmlSecKeyReqMatchKeyValue(&(keyInfoCtx->keyReq), keyValue) != 1) {
-		xmlSecError(XMLSEC_ERRORS_HERE,
-			    xmlSecErrorsSafeString(xmlSecKeyDataGetName(data)),
-			    "xmlSecKeyReqMatchKeyValue",
-			    XMLSEC_ERRORS_R_XMLSEC_FAILED,
-			    XMLSEC_ERRORS_NO_MESSAGE);
-		xmlSecKeyDataDestroy(keyValue);
-		return(-1);
+		    xmlSecError(XMLSEC_ERRORS_HERE,
+			        xmlSecErrorsSafeString(xmlSecKeyDataGetName(data)),
+			        "xmlSecKeyReqMatchKeyValue",
+			        XMLSEC_ERRORS_R_XMLSEC_FAILED,
+			        XMLSEC_ERRORS_NO_MESSAGE);
+		    xmlSecKeyDataDestroy(keyValue);
+		    return(-1);
 	    }	
 
 	    ret = xmlSecKeySetValue(key, keyValue);
 	    if(ret < 0) {
-		xmlSecError(XMLSEC_ERRORS_HERE,
-			    xmlSecErrorsSafeString(xmlSecKeyDataGetName(data)),
-			    "xmlSecKeySetValue",
-			    XMLSEC_ERRORS_R_XMLSEC_FAILED,
-			    XMLSEC_ERRORS_NO_MESSAGE);
-		xmlSecKeyDataDestroy(keyValue);
-		return(-1);
+		    xmlSecError(XMLSEC_ERRORS_HERE,
+			        xmlSecErrorsSafeString(xmlSecKeyDataGetName(data)),
+			        "xmlSecKeySetValue",
+			        XMLSEC_ERRORS_R_XMLSEC_FAILED,
+			        XMLSEC_ERRORS_NO_MESSAGE);
+		    xmlSecKeyDataDestroy(keyValue);
+		    return(-1);
 	    }	    
 
 	    ret = xmlSecMSCryptoX509CertGetTime(ctx->keyCert->pCertInfo->NotBefore, &(key->notValidBefore));
 	    if(ret < 0) {
-		xmlSecError(XMLSEC_ERRORS_HERE,
-			    xmlSecErrorsSafeString(xmlSecKeyDataGetName(data)),
-			    "xmlSecMSCryptoX509CertGetTime",
-			    XMLSEC_ERRORS_R_XMLSEC_FAILED,
-			    "notValidBefore");
-		return(-1);
+		    xmlSecError(XMLSEC_ERRORS_HERE,
+			        xmlSecErrorsSafeString(xmlSecKeyDataGetName(data)),
+			        "xmlSecMSCryptoX509CertGetTime",
+			        XMLSEC_ERRORS_R_XMLSEC_FAILED,
+			        "notValidBefore");
+		    return(-1);
 	    }
 
 	    ret = xmlSecMSCryptoX509CertGetTime(ctx->keyCert->pCertInfo->NotAfter, &(key->notValidAfter));
 	    if(ret < 0) {
-		xmlSecError(XMLSEC_ERRORS_HERE,
-			    xmlSecErrorsSafeString(xmlSecKeyDataGetName(data)),
-			    "xmlSecMSCryptoX509CertGetTime",
-			    XMLSEC_ERRORS_R_XMLSEC_FAILED,
-			    "notValidAfter");
-		return(-1);
+		    xmlSecError(XMLSEC_ERRORS_HERE,
+			        xmlSecErrorsSafeString(xmlSecKeyDataGetName(data)),
+			        "xmlSecMSCryptoX509CertGetTime",
+			        XMLSEC_ERRORS_R_XMLSEC_FAILED,
+			        "notValidAfter");
+		    return(-1);
 	    }
-
 	} else if((keyInfoCtx->flags & XMLSEC_KEYINFO_FLAGS_X509DATA_STOP_ON_INVALID_CERT) != 0) {
 	    xmlSecError(XMLSEC_ERRORS_HERE,
 			xmlSecErrorsSafeString(xmlSecKeyDataGetName(data)),
@@ -1882,7 +1910,7 @@ xmlSecMSCryptoX509NameWrite(PCERT_NAME_BLOB nm) {
     xmlSecAssert2(nm->pbData != NULL, NULL);
     xmlSecAssert2(nm->cbData > 0, NULL);
 
-    csz = CertNameToStr(X509_ASN_ENCODING | PKCS_7_ASN_ENCODING, nm, CERT_X500_NAME_STR, NULL, 0);
+    csz = CertNameToStr(X509_ASN_ENCODING | PKCS_7_ASN_ENCODING, nm, CERT_X500_NAME_STR | CERT_NAME_STR_REVERSE_FLAG, NULL, 0);
     str = (char *)xmlMalloc(csz);
     if (NULL == str) {
 	xmlSecError(XMLSEC_ERRORS_HERE,
@@ -1893,7 +1921,7 @@ xmlSecMSCryptoX509NameWrite(PCERT_NAME_BLOB nm) {
 	return (NULL);
     }
 
-    csz = CertNameToStr(X509_ASN_ENCODING | PKCS_7_ASN_ENCODING, nm, CERT_X500_NAME_STR, str, csz);
+    csz = CertNameToStr(X509_ASN_ENCODING | PKCS_7_ASN_ENCODING, nm, CERT_X500_NAME_STR | CERT_NAME_STR_REVERSE_FLAG, str, csz);
     if (csz < 1) {
 	xmlSecError(XMLSEC_ERRORS_HERE,
 		    NULL,
@@ -1904,17 +1932,37 @@ xmlSecMSCryptoX509NameWrite(PCERT_NAME_BLOB nm) {
 	return(NULL);
     }
 
-    res = xmlStrdup(BAD_CAST str);
-    if(res == NULL) {
-	xmlSecError(XMLSEC_ERRORS_HERE,
-		    NULL,
-		    "xmlStrdup",
-		    XMLSEC_ERRORS_R_MALLOC_FAILED,
-		    XMLSEC_ERRORS_NO_MESSAGE);
-	xmlFree(str);
-	return(NULL);
+    /* aleksey: this is a hack, but mscrypto can not read E= flag and wants Email= instead.
+     * don't ask me how is it possible not to read something you wrote yourself but also
+     * see comment in the xmlSecMSCryptoX509FindCert function. 
+     */
+    if(strncmp(str, "E=", 2) == 0) {
+        res = xmlMalloc(strlen(str) + 13 + 1);
+        if(res == NULL) {
+            xmlSecError(XMLSEC_ERRORS_HERE,
+		            NULL,
+		            "xmlMalloc",
+		            XMLSEC_ERRORS_R_MALLOC_FAILED,
+		            "size=%d",
+                    strlen(str) + 13 + 1);
+            xmlFree(str);
+            return(NULL);
+        }
+
+        memcpy(res, "emailAddress=", 13);
+        strcpy(res + 13, BAD_CAST (str + 2)); 
+    } else {
+        res = xmlStrdup(BAD_CAST str);
+        if(res == NULL) {
+            xmlSecError(XMLSEC_ERRORS_HERE,
+		            NULL,
+		            "xmlStrdup",
+		            XMLSEC_ERRORS_R_MALLOC_FAILED,
+		            XMLSEC_ERRORS_NO_MESSAGE);
+            xmlFree(str);
+            return(NULL);
+        }
     }
-
     xmlFree(str);
     return(res);
 }
@@ -2079,7 +2127,7 @@ xmlSecMSCryptoX509CertDebugDump(PCCERT_CONTEXT cert, FILE* output) {
     xmlSecAssert(cert != NULL);
     xmlSecAssert(output != NULL);
 
-    // todo: add error checks
+    /* todo: add error checks */
     dwSize = CertGetNameString(cert, CERT_NAME_RDN_TYPE, 0, NULL, NULL, 0);
     subject = (LPSTR)xmlMalloc(dwSize);
     dwSize = CertGetNameString(cert, CERT_NAME_RDN_TYPE, 0, NULL, subject, dwSize);
@@ -2115,7 +2163,7 @@ xmlSecMSCryptoX509CertDebugXmlDump(PCCERT_CONTEXT cert, FILE* output) {
     xmlSecAssert(cert != NULL);
     xmlSecAssert(output != NULL);
 
-    // todo: add error checks
+    /* todo: add error checks */
     dwSize = CertGetNameString(cert, CERT_NAME_RDN_TYPE, 0, NULL, NULL, 0);
     subject = (LPSTR)xmlMalloc(dwSize);
     dwSize = CertGetNameString(cert, CERT_NAME_RDN_TYPE, 0, NULL, subject, dwSize);
diff --git a/src/mscrypto/x509vfy.c b/src/mscrypto/x509vfy.c
index d30f09e..40babda 100644
--- a/src/mscrypto/x509vfy.c
+++ b/src/mscrypto/x509vfy.c
@@ -125,15 +125,25 @@ xmlSecMSCryptoX509StoreFindCert(xmlSecKeyDataStorePtr store, xmlChar *subjectNam
 				xmlChar *issuerName, xmlChar *issuerSerial,
 				xmlChar *ski, xmlSecKeyInfoCtx* keyInfoCtx) {
     xmlSecMSCryptoX509StoreCtxPtr ctx;
+    PCCERT_CONTEXT pCert = NULL;
     
     xmlSecAssert2(xmlSecKeyDataStoreCheckId(store, xmlSecMSCryptoX509StoreId), NULL);
     xmlSecAssert2(keyInfoCtx != NULL, NULL);
 
     ctx = xmlSecMSCryptoX509StoreGetCtx(store);
     xmlSecAssert2(ctx != NULL, NULL);
-    xmlSecAssert2(ctx->untrusted != NULL, NULL);
 
-    return(xmlSecMSCryptoX509FindCert(ctx->untrusted, subjectName, issuerName, issuerSerial, ski));
+    /* search untrusted certs store */
+    if((ctx->untrusted != NULL) && (pCert == NULL)) {
+        pCert = xmlSecMSCryptoX509FindCert(ctx->untrusted, subjectName, issuerName, issuerSerial, ski);
+    }
+
+    /* search untrusted certs store */
+    if((ctx->trusted != NULL) && (pCert == NULL)) {
+        pCert = xmlSecMSCryptoX509FindCert(ctx->trusted, subjectName, issuerName, issuerSerial, ski);
+    }
+
+    return pCert;
 }
 
 
@@ -271,75 +281,87 @@ xmlSecMSCryptoX509StoreConstructCertsChain(xmlSecKeyDataStorePtr store, PCCERT_C
     xmlSecAssert2(ctx->untrusted != NULL, FALSE);
 
     if(keyInfoCtx->certsVerificationTime > 0) {
-	/* convert the time to FILETIME */
-	xmlSecMSCryptoUnixTimeToFileTime(keyInfoCtx->certsVerificationTime, &fTime);
+	    /* convert the time to FILETIME */
+    	xmlSecMSCryptoUnixTimeToFileTime(keyInfoCtx->certsVerificationTime, &fTime);
     } else {
-	/* Defaults to current time */
-	GetSystemTimeAsFileTime(&fTime);
+	    /* Defaults to current time */
+	    GetSystemTimeAsFileTime(&fTime);
     }
 
     if (!xmlSecMSCrypoVerifyCertTime(cert, &fTime)) {
-	xmlSecMSCryptoX509StoreCertError(store, cert, CERT_STORE_TIME_VALIDITY_FLAG);
-	return(FALSE);
+    	xmlSecMSCryptoX509StoreCertError(store, cert, CERT_STORE_TIME_VALIDITY_FLAG);
+	    return(FALSE);
     }
 
     if (!xmlSecMSCryptoCheckRevocation(certs, cert)) {
-	return(FALSE);
+    	return(FALSE);
     }
 
-    /* try the untrusted certs in the chain */
-    issuerCert = CertFindCertificateInStore(certs, 
+    /**
+     * Try to find the cert in the trusted cert store. We will trust
+     * the certificate in the trusted store.
+	 */
+    issuerCert = CertFindCertificateInStore(ctx->trusted, 
+			    X509_ASN_ENCODING | PKCS_7_ASN_ENCODING,
+			    0,
+			    CERT_FIND_SUBJECT_NAME,
+			    &(cert->pCertInfo->Subject),
+			    NULL);
+    if( issuerCert != NULL) {
+		/* We have found the trusted cert, so return true */
+		CertFreeCertificateContext( issuerCert ) ;
+		return( TRUE ) ;
+    }
+
+    /* Check whether the certificate is self signed certificate */
+    if(CertCompareCertificateName(X509_ASN_ENCODING | PKCS_7_ASN_ENCODING, &(cert->pCertInfo->Subject), &(cert->pCertInfo->Issuer))) {
+        return(FALSE);
+    }
+
+    /* try to find issuer cert in the trusted cert in the store */
+    issuerCert = CertFindCertificateInStore(ctx->trusted, 
 			    X509_ASN_ENCODING | PKCS_7_ASN_ENCODING,
 			    0,
 			    CERT_FIND_SUBJECT_NAME,
 			    &(cert->pCertInfo->Issuer),
 			    NULL);
-    if(issuerCert == cert) {
-	/* self signed cert, forget it */
-	CertFreeCertificateContext(issuerCert);
-    } else if(issuerCert != NULL) {
+    if(issuerCert != NULL) {
         flags = CERT_STORE_REVOCATION_FLAG | CERT_STORE_SIGNATURE_FLAG;
-	if(!CertVerifySubjectCertificateContext(cert, issuerCert, &flags)) {
-	    xmlSecMSCryptoX509StoreCertError(store, issuerCert, flags);
-	    CertFreeCertificateContext(issuerCert);
-	    return(FALSE);
+	    if(!CertVerifySubjectCertificateContext(cert, issuerCert, &flags)) {
+	        xmlSecMSCryptoX509StoreCertError(store, issuerCert, flags);
+	        CertFreeCertificateContext(issuerCert);
+	        return(FALSE);
         }
-	if(!xmlSecMSCryptoX509StoreConstructCertsChain(store, issuerCert, certs, keyInfoCtx)) {
-	    xmlSecMSCryptoX509StoreCertError(store, issuerCert, flags);
+	    /* todo: do we want to verify the trusted cert? */
 	    CertFreeCertificateContext(issuerCert);
-	    return(FALSE);
-	}
-	CertFreeCertificateContext(issuerCert);
-	return(TRUE);
+	    return(TRUE);
     }
 
-    /* try the untrusted certs in the store */
-    issuerCert = CertFindCertificateInStore(ctx->untrusted, 
+    /* try the untrusted certs in the chain */
+    issuerCert = CertFindCertificateInStore(certs, 
 			    X509_ASN_ENCODING | PKCS_7_ASN_ENCODING,
 			    0,
 			    CERT_FIND_SUBJECT_NAME,
 			    &(cert->pCertInfo->Issuer),
 			    NULL);
-    if(issuerCert == cert) {
-	/* self signed cert, forget it */
-	CertFreeCertificateContext(issuerCert);
-    } else if(issuerCert != NULL) {
+    if(issuerCert != NULL) {
         flags = CERT_STORE_REVOCATION_FLAG | CERT_STORE_SIGNATURE_FLAG;
-	if(!CertVerifySubjectCertificateContext(cert, issuerCert, &flags)) {
-	    xmlSecMSCryptoX509StoreCertError(store, issuerCert, flags);
-	    CertFreeCertificateContext(issuerCert);
-	    return(FALSE);
+	    if(!CertVerifySubjectCertificateContext(cert, issuerCert, &flags)) {
+	        xmlSecMSCryptoX509StoreCertError(store, issuerCert, flags);
+	        CertFreeCertificateContext(issuerCert);
+	        return(FALSE);
         }
-	if(!xmlSecMSCryptoX509StoreConstructCertsChain(store, issuerCert, certs, keyInfoCtx)) {
+    	if(!xmlSecMSCryptoX509StoreConstructCertsChain(store, issuerCert, certs, keyInfoCtx)) {
+	        xmlSecMSCryptoX509StoreCertError(store, issuerCert, flags);
+	        CertFreeCertificateContext(issuerCert);
+	        return(FALSE);
+	    }
 	    CertFreeCertificateContext(issuerCert);
-	    return(FALSE);
-	}
-	CertFreeCertificateContext(issuerCert);
-	return(TRUE);
+	    return(TRUE);
     }
 
-    /* try to find issuer cert in the trusted cert in the store */
-    issuerCert = CertFindCertificateInStore(ctx->trusted, 
+    /* try the untrusted certs in the store */
+    issuerCert = CertFindCertificateInStore(ctx->untrusted, 
 			    X509_ASN_ENCODING | PKCS_7_ASN_ENCODING,
 			    0,
 			    CERT_FIND_SUBJECT_NAME,
@@ -347,14 +369,17 @@ xmlSecMSCryptoX509StoreConstructCertsChain(xmlSecKeyDataStorePtr store, PCCERT_C
 			    NULL);
     if(issuerCert != NULL) {
         flags = CERT_STORE_REVOCATION_FLAG | CERT_STORE_SIGNATURE_FLAG;
-	if(!CertVerifySubjectCertificateContext(cert, issuerCert, &flags)) {
-	    xmlSecMSCryptoX509StoreCertError(store, issuerCert, flags);
-	    CertFreeCertificateContext(issuerCert);
-	    return(FALSE);
+	    if(!CertVerifySubjectCertificateContext(cert, issuerCert, &flags)) {
+	        xmlSecMSCryptoX509StoreCertError(store, issuerCert, flags);
+	        CertFreeCertificateContext(issuerCert);
+	        return(FALSE);
         }
-	/* todo: do we want to verify the trusted cert? */
-	CertFreeCertificateContext(issuerCert);
-	return(TRUE);
+	    if(!xmlSecMSCryptoX509StoreConstructCertsChain(store, issuerCert, certs, keyInfoCtx)) {
+	        CertFreeCertificateContext(issuerCert);
+	        return(FALSE);
+	    }
+    	CertFreeCertificateContext(issuerCert);
+	    return(TRUE);
     }
 
     return(FALSE);
@@ -380,25 +405,32 @@ xmlSecMSCryptoX509StoreVerify(xmlSecKeyDataStorePtr store, HCERTSTORE certs,
     xmlSecAssert2(keyInfoCtx != NULL, NULL);
 
     while((cert = CertEnumCertificatesInStore(certs, cert)) != NULL){
-	PCCERT_CONTEXT nextCert = NULL;
-    
-	xmlSecAssert2(cert->pCertInfo != NULL, NULL);
-
-	/* if cert is the issuer of any other cert in the list, then it is 
-	* to be skipped */
-	nextCert = CertFindCertificateInStore(certs,
-				X509_ASN_ENCODING | PKCS_7_ASN_ENCODING,
-				0,
-				CERT_FIND_ISSUER_NAME,
-				&(cert->pCertInfo->Subject),
-				NULL);
-	if(nextCert != NULL) {
-	    CertFreeCertificateContext(nextCert);
-	    continue;
-	}
-	if(xmlSecMSCryptoX509StoreConstructCertsChain(store, cert, certs, keyInfoCtx)) {
-	    return(cert);
-	}
+	    PCCERT_CONTEXT nextCert = NULL;
+        unsigned char selected = 1;
+        
+	    xmlSecAssert2(cert->pCertInfo != NULL, NULL);
+
+	    /* if cert is the issuer of any other cert in the list, then it is 
+ 	     * to be skipped except a case of a celf-signed cert*/
+        do {
+            nextCert = CertFindCertificateInStore(certs,
+				    X509_ASN_ENCODING | PKCS_7_ASN_ENCODING,
+				    0,
+				    CERT_FIND_ISSUER_NAME,
+				    &(cert->pCertInfo->Subject),
+				    nextCert);
+            if((nextCert != NULL) && !CertCompareCertificateName(X509_ASN_ENCODING | PKCS_7_ASN_ENCODING, 
+                                        &(nextCert->pCertInfo->Subject), &(nextCert->pCertInfo->Issuer))) {
+                selected = 0;
+            }    
+        } while((selected == 1) && (nextCert != NULL));
+        if(nextCert != NULL) {
+	        CertFreeCertificateContext(nextCert);	            
+	    }
+
+	    if((selected == 1) && xmlSecMSCryptoX509StoreConstructCertsChain(store, cert, certs, keyInfoCtx)) {
+	        return(cert);
+	    }
     }
 
     return (NULL);
@@ -458,9 +490,113 @@ xmlSecMSCryptoX509StoreAdoptCert(xmlSecKeyDataStorePtr store, PCCERT_CONTEXT pCe
     return(0);
 }
 
+
+/** 
+ * xmlSecMSCryptoX509StoreAdoptKeyStore: 
+ * @store:              the pointer to X509 key data store klass.
+ * @keyStore:           the pointer to keys store.
+ *
+ * Adds @keyStore to the list of key stores.
+ *
+ * Returns 0 on success or a negative value if an error occurs.
+ */
+int	
+xmlSecMSCryptoX509StoreAdoptKeyStore (xmlSecKeyDataStorePtr store, HCERTSTORE keyStore) {
+    xmlSecMSCryptoX509StoreCtxPtr ctx;
+    int ret;
+
+    xmlSecAssert2(xmlSecKeyDataStoreCheckId(store, xmlSecMSCryptoX509StoreId), -1);
+    xmlSecAssert2( keyStore != NULL, -1);
+
+    ctx = xmlSecMSCryptoX509StoreGetCtx(store);
+    xmlSecAssert2(ctx != NULL, -1);
+    xmlSecAssert2(ctx->trusted != NULL, -1);
+
+	if(!CertAddStoreToCollection ( ctx->trusted , keyStore , CERT_PHYSICAL_STORE_ADD_ENABLE_FLAG , 2)) {
+		xmlSecError(XMLSEC_ERRORS_HERE,
+		    xmlSecErrorsSafeString(xmlSecKeyDataStoreGetName(store)),
+		    "CertAddStoreToCollection",
+		    XMLSEC_ERRORS_R_CRYPTO_FAILED,
+		    XMLSEC_ERRORS_NO_MESSAGE);
+		return(-1);
+	}
+
+    return(0);
+}
+
+/** 
+ * xmlSecMSCryptoX509StoreAdoptTrustedStore: 
+ * @store:              the pointer to X509 key data store klass.
+ * @trustedStore:       the pointer to certs store.
+ *
+ * Adds @trustedStore to the list of trusted certs stores.
+ *
+ * Returns 0 on success or a negative value if an error occurs.
+ */
+int
+xmlSecMSCryptoX509StoreAdoptTrustedStore (xmlSecKeyDataStorePtr store, HCERTSTORE trustedStore) {
+    xmlSecMSCryptoX509StoreCtxPtr ctx;
+    int ret;
+
+    xmlSecAssert2(xmlSecKeyDataStoreCheckId(store, xmlSecMSCryptoX509StoreId), -1);
+    xmlSecAssert2( trustedStore != NULL, -1);
+
+    ctx = xmlSecMSCryptoX509StoreGetCtx(store);
+    xmlSecAssert2(ctx != NULL, -1);
+    xmlSecAssert2(ctx->trusted != NULL, -1);
+
+	if( !CertAddStoreToCollection ( ctx->trusted , trustedStore , CERT_PHYSICAL_STORE_ADD_ENABLE_FLAG , 3 ) ) {
+		xmlSecError(XMLSEC_ERRORS_HERE,
+		    xmlSecErrorsSafeString(xmlSecKeyDataStoreGetName(store)),
+		    "CertAddStoreToCollection",
+		    XMLSEC_ERRORS_R_CRYPTO_FAILED,
+		    XMLSEC_ERRORS_NO_MESSAGE);
+		return(-1);
+	}
+
+    return(0);
+}
+
+/** 
+ * xmlSecMSCryptoX509StoreAdoptTrustedStore: 
+ * @store:              the pointer to X509 key data store klass.
+ * @untrustedStore:     the pointer to certs store.
+ *
+ * Adds @trustedStore to the list of un-trusted certs stores.
+ *
+ * Returns 0 on success or a negative value if an error occurs.
+ */
+int
+xmlSecMSCryptoX509StoreAdoptUntrustedStore (xmlSecKeyDataStorePtr store, HCERTSTORE untrustedStore) {
+    xmlSecMSCryptoX509StoreCtxPtr ctx;
+    int ret;
+
+    xmlSecAssert2(xmlSecKeyDataStoreCheckId(store, xmlSecMSCryptoX509StoreId), -1);
+    xmlSecAssert2( untrustedStore != NULL, -1);
+
+    ctx = xmlSecMSCryptoX509StoreGetCtx(store);
+    xmlSecAssert2(ctx != NULL, -1);
+    xmlSecAssert2(ctx->untrusted != NULL, -1);
+
+	if( !CertAddStoreToCollection ( ctx->untrusted , untrustedStore , CERT_PHYSICAL_STORE_ADD_ENABLE_FLAG , 2 ) ) {
+		xmlSecError(XMLSEC_ERRORS_HERE,
+		    xmlSecErrorsSafeString(xmlSecKeyDataStoreGetName(store)),
+		    "CertAddStoreToCollection",
+		    XMLSEC_ERRORS_R_CRYPTO_FAILED,
+		    XMLSEC_ERRORS_NO_MESSAGE);
+		return(-1);
+	}
+
+	return(0);
+}
+
+
 static int
 xmlSecMSCryptoX509StoreInitialize(xmlSecKeyDataStorePtr store) {
     xmlSecMSCryptoX509StoreCtxPtr ctx;
+	HCERTSTORE hTrustedMemStore ;
+	HCERTSTORE hUntrustedMemStore ;
+
     xmlSecAssert2(xmlSecKeyDataStoreCheckId(store, xmlSecMSCryptoX509StoreId), -1);
 
     ctx = xmlSecMSCryptoX509StoreGetCtx(store);
@@ -468,36 +604,104 @@ xmlSecMSCryptoX509StoreInitialize(xmlSecKeyDataStorePtr store) {
 
     memset(ctx, 0, sizeof(xmlSecMSCryptoX509StoreCtx));
 
-    /* create trusted certs store */
-    ctx->trusted = CertOpenStore(CERT_STORE_PROV_MEMORY,
-			       X509_ASN_ENCODING | PKCS_7_ASN_ENCODING,
+    /* create trusted certs store collection */
+    ctx->trusted = CertOpenStore(CERT_STORE_PROV_COLLECTION,
+			       0,
+			       0,
 			       0,
-			       CERT_STORE_CREATE_NEW_FLAG,
 			       NULL);
     if(ctx->trusted == NULL) {
-	xmlSecError(XMLSEC_ERRORS_HERE,
-		    xmlSecErrorsSafeString(xmlSecKeyDataStoreGetName(store)),
-		    "CertOpenStore",
-		    XMLSEC_ERRORS_R_CRYPTO_FAILED,
-		    XMLSEC_ERRORS_NO_MESSAGE);
-	return(-1);
+	    xmlSecError(XMLSEC_ERRORS_HERE,
+		        xmlSecErrorsSafeString(xmlSecKeyDataStoreGetName(store)),
+		        "CertOpenStore",
+		        XMLSEC_ERRORS_R_CRYPTO_FAILED,
+		        XMLSEC_ERRORS_NO_MESSAGE);
+	    return(-1);
     }
 
     /* create trusted certs store */
-    ctx->untrusted = CertOpenStore(CERT_STORE_PROV_MEMORY,
+    hTrustedMemStore = CertOpenStore(CERT_STORE_PROV_MEMORY,
 			       X509_ASN_ENCODING | PKCS_7_ASN_ENCODING,
 			       0,
 			       CERT_STORE_CREATE_NEW_FLAG,
 			       NULL);
+    if(hTrustedMemStore == NULL) {
+	    xmlSecError(XMLSEC_ERRORS_HERE,
+		        xmlSecErrorsSafeString(xmlSecKeyDataStoreGetName(store)),
+		        "CertOpenStore",
+		        XMLSEC_ERRORS_R_CRYPTO_FAILED,
+		        XMLSEC_ERRORS_NO_MESSAGE);
+	    CertCloseStore(ctx->trusted, CERT_CLOSE_STORE_FORCE_FLAG);
+	    ctx->trusted = NULL ;
+	    return(-1);
+    }
+
+	/* add the memory trusted certs store to trusted certs store collection */
+	if( !CertAddStoreToCollection( ctx->trusted, hTrustedMemStore, CERT_PHYSICAL_STORE_ADD_ENABLE_FLAG, 1 ) ) {
+	    xmlSecError(XMLSEC_ERRORS_HERE,
+		        xmlSecErrorsSafeString(xmlSecKeyDataStoreGetName(store)),
+		        "CertAddStoreToCollection",
+		        XMLSEC_ERRORS_R_CRYPTO_FAILED,
+		        XMLSEC_ERRORS_NO_MESSAGE);
+	    CertCloseStore(ctx->trusted, CERT_CLOSE_STORE_FORCE_FLAG);
+	    CertCloseStore(hTrustedMemStore, CERT_CLOSE_STORE_CHECK_FLAG);
+	    ctx->trusted = NULL ;
+    	return(-1);
+	}
+	CertCloseStore(hTrustedMemStore, CERT_CLOSE_STORE_CHECK_FLAG);
+
+    /* create untrusted certs store collection */
+    ctx->untrusted = CertOpenStore(CERT_STORE_PROV_COLLECTION,
+			       0,
+			       0,
+			       0,
+			       NULL);
     if(ctx->untrusted == NULL) {
-	xmlSecError(XMLSEC_ERRORS_HERE,
-		    xmlSecErrorsSafeString(xmlSecKeyDataStoreGetName(store)),
-		    "CertOpenStore",
-		    XMLSEC_ERRORS_R_CRYPTO_FAILED,
-		    XMLSEC_ERRORS_NO_MESSAGE);
-	return(-1);
+	    xmlSecError(XMLSEC_ERRORS_HERE,
+		        xmlSecErrorsSafeString(xmlSecKeyDataStoreGetName(store)),
+		        "CertOpenStore",
+		        XMLSEC_ERRORS_R_CRYPTO_FAILED,
+		        XMLSEC_ERRORS_NO_MESSAGE);
+	    CertCloseStore(ctx->trusted, CERT_CLOSE_STORE_FORCE_FLAG);
+	    ctx->trusted = NULL ;
+	    return(-1);
+	}
+
+    /* create untrusted certs store */
+    hUntrustedMemStore = CertOpenStore(CERT_STORE_PROV_MEMORY,
+			       X509_ASN_ENCODING | PKCS_7_ASN_ENCODING,
+			       0,
+			       CERT_STORE_CREATE_NEW_FLAG,
+			       NULL);
+    if(hUntrustedMemStore == NULL) {
+	    xmlSecError(XMLSEC_ERRORS_HERE,
+		        xmlSecErrorsSafeString(xmlSecKeyDataStoreGetName(store)),
+		        "CertOpenStore",
+		        XMLSEC_ERRORS_R_CRYPTO_FAILED,
+		        XMLSEC_ERRORS_NO_MESSAGE);
+	    CertCloseStore(ctx->trusted, CERT_CLOSE_STORE_FORCE_FLAG);
+	    CertCloseStore(ctx->untrusted, CERT_CLOSE_STORE_FORCE_FLAG);
+	    ctx->trusted = NULL ;
+	    ctx->untrusted = NULL ;
+	    return(-1);
     }
 
+	/* add the memory trusted certs store to untrusted certs store collection */
+	if( !CertAddStoreToCollection( ctx->untrusted, hUntrustedMemStore, CERT_PHYSICAL_STORE_ADD_ENABLE_FLAG, 1 ) ) {
+	    xmlSecError(XMLSEC_ERRORS_HERE,
+		        xmlSecErrorsSafeString(xmlSecKeyDataStoreGetName(store)),
+		        "CertAddStoreToCollection",
+		        XMLSEC_ERRORS_R_CRYPTO_FAILED,
+		        XMLSEC_ERRORS_NO_MESSAGE);
+	    CertCloseStore(ctx->untrusted, CERT_CLOSE_STORE_FORCE_FLAG);
+	    CertCloseStore(ctx->trusted, CERT_CLOSE_STORE_FORCE_FLAG);
+	    CertCloseStore(hUntrustedMemStore, CERT_CLOSE_STORE_CHECK_FLAG);
+	    ctx->trusted = NULL ;
+	    ctx->untrusted = NULL ;
+    	return(-1);
+	}
+	CertCloseStore(hUntrustedMemStore, CERT_CLOSE_STORE_CHECK_FLAG);
+
     return(0);    
 }
 
@@ -567,10 +771,41 @@ xmlSecMSCryptoX509FindCert(HCERTSTORE store, xmlChar *subjectName, xmlChar *issu
 
     if((pCert == NULL) && (NULL != issuerName) && (NULL != issuerSerial)) {
 	xmlSecBn issuerSerialBn;	
+    xmlChar * p;
+    CERT_INFO certInfo;
 	CERT_NAME_BLOB cnb;
-        BYTE *cName = NULL; 
+    BYTE *cName = NULL; 
 	DWORD cNameLen = 0;	
+    
+    /* aleksey: for some unknown to me reasons, mscrypto wants Email
+     * instead of emailAddress. This code is not bullet proof and may 
+     * produce incorrect results if someone has "emailAddress=" string
+     * in one of the fields, but it is best I can suggest to fix this problem.
+     * Also see xmlSecMSCryptoX509NameWrite function.
+     */
+    while( (p = (xmlChar*)xmlStrstr(issuerName, BAD_CAST "emailAddress=")) != NULL) {
+        memcpy(p, "       Email=", 13);
+    }
 
+
+
+    /* get issuer name */
+	cName = xmlSecMSCryptoCertStrToName(X509_ASN_ENCODING | PKCS_7_ASN_ENCODING,
+					   issuerName,
+					   CERT_NAME_STR_ENABLE_UTF8_UNICODE_FLAG | CERT_X500_NAME_STR | CERT_NAME_STR_REVERSE_FLAG,
+					   &cNameLen);
+	if(cName == NULL) {
+	    xmlSecError(XMLSEC_ERRORS_HERE,
+			NULL,
+			"xmlSecMSCryptoCertStrToName",
+			XMLSEC_ERRORS_R_XMLSEC_FAILED,
+			XMLSEC_ERRORS_NO_MESSAGE);
+	    return (NULL);
+	}
+	cnb.pbData = cName;
+	cnb.cbData = cNameLen;
+
+    /* get serial number */
 	ret = xmlSecBnInitialize(&issuerSerialBn, 0);
 	if(ret < 0) {
 	    xmlSecError(XMLSEC_ERRORS_HERE,
@@ -578,6 +813,7 @@ xmlSecMSCryptoX509FindCert(HCERTSTORE store, xmlChar *subjectName, xmlChar *issu
 			"xmlSecBnInitialize",
 			XMLSEC_ERRORS_R_XMLSEC_FAILED,
 			XMLSEC_ERRORS_NO_MESSAGE);
+    	xmlFree(cName);
 	    return(NULL);
 	}
 
@@ -589,46 +825,41 @@ xmlSecMSCryptoX509FindCert(HCERTSTORE store, xmlChar *subjectName, xmlChar *issu
 			XMLSEC_ERRORS_R_XMLSEC_FAILED,
 			XMLSEC_ERRORS_NO_MESSAGE);
 	    xmlSecBnFinalize(&issuerSerialBn);
-	    return(NULL);
+		xmlFree(cName);
+        return(NULL);
 	}
 
-	cName = xmlSecMSCryptoCertStrToName(X509_ASN_ENCODING | PKCS_7_ASN_ENCODING,
-					   issuerName,
-					   CERT_OID_NAME_STR | CERT_NAME_STR_REVERSE_FLAG,
-					   &cNameLen);
-	if(cName == NULL) {
+	/* I have no clue why at a sudden a swap is needed to 
+     * convert from lsb... This code is purely based upon 
+	 * trial and error :( WK
+	 */
+    ret = xmlSecBnReverse(&issuerSerialBn);
+	if(ret < 0) {
 	    xmlSecError(XMLSEC_ERRORS_HERE,
 			NULL,
-			"xmlSecMSCryptoCertStrToName",
+			"xmlSecBnReverse",
 			XMLSEC_ERRORS_R_XMLSEC_FAILED,
 			XMLSEC_ERRORS_NO_MESSAGE);
 	    xmlSecBnFinalize(&issuerSerialBn);
-	    return (NULL);
+		xmlFree(cName);
+        return(NULL);
 	}
 
-	cnb.pbData = cName;
-	cnb.cbData = cNameLen;
-	while((pCert = CertFindCertificateInStore(store, 
-						  PKCS_7_ASN_ENCODING | X509_ASN_ENCODING,
-						  0,
-						  CERT_FIND_ISSUER_NAME,
-						  &cnb,
-						  pCert)) != NULL) {
-	    
-	    /* I have no clue why at a sudden a swap is needed to 
-	     * convert from lsb... This code is purely based upon 
-	     * trial and error :( WK
-	     */
-	    if((pCert->pCertInfo != NULL) && 
-	       (pCert->pCertInfo->SerialNumber.pbData != NULL) && 
-	       (pCert->pCertInfo->SerialNumber.cbData > 0) && 
-	       (0 == xmlSecBnCompareReverse(&issuerSerialBn, pCert->pCertInfo->SerialNumber.pbData, 
-				     pCert->pCertInfo->SerialNumber.cbData))) {
-		
-		break;
-	    }
-	}
-	xmlFree(cName);
+    certInfo.Issuer.cbData = cnb.cbData ;
+	certInfo.Issuer.pbData = cnb.pbData ;
+	certInfo.SerialNumber.cbData = xmlSecBnGetSize( &issuerSerialBn ) ;
+    certInfo.SerialNumber.pbData = xmlSecBnGetData( &issuerSerialBn ) ;
+
+    pCert = CertFindCertificateInStore(
+                    store,
+                    X509_ASN_ENCODING | PKCS_7_ASN_ENCODING,
+                    0,
+                    CERT_FIND_SUBJECT_CERT,
+                    &certInfo,
+                    NULL
+            ) ;
+
+    xmlFree(cName);
 	xmlSecBnFinalize(&issuerSerialBn);
     }
 
diff --git a/src/nss/Makefile.am b/src/nss/Makefile.am
index 99092db..6118e15 100644
--- a/src/nss/Makefile.am
+++ b/src/nss/Makefile.am
@@ -32,7 +32,7 @@ libxmlsec1_nss_la_SOURCES =\
 	x509.c \
 	x509vfy.c \
 	keysstore.c \
-	kt_rsa.c \
+	keytrans.c \
 	kw_des.c \
 	kw_aes.c \
 	$(NULL)
diff --git a/src/nss/Makefile.in b/src/nss/Makefile.in
index 259f3fa..d19caf2 100644
--- a/src/nss/Makefile.in
+++ b/src/nss/Makefile.in
@@ -1,4 +1,4 @@
-# Makefile.in generated by automake 1.8.3 from Makefile.am.
+# Makefile.in generated by automake 1.9.2 from Makefile.am.
 # @configure_input@
 
 # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
@@ -36,6 +36,7 @@ POST_INSTALL = :
 NORMAL_UNINSTALL = :
 PRE_UNINSTALL = :
 POST_UNINSTALL = :
+build_triplet = @build@
 host_triplet = @host@
 subdir = src/nss
 DIST_COMMON = README $(srcdir)/Makefile.am $(srcdir)/Makefile.in
@@ -46,6 +47,12 @@ am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
 mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs
 CONFIG_HEADER = $(top_builddir)/config.h
 CONFIG_CLEAN_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 = `echo $$p | sed -e 's|^.*/||'`;
 am__installdirs = "$(DESTDIR)$(libdir)"
 libLTLIBRARIES_INSTALL = $(INSTALL)
 LTLIBRARIES = $(lib_LTLIBRARIES)
@@ -56,27 +63,19 @@ libxmlsec1_nss_la_DEPENDENCIES = ../libxmlsec1.la \
 am__objects_1 =
 am_libxmlsec1_nss_la_OBJECTS = app.lo bignum.lo ciphers.lo crypto.lo \
 	digests.lo hmac.lo pkikeys.lo signatures.lo symkeys.lo x509.lo \
-	x509vfy.lo keysstore.lo kt_rsa.lo kw_des.lo kw_aes.lo \
+	x509vfy.lo keysstore.lo keytrans.lo kw_des.lo kw_aes.lo \
 	$(am__objects_1)
 libxmlsec1_nss_la_OBJECTS = $(am_libxmlsec1_nss_la_OBJECTS)
 DEFAULT_INCLUDES = -I. -I$(srcdir) -I$(top_builddir)
 depcomp = $(SHELL) $(top_srcdir)/depcomp
 am__depfiles_maybe = depfiles
- at AMDEP_TRUE@DEP_FILES = ./$(DEPDIR)/app.Plo ./$(DEPDIR)/bignum.Plo \
- at AMDEP_TRUE@	./$(DEPDIR)/ciphers.Plo ./$(DEPDIR)/crypto.Plo \
- at AMDEP_TRUE@	./$(DEPDIR)/digests.Plo ./$(DEPDIR)/hmac.Plo \
- at AMDEP_TRUE@	./$(DEPDIR)/keysstore.Plo ./$(DEPDIR)/kt_rsa.Plo \
- at AMDEP_TRUE@	./$(DEPDIR)/kw_aes.Plo ./$(DEPDIR)/kw_des.Plo \
- at AMDEP_TRUE@	./$(DEPDIR)/pkikeys.Plo ./$(DEPDIR)/signatures.Plo \
- at AMDEP_TRUE@	./$(DEPDIR)/symkeys.Plo ./$(DEPDIR)/x509.Plo \
- at AMDEP_TRUE@	./$(DEPDIR)/x509vfy.Plo
 COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \
 	$(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
-LTCOMPILE = $(LIBTOOL) --mode=compile $(CC) $(DEFS) \
+LTCOMPILE = $(LIBTOOL) --mode=compile --tag=CC $(CC) $(DEFS) \
 	$(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \
 	$(AM_CFLAGS) $(CFLAGS)
 CCLD = $(CC)
-LINK = $(LIBTOOL) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \
+LINK = $(LIBTOOL) --mode=link --tag=CC $(CCLD) $(AM_CFLAGS) $(CFLAGS) \
 	$(AM_LDFLAGS) $(LDFLAGS) -o $@
 SOURCES = $(libxmlsec1_nss_la_SOURCES)
 DIST_SOURCES = $(libxmlsec1_nss_la_SOURCES)
@@ -131,8 +130,6 @@ LIBADD_DL = @LIBADD_DL@
 LIBOBJS = @LIBOBJS@
 LIBS = @LIBS@
 LIBTOOL = @LIBTOOL@
-LIBXML262_CFLAGS = @LIBXML262_CFLAGS@
-LIBXML262_LIBS = @LIBXML262_LIBS@
 LIBXML_CFLAGS = @LIBXML_CFLAGS@
 LIBXML_CONFIG = @LIBXML_CONFIG@
 LIBXML_LIBS = @LIBXML_LIBS@
@@ -156,8 +153,6 @@ NSS_CRYPTO_LIB = @NSS_CRYPTO_LIB@
 NSS_LIBS = @NSS_LIBS@
 NSS_MIN_VERSION = @NSS_MIN_VERSION@
 OBJEXT = @OBJEXT@
-OPENSSL097_CFLAGS = @OPENSSL097_CFLAGS@
-OPENSSL097_LIBS = @OPENSSL097_LIBS@
 OPENSSL_CFLAGS = @OPENSSL_CFLAGS@
 OPENSSL_CRYPTO_LIB = @OPENSSL_CRYPTO_LIB@
 OPENSSL_LIBS = @OPENSSL_LIBS@
@@ -220,6 +215,9 @@ XMLSEC_NO_HMAC = @XMLSEC_NO_HMAC@
 XMLSEC_NO_HMAC_FALSE = @XMLSEC_NO_HMAC_FALSE@
 XMLSEC_NO_HMAC_TRUE = @XMLSEC_NO_HMAC_TRUE@
 XMLSEC_NO_LIBXSLT = @XMLSEC_NO_LIBXSLT@
+XMLSEC_NO_MD5 = @XMLSEC_NO_MD5@
+XMLSEC_NO_MD5_FALSE = @XMLSEC_NO_MD5_FALSE@
+XMLSEC_NO_MD5_TRUE = @XMLSEC_NO_MD5_TRUE@
 XMLSEC_NO_NSS = @XMLSEC_NO_NSS@
 XMLSEC_NO_NSS_FALSE = @XMLSEC_NO_NSS_FALSE@
 XMLSEC_NO_NSS_TRUE = @XMLSEC_NO_NSS_TRUE@
@@ -235,6 +233,18 @@ XMLSEC_NO_RSA_TRUE = @XMLSEC_NO_RSA_TRUE@
 XMLSEC_NO_SHA1 = @XMLSEC_NO_SHA1@
 XMLSEC_NO_SHA1_FALSE = @XMLSEC_NO_SHA1_FALSE@
 XMLSEC_NO_SHA1_TRUE = @XMLSEC_NO_SHA1_TRUE@
+XMLSEC_NO_SHA224 = @XMLSEC_NO_SHA224@
+XMLSEC_NO_SHA224_FALSE = @XMLSEC_NO_SHA224_FALSE@
+XMLSEC_NO_SHA224_TRUE = @XMLSEC_NO_SHA224_TRUE@
+XMLSEC_NO_SHA256 = @XMLSEC_NO_SHA256@
+XMLSEC_NO_SHA256_FALSE = @XMLSEC_NO_SHA256_FALSE@
+XMLSEC_NO_SHA256_TRUE = @XMLSEC_NO_SHA256_TRUE@
+XMLSEC_NO_SHA384 = @XMLSEC_NO_SHA384@
+XMLSEC_NO_SHA384_FALSE = @XMLSEC_NO_SHA384_FALSE@
+XMLSEC_NO_SHA384_TRUE = @XMLSEC_NO_SHA384_TRUE@
+XMLSEC_NO_SHA512 = @XMLSEC_NO_SHA512@
+XMLSEC_NO_SHA512_FALSE = @XMLSEC_NO_SHA512_FALSE@
+XMLSEC_NO_SHA512_TRUE = @XMLSEC_NO_SHA512_TRUE@
 XMLSEC_NO_X509 = @XMLSEC_NO_X509@
 XMLSEC_NO_X509_FALSE = @XMLSEC_NO_X509_FALSE@
 XMLSEC_NO_X509_TRUE = @XMLSEC_NO_X509_TRUE@
@@ -272,6 +282,8 @@ am__fastdepCXX_TRUE = @am__fastdepCXX_TRUE@
 am__include = @am__include@
 am__leading_dot = @am__leading_dot@
 am__quote = @am__quote@
+am__tar = @am__tar@
+am__untar = @am__untar@
 bindir = @bindir@
 build = @build@
 build_alias = @build_alias@
@@ -333,7 +345,7 @@ libxmlsec1_nss_la_SOURCES = \
 	x509.c \
 	x509vfy.c \
 	keysstore.c \
-	kt_rsa.c \
+	keytrans.c \
 	kw_des.c \
 	kw_aes.c \
 	$(NULL)
@@ -387,7 +399,7 @@ install-libLTLIBRARIES: $(lib_LTLIBRARIES)
 	test -z "$(libdir)" || $(mkdir_p) "$(DESTDIR)$(libdir)"
 	@list='$(lib_LTLIBRARIES)'; for p in $$list; do \
 	  if test -f $$p; then \
-	    f="`echo $$p | sed -e 's|^.*/||'`"; \
+	    f=$(am__strip_dir) \
 	    echo " $(LIBTOOL) --mode=install $(libLTLIBRARIES_INSTALL) $(INSTALL_STRIP_FLAG) '$$p' '$(DESTDIR)$(libdir)/$$f'"; \
 	    $(LIBTOOL) --mode=install $(libLTLIBRARIES_INSTALL) $(INSTALL_STRIP_FLAG) "$$p" "$(DESTDIR)$(libdir)/$$f"; \
 	  else :; fi; \
@@ -395,8 +407,8 @@ install-libLTLIBRARIES: $(lib_LTLIBRARIES)
 
 uninstall-libLTLIBRARIES:
 	@$(NORMAL_UNINSTALL)
-	@list='$(lib_LTLIBRARIES)'; for p in $$list; do \
-	    p="`echo $$p | sed -e 's|^.*/||'`"; \
+	@set -x; list='$(lib_LTLIBRARIES)'; for p in $$list; do \
+	  p=$(am__strip_dir) \
 	  echo " $(LIBTOOL) --mode=uninstall rm -f '$(DESTDIR)$(libdir)/$$p'"; \
 	  $(LIBTOOL) --mode=uninstall rm -f "$(DESTDIR)$(libdir)/$$p"; \
 	done
@@ -405,7 +417,7 @@ 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=.; \
+	  test "$$dir" != "$$p" || dir=.; \
 	  echo "rm -f \"$${dir}/so_locations\""; \
 	  rm -f "$${dir}/so_locations"; \
 	done
@@ -425,7 +437,7 @@ distclean-compile:
 @AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/digests.Plo at am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/hmac.Plo at am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/keysstore.Plo at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/kt_rsa.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/keytrans.Plo at am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/kw_aes.Plo at am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/kw_des.Plo at am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/pkikeys.Plo at am__quote@
@@ -438,24 +450,21 @@ distclean-compile:
 @am__fastdepCC_TRUE@	if $(COMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" -c -o $@ $<; \
 @am__fastdepCC_TRUE@	then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Po"; else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; fi
 @AMDEP_TRUE@@am__fastdepCC_FALSE@	source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	depfile='$(DEPDIR)/$*.Po' tmpdepfile='$(DEPDIR)/$*.TPo' @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	$(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @am__fastdepCC_FALSE@	$(COMPILE) -c $<
 
 .c.obj:
 @am__fastdepCC_TRUE@	if $(COMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" -c -o $@ `$(CYGPATH_W) '$<'`; \
 @am__fastdepCC_TRUE@	then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Po"; else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; fi
 @AMDEP_TRUE@@am__fastdepCC_FALSE@	source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	depfile='$(DEPDIR)/$*.Po' tmpdepfile='$(DEPDIR)/$*.TPo' @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	$(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @am__fastdepCC_FALSE@	$(COMPILE) -c `$(CYGPATH_W) '$<'`
 
 .c.lo:
 @am__fastdepCC_TRUE@	if $(LTCOMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" -c -o $@ $<; \
 @am__fastdepCC_TRUE@	then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Plo"; else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; fi
 @AMDEP_TRUE@@am__fastdepCC_FALSE@	source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	depfile='$(DEPDIR)/$*.Plo' tmpdepfile='$(DEPDIR)/$*.TPlo' @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	$(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @am__fastdepCC_FALSE@	$(LTCOMPILE) -c -o $@ $<
 
 mostlyclean-libtool:
@@ -488,9 +497,11 @@ TAGS:  $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
 	  done | \
 	  $(AWK) '    { files[$$0] = 1; } \
 	       END { for (i in files) print i; }'`; \
-	test -z "$(ETAGS_ARGS)$$tags$$unique" \
-	  || $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
-	     $$tags $$unique
+	if test -z "$(ETAGS_ARGS)$$tags$$unique"; then :; else \
+	  test -n "$$unique" || unique=$$empty_fix; \
+	  $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+	    $$tags $$unique; \
+	fi
 ctags: CTAGS
 CTAGS:  $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
 		$(TAGS_FILES) $(LISP)
@@ -567,7 +578,7 @@ mostlyclean-generic:
 clean-generic:
 
 distclean-generic:
-	-rm -f $(CONFIG_CLEAN_FILES)
+	-test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
 
 maintainer-clean-generic:
 	@echo "This command is intended for maintainers to use"
diff --git a/src/nss/app.c b/src/nss/app.c
index 929729f..af2ced5 100644
--- a/src/nss/app.c
+++ b/src/nss/app.c
@@ -447,11 +447,11 @@ xmlSecNssAppDerKeyLoadSECItem(SECItem* secItem) {
     /* we're importing a key about which we know nothing yet, just use the 
      * internal slot 
      */
-    slot = PK11_GetInternalKeySlot();
+    slot = xmlSecNssGetInternalKeySlot();
     if (slot == NULL) {
 	xmlSecError(XMLSEC_ERRORS_HERE,
 		    NULL,
-		    "PK11_GetInternalKeySlot",
+		    "xmlSecNssGetInternalKeySlot",
 		    XMLSEC_ERRORS_R_CRYPTO_FAILED,
 		    XMLSEC_ERRORS_NO_MESSAGE);
 	goto done;
@@ -862,12 +862,12 @@ xmlSecNssAppPkcs12LoadSECItem(SECItem* secItem, const char *pwd,
     /* we're importing a key about which we know nothing yet, just use the 
      * internal slot. We have no criteria to choose a slot. 
      */
-    slot = PK11_GetInternalKeySlot();
+    slot = xmlSecNssGetInternalKeySlot();
     if (slot == NULL) {
 	xmlSecError(XMLSEC_ERRORS_HERE,
 		    NULL,
-		    "PK11_GetInternalKeySlot",
-		    XMLSEC_ERRORS_R_CRYPTO_FAILED,
+		    "xmlSecNssGetInternalKeySlot",
+		    XMLSEC_ERRORS_R_XMLSEC_FAILED,
 		    XMLSEC_ERRORS_NO_MESSAGE);
 	goto done;
     }
diff --git a/src/nss/crypto.c b/src/nss/crypto.c
index 2cde8a9..e7360b2 100644
--- a/src/nss/crypto.c
+++ b/src/nss/crypto.c
@@ -121,6 +121,12 @@ xmlSecCryptoGetFunctions_nss(void) {
 #ifndef XMLSEC_NO_RSA
     gXmlSecNssFunctions->transformRsaSha1GetKlass 	= xmlSecNssTransformRsaSha1GetKlass;
     gXmlSecNssFunctions->transformRsaPkcs1GetKlass 	= xmlSecNssTransformRsaPkcs1GetKlass;
+
+/* RSA OAEP is not supported by NSS yet */
+#ifdef TODO
+    gXmlSecNssFunctions->transformRsaOaepGetKlass 	= xmlSecNssTransformRsaOaepGetKlass;
+#endif /* TODO: RSA OAEP is not supported by NSS yet */
+
 #endif /* XMLSEC_NO_RSA */
 
 #ifndef XMLSEC_NO_SHA1    
@@ -146,7 +152,7 @@ xmlSecCryptoGetFunctions_nss(void) {
 #endif /* XMLSEC_NO_X509 */
     gXmlSecNssFunctions->cryptoAppKeyLoad 		= xmlSecNssAppKeyLoad; 
     gXmlSecNssFunctions->cryptoAppKeyLoadMemory		= xmlSecNssAppKeyLoadMemory; 
-    gXmlSecNssFunctions->cryptoAppDefaultPwdCallback	= (void*)xmlSecNssAppGetDefaultPwdCallback;
+    gXmlSecNssFunctions->cryptoAppDefaultPwdCallback	= (void*)xmlSecNssAppGetDefaultPwdCallback();
 
     return(gXmlSecNssFunctions);
 }
@@ -244,6 +250,54 @@ xmlSecNssKeysMngrInit(xmlSecKeysMngrPtr mngr) {
 }
 
 /**
+ * xmlSecNssGetInternalKeySlot:
+ * 
+ * Returns internal key slot and initializes it if needed.
+ */
+PK11SlotInfo * 
+xmlSecNssGetInternalKeySlot()
+{
+    PK11SlotInfo *slot = NULL;
+    SECStatus rv;
+        
+    slot = PK11_GetInternalKeySlot();
+    if (slot == NULL) {
+	    xmlSecError(XMLSEC_ERRORS_HERE,
+		        NULL,
+		        "PK11_GetInternalKeySlot",
+		        XMLSEC_ERRORS_R_CRYPTO_FAILED,
+                "error code=%d", PORT_GetError());
+    	return NULL;
+    }
+
+    if (PK11_NeedUserInit(slot)) {
+        rv = PK11_InitPin(slot, NULL, NULL);
+        if (rv != SECSuccess) {
+     	    xmlSecError(XMLSEC_ERRORS_HERE,
+		            NULL,
+		            "PK11_Authenticate",
+		            XMLSEC_ERRORS_R_CRYPTO_FAILED,
+		            XMLSEC_ERRORS_NO_MESSAGE);
+            return NULL;
+        }
+    }
+
+    if(PK11_IsLoggedIn(slot, NULL) != PR_TRUE) {
+        rv = PK11_Authenticate(slot, PR_TRUE, NULL);
+        if (rv != SECSuccess) {
+    	    xmlSecError(XMLSEC_ERRORS_HERE,
+		            NULL,
+		            "PK11_Authenticate",
+		            XMLSEC_ERRORS_R_CRYPTO_FAILED,
+		            XMLSEC_ERRORS_NO_MESSAGE);
+            return NULL;
+        }
+    }
+
+    return(slot);
+}
+
+/**
  * xmlSecNssGenerateRandom:
  * @buffer:		the destination buffer.
  * @size:		the numer of bytes to generate.
diff --git a/src/nss/digests.c b/src/nss/digests.c
index 3dd9f26..04ccec5 100644
--- a/src/nss/digests.c
+++ b/src/nss/digests.c
@@ -107,7 +107,7 @@ xmlSecNssDigestInitialize(xmlSecTransformPtr transform) {
 		    xmlSecErrorsSafeString(xmlSecTransformGetName(transform)),
 		    "SECOID_FindOIDByTag",
 		    XMLSEC_ERRORS_R_CRYPTO_FAILED,
-		    XMLSEC_ERRORS_NO_MESSAGE);
+		    "error code=%d", PORT_GetError());
 	return(-1);
     }
     
@@ -117,7 +117,7 @@ xmlSecNssDigestInitialize(xmlSecTransformPtr transform) {
 		    xmlSecErrorsSafeString(xmlSecTransformGetName(transform)),
 		    "PK11_CreateDigestContext",
 		    XMLSEC_ERRORS_R_CRYPTO_FAILED,
-		    XMLSEC_ERRORS_NO_MESSAGE);
+		    "error code=%d", PORT_GetError());
 	return(-1);
     }
 	
@@ -208,7 +208,7 @@ xmlSecNssDigestExecute(xmlSecTransformPtr transform, int last, xmlSecTransformCt
 			xmlSecErrorsSafeString(xmlSecTransformGetName(transform)),
 			"PK11_DigestBegin",
 			XMLSEC_ERRORS_R_CRYPTO_FAILED,
-			XMLSEC_ERRORS_NO_MESSAGE);
+			"error code=%d", PORT_GetError());
 	    return(-1);
 	}
 	transform->status = xmlSecTransformStatusWorking;
@@ -225,7 +225,7 @@ xmlSecNssDigestExecute(xmlSecTransformPtr transform, int last, xmlSecTransformCt
 			    xmlSecErrorsSafeString(xmlSecTransformGetName(transform)),
 			    "PK11_DigestOp",
 			    XMLSEC_ERRORS_R_CRYPTO_FAILED,
-			    XMLSEC_ERRORS_NO_MESSAGE);
+			    "error code=%d", PORT_GetError());
 		return(-1);
 	    }
 	    
@@ -246,7 +246,7 @@ xmlSecNssDigestExecute(xmlSecTransformPtr transform, int last, xmlSecTransformCt
 			    xmlSecErrorsSafeString(xmlSecTransformGetName(transform)),
 			    "PK11_DigestFinal",
 			    XMLSEC_ERRORS_R_CRYPTO_FAILED,
-			    XMLSEC_ERRORS_NO_MESSAGE);
+			    "error code=%d", PORT_GetError());
 		return(-1);
 	    }
 	    xmlSecAssert2(ctx->dgstSize > 0, -1);
diff --git a/src/nss/hmac.c b/src/nss/hmac.c
index b37d65a..f67ec9d 100644
--- a/src/nss/hmac.c
+++ b/src/nss/hmac.c
@@ -258,7 +258,7 @@ xmlSecNssHmacSetKey(xmlSecTransformPtr transform, xmlSecKeyPtr key) {
 		    xmlSecErrorsSafeString(xmlSecTransformGetName(transform)),
 		    "PK11_ImportSymKey",
 		    XMLSEC_ERRORS_R_CRYPTO_FAILED,
-		    XMLSEC_ERRORS_NO_MESSAGE);
+		    "error code=%d", PORT_GetError());
         PK11_FreeSlot(slot);
 	return(-1);
     }
@@ -269,7 +269,7 @@ xmlSecNssHmacSetKey(xmlSecTransformPtr transform, xmlSecKeyPtr key) {
 		    xmlSecErrorsSafeString(xmlSecTransformGetName(transform)),
 		    "PK11_CreateContextBySymKey",
 		    XMLSEC_ERRORS_R_CRYPTO_FAILED,
-		    XMLSEC_ERRORS_NO_MESSAGE);
+		    "error code=%d", PORT_GetError());
 	PK11_FreeSymKey(symKey);
         PK11_FreeSlot(slot);
 	return(-1);
@@ -368,7 +368,7 @@ xmlSecNssHmacExecute(xmlSecTransformPtr transform, int last, xmlSecTransformCtxP
 			xmlSecErrorsSafeString(xmlSecTransformGetName(transform)),
 			"PK11_DigestBegin",
 			XMLSEC_ERRORS_R_CRYPTO_FAILED,
-			XMLSEC_ERRORS_NO_MESSAGE);
+			"error code=%d", PORT_GetError());
 	    return(-1);
 	}
 	transform->status = xmlSecTransformStatusWorking;
@@ -385,7 +385,7 @@ xmlSecNssHmacExecute(xmlSecTransformPtr transform, int last, xmlSecTransformCtxP
 			    xmlSecErrorsSafeString(xmlSecTransformGetName(transform)),
 			    "PK11_DigestOp",
 			    XMLSEC_ERRORS_R_CRYPTO_FAILED,
-			    XMLSEC_ERRORS_NO_MESSAGE);
+			    "error code=%d", PORT_GetError());
 		return(-1);
 	    }
 	    
@@ -408,7 +408,7 @@ xmlSecNssHmacExecute(xmlSecTransformPtr transform, int last, xmlSecTransformCtxP
 			    xmlSecErrorsSafeString(xmlSecTransformGetName(transform)),
 			    "PK11_DigestFinal",
 			    XMLSEC_ERRORS_R_CRYPTO_FAILED,
-			    XMLSEC_ERRORS_NO_MESSAGE);
+			    "error code=%d", PORT_GetError());
 		return(-1);
 	    }
 	    xmlSecAssert2(dgstSize > 0, -1);
diff --git a/src/nss/keytrans.c b/src/nss/keytrans.c
new file mode 100755
index 0000000..a65363e
--- /dev/null
+++ b/src/nss/keytrans.c
@@ -0,0 +1,744 @@
+/** 
+ *
+ * XMLSec library
+ * 
+ * AES Algorithm support
+ * 
+ * This is free software; see Copyright file in the source
+ * distribution for preciese wording.
+ * 
+ * Copyright .................................
+ */
+#include "globals.h"
+
+#include <stdlib.h>
+#include <stdio.h>
+#include <string.h>
+
+#include <nss.h>
+#include <pk11func.h>
+#include <keyhi.h>
+#include <key.h>
+#include <hasht.h>
+
+#include <xmlsec/xmlsec.h>
+#include <xmlsec/xmltree.h>
+#include <xmlsec/keys.h>
+#include <xmlsec/transforms.h>
+#include <xmlsec/errors.h>
+
+#include <xmlsec/nss/crypto.h>
+#include <xmlsec/nss/pkikeys.h>
+
+/*********************************************************************
+ *
+ * key transform transforms
+ *
+ ********************************************************************/
+typedef struct _xmlSecNssKeyTransportCtx			xmlSecNssKeyTransportCtx;
+typedef struct _xmlSecNssKeyTransportCtx*		    xmlSecNssKeyTransportCtxPtr;
+
+#define xmlSecNssKeyTransportSize	\
+	( sizeof( xmlSecTransform ) + sizeof( xmlSecNssKeyTransportCtx ) )
+#define xmlSecNssKeyTransportGetCtx( transform ) \
+	( ( xmlSecNssKeyTransportCtxPtr )( ( ( xmlSecByte* )( transform ) ) + sizeof( xmlSecTransform ) ) )
+
+struct _xmlSecNssKeyTransportCtx {
+	CK_MECHANISM_TYPE		cipher ;
+	SECKEYPublicKey*		pubkey ;
+	SECKEYPrivateKey*		prikey ;
+	xmlSecKeyDataId			keyId ;
+	xmlSecBufferPtr			material ; /* to be encrypted/decrypted material */
+} ;
+
+static int 		xmlSecNssKeyTransportInitialize(xmlSecTransformPtr transform);
+static void 	xmlSecNssKeyTransportFinalize(xmlSecTransformPtr transform);
+static int  	xmlSecNssKeyTransportSetKeyReq(xmlSecTransformPtr transform, 
+							 xmlSecKeyReqPtr keyReq);
+static int  	xmlSecNssKeyTransportSetKey(xmlSecTransformPtr transform, 
+							 xmlSecKeyPtr key);
+static int  	xmlSecNssKeyTransportExecute(xmlSecTransformPtr transform, 
+							 int last,
+							 xmlSecTransformCtxPtr transformCtx);
+
+static int
+xmlSecNssKeyTransportCheckId(xmlSecTransformPtr transform) {
+#ifndef XMLSEC_NO_RSA
+	if( xmlSecTransformCheckId( transform, xmlSecNssTransformRsaPkcs1Id ) 
+/* RSA OAEP is not supported by NSS yet */
+#ifdef TODO
+        || xmlSecTransformCheckId( transform, xmlSecNssTransformRsaOaepId ) 
+#endif /* TODO: RSA OAEP is not supported by NSS yet */
+        
+        ) {
+
+		return(1);
+    }
+#endif /* XMLSEC_NO_RSA */
+    
+    return(0);
+}
+
+static int 
+xmlSecNssKeyTransportInitialize(xmlSecTransformPtr transform) {
+	xmlSecNssKeyTransportCtxPtr context ;
+    xmlSecAssert2(xmlSecNssKeyTransportCheckId(transform), -1);
+    xmlSecAssert2(xmlSecTransformCheckSize(transform, xmlSecNssKeyTransportSize), -1);
+    
+	context = xmlSecNssKeyTransportGetCtx( transform ) ;
+	xmlSecAssert2( context != NULL , -1 ) ;
+
+#ifndef XMLSEC_NO_RSA
+	if( transform->id == xmlSecNssTransformRsaPkcs1Id ) {
+		context->cipher = CKM_RSA_PKCS ;
+		context->keyId = xmlSecNssKeyDataRsaId ;
+/* RSA OAEP is not supported by NSS yet */
+#ifdef TODO
+	} else if( transform->id == xmlSecNssTransformRsaOaepId ) {
+		context->cipher = CKM_RSA_PKCS_OAEP ;
+		context->keyId = xmlSecNssKeyDataRsaId ;
+#endif /* TODO: RSA OAEP is not supported by NSS yet */
+	} else
+#endif		/* XMLSEC_NO_RSA */
+
+	if( 1 ) {
+		xmlSecError( XMLSEC_ERRORS_HERE ,
+		    xmlSecErrorsSafeString(xmlSecTransformGetName(transform)),
+		    NULL ,
+		    XMLSEC_ERRORS_R_CRYPTO_FAILED ,
+		    XMLSEC_ERRORS_NO_MESSAGE ) ;
+		return(-1);    
+	}
+
+	context->pubkey = NULL ;
+	context->prikey = NULL ;
+	context->material = NULL ;
+
+    return(0);
+}
+
+static void 
+xmlSecNssKeyTransportFinalize(xmlSecTransformPtr transform) {
+	xmlSecNssKeyTransportCtxPtr context ;
+    
+    xmlSecAssert(xmlSecNssKeyTransportCheckId(transform));
+    xmlSecAssert(xmlSecTransformCheckSize(transform, xmlSecNssKeyTransportSize));
+    
+	context = xmlSecNssKeyTransportGetCtx( transform ) ;
+	xmlSecAssert( context != NULL ) ;
+
+	if( context->pubkey != NULL ) {
+		SECKEY_DestroyPublicKey( context->pubkey ) ;
+		context->pubkey = NULL ;
+	}
+
+	if( context->prikey != NULL ) {
+		SECKEY_DestroyPrivateKey( context->prikey ) ;
+		context->prikey = NULL ;
+	}
+
+	if( context->material != NULL ) {
+		xmlSecBufferDestroy(context->material);
+		context->material = NULL ;
+	}
+}
+
+static int  
+xmlSecNssKeyTransportSetKeyReq(xmlSecTransformPtr transform,  xmlSecKeyReqPtr keyReq) {
+	xmlSecNssKeyTransportCtxPtr context ;
+    
+    xmlSecAssert2(xmlSecNssKeyTransportCheckId(transform), -1);
+    xmlSecAssert2(xmlSecTransformCheckSize(transform, xmlSecNssKeyTransportSize), -1);
+    xmlSecAssert2((transform->operation == xmlSecTransformOperationEncrypt) || (transform->operation == xmlSecTransformOperationDecrypt), -1);
+    xmlSecAssert2(keyReq != NULL, -1);
+    
+	context = xmlSecNssKeyTransportGetCtx( transform ) ;
+	xmlSecAssert2( context != NULL , -1 ) ;
+
+    keyReq->keyId 	 = context->keyId;
+    if(transform->operation == xmlSecTransformOperationEncrypt) {
+		keyReq->keyUsage = xmlSecKeyUsageEncrypt;
+    	keyReq->keyType  = xmlSecKeyDataTypePublic;
+    } else {
+		keyReq->keyUsage = xmlSecKeyUsageDecrypt;
+    	keyReq->keyType  = xmlSecKeyDataTypePrivate;
+    }
+
+    return(0);
+}
+
+static int  	
+xmlSecNssKeyTransportSetKey(xmlSecTransformPtr transform, xmlSecKeyPtr key) {
+	xmlSecNssKeyTransportCtxPtr context = NULL ;
+	xmlSecKeyDataPtr	keyData = NULL ;
+	SECKEYPublicKey*	pubkey = NULL ;
+	SECKEYPrivateKey*	prikey = NULL ;
+
+    xmlSecAssert2(xmlSecNssKeyTransportCheckId(transform), -1);
+    xmlSecAssert2(xmlSecTransformCheckSize(transform, xmlSecNssKeyTransportSize), -1);
+    xmlSecAssert2((transform->operation == xmlSecTransformOperationEncrypt) || (transform->operation == xmlSecTransformOperationDecrypt), -1);
+    xmlSecAssert2(key != NULL, -1);
+
+	context = xmlSecNssKeyTransportGetCtx( transform ) ;
+	if( (context == NULL) || (context->keyId == NULL) || (context->pubkey != NULL) ) {
+		xmlSecError( XMLSEC_ERRORS_HERE ,
+		    xmlSecErrorsSafeString( xmlSecTransformGetName( transform ) ) ,
+		    "xmlSecNssKeyTransportGetCtx" ,
+		    XMLSEC_ERRORS_R_CRYPTO_FAILED ,
+		    XMLSEC_ERRORS_NO_MESSAGE ) ;
+		return(-1);    
+	}
+	xmlSecAssert2( xmlSecKeyCheckId( key, context->keyId ), -1 ) ;
+
+	keyData = xmlSecKeyGetValue( key ) ;
+	if( keyData == NULL ) {
+		xmlSecError( XMLSEC_ERRORS_HERE ,
+		    xmlSecErrorsSafeString( xmlSecKeyGetName( key ) ) ,
+		    "xmlSecKeyGetValue" ,
+		    XMLSEC_ERRORS_R_CRYPTO_FAILED ,
+		    XMLSEC_ERRORS_NO_MESSAGE ) ;
+		return(-1);    
+	}
+
+    if(transform->operation == xmlSecTransformOperationEncrypt) {
+		if( ( pubkey = xmlSecNssPKIKeyDataGetPubKey( keyData ) ) == NULL ) {
+			xmlSecError( XMLSEC_ERRORS_HERE ,
+			    xmlSecErrorsSafeString( xmlSecKeyDataGetName( keyData ) ) ,
+			    "xmlSecNssPKIKeyDataGetPubKey" ,
+			    XMLSEC_ERRORS_R_CRYPTO_FAILED ,
+			    XMLSEC_ERRORS_NO_MESSAGE ) ;
+			return(-1);    
+		}
+
+		context->pubkey = pubkey ;
+	} else {
+		if( ( prikey = xmlSecNssPKIKeyDataGetPrivKey( keyData ) ) == NULL ) {
+			xmlSecError( XMLSEC_ERRORS_HERE ,
+			    xmlSecErrorsSafeString( xmlSecKeyDataGetName( keyData ) ) ,
+			    "xmlSecNssPKIKeyDataGetPrivKey" ,
+			    XMLSEC_ERRORS_R_CRYPTO_FAILED ,
+			    XMLSEC_ERRORS_NO_MESSAGE ) ;
+			return(-1);    
+		}
+
+		context->prikey = prikey ;
+	}
+
+	return(0) ;
+}
+
+/**
+ * key wrap transform
+ */
+static int 
+xmlSecNssKeyTransportCtxInit(
+	xmlSecNssKeyTransportCtxPtr		ctx ,
+	xmlSecBufferPtr 			in ,
+	xmlSecBufferPtr 			out ,
+	int 						encrypt ,
+	xmlSecTransformCtxPtr 		transformCtx
+) {
+	int			blockSize ;
+
+	xmlSecAssert2( ctx != NULL , -1 ) ;
+	xmlSecAssert2( ctx->cipher != CKM_INVALID_MECHANISM , -1 ) ;
+	xmlSecAssert2( ( ctx->pubkey != NULL && encrypt ) || ( ctx->prikey != NULL && !encrypt ), -1 ) ;
+	xmlSecAssert2( ctx->keyId != NULL , -1 ) ;
+	xmlSecAssert2( in != NULL , -1 ) ;
+	xmlSecAssert2( out != NULL , -1 ) ;
+	xmlSecAssert2( transformCtx != NULL , -1 ) ;
+
+	if( ctx->material != NULL ) {
+		xmlSecBufferDestroy( ctx->material ) ;
+		ctx->material = NULL ;
+	}
+
+	if( ctx->pubkey != NULL ) {
+		blockSize = SECKEY_PublicKeyStrength( ctx->pubkey ) ;
+	} else if( ctx->prikey != NULL ) {
+		blockSize = PK11_SignatureLen( ctx->prikey ) ;
+	} else {
+		blockSize = -1 ;
+	}
+
+	if( blockSize < 0 ) {
+		xmlSecError( XMLSEC_ERRORS_HERE ,
+			NULL ,
+			NULL ,
+			XMLSEC_ERRORS_R_CRYPTO_FAILED ,
+			XMLSEC_ERRORS_NO_MESSAGE ) ;
+		return(-1);    
+	}
+
+	ctx->material = xmlSecBufferCreate( blockSize ) ;
+	if( ctx->material == NULL ) {
+		xmlSecError( XMLSEC_ERRORS_HERE ,
+			NULL ,
+			"xmlSecBufferCreate" ,
+			XMLSEC_ERRORS_R_CRYPTO_FAILED ,
+			XMLSEC_ERRORS_NO_MESSAGE ) ;
+		return(-1);    
+	}
+
+	/* read raw key material into context */
+	if( xmlSecBufferSetData( ctx->material, xmlSecBufferGetData(in), xmlSecBufferGetSize(in) ) < 0 ) {
+		xmlSecError( XMLSEC_ERRORS_HERE ,
+			NULL ,
+			"xmlSecBufferSetData" ,
+			XMLSEC_ERRORS_R_CRYPTO_FAILED ,
+			XMLSEC_ERRORS_NO_MESSAGE ) ;
+		return(-1);    
+	}
+
+	if( xmlSecBufferRemoveHead( in , xmlSecBufferGetSize(in) ) < 0 ) {
+		xmlSecError( XMLSEC_ERRORS_HERE ,
+			NULL ,
+			"xmlSecBufferRemoveHead" ,
+			XMLSEC_ERRORS_R_CRYPTO_FAILED ,
+			XMLSEC_ERRORS_NO_MESSAGE ) ;
+		return(-1);    
+	}
+
+	return(0);
+}
+
+/**
+ * key wrap transform update
+ */
+static int 
+xmlSecNssKeyTransportCtxUpdate(
+	xmlSecNssKeyTransportCtxPtr		ctx ,
+	xmlSecBufferPtr 			in ,
+	xmlSecBufferPtr 			out ,
+	int 						encrypt ,
+	xmlSecTransformCtxPtr 		transformCtx
+) {
+	xmlSecAssert2( ctx != NULL , -1 ) ;
+	xmlSecAssert2( ctx->cipher != CKM_INVALID_MECHANISM , -1 ) ;
+	xmlSecAssert2( ( ctx->pubkey != NULL && encrypt ) || ( ctx->prikey != NULL && !encrypt ), -1 ) ;
+	xmlSecAssert2( ctx->keyId != NULL , -1 ) ;
+	xmlSecAssert2( ctx->material != NULL , -1 ) ;
+	xmlSecAssert2( in != NULL , -1 ) ;
+	xmlSecAssert2( out != NULL , -1 ) ;
+	xmlSecAssert2( transformCtx != NULL , -1 ) ;
+
+	/* read raw key material and append into context */
+	if( xmlSecBufferAppend( ctx->material, xmlSecBufferGetData(in), xmlSecBufferGetSize(in) ) < 0 ) {
+		xmlSecError( XMLSEC_ERRORS_HERE ,
+			NULL ,
+			"xmlSecBufferAppend" ,
+			XMLSEC_ERRORS_R_CRYPTO_FAILED ,
+			XMLSEC_ERRORS_NO_MESSAGE ) ;
+		return(-1);    
+	}
+
+	if( xmlSecBufferRemoveHead( in , xmlSecBufferGetSize(in) ) < 0 ) {
+		xmlSecError( XMLSEC_ERRORS_HERE ,
+			NULL ,
+			"xmlSecBufferRemoveHead" ,
+			XMLSEC_ERRORS_R_CRYPTO_FAILED ,
+			XMLSEC_ERRORS_NO_MESSAGE ) ;
+		return(-1);    
+	}
+
+	return(0);
+}
+
+/**
+ * Block cipher transform final
+ */
+static int 
+xmlSecNssKeyTransportCtxFinal(xmlSecNssKeyTransportCtxPtr ctx,  xmlSecBufferPtr in,  xmlSecBufferPtr out, 
+                              int encrypt, xmlSecTransformCtxPtr transformCtx) {
+	PK11SymKey*			symKey ;
+	PK11SlotInfo*		slot ;
+	SECItem				oriskv ;
+	int			blockSize ;
+	xmlSecBufferPtr		result ;
+
+	xmlSecAssert2( ctx != NULL , -1 ) ;
+	xmlSecAssert2( ctx->cipher != CKM_INVALID_MECHANISM , -1 ) ;
+	xmlSecAssert2( ( ctx->pubkey != NULL && encrypt ) || ( ctx->prikey != NULL && !encrypt ), -1 ) ;
+	xmlSecAssert2( ctx->keyId != NULL , -1 ) ;
+	xmlSecAssert2( ctx->material != NULL , -1 ) ;
+	xmlSecAssert2( in != NULL , -1 ) ;
+	xmlSecAssert2( out != NULL , -1 ) ;
+	xmlSecAssert2( transformCtx != NULL , -1 ) ;
+
+	/* read raw key material and append into context */
+	if( xmlSecBufferAppend( ctx->material, xmlSecBufferGetData(in), xmlSecBufferGetSize(in) ) < 0 ) {
+		xmlSecError( XMLSEC_ERRORS_HERE ,
+			NULL ,
+			"xmlSecBufferAppend" ,
+			XMLSEC_ERRORS_R_CRYPTO_FAILED ,
+			XMLSEC_ERRORS_NO_MESSAGE ) ;
+		return(-1);    
+	}
+
+	if( xmlSecBufferRemoveHead( in , xmlSecBufferGetSize(in) ) < 0 ) {
+		xmlSecError( XMLSEC_ERRORS_HERE ,
+			NULL ,
+			"xmlSecBufferRemoveHead" ,
+			XMLSEC_ERRORS_R_CRYPTO_FAILED ,
+			XMLSEC_ERRORS_NO_MESSAGE ) ;
+		return(-1);    
+	}
+
+	/* Now we get all of the key materail */
+	/* from now on we will wrap or unwrap the key */
+	if( ctx->pubkey != NULL ) {
+		blockSize = SECKEY_PublicKeyStrength( ctx->pubkey ) ;
+	} else if( ctx->prikey != NULL ) {
+		blockSize = PK11_SignatureLen( ctx->prikey ) ;
+	} else {
+		blockSize = -1 ;
+	}
+
+	if( blockSize < 0 ) {
+		xmlSecError( XMLSEC_ERRORS_HERE ,
+			NULL ,
+			"PK11_GetBlockSize" ,
+			XMLSEC_ERRORS_R_CRYPTO_FAILED ,
+			XMLSEC_ERRORS_NO_MESSAGE ) ;
+		return(-1);    
+	}
+
+	result = xmlSecBufferCreate( blockSize * 2 ) ;
+	if( result == NULL ) {
+		xmlSecError( XMLSEC_ERRORS_HERE ,
+			NULL,
+			"xmlSecBufferCreate" ,
+			XMLSEC_ERRORS_R_XMLSEC_FAILED ,
+			XMLSEC_ERRORS_NO_MESSAGE) ;
+		return(-1);    
+	}
+
+	oriskv.type = siBuffer ;
+	oriskv.data = xmlSecBufferGetData( ctx->material ) ;
+	oriskv.len = xmlSecBufferGetSize( ctx->material ) ;
+
+	if( encrypt != 0 ) {
+		CK_OBJECT_HANDLE 	id ;
+		SECItem				wrpskv ;
+
+		/* Create template symmetric key from material */
+        slot = ctx->pubkey->pkcs11Slot;
+		if( slot == NULL ) {
+			slot = PK11_GetBestSlot( ctx->cipher, NULL ) ;
+			if( slot == NULL ) {
+				xmlSecError( XMLSEC_ERRORS_HERE ,
+					NULL ,
+					"xmlSecNssSlotGet" ,
+					XMLSEC_ERRORS_R_CRYPTO_FAILED ,
+					XMLSEC_ERRORS_NO_MESSAGE ) ;
+				xmlSecBufferDestroy(result);
+				return(-1);    
+			}
+
+			id = PK11_ImportPublicKey( slot, ctx->pubkey, PR_FALSE ) ;
+			if( id == CK_INVALID_HANDLE ) {
+				xmlSecError( XMLSEC_ERRORS_HERE ,
+					NULL ,
+					"PK11_ImportPublicKey" ,
+					XMLSEC_ERRORS_R_CRYPTO_FAILED ,
+					XMLSEC_ERRORS_NO_MESSAGE ) ;
+				xmlSecBufferDestroy(result);
+				PK11_FreeSlot( slot ) ;
+				return(-1);    
+			}
+		}
+
+		/* pay attention to mechanism */
+		symKey = PK11_ImportSymKey( slot, ctx->cipher, PK11_OriginUnwrap, CKA_WRAP, &oriskv, NULL ) ;
+		if( symKey == NULL ) {
+			xmlSecError( XMLSEC_ERRORS_HERE ,
+				NULL ,
+				"PK11_ImportSymKey" ,
+				XMLSEC_ERRORS_R_CRYPTO_FAILED ,
+				XMLSEC_ERRORS_NO_MESSAGE ) ;
+			xmlSecBufferDestroy(result);
+			PK11_FreeSlot( slot ) ;
+			return(-1);    
+		}
+
+		wrpskv.type = siBuffer ;
+		wrpskv.data = xmlSecBufferGetData( result ) ;
+		wrpskv.len = xmlSecBufferGetMaxSize( result ) ;
+
+		if( PK11_PubWrapSymKey( ctx->cipher, ctx->pubkey, symKey, &wrpskv ) != SECSuccess ) {
+			xmlSecError( XMLSEC_ERRORS_HERE ,
+				NULL ,
+				"PK11_PubWrapSymKey" ,
+				XMLSEC_ERRORS_R_CRYPTO_FAILED ,
+				XMLSEC_ERRORS_NO_MESSAGE ) ;
+			PK11_FreeSymKey( symKey ) ;
+			xmlSecBufferDestroy(result);
+			PK11_FreeSlot( slot ) ;
+			return(-1);    
+		}
+
+		if( xmlSecBufferSetSize( result , wrpskv.len ) < 0 ) {
+			xmlSecError( XMLSEC_ERRORS_HERE ,
+				NULL ,
+				"xmlSecBufferSetSize" ,
+				XMLSEC_ERRORS_R_CRYPTO_FAILED ,
+				XMLSEC_ERRORS_NO_MESSAGE ) ;
+			PK11_FreeSymKey( symKey ) ;
+			xmlSecBufferDestroy(result);
+			PK11_FreeSlot( slot ) ;
+			return(-1);    
+		}
+		PK11_FreeSymKey( symKey ) ;
+		PK11_FreeSlot( slot ) ;
+	} else {
+		SECItem*			keyItem ;
+
+		/* pay attention to mechanism */
+        symKey = PK11_PubUnwrapSymKey( ctx->prikey, &oriskv, ctx->cipher, CKA_UNWRAP, 0 );
+		if( symKey == NULL ) {
+			xmlSecError( XMLSEC_ERRORS_HERE ,
+				NULL ,
+				"PK11_PubUnwrapSymKey" ,
+				XMLSEC_ERRORS_R_CRYPTO_FAILED ,
+				XMLSEC_ERRORS_NO_MESSAGE ) ;
+			xmlSecBufferDestroy(result);
+			return(-1);    
+		}
+
+		/* Extract raw data from symmetric key */
+		if( PK11_ExtractKeyValue( symKey ) != SECSuccess ) {
+			xmlSecError( XMLSEC_ERRORS_HERE ,
+				NULL ,
+				"PK11_ExtractKeyValue" ,
+				XMLSEC_ERRORS_R_CRYPTO_FAILED ,
+				XMLSEC_ERRORS_NO_MESSAGE ) ;
+			PK11_FreeSymKey( symKey ) ;
+			xmlSecBufferDestroy(result);
+			return(-1);    
+		}
+
+        keyItem = PK11_GetKeyData( symKey );
+		if( keyItem == NULL ) {
+			xmlSecError( XMLSEC_ERRORS_HERE ,
+				NULL ,
+				"PK11_GetKeyData" ,
+				XMLSEC_ERRORS_R_CRYPTO_FAILED ,
+				XMLSEC_ERRORS_NO_MESSAGE ) ;
+			PK11_FreeSymKey( symKey ) ;
+			xmlSecBufferDestroy(result);
+			return(-1);    
+		}
+
+		if( xmlSecBufferSetData( result, keyItem->data, keyItem->len ) < 0 ) {
+			xmlSecError( XMLSEC_ERRORS_HERE ,
+				NULL ,
+				"PK11_PubUnwrapSymKey" ,
+				XMLSEC_ERRORS_R_CRYPTO_FAILED ,
+				XMLSEC_ERRORS_NO_MESSAGE ) ;
+			PK11_FreeSymKey( symKey ) ;
+			xmlSecBufferDestroy(result);
+			return(-1);    
+		}
+		PK11_FreeSymKey( symKey ) ;
+	}
+
+	/* Write output */
+	if( xmlSecBufferAppend( out, xmlSecBufferGetData(result), xmlSecBufferGetSize(result) ) < 0 ) {
+		xmlSecError( XMLSEC_ERRORS_HERE ,
+			NULL ,
+			"xmlSecBufferAppend" ,
+			XMLSEC_ERRORS_R_CRYPTO_FAILED ,
+			XMLSEC_ERRORS_NO_MESSAGE ) ;
+		xmlSecBufferDestroy(result);
+		return(-1);    
+	}
+	xmlSecBufferDestroy(result);
+
+	return(0);
+}
+
+static int 
+xmlSecNssKeyTransportExecute(xmlSecTransformPtr transform, int last, xmlSecTransformCtxPtr transformCtx) {
+	xmlSecNssKeyTransportCtxPtr 	context = NULL ;
+	xmlSecBufferPtr			inBuf, outBuf ; 
+	int						operation ;
+	int						rtv ;
+
+	xmlSecAssert2( xmlSecNssKeyTransportCheckId( transform ), -1 ) ;
+	xmlSecAssert2( xmlSecTransformCheckSize( transform, xmlSecNssKeyTransportSize ), -1 ) ;
+    xmlSecAssert2( ( transform->operation == xmlSecTransformOperationEncrypt ) || ( transform->operation == xmlSecTransformOperationDecrypt ), -1 ) ;
+	xmlSecAssert2( transformCtx != NULL , -1 ) ;
+
+	context = xmlSecNssKeyTransportGetCtx( transform ) ;
+	if( context == NULL ) {
+		xmlSecError( XMLSEC_ERRORS_HERE ,
+		    xmlSecErrorsSafeString( xmlSecTransformGetName( transform ) ) ,
+		    "xmlSecNssKeyTransportGetCtx" ,
+		    XMLSEC_ERRORS_R_CRYPTO_FAILED ,
+		    XMLSEC_ERRORS_NO_MESSAGE ) ;
+		return(-1);    
+	}
+
+	inBuf = &( transform->inBuf ) ;
+	outBuf = &( transform->outBuf ) ;
+
+	if( transform->status == xmlSecTransformStatusNone ) {
+		transform->status = xmlSecTransformStatusWorking ;
+	}
+
+	operation = ( transform->operation == xmlSecTransformOperationEncrypt ) ? 1 : 0 ;
+	if( transform->status == xmlSecTransformStatusWorking ) {
+		if( context->material == NULL ) {
+			rtv = xmlSecNssKeyTransportCtxInit( context, inBuf , outBuf , operation , transformCtx ) ;
+			if( rtv < 0 ) {
+				xmlSecError( XMLSEC_ERRORS_HERE , 
+					xmlSecErrorsSafeString( xmlSecTransformGetName( transform ) ) ,
+					"xmlSecNssKeyTransportCtxInit" ,
+					XMLSEC_ERRORS_R_INVALID_STATUS ,
+					XMLSEC_ERRORS_NO_MESSAGE ) ;
+				return(-1);
+			}
+		}
+
+		if( (context->material == NULL) && (last != 0) ) {
+			xmlSecError( XMLSEC_ERRORS_HERE , 
+				xmlSecErrorsSafeString( xmlSecTransformGetName( transform ) ) ,
+				NULL ,
+				XMLSEC_ERRORS_R_INVALID_STATUS ,
+				"No enough data to intialize transform" ) ;
+			return(-1);
+		}
+
+		if( context->material != NULL ) {
+			rtv = xmlSecNssKeyTransportCtxUpdate( context, inBuf , outBuf , operation , transformCtx ) ;
+			if( rtv < 0 ) {
+				xmlSecError( XMLSEC_ERRORS_HERE , 
+					xmlSecErrorsSafeString( xmlSecTransformGetName( transform ) ) ,
+					"xmlSecNssKeyTransportCtxUpdate" ,
+					XMLSEC_ERRORS_R_INVALID_STATUS ,
+					XMLSEC_ERRORS_NO_MESSAGE ) ;
+				return(-1);
+			}
+		}
+		
+		if( last ) {
+			rtv = xmlSecNssKeyTransportCtxFinal( context, inBuf , outBuf , operation , transformCtx ) ;
+			if( rtv < 0 ) {
+				xmlSecError( XMLSEC_ERRORS_HERE , 
+					xmlSecErrorsSafeString( xmlSecTransformGetName( transform ) ) ,
+					"xmlSecNssKeyTransportCtxFinal" ,
+					XMLSEC_ERRORS_R_INVALID_STATUS ,
+					XMLSEC_ERRORS_NO_MESSAGE ) ;
+				return(-1);
+			}
+			transform->status = xmlSecTransformStatusFinished ;
+		}
+	} else if( transform->status == xmlSecTransformStatusFinished ) {
+		if( xmlSecBufferGetSize( inBuf ) != 0 ) {
+			xmlSecError( XMLSEC_ERRORS_HERE , 
+				xmlSecErrorsSafeString( xmlSecTransformGetName( transform ) ) ,
+				NULL ,
+				XMLSEC_ERRORS_R_INVALID_STATUS ,
+				"status=%d", transform->status ) ;
+			return(-1);
+		}
+	} else {
+		xmlSecError( XMLSEC_ERRORS_HERE , 
+			xmlSecErrorsSafeString( xmlSecTransformGetName( transform ) ) ,
+			NULL ,
+			XMLSEC_ERRORS_R_INVALID_STATUS ,
+			"status=%d", transform->status ) ;
+		return(-1);
+	}
+
+	return(0);
+}
+
+
+#ifndef XMLSEC_NO_RSA
+
+static xmlSecTransformKlass xmlSecNssRsaPkcs1Klass = {
+    /* klass/object sizes */
+    sizeof(xmlSecTransformKlass),		/* xmlSecSize klassSize */
+    xmlSecNssKeyTransportSize,				/* xmlSecSize objSize */
+
+    xmlSecNameRsaPkcs1,				/* const xmlChar* name; */
+    xmlSecHrefRsaPkcs1,				/* const xmlChar* href; */
+    xmlSecTransformUsageEncryptionMethod,	/* xmlSecAlgorithmUsage usage; */
+
+    xmlSecNssKeyTransportInitialize, 			/* xmlSecTransformInitializeMethod initialize; */
+    xmlSecNssKeyTransportFinalize,			/* xmlSecTransformFinalizeMethod finalize; */
+    NULL,					/* xmlSecTransformNodeReadMethod readNode; */
+    NULL,					/* xmlSecTransformNodeWriteMethod writeNode; */
+    xmlSecNssKeyTransportSetKeyReq,			/* xmlSecTransformSetKeyMethod setKeyReq; */
+    xmlSecNssKeyTransportSetKey,			/* xmlSecTransformSetKeyMethod setKey; */
+    NULL,					/* xmlSecTransformValidateMethod validate; */
+    xmlSecTransformDefaultGetDataType,		/* xmlSecTransformGetDataTypeMethod getDataType; */
+    xmlSecTransformDefaultPushBin,		/* xmlSecTransformPushBinMethod pushBin; */
+    xmlSecTransformDefaultPopBin,		/* xmlSecTransformPopBinMethod popBin; */
+    NULL,					/* xmlSecTransformPushXmlMethod pushXml; */
+    NULL,					/* xmlSecTransformPopXmlMethod popXml; */
+    xmlSecNssKeyTransportExecute,			/* xmlSecTransformExecuteMethod execute; */
+    
+    NULL,					/* void* reserved0; */
+    NULL,					/* void* reserved1; */
+};
+
+/** 
+ * xmlSecNssTransformRsaPkcs1GetKlass:
+ *
+ * The RSA-PKCS1 key transport transform klass.
+ *
+ * Returns RSA-PKCS1 key transport transform klass.
+ */
+xmlSecTransformId 
+xmlSecNssTransformRsaPkcs1GetKlass(void) {
+    return(&xmlSecNssRsaPkcs1Klass);
+}
+
+
+/* RSA OAEP is not supported by NSS yet */
+#ifdef TODO
+
+static xmlSecTransformKlass xmlSecNssRsaOaepKlass = {
+    /* klass/object sizes */
+    sizeof(xmlSecTransformKlass),		/* xmlSecSize klassSize */
+    xmlSecNssKeyTransportSize,				/* xmlSecSize objSize */
+
+    xmlSecNameRsaOaep,				/* const xmlChar* name; */
+    xmlSecHrefRsaOaep,				/* const xmlChar* href; */
+    xmlSecTransformUsageEncryptionMethod,	/* xmlSecAlgorithmUsage usage; */
+
+    xmlSecNssKeyTransportInitialize, 			/* xmlSecTransformInitializeMethod initialize; */
+    xmlSecNssKeyTransportFinalize,			/* xmlSecTransformFinalizeMethod finalize; */
+    NULL,					/* xmlSecTransformNodeReadMethod readNode; */
+    NULL,					/* xmlSecTransformNodeWriteMethod writeNode; */
+    xmlSecNssKeyTransportSetKeyReq,			/* xmlSecTransformSetKeyMethod setKeyReq; */
+    xmlSecNssKeyTransportSetKey,			/* xmlSecTransformSetKeyMethod setKey; */
+    NULL,					/* xmlSecTransformValidateMethod validate; */
+    xmlSecTransformDefaultGetDataType,		/* xmlSecTransformGetDataTypeMethod getDataType; */
+    xmlSecTransformDefaultPushBin,		/* xmlSecTransformPushBinMethod pushBin; */
+    xmlSecTransformDefaultPopBin,		/* xmlSecTransformPopBinMethod popBin; */
+    NULL,					/* xmlSecTransformPushXmlMethod pushXml; */
+    NULL,					/* xmlSecTransformPopXmlMethod popXml; */
+    xmlSecNssKeyTransportExecute,			/* xmlSecTransformExecuteMethod execute; */
+    
+    NULL,					/* void* reserved0; */
+    NULL,					/* void* reserved1; */
+};
+
+/** 
+ * xmlSecNssTransformRsaOaepGetKlass:
+ *
+ * The RSA-PKCS1 key transport transform klass.
+ *
+ * Returns RSA-PKCS1 key transport transform klass.
+ */
+xmlSecTransformId 
+xmlSecNssTransformRsaOaepGetKlass(void) {
+    return(&xmlSecNssRsaOaepKlass);
+}
+#endif /* TODO: RSA OAEP is not supported by NSS yet */
+
+#endif /* XMLSEC_NO_RSA */
+
diff --git a/src/nss/kt_rsa.c b/src/nss/kt_rsa.c
deleted file mode 100644
index 0109754..0000000
--- a/src/nss/kt_rsa.c
+++ /dev/null
@@ -1,363 +0,0 @@
-/** 
- *
- * XMLSec library
- * 
- * RSA Algorithms support
- * 
- * This is free software; see Copyright file in the source
- * distribution for preciese wording.
- * 
- * Copyright (c) 2003 America Online, Inc.  All rights reserved.
- */
-#include "globals.h"
-
-#ifndef XMLSEC_NO_RSA
-
-#include <stdlib.h>
-#include <string.h>
-
-#include <libxml/tree.h>
-
-#include <pk11func.h>
-#include <keyhi.h>
-#include <pk11pqg.h>
-
-#include <xmlsec/xmlsec.h>
-#include <xmlsec/buffer.h>
-#include <xmlsec/xmltree.h>
-#include <xmlsec/keys.h>
-#include <xmlsec/transforms.h>
-#include <xmlsec/strings.h>
-#include <xmlsec/errors.h>
-#include <xmlsec/keyinfo.h>
-
-#include <xmlsec/nss/crypto.h>
-#include <xmlsec/nss/bignum.h>
-#include <xmlsec/nss/pkikeys.h>
-
-/**************************************************************************
- *
- * Internal NSS RSA PKCS1 CTX
- *
- *************************************************************************/
-typedef struct _xmlSecNssRsaPkcs1Ctx	xmlSecNssRsaPkcs1Ctx, 
-					*xmlSecNssRsaPkcs1CtxPtr;
-struct _xmlSecNssRsaPkcs1Ctx {
-    xmlSecKeyDataPtr data;
-};	    
-
-/*********************************************************************
- *
- * RSA PKCS1 key transport transform
- *
- * xmlSecNssRsaPkcs1Ctx is located after xmlSecTransform
- *
- ********************************************************************/
-#define xmlSecNssRsaPkcs1Size	\
-    (sizeof(xmlSecTransform) + sizeof(xmlSecNssRsaPkcs1Ctx))	
-#define xmlSecNssRsaPkcs1GetCtx(transform) \
-    ((xmlSecNssRsaPkcs1CtxPtr)(((xmlSecByte*)(transform)) + sizeof(xmlSecTransform)))
-
-static int 	xmlSecNssRsaPkcs1Initialize			(xmlSecTransformPtr transform);
-static void 	xmlSecNssRsaPkcs1Finalize			(xmlSecTransformPtr transform);
-static int  	xmlSecNssRsaPkcs1SetKeyReq			(xmlSecTransformPtr transform, 
-								 xmlSecKeyReqPtr keyReq);
-static int  	xmlSecNssRsaPkcs1SetKey				(xmlSecTransformPtr transform, 
-								 xmlSecKeyPtr key);
-static int  	xmlSecNssRsaPkcs1Execute			(xmlSecTransformPtr transform, 
-								 int last,
-								 xmlSecTransformCtxPtr transformCtx);
-static int  	xmlSecNssRsaPkcs1Process			(xmlSecTransformPtr transform, 
-								 xmlSecTransformCtxPtr transformCtx);
-
-static xmlSecTransformKlass xmlSecNssRsaPkcs1Klass = {
-    /* klass/object sizes */
-    sizeof(xmlSecTransformKlass),		/* xmlSecSize klassSize */
-    xmlSecNssRsaPkcs1Size,			/* xmlSecSize objSize */
-
-    xmlSecNameRsaPkcs1,				/* const xmlChar* name; */
-    xmlSecHrefRsaPkcs1, 			/* const xmlChar* href; */
-    xmlSecTransformUsageEncryptionMethod,	/* xmlSecAlgorithmUsage usage; */
-
-    xmlSecNssRsaPkcs1Initialize, 		/* xmlSecTransformInitializeMethod initialize; */
-    xmlSecNssRsaPkcs1Finalize,			/* xmlSecTransformFinalizeMethod finalize; */
-    NULL,					/* xmlSecTransformNodeReadMethod readNode; */
-    NULL,					/* xmlSecTransformNodeWriteMethod writeNode; */
-    xmlSecNssRsaPkcs1SetKeyReq,			/* xmlSecTransformSetKeyMethod setKeyReq; */
-    xmlSecNssRsaPkcs1SetKey,			/* xmlSecTransformSetKeyMethod setKey; */
-    NULL,					/* xmlSecTransformValidateMethod validate; */
-    xmlSecTransformDefaultGetDataType,		/* xmlSecTransformGetDataTypeMethod getDataType; */
-    xmlSecTransformDefaultPushBin,		/* xmlSecTransformPushBinMethod pushBin; */
-    xmlSecTransformDefaultPopBin,		/* xmlSecTransformPopBinMethod popBin; */
-    NULL,					/* xmlSecTransformPushXmlMethod pushXml; */
-    NULL,					/* xmlSecTransformPopXmlMethod popXml; */
-    xmlSecNssRsaPkcs1Execute,			/* xmlSecTransformExecuteMethod execute; */
-    
-    NULL,					/* void* reserved0; */
-    NULL,					/* void* reserved1; */
-};
-
-/** 
- * xmlSecNssTransformRsaPkcs1GetKlass:
- *
- * The RSA-PKCS1 key transport transform klass.
- *
- * Returns RSA-PKCS1 key transport transform klass.
- */
-xmlSecTransformId 
-xmlSecNssTransformRsaPkcs1GetKlass(void) {
-    return(&xmlSecNssRsaPkcs1Klass);
-}
-
-static int 
-xmlSecNssRsaPkcs1Initialize(xmlSecTransformPtr transform) {
-    xmlSecNssRsaPkcs1CtxPtr ctx;
-    
-    xmlSecAssert2(xmlSecTransformCheckId(transform, xmlSecNssTransformRsaPkcs1Id), -1);
-    xmlSecAssert2(xmlSecTransformCheckSize(transform, xmlSecNssRsaPkcs1Size), -1);
-
-    ctx = xmlSecNssRsaPkcs1GetCtx(transform);
-    xmlSecAssert2(ctx != NULL, -1);
-    
-    memset(ctx, 0, sizeof(xmlSecNssRsaPkcs1Ctx));
-    return(0);
-}
-
-static void 
-xmlSecNssRsaPkcs1Finalize(xmlSecTransformPtr transform) {
-    xmlSecNssRsaPkcs1CtxPtr ctx;
-
-    xmlSecAssert(xmlSecTransformCheckId(transform, xmlSecNssTransformRsaPkcs1Id));
-    xmlSecAssert(xmlSecTransformCheckSize(transform, xmlSecNssRsaPkcs1Size));
-
-    ctx = xmlSecNssRsaPkcs1GetCtx(transform);
-    xmlSecAssert(ctx != NULL);
-    
-    if (ctx->data != NULL)  {
-	xmlSecKeyDataDestroy(ctx->data);
-	ctx->data = NULL;
-    }
-
-    memset(ctx, 0, sizeof(xmlSecNssRsaPkcs1Ctx));
-}
-
-static int  
-xmlSecNssRsaPkcs1SetKeyReq(xmlSecTransformPtr transform,  xmlSecKeyReqPtr keyReq) {
-    xmlSecNssRsaPkcs1CtxPtr ctx;
-
-    xmlSecAssert2(xmlSecTransformCheckId(transform, xmlSecNssTransformRsaPkcs1Id), -1);
-    xmlSecAssert2((transform->operation == xmlSecTransformOperationEncrypt) || (transform->operation == xmlSecTransformOperationDecrypt), -1);
-    xmlSecAssert2(xmlSecTransformCheckSize(transform, xmlSecNssRsaPkcs1Size), -1);
-    xmlSecAssert2(keyReq != NULL, -1);
-
-    ctx = xmlSecNssRsaPkcs1GetCtx(transform);
-    xmlSecAssert2(ctx != NULL, -1);
-
-    keyReq->keyId 	 = xmlSecNssKeyDataRsaId;
-    if(transform->operation == xmlSecTransformOperationEncrypt) {
-        keyReq->keyType  = xmlSecKeyDataTypePublic;
-	keyReq->keyUsage = xmlSecKeyUsageEncrypt;
-    } else {
-        keyReq->keyType  = xmlSecKeyDataTypePrivate;
-	keyReq->keyUsage = xmlSecKeyUsageDecrypt;
-    }    
-    return(0);
-}
-
-static int  	
-xmlSecNssRsaPkcs1SetKey(xmlSecTransformPtr transform, xmlSecKeyPtr key) {
-    xmlSecNssRsaPkcs1CtxPtr ctx;
-    
-    xmlSecAssert2(xmlSecTransformCheckId(transform, xmlSecNssTransformRsaPkcs1Id), -1);
-    xmlSecAssert2((transform->operation == xmlSecTransformOperationEncrypt) || (transform->operation == xmlSecTransformOperationDecrypt), -1);
-    xmlSecAssert2(xmlSecTransformCheckSize(transform, xmlSecNssRsaPkcs1Size), -1);
-    xmlSecAssert2(key != NULL, -1);
-    xmlSecAssert2(xmlSecKeyDataCheckId(xmlSecKeyGetValue(key), xmlSecNssKeyDataRsaId), -1);
-
-    ctx = xmlSecNssRsaPkcs1GetCtx(transform);
-    xmlSecAssert2(ctx != NULL, -1);
-    xmlSecAssert2(ctx->data == NULL, -1);
-
-    ctx->data = xmlSecKeyDataCreate(xmlSecNssKeyDataRsaId);
-    if (ctx->data == NULL) {
-	xmlSecError(XMLSEC_ERRORS_HERE,
-	 	    NULL,
-		    "xmlSecKeyDataCreate",
-		    XMLSEC_ERRORS_R_XMLSEC_FAILED,
-		    "xmlSecNssKeyDataRsaId");
-	return (-1);
-    }
-    if (xmlSecNssPKIKeyDataDuplicate(ctx->data, xmlSecKeyGetValue(key)) == -1) {
-	xmlSecError(XMLSEC_ERRORS_HERE,
-		    xmlSecErrorsSafeString(xmlSecTransformGetName(transform)),
-		    "xmlSecNssPKIKeyDataDuplicate",
-		    XMLSEC_ERRORS_R_XMLSEC_FAILED,
-		    XMLSEC_ERRORS_NO_MESSAGE);
-	return(-1);
-    }
-
-    xmlSecAssert2(xmlSecNssPKIKeyDataGetKeyType(ctx->data) == rsaKey, -1);    
-
-    return(0);
-}
-
-static int 
-xmlSecNssRsaPkcs1Execute(xmlSecTransformPtr transform, int last, xmlSecTransformCtxPtr transformCtx) {
-    xmlSecNssRsaPkcs1CtxPtr ctx;
-    int ret;
-
-    xmlSecAssert2(xmlSecTransformCheckId(transform, xmlSecNssTransformRsaPkcs1Id), -1);
-    xmlSecAssert2((transform->operation == xmlSecTransformOperationEncrypt) || (transform->operation == xmlSecTransformOperationDecrypt), -1);
-    xmlSecAssert2(xmlSecTransformCheckSize(transform, xmlSecNssRsaPkcs1Size), -1);
-    xmlSecAssert2(transformCtx != NULL, -1);
-
-    ctx = xmlSecNssRsaPkcs1GetCtx(transform);
-    xmlSecAssert2(ctx != NULL, -1);
-
-    if(transform->status == xmlSecTransformStatusNone) {
-	transform->status = xmlSecTransformStatusWorking;
-    } 
-    
-    if((transform->status == xmlSecTransformStatusWorking) && (last == 0)) {
-	/* just do nothing */
-    } else  if((transform->status == xmlSecTransformStatusWorking) && (last != 0)) {
-	ret = xmlSecNssRsaPkcs1Process(transform, transformCtx);
-	if(ret < 0) {
-	    xmlSecError(XMLSEC_ERRORS_HERE, 
-			xmlSecErrorsSafeString(xmlSecTransformGetName(transform)),
-			"xmlSecNssRsaPkcs1Process",
-			XMLSEC_ERRORS_R_XMLSEC_FAILED,
-			XMLSEC_ERRORS_NO_MESSAGE);
-	    return(-1);
-	}
-	transform->status = xmlSecTransformStatusFinished;
-    } else if(transform->status == xmlSecTransformStatusFinished) {
-	/* the only way we can get here is if there is no input */
-	xmlSecAssert2(xmlSecBufferGetSize(&(transform->inBuf)) == 0, -1);
-    } else {
-	xmlSecError(XMLSEC_ERRORS_HERE, 
-		    xmlSecErrorsSafeString(xmlSecTransformGetName(transform)),
-		    NULL,
-		    XMLSEC_ERRORS_R_INVALID_STATUS,
-		    "status=%d", transform->status);
-	return(-1);
-    }
-    return(0);
-}
-
-static int  
-xmlSecNssRsaPkcs1Process(xmlSecTransformPtr transform, xmlSecTransformCtxPtr transformCtx) {
-    xmlSecNssRsaPkcs1CtxPtr ctx;
-    xmlSecBufferPtr in, out;
-    xmlSecSize inSize, outSize;
-    xmlSecSize keySize;
-    int ret;
-    SECStatus  rv;
-    unsigned int outlen;
-
-    xmlSecAssert2(xmlSecTransformCheckId(transform, xmlSecNssTransformRsaPkcs1Id), -1);
-    xmlSecAssert2((transform->operation == xmlSecTransformOperationEncrypt) || (transform->operation == xmlSecTransformOperationDecrypt), -1);
-    xmlSecAssert2(xmlSecTransformCheckSize(transform, xmlSecNssRsaPkcs1Size), -1);
-    xmlSecAssert2(transformCtx != NULL, -1);
-
-    ctx = xmlSecNssRsaPkcs1GetCtx(transform);
-    xmlSecAssert2(ctx != NULL, -1);
-    xmlSecAssert2(ctx->data != NULL, -1);
-    xmlSecAssert2(xmlSecNssPKIKeyDataGetKeyType(ctx->data) == rsaKey, -1);
-    
-    keySize = xmlSecKeyDataGetSize(ctx->data) / 8;
-    xmlSecAssert2(keySize > 0, -1);
-    
-    in = &(transform->inBuf);
-    out = &(transform->outBuf);
-	
-    inSize = xmlSecBufferGetSize(in);
-    outSize = xmlSecBufferGetSize(out);    
-    xmlSecAssert2(outSize == 0, -1);
-
-    /* the encoded size is equal to the keys size so we could not
-     * process more than that */
-    if((transform->operation == xmlSecTransformOperationEncrypt) && (inSize >= keySize)) {
-	xmlSecError(XMLSEC_ERRORS_HERE,
-		    xmlSecErrorsSafeString(xmlSecTransformGetName(transform)),
-		    NULL,
-		    XMLSEC_ERRORS_R_INVALID_SIZE,
-		    "%d when expected less than %d", inSize, keySize);
-	return(-1);
-    } else if((transform->operation == xmlSecTransformOperationDecrypt) && (inSize != keySize)) {
-	xmlSecError(XMLSEC_ERRORS_HERE,
-		    xmlSecErrorsSafeString(xmlSecTransformGetName(transform)),
-		    NULL,
-		    XMLSEC_ERRORS_R_INVALID_SIZE,
-		    "%d when expected %d", inSize, keySize);
-	return(-1);
-    }
-	
-    outSize = keySize; 
-    ret = xmlSecBufferSetMaxSize(out, outSize);
-    if(ret < 0) {
-	xmlSecError(XMLSEC_ERRORS_HERE, 
-		    xmlSecErrorsSafeString(xmlSecTransformGetName(transform)),
-		    "xmlSecBufferSetMaxSize",
-		    XMLSEC_ERRORS_R_XMLSEC_FAILED,
-		    "size=%d", outSize);
-	return(-1);
-    }
-
-    if(transform->operation == xmlSecTransformOperationEncrypt) {
-	rv = PK11_PubEncryptRaw(xmlSecNssPKIKeyDataGetPubKey(ctx->data), 
-			        xmlSecBufferGetData(out), 
-			        xmlSecBufferGetData(in), 
-				inSize, 
-				NULL);
-	if(rv != SECSuccess) {
-	    xmlSecError(XMLSEC_ERRORS_HERE, 
-			xmlSecErrorsSafeString(xmlSecTransformGetName(transform)),
-			"PK11_PubEncryptRaw",
-			XMLSEC_ERRORS_R_CRYPTO_FAILED,
-			"size=%d", inSize);
-	    return(-1);
-	}
-    } else {
-	rv = PK11_PubDecryptRaw(xmlSecNssPKIKeyDataGetPrivKey(ctx->data), 
-				xmlSecBufferGetData(out), 
-				&outlen, 
-				inSize, 
-				xmlSecBufferGetData(in),
-			        inSize);
-	if(rv != SECSuccess) {
-	    xmlSecError(XMLSEC_ERRORS_HERE, 
-			xmlSecErrorsSafeString(xmlSecTransformGetName(transform)),
-			"PK11_PubDecryptRaw",
-			XMLSEC_ERRORS_R_CRYPTO_FAILED,
-			"size=%d", inSize);
-	    return(-1);
-	}
-	outSize = outlen;
-    }
-
-    ret = xmlSecBufferSetSize(out, outSize);
-    if(ret < 0) {
-	xmlSecError(XMLSEC_ERRORS_HERE, 
-		    xmlSecErrorsSafeString(xmlSecTransformGetName(transform)),
-		    "xmlSecBufferSetSize",		    
-		    XMLSEC_ERRORS_R_XMLSEC_FAILED,
-		    "size=%d", outSize);
-	return(-1);
-    }
-	
-    ret = xmlSecBufferRemoveHead(in, inSize);
-    if(ret < 0) {
-        xmlSecError(XMLSEC_ERRORS_HERE, 
-		    xmlSecErrorsSafeString(xmlSecTransformGetName(transform)),
-		    "xmlSecBufferRemoveHead",
-		    XMLSEC_ERRORS_R_XMLSEC_FAILED,
-		    "size=%d", inSize);
-	return(-1);
-    }
-    
-    return(0);
-}
-
-#endif /* XMLSEC_NO_RSA */
-
diff --git a/src/nss/pkikeys.c b/src/nss/pkikeys.c
index b5f8697..92de6b3 100644
--- a/src/nss/pkikeys.c
+++ b/src/nss/pkikeys.c
@@ -122,7 +122,7 @@ xmlSecNSSPKIKeyDataCtxDup(xmlSecNssPKIKeyDataCtxPtr ctxDst,
 			NULL,
 			"SECKEY_CopyPrivateKey",
 			XMLSEC_ERRORS_R_CRYPTO_FAILED,
-			XMLSEC_ERRORS_NO_MESSAGE);
+				"error code=%d", PORT_GetError());
 	    return(-1);
 	}
     }
@@ -134,7 +134,7 @@ xmlSecNSSPKIKeyDataCtxDup(xmlSecNssPKIKeyDataCtxPtr ctxDst,
 			NULL,
 			"SECKEY_CopyPublicKey",
 			XMLSEC_ERRORS_R_CRYPTO_FAILED,
-			XMLSEC_ERRORS_NO_MESSAGE);
+				"error code=%d", PORT_GetError());
 	    return(-1);
 	}
     }
@@ -147,10 +147,31 @@ xmlSecNssPKIKeyDataAdoptKey(xmlSecKeyDataPtr data,
                             SECKEYPublicKey  *pubkey)
 {
     xmlSecNssPKIKeyDataCtxPtr ctx;
+	KeyType					pubType = nullKey ;
+	KeyType					priType = nullKey ;
     
     xmlSecAssert2(xmlSecKeyDataIsValid(data), -1);
     xmlSecAssert2(xmlSecKeyDataCheckSize(data, xmlSecNssPKIKeyDataSize), -1);
 
+	if( privkey != NULL ) {
+		priType = SECKEY_GetPrivateKeyType( privkey ) ;
+	}
+
+	if( pubkey != NULL ) {
+		pubType = SECKEY_GetPublicKeyType( pubkey ) ;
+	}
+
+	if( priType != nullKey && pubType != nullKey ) {
+		if( pubType != priType ) {
+			xmlSecError( XMLSEC_ERRORS_HERE ,
+				NULL ,
+				NULL ,
+				XMLSEC_ERRORS_R_CRYPTO_FAILED ,
+				"different type of private and public key" ) ;
+			return -1 ;
+		}
+	}
+
     ctx = xmlSecNssPKIKeyDataGetCtx(data);
     xmlSecAssert2(ctx != NULL, -1);
     
@@ -183,16 +204,30 @@ xmlSecNssPKIAdoptKey(SECKEYPrivateKey *privkey,
 {
     xmlSecKeyDataPtr data = NULL;
     int ret;
-    KeyType kt;
-    
-    if (pubkey != NULL) {
-	kt = SECKEY_GetPublicKeyType(pubkey);
-    } else {
-	kt = SECKEY_GetPrivateKeyType(privkey);
-	pubkey = SECKEY_ConvertToPublicKey(privkey);
-    }
+	KeyType					pubType = nullKey ;
+	KeyType					priType = nullKey ;
     
-    switch(kt) {	
+	if( privkey != NULL ) {
+		priType = SECKEY_GetPrivateKeyType( privkey ) ;
+	}
+
+	if( pubkey != NULL ) {
+		pubType = SECKEY_GetPublicKeyType( pubkey ) ;
+	}
+
+	if( priType != nullKey && pubType != nullKey ) {
+		if( pubType != priType ) {
+			xmlSecError( XMLSEC_ERRORS_HERE ,
+				NULL ,
+				NULL ,
+				XMLSEC_ERRORS_R_CRYPTO_FAILED ,
+				"different type of private and public key" ) ;
+			return( NULL ) ;
+		}
+	}
+   
+	pubType = priType != nullKey ? priType : pubType ;
+    switch(pubType) {	
 #ifndef XMLSEC_NO_RSA    
     case rsaKey:
 	data = xmlSecKeyDataCreate(xmlSecNssKeyDataRsaId);
@@ -224,7 +259,7 @@ xmlSecNssPKIAdoptKey(SECKEYPrivateKey *privkey,
 		    NULL,
 		    NULL,
 		    XMLSEC_ERRORS_R_INVALID_TYPE,
-		    "PKI key type %d not supported", kt);
+		    "PKI key type %d not supported", pubType);
 	return(NULL);
     }
 
@@ -570,7 +605,7 @@ xmlSecNssKeyDataDsaXmlRead(xmlSecKeyDataId id, xmlSecKeyPtr key,
 		    xmlSecErrorsSafeString(xmlSecKeyDataKlassGetName(id)),
 		    "PORT_NewArena",
 		    XMLSEC_ERRORS_R_CRYPTO_FAILED,
-		    XMLSEC_ERRORS_NO_MESSAGE);
+		    "error code=%d", PORT_GetError());
 	ret = -1;
 	goto done;
     }
@@ -582,7 +617,7 @@ xmlSecNssKeyDataDsaXmlRead(xmlSecKeyDataId id, xmlSecKeyPtr key,
 		    xmlSecErrorsSafeString(xmlSecKeyDataKlassGetName(id)),
 		    "PORT_ArenaZAlloc",
 		    XMLSEC_ERRORS_R_CRYPTO_FAILED,
-		    XMLSEC_ERRORS_NO_MESSAGE);
+		    "error code=%d", PORT_GetError());
 	PORT_FreeArena(arena, PR_FALSE);
 	ret = -1;
 	goto done;
@@ -1198,7 +1233,7 @@ xmlSecNssKeyDataRsaXmlRead(xmlSecKeyDataId id, xmlSecKeyPtr key,
                     xmlSecErrorsSafeString(xmlSecKeyDataKlassGetName(id)),
                     "PORT_NewArena",
                     XMLSEC_ERRORS_R_CRYPTO_FAILED,
-                    XMLSEC_ERRORS_NO_MESSAGE);
+                    "error code=%d", PORT_GetError());
         ret = -1;
         goto done;
     }
@@ -1210,7 +1245,7 @@ xmlSecNssKeyDataRsaXmlRead(xmlSecKeyDataId id, xmlSecKeyPtr key,
                     xmlSecErrorsSafeString(xmlSecKeyDataKlassGetName(id)),
                     "PORT_ArenaZAlloc",
                     XMLSEC_ERRORS_R_CRYPTO_FAILED,
-                    XMLSEC_ERRORS_NO_MESSAGE);
+                    "error code=%d", PORT_GetError());
 	PORT_FreeArena(arena, PR_FALSE);
         ret = -1;
         goto done;
@@ -1430,7 +1465,7 @@ xmlSecNssKeyDataRsaGenerate(xmlSecKeyDataPtr data, xmlSecSize sizeBits, xmlSecKe
 		    xmlSecErrorsSafeString(xmlSecKeyDataGetName(data)),
 		    "PK11_GenerateKeyPair",
 		    XMLSEC_ERRORS_R_CRYPTO_FAILED,
-		    XMLSEC_ERRORS_NO_MESSAGE);
+		    "error code=%d", PORT_GetError());
         
 	goto done;
     }
diff --git a/src/nss/signatures.c b/src/nss/signatures.c
index 6510ba0..f31c7f9 100644
--- a/src/nss/signatures.c
+++ b/src/nss/signatures.c
@@ -199,7 +199,7 @@ xmlSecNssSignatureSetKey(xmlSecTransformPtr transform, xmlSecKeyPtr key) {
 			xmlSecErrorsSafeString(xmlSecTransformGetName(transform)),
 			"SGN_NewContext",
 			XMLSEC_ERRORS_R_CRYPTO_FAILED,
-			XMLSEC_ERRORS_NO_MESSAGE);
+			"error code=%d", PORT_GetError());
 	    return(-1);
         }
     } else {
@@ -222,7 +222,7 @@ xmlSecNssSignatureSetKey(xmlSecTransformPtr transform, xmlSecKeyPtr key) {
 			xmlSecErrorsSafeString(xmlSecTransformGetName(transform)),
 			"VFY_CreateContext",
 			XMLSEC_ERRORS_R_CRYPTO_FAILED,
-			XMLSEC_ERRORS_NO_MESSAGE);
+			"error code=%d", PORT_GetError());
 	    return(-1);
         }
     }
@@ -282,7 +282,7 @@ xmlSecNssSignatureVerify(xmlSecTransformPtr transform,
 		    xmlSecErrorsSafeString(xmlSecTransformGetName(transform)),
 		    "VFY_Update, VFY_End",
 		    XMLSEC_ERRORS_R_CRYPTO_FAILED,
-		    XMLSEC_ERRORS_NO_MESSAGE);
+		    "error code=%d", PORT_GetError());
 
 	if (PORT_GetError() == SEC_ERROR_PKCS7_BAD_SIGNATURE) {
 	    xmlSecError(XMLSEC_ERRORS_HERE, 
@@ -341,7 +341,7 @@ xmlSecNssSignatureExecute(xmlSecTransformPtr transform, int last, xmlSecTransfor
 			    xmlSecErrorsSafeString(xmlSecTransformGetName(transform)),
 			    "SGN_Begin",
 			    XMLSEC_ERRORS_R_CRYPTO_FAILED,
-			    XMLSEC_ERRORS_NO_MESSAGE);
+			    "error code=%d", PORT_GetError());
 		return(-1);
 	    }
 	} else {
@@ -351,7 +351,7 @@ xmlSecNssSignatureExecute(xmlSecTransformPtr transform, int last, xmlSecTransfor
 			    xmlSecErrorsSafeString(xmlSecTransformGetName(transform)),
 			    "VFY_Begin",
 			    XMLSEC_ERRORS_R_CRYPTO_FAILED,
-			    XMLSEC_ERRORS_NO_MESSAGE);
+			    "error code=%d", PORT_GetError());
 		return(-1);
 	    }
 	}
@@ -368,7 +368,7 @@ xmlSecNssSignatureExecute(xmlSecTransformPtr transform, int last, xmlSecTransfor
 			    xmlSecErrorsSafeString(xmlSecTransformGetName(transform)),
 			    "SGN_Update",
 			    XMLSEC_ERRORS_R_CRYPTO_FAILED,
-			    XMLSEC_ERRORS_NO_MESSAGE);
+			    "error code=%d", PORT_GetError());
 		return(-1);
 	    }
 	} else {
@@ -378,7 +378,7 @@ xmlSecNssSignatureExecute(xmlSecTransformPtr transform, int last, xmlSecTransfor
 			    xmlSecErrorsSafeString(xmlSecTransformGetName(transform)),
 			    "VFY_Update",
 			    XMLSEC_ERRORS_R_CRYPTO_FAILED,
-			    XMLSEC_ERRORS_NO_MESSAGE);
+			    "error code=%d", PORT_GetError());
 		return(-1);
 	    }
 	}
@@ -404,7 +404,7 @@ xmlSecNssSignatureExecute(xmlSecTransformPtr transform, int last, xmlSecTransfor
 			    xmlSecErrorsSafeString(xmlSecTransformGetName(transform)),
 			    "SGN_End",
 			    XMLSEC_ERRORS_R_CRYPTO_FAILED,
-			    XMLSEC_ERRORS_NO_MESSAGE);
+			    "error code=%d", PORT_GetError());
 		return(-1);
 	    }
 
diff --git a/src/nss/x509.c b/src/nss/x509.c
index 1154f0b..dd3b58b 100644
--- a/src/nss/x509.c
+++ b/src/nss/x509.c
@@ -378,7 +378,7 @@ xmlSecNssKeyDataX509AdoptCert(xmlSecKeyDataPtr data, CERTCertificate* cert) {
 			xmlSecErrorsSafeString(xmlSecKeyDataGetName(data)),
 			"CERT_NewCertList",
 			XMLSEC_ERRORS_R_CRYPTO_FAILED,
-			XMLSEC_ERRORS_NO_MESSAGE);
+			"error code=%d", PORT_GetError());
 	    return(-1);	
 	}
     }
@@ -389,7 +389,7 @@ xmlSecNssKeyDataX509AdoptCert(xmlSecKeyDataPtr data, CERTCertificate* cert) {
 		    xmlSecErrorsSafeString(xmlSecKeyDataGetName(data)),
 		    "CERT_AddCertToListTail",
 		    XMLSEC_ERRORS_R_CRYPTO_FAILED,
-		    XMLSEC_ERRORS_NO_MESSAGE);
+		    "error code=%d", PORT_GetError());
 	return(-1);	
     }
     ctx->numCerts++;
@@ -588,7 +588,7 @@ xmlSecNssKeyDataX509Duplicate(xmlSecKeyDataPtr dst, xmlSecKeyDataPtr src) {
 			xmlSecErrorsSafeString(xmlSecKeyDataGetName(dst)),
 			"CERT_DupCertificate",
 			XMLSEC_ERRORS_R_CRYPTO_FAILED,
-			XMLSEC_ERRORS_NO_MESSAGE);
+			"error code=%d", PORT_GetError());
 	    return(-1);
 	}
 	
@@ -627,7 +627,7 @@ xmlSecNssKeyDataX509Duplicate(xmlSecKeyDataPtr dst, xmlSecKeyDataPtr src) {
                         xmlSecErrorsSafeString(xmlSecKeyDataGetName(dst)),
                         "SEC_DupCrl",
                         XMLSEC_ERRORS_R_CRYPTO_FAILED,
-                        XMLSEC_ERRORS_NO_MESSAGE);
+                        "error code=%d", PORT_GetError());
             return(-1);
         }
 
@@ -652,7 +652,7 @@ xmlSecNssKeyDataX509Duplicate(xmlSecKeyDataPtr dst, xmlSecKeyDataPtr src) {
 			xmlSecErrorsSafeString(xmlSecKeyDataGetName(dst)),
 			"CERT_DupCertificate",
 			XMLSEC_ERRORS_R_CRYPTO_FAILED,
-			XMLSEC_ERRORS_NO_MESSAGE);
+			"error code=%d", PORT_GetError());
 	    return(-1);
 	}
 	ret = xmlSecNssKeyDataX509AdoptKeyCert(dst, certDst);
@@ -1746,7 +1746,7 @@ xmlSecNssX509CertGetKey(CERTCertificate* cert) {
 		    NULL,
 		    "CERT_ExtractPublicKey",
 		    XMLSEC_ERRORS_R_CRYPTO_FAILED,
-		    XMLSEC_ERRORS_NO_MESSAGE);
+		    "error code=%d", PORT_GetError());
 	return(NULL);
     }    
 
@@ -1804,7 +1804,7 @@ xmlSecNssX509CertDerRead(const xmlSecByte* buf, xmlSecSize size) {
 		    NULL,
 		    "__CERT_NewTempCertificate",
 		    XMLSEC_ERRORS_R_CRYPTO_FAILED,
-		    XMLSEC_ERRORS_NO_MESSAGE);
+		    "error code=%d", PORT_GetError());
 	return(NULL);
     }
 
@@ -1827,7 +1827,7 @@ xmlSecNssX509CertBase64DerWrite(CERTCertificate* cert, int base64LineWrap) {
 		    NULL,
 		    "cert->derCert",
 		    XMLSEC_ERRORS_R_CRYPTO_FAILED,
-		    XMLSEC_ERRORS_NO_MESSAGE);
+		    "error code=%d", PORT_GetError());
 	return(NULL);
     }
     
@@ -1884,14 +1884,14 @@ xmlSecNssX509CrlDerRead(xmlSecByte* buf, xmlSecSize size,
     /* we're importing a CRL, it is ok to use the internal slot.
      * crlutil does it :)
      */
-    slot = PK11_GetInternalKeySlot();
+    slot = xmlSecNssGetInternalKeySlot();
     if (slot == NULL) {
         xmlSecError(XMLSEC_ERRORS_HERE,
                     NULL,
-                    "PK11_GetInternalKeySlot",
-                    XMLSEC_ERRORS_R_CRYPTO_FAILED,
-                    XMLSEC_ERRORS_NO_MESSAGE);
-	return NULL;
+                    "xmlSecNssGetInternalKeySlot",
+                    XMLSEC_ERRORS_R_XMLSEC_FAILED,
+    		        XMLSEC_ERRORS_NO_MESSAGE);
+    	return NULL;
     }
 
     if((keyInfoCtx->flags & XMLSEC_KEYINFO_FLAGS_X509DATA_SKIP_STRICT_CHECKS) != 0)
@@ -1905,7 +1905,7 @@ xmlSecNssX509CrlDerRead(xmlSecByte* buf, xmlSecSize size,
 		    NULL,
 		    "PK11_ImportCRL",
 		    XMLSEC_ERRORS_R_CRYPTO_FAILED,
-		    XMLSEC_ERRORS_NO_MESSAGE);
+		    "error code=%d", PORT_GetError());
 	PK11_FreeSlot(slot);
 	return(NULL);
     }
@@ -1929,7 +1929,7 @@ xmlSecNssX509CrlBase64DerWrite(CERTSignedCrl* crl, int base64LineWrap) {
                     NULL,
                     "crl->derCrl",
                     XMLSEC_ERRORS_R_CRYPTO_FAILED,
-                    XMLSEC_ERRORS_NO_MESSAGE);
+                    "error code=%d", PORT_GetError());
         return(NULL);
     }
 
diff --git a/src/nss/x509vfy.c b/src/nss/x509vfy.c
index b8d6b08..b6b12b9 100644
--- a/src/nss/x509vfy.c
+++ b/src/nss/x509vfy.c
@@ -245,8 +245,9 @@ xmlSecNssX509StoreVerify(xmlSecKeyDataStorePtr store, CERTCertList* certs,
                         xmlSecErrorsSafeString(xmlSecKeyDataStoreGetName(store)),
                         NULL,
                         XMLSEC_ERRORS_R_CERT_VERIFY_FAILED,
-                        "cert with subject name %s could not be verified",
-                        cert->subjectName);
+						"cert with subject name %s could not be verified, errcode %d",
+						cert->subjectName,
+			PORT_GetError());
 	    break;
     }
    
@@ -281,7 +282,7 @@ xmlSecNssX509StoreAdoptCert(xmlSecKeyDataStorePtr store, CERTCertificate* cert,
                         xmlSecErrorsSafeString(xmlSecKeyDataStoreGetName(store)),
                         "CERT_NewCertList",
                         XMLSEC_ERRORS_R_CRYPTO_FAILED,
-                        XMLSEC_ERRORS_NO_MESSAGE);
+						"error code=%d", PORT_GetError());
             return(-1);
         }
     }
@@ -292,7 +293,7 @@ xmlSecNssX509StoreAdoptCert(xmlSecKeyDataStorePtr store, CERTCertificate* cert,
                     xmlSecErrorsSafeString(xmlSecKeyDataStoreGetName(store)),
                     "CERT_AddCertToListTail",
                     XMLSEC_ERRORS_R_CRYPTO_FAILED,
-                    XMLSEC_ERRORS_NO_MESSAGE);
+					"error code=%d", PORT_GetError());
         return(-1);
     }
 
@@ -386,7 +387,7 @@ xmlSecNssX509FindCert(xmlChar *subjectName, xmlChar *issuerName,
                         NULL,
                         "SEC_ASN1EncodeItem",
                         XMLSEC_ERRORS_R_XMLSEC_FAILED,
-                        XMLSEC_ERRORS_NO_MESSAGE);
+						"error code=%d", PORT_GetError());
 	    goto done;
 	}
 
@@ -435,7 +436,7 @@ xmlSecNssX509FindCert(xmlChar *subjectName, xmlChar *issuerName,
                         NULL,
                         "SEC_ASN1EncodeItem",
                         XMLSEC_ERRORS_R_XMLSEC_FAILED,
-                        XMLSEC_ERRORS_NO_MESSAGE);
+						"error code=%d", PORT_GetError());
 	    goto done;
 	}
 
diff --git a/src/openssl/Makefile.in b/src/openssl/Makefile.in
index 98ee204..df0dd76 100644
--- a/src/openssl/Makefile.in
+++ b/src/openssl/Makefile.in
@@ -1,4 +1,4 @@
-# Makefile.in generated by automake 1.8.3 from Makefile.am.
+# Makefile.in generated by automake 1.9.2 from Makefile.am.
 # @configure_input@
 
 # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
@@ -36,6 +36,7 @@ POST_INSTALL = :
 NORMAL_UNINSTALL = :
 PRE_UNINSTALL = :
 POST_UNINSTALL = :
+build_triplet = @build@
 host_triplet = @host@
 subdir = src/openssl
 DIST_COMMON = README $(srcdir)/Makefile.am $(srcdir)/Makefile.in
@@ -46,6 +47,12 @@ am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
 mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs
 CONFIG_HEADER = $(top_builddir)/config.h
 CONFIG_CLEAN_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 = `echo $$p | sed -e 's|^.*/||'`;
 am__installdirs = "$(DESTDIR)$(libdir)"
 libLTLIBRARIES_INSTALL = $(INSTALL)
 LTLIBRARIES = $(lib_LTLIBRARIES)
@@ -61,20 +68,13 @@ libxmlsec1_openssl_la_OBJECTS = $(am_libxmlsec1_openssl_la_OBJECTS)
 DEFAULT_INCLUDES = -I. -I$(srcdir) -I$(top_builddir)
 depcomp = $(SHELL) $(top_srcdir)/depcomp
 am__depfiles_maybe = depfiles
- at AMDEP_TRUE@DEP_FILES = ./$(DEPDIR)/app.Plo ./$(DEPDIR)/bn.Plo \
- at AMDEP_TRUE@	./$(DEPDIR)/ciphers.Plo ./$(DEPDIR)/crypto.Plo \
- at AMDEP_TRUE@	./$(DEPDIR)/digests.Plo ./$(DEPDIR)/evp.Plo \
- at AMDEP_TRUE@	./$(DEPDIR)/hmac.Plo ./$(DEPDIR)/kt_rsa.Plo \
- at AMDEP_TRUE@	./$(DEPDIR)/kw_aes.Plo ./$(DEPDIR)/kw_des.Plo \
- at AMDEP_TRUE@	./$(DEPDIR)/signatures.Plo ./$(DEPDIR)/symkeys.Plo \
- at AMDEP_TRUE@	./$(DEPDIR)/x509.Plo ./$(DEPDIR)/x509vfy.Plo
 COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \
 	$(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
-LTCOMPILE = $(LIBTOOL) --mode=compile $(CC) $(DEFS) \
+LTCOMPILE = $(LIBTOOL) --mode=compile --tag=CC $(CC) $(DEFS) \
 	$(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \
 	$(AM_CFLAGS) $(CFLAGS)
 CCLD = $(CC)
-LINK = $(LIBTOOL) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \
+LINK = $(LIBTOOL) --mode=link --tag=CC $(CCLD) $(AM_CFLAGS) $(CFLAGS) \
 	$(AM_LDFLAGS) $(LDFLAGS) -o $@
 SOURCES = $(libxmlsec1_openssl_la_SOURCES)
 DIST_SOURCES = $(libxmlsec1_openssl_la_SOURCES)
@@ -129,8 +129,6 @@ LIBADD_DL = @LIBADD_DL@
 LIBOBJS = @LIBOBJS@
 LIBS = @LIBS@
 LIBTOOL = @LIBTOOL@
-LIBXML262_CFLAGS = @LIBXML262_CFLAGS@
-LIBXML262_LIBS = @LIBXML262_LIBS@
 LIBXML_CFLAGS = @LIBXML_CFLAGS@
 LIBXML_CONFIG = @LIBXML_CONFIG@
 LIBXML_LIBS = @LIBXML_LIBS@
@@ -154,8 +152,6 @@ NSS_CRYPTO_LIB = @NSS_CRYPTO_LIB@
 NSS_LIBS = @NSS_LIBS@
 NSS_MIN_VERSION = @NSS_MIN_VERSION@
 OBJEXT = @OBJEXT@
-OPENSSL097_CFLAGS = @OPENSSL097_CFLAGS@
-OPENSSL097_LIBS = @OPENSSL097_LIBS@
 OPENSSL_CFLAGS = @OPENSSL_CFLAGS@
 OPENSSL_CRYPTO_LIB = @OPENSSL_CRYPTO_LIB@
 OPENSSL_LIBS = @OPENSSL_LIBS@
@@ -218,6 +214,9 @@ XMLSEC_NO_HMAC = @XMLSEC_NO_HMAC@
 XMLSEC_NO_HMAC_FALSE = @XMLSEC_NO_HMAC_FALSE@
 XMLSEC_NO_HMAC_TRUE = @XMLSEC_NO_HMAC_TRUE@
 XMLSEC_NO_LIBXSLT = @XMLSEC_NO_LIBXSLT@
+XMLSEC_NO_MD5 = @XMLSEC_NO_MD5@
+XMLSEC_NO_MD5_FALSE = @XMLSEC_NO_MD5_FALSE@
+XMLSEC_NO_MD5_TRUE = @XMLSEC_NO_MD5_TRUE@
 XMLSEC_NO_NSS = @XMLSEC_NO_NSS@
 XMLSEC_NO_NSS_FALSE = @XMLSEC_NO_NSS_FALSE@
 XMLSEC_NO_NSS_TRUE = @XMLSEC_NO_NSS_TRUE@
@@ -233,6 +232,18 @@ XMLSEC_NO_RSA_TRUE = @XMLSEC_NO_RSA_TRUE@
 XMLSEC_NO_SHA1 = @XMLSEC_NO_SHA1@
 XMLSEC_NO_SHA1_FALSE = @XMLSEC_NO_SHA1_FALSE@
 XMLSEC_NO_SHA1_TRUE = @XMLSEC_NO_SHA1_TRUE@
+XMLSEC_NO_SHA224 = @XMLSEC_NO_SHA224@
+XMLSEC_NO_SHA224_FALSE = @XMLSEC_NO_SHA224_FALSE@
+XMLSEC_NO_SHA224_TRUE = @XMLSEC_NO_SHA224_TRUE@
+XMLSEC_NO_SHA256 = @XMLSEC_NO_SHA256@
+XMLSEC_NO_SHA256_FALSE = @XMLSEC_NO_SHA256_FALSE@
+XMLSEC_NO_SHA256_TRUE = @XMLSEC_NO_SHA256_TRUE@
+XMLSEC_NO_SHA384 = @XMLSEC_NO_SHA384@
+XMLSEC_NO_SHA384_FALSE = @XMLSEC_NO_SHA384_FALSE@
+XMLSEC_NO_SHA384_TRUE = @XMLSEC_NO_SHA384_TRUE@
+XMLSEC_NO_SHA512 = @XMLSEC_NO_SHA512@
+XMLSEC_NO_SHA512_FALSE = @XMLSEC_NO_SHA512_FALSE@
+XMLSEC_NO_SHA512_TRUE = @XMLSEC_NO_SHA512_TRUE@
 XMLSEC_NO_X509 = @XMLSEC_NO_X509@
 XMLSEC_NO_X509_FALSE = @XMLSEC_NO_X509_FALSE@
 XMLSEC_NO_X509_TRUE = @XMLSEC_NO_X509_TRUE@
@@ -270,6 +281,8 @@ am__fastdepCXX_TRUE = @am__fastdepCXX_TRUE@
 am__include = @am__include@
 am__leading_dot = @am__leading_dot@
 am__quote = @am__quote@
+am__tar = @am__tar@
+am__untar = @am__untar@
 bindir = @bindir@
 build = @build@
 build_alias = @build_alias@
@@ -384,7 +397,7 @@ install-libLTLIBRARIES: $(lib_LTLIBRARIES)
 	test -z "$(libdir)" || $(mkdir_p) "$(DESTDIR)$(libdir)"
 	@list='$(lib_LTLIBRARIES)'; for p in $$list; do \
 	  if test -f $$p; then \
-	    f="`echo $$p | sed -e 's|^.*/||'`"; \
+	    f=$(am__strip_dir) \
 	    echo " $(LIBTOOL) --mode=install $(libLTLIBRARIES_INSTALL) $(INSTALL_STRIP_FLAG) '$$p' '$(DESTDIR)$(libdir)/$$f'"; \
 	    $(LIBTOOL) --mode=install $(libLTLIBRARIES_INSTALL) $(INSTALL_STRIP_FLAG) "$$p" "$(DESTDIR)$(libdir)/$$f"; \
 	  else :; fi; \
@@ -392,8 +405,8 @@ install-libLTLIBRARIES: $(lib_LTLIBRARIES)
 
 uninstall-libLTLIBRARIES:
 	@$(NORMAL_UNINSTALL)
-	@list='$(lib_LTLIBRARIES)'; for p in $$list; do \
-	    p="`echo $$p | sed -e 's|^.*/||'`"; \
+	@set -x; list='$(lib_LTLIBRARIES)'; for p in $$list; do \
+	  p=$(am__strip_dir) \
 	  echo " $(LIBTOOL) --mode=uninstall rm -f '$(DESTDIR)$(libdir)/$$p'"; \
 	  $(LIBTOOL) --mode=uninstall rm -f "$(DESTDIR)$(libdir)/$$p"; \
 	done
@@ -402,7 +415,7 @@ 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=.; \
+	  test "$$dir" != "$$p" || dir=.; \
 	  echo "rm -f \"$${dir}/so_locations\""; \
 	  rm -f "$${dir}/so_locations"; \
 	done
@@ -434,24 +447,21 @@ distclean-compile:
 @am__fastdepCC_TRUE@	if $(COMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" -c -o $@ $<; \
 @am__fastdepCC_TRUE@	then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Po"; else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; fi
 @AMDEP_TRUE@@am__fastdepCC_FALSE@	source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	depfile='$(DEPDIR)/$*.Po' tmpdepfile='$(DEPDIR)/$*.TPo' @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	$(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @am__fastdepCC_FALSE@	$(COMPILE) -c $<
 
 .c.obj:
 @am__fastdepCC_TRUE@	if $(COMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" -c -o $@ `$(CYGPATH_W) '$<'`; \
 @am__fastdepCC_TRUE@	then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Po"; else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; fi
 @AMDEP_TRUE@@am__fastdepCC_FALSE@	source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	depfile='$(DEPDIR)/$*.Po' tmpdepfile='$(DEPDIR)/$*.TPo' @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	$(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @am__fastdepCC_FALSE@	$(COMPILE) -c `$(CYGPATH_W) '$<'`
 
 .c.lo:
 @am__fastdepCC_TRUE@	if $(LTCOMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" -c -o $@ $<; \
 @am__fastdepCC_TRUE@	then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Plo"; else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; fi
 @AMDEP_TRUE@@am__fastdepCC_FALSE@	source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	depfile='$(DEPDIR)/$*.Plo' tmpdepfile='$(DEPDIR)/$*.TPlo' @AMDEPBACKSLASH@
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	$(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @am__fastdepCC_FALSE@	$(LTCOMPILE) -c -o $@ $<
 
 mostlyclean-libtool:
@@ -484,9 +494,11 @@ TAGS:  $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
 	  done | \
 	  $(AWK) '    { files[$$0] = 1; } \
 	       END { for (i in files) print i; }'`; \
-	test -z "$(ETAGS_ARGS)$$tags$$unique" \
-	  || $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
-	     $$tags $$unique
+	if test -z "$(ETAGS_ARGS)$$tags$$unique"; then :; else \
+	  test -n "$$unique" || unique=$$empty_fix; \
+	  $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+	    $$tags $$unique; \
+	fi
 ctags: CTAGS
 CTAGS:  $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
 		$(TAGS_FILES) $(LISP)
@@ -563,7 +575,7 @@ mostlyclean-generic:
 clean-generic:
 
 distclean-generic:
-	-rm -f $(CONFIG_CLEAN_FILES)
+	-test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
 
 maintainer-clean-generic:
 	@echo "This command is intended for maintainers to use"
diff --git a/src/openssl/app.c b/src/openssl/app.c
index d7ae1d1..ffd38c8 100644
--- a/src/openssl/app.c
+++ b/src/openssl/app.c
@@ -33,7 +33,8 @@
 
 static int 		xmlSecOpenSSLAppLoadRANDFile		(const char *file);
 static int 		xmlSecOpenSSLAppSaveRANDFile		(const char *file);
-static int		xmlSecOpenSSLDefaultPasswordCallback	(char *buf, int bufsiz, int verify, void *userdata);
+static int		xmlSecOpenSSLDefaultPasswordCallback(char *buf, int bufsiz, int verify, void *userdata);
+static int      xmlSecOpenSSLDummyPasswordCallback  (char *buf, int bufsize, int verify, void *userdata);
 
 /**
  * xmlSecOpenSSLAppInit:
@@ -202,6 +203,7 @@ xmlSecOpenSSLAppKeyLoadMemory(const xmlSecByte* data, xmlSecSize dataSize,
     return(key);
 }
 
+
 /**
  * xmlSecOpenSSLAppKeyLoadBIO:
  * @bio:		the key BIO.
@@ -230,11 +232,13 @@ xmlSecOpenSSLAppKeyLoadBIO(BIO* bio, xmlSecKeyDataFormat format,
     switch(format) {
     case xmlSecKeyDataFormatPem:
         /* try to read private key first */    
-	pKey = PEM_read_bio_PrivateKey(bio, NULL, (pem_password_cb*)pwdCallback, (void*)pwd);
+	    pKey = PEM_read_bio_PrivateKey(bio, NULL, 
+            (pwd != NULL) ? xmlSecOpenSSLDummyPasswordCallback : (pem_password_cb*)pwdCallback, 
+            (pwd != NULL) ? pwd : pwdCallbackCtx);
         if(pKey == NULL) {
     	    /* go to start of the file and try to read public key */
 	    BIO_reset(bio); 
-	    pKey = PEM_read_bio_PUBKEY(bio, NULL, (pem_password_cb*)pwdCallback, (void*)pwd);
+	    pKey = PEM_read_bio_PUBKEY(bio, NULL, (pem_password_cb*)pwdCallback, pwdCallbackCtx);
 	    if(pKey == NULL) {
 		xmlSecError(XMLSEC_ERRORS_HERE,
 			    NULL,
@@ -264,7 +268,7 @@ xmlSecOpenSSLAppKeyLoadBIO(BIO* bio, xmlSecKeyDataFormat format,
 	break;
     case xmlSecKeyDataFormatPkcs8Pem:
         /* try to read private key first */    
-	pKey = PEM_read_bio_PrivateKey(bio, NULL, (pem_password_cb*)pwdCallback, (void*)pwd);
+	pKey = PEM_read_bio_PrivateKey(bio, NULL, (pem_password_cb*)pwdCallback, pwdCallbackCtx);
         if(pKey == NULL) {
 	    xmlSecError(XMLSEC_ERRORS_HERE,
 			NULL,
@@ -276,7 +280,7 @@ xmlSecOpenSSLAppKeyLoadBIO(BIO* bio, xmlSecKeyDataFormat format,
 	break;
     case xmlSecKeyDataFormatPkcs8Der:
         /* try to read private key first */    
-	pKey = d2i_PKCS8PrivateKey_bio(bio, NULL, (pem_password_cb*)pwdCallback, (void*)pwd);
+	pKey = d2i_PKCS8PrivateKey_bio(bio, NULL, (pem_password_cb*)pwdCallback, pwdCallbackCtx);
         if(pKey == NULL) {
 	    xmlSecError(XMLSEC_ERRORS_HERE,
 			NULL,
@@ -286,6 +290,7 @@ xmlSecOpenSSLAppKeyLoadBIO(BIO* bio, xmlSecKeyDataFormat format,
 	    return(NULL);
 	}
 	break;
+#ifndef XMLSEC_NO_X509
     case xmlSecKeyDataFormatPkcs12:
 	key = xmlSecOpenSSLAppPkcs12LoadBIO(bio, pwd, pwdCallback, pwdCallbackCtx);
         if(key == NULL) {
@@ -298,7 +303,6 @@ xmlSecOpenSSLAppKeyLoadBIO(BIO* bio, xmlSecKeyDataFormat format,
 	}
 	return(key);
 	
-#ifndef XMLSEC_NO_X509
     case xmlSecKeyDataFormatCertPem:
     case xmlSecKeyDataFormatCertDer: 
 	key = xmlSecOpenSSLAppKeyFromCertLoadBIO(bio, format);
@@ -1459,7 +1463,7 @@ xmlSecOpenSSLDefaultPasswordCallback(char *buf, int bufsize, int verify, void *u
     
 	/* if we don't need to verify password then we are done */
         if(verify == 0) {
-	    return(0);
+	    return(strlen(buf));
         }
 
 	if(filename != NULL) {
@@ -1492,8 +1496,8 @@ xmlSecOpenSSLDefaultPasswordCallback(char *buf, int bufsize, int verify, void *u
 	/* check if passwords match */
 	if(strcmp(buf, buf2) == 0) {
 	    memset(buf2, 0, bufsize);
-    	    xmlFree(buf2);
-	    return(-1);	    
+    	xmlFree(buf2);
+	    return(strlen(buf));	    
 	}
 	
 	/* try again */
@@ -1504,3 +1508,15 @@ xmlSecOpenSSLDefaultPasswordCallback(char *buf, int bufsize, int verify, void *u
     return(-1);
 }
 
+static int
+xmlSecOpenSSLDummyPasswordCallback(char *buf, int bufsize, int verify, void *userdata) {
+    char* password = (char*)userdata;
+    
+    if((password == NULL) || (strlen(password) + 1 > bufsize)) {
+        return(-1);
+    }
+    
+    strcpy(buf, password);
+    return (strlen(buf));
+}
+
diff --git a/src/openssl/ciphers.c b/src/openssl/ciphers.c
index 52ea02d..98a23c7 100644
--- a/src/openssl/ciphers.c
+++ b/src/openssl/ciphers.c
@@ -453,7 +453,6 @@ xmlSecOpenSSLEvpBlockCipherCheckId(xmlSecTransformPtr transform) {
 #endif /* XMLSEC_NO_DES */
 
 #ifndef XMLSEC_NO_AES
-#ifndef XMLSEC_OPENSSL_096
     if(xmlSecTransformCheckId(transform, xmlSecOpenSSLTransformAes128CbcId) ||
        xmlSecTransformCheckId(transform, xmlSecOpenSSLTransformAes192CbcId) ||
        xmlSecTransformCheckId(transform, xmlSecOpenSSLTransformAes256CbcId)) {
@@ -461,7 +460,6 @@ xmlSecOpenSSLEvpBlockCipherCheckId(xmlSecTransformPtr transform) {
        return(1);
     }
 #endif /* XMLSEC_NO_AES */
-#endif /* XMLSEC_OPENSSL_096 */
     
     return(0);
 }
@@ -486,7 +484,6 @@ xmlSecOpenSSLEvpBlockCipherInitialize(xmlSecTransformPtr transform) {
 #endif /* XMLSEC_NO_DES */
 
 #ifndef XMLSEC_NO_AES
-#ifndef XMLSEC_OPENSSL_096
     if(transform->id == xmlSecOpenSSLTransformAes128CbcId) {
 	ctx->cipher 	= EVP_aes_128_cbc();	
 	ctx->keyId 	= xmlSecOpenSSLKeyDataAesId;
@@ -498,7 +495,6 @@ xmlSecOpenSSLEvpBlockCipherInitialize(xmlSecTransformPtr transform) {
 	ctx->keyId 	= xmlSecOpenSSLKeyDataAesId;
     } else 
 #endif /* XMLSEC_NO_AES */
-#endif /* XMLSEC_OPENSSL_096 */
 
     if(1) {
 	xmlSecError(XMLSEC_ERRORS_HERE, 
@@ -693,7 +689,6 @@ xmlSecOpenSSLEvpBlockCipherExecute(xmlSecTransformPtr transform, int last, xmlSe
 
 
 #ifndef XMLSEC_NO_AES
-#ifndef XMLSEC_OPENSSL_096
 /*********************************************************************
  *
  * AES CBC cipher transforms
@@ -817,7 +812,6 @@ xmlSecOpenSSLTransformAes256CbcGetKlass(void) {
 }
 
 #endif /* XMLSEC_NO_AES */
-#endif /* XMLSEC_OPENSSL_096 */
 
 #ifndef XMLSEC_NO_DES
 static xmlSecTransformKlass xmlSecOpenSSLDes3CbcKlass = {
diff --git a/src/openssl/crypto.c b/src/openssl/crypto.c
index b1460d7..01ad155 100644
--- a/src/openssl/crypto.c
+++ b/src/openssl/crypto.c
@@ -59,9 +59,7 @@ xmlSecCryptoGetFunctions_openssl(void) {
      * Key data ids
      */
 #ifndef XMLSEC_NO_AES    
-#ifndef XMLSEC_OPENSSL_096
     gXmlSecOpenSSLFunctions->keyDataAesGetKlass		= xmlSecOpenSSLKeyDataAesGetKlass;
-#endif /* XMLSEC_OPENSSL_096 */    
 #endif /* XMLSEC_NO_AES */
 
 #ifndef XMLSEC_NO_DES    
@@ -95,45 +93,123 @@ xmlSecCryptoGetFunctions_openssl(void) {
     /**
      * Crypto transforms ids
      */
+    /******************************* AES ********************************/
 #ifndef XMLSEC_NO_AES    
-#ifndef XMLSEC_OPENSSL_096
     gXmlSecOpenSSLFunctions->transformAes128CbcGetKlass 	= xmlSecOpenSSLTransformAes128CbcGetKlass;
     gXmlSecOpenSSLFunctions->transformAes192CbcGetKlass 	= xmlSecOpenSSLTransformAes192CbcGetKlass;
     gXmlSecOpenSSLFunctions->transformAes256CbcGetKlass 	= xmlSecOpenSSLTransformAes256CbcGetKlass;
     gXmlSecOpenSSLFunctions->transformKWAes128GetKlass 		= xmlSecOpenSSLTransformKWAes128GetKlass;
     gXmlSecOpenSSLFunctions->transformKWAes192GetKlass 		= xmlSecOpenSSLTransformKWAes192GetKlass;
     gXmlSecOpenSSLFunctions->transformKWAes256GetKlass 		= xmlSecOpenSSLTransformKWAes256GetKlass;
-#endif /* XMLSEC_OPENSSL_096 */    
 #endif /* XMLSEC_NO_AES */
 
+    /******************************* DES ********************************/
 #ifndef XMLSEC_NO_DES    
     gXmlSecOpenSSLFunctions->transformDes3CbcGetKlass 		= xmlSecOpenSSLTransformDes3CbcGetKlass;
     gXmlSecOpenSSLFunctions->transformKWDes3GetKlass 		= xmlSecOpenSSLTransformKWDes3GetKlass;
 #endif /* XMLSEC_NO_DES */
 
+
+    /******************************* DSA ********************************/
 #ifndef XMLSEC_NO_DSA
+#ifndef XMLSEC_NO_SHA1    
     gXmlSecOpenSSLFunctions->transformDsaSha1GetKlass 		= xmlSecOpenSSLTransformDsaSha1GetKlass;
+#endif /* XMLSEC_NO_SHA1 */
 #endif /* XMLSEC_NO_DSA */
 
+    /******************************* HMAC ********************************/
 #ifndef XMLSEC_NO_HMAC
-    gXmlSecOpenSSLFunctions->transformHmacSha1GetKlass 		= xmlSecOpenSSLTransformHmacSha1GetKlass;
-    gXmlSecOpenSSLFunctions->transformHmacRipemd160GetKlass 	= xmlSecOpenSSLTransformHmacRipemd160GetKlass;
+#ifndef XMLSEC_NO_MD5
     gXmlSecOpenSSLFunctions->transformHmacMd5GetKlass 		= xmlSecOpenSSLTransformHmacMd5GetKlass;
+#endif /* XMLSEC_NO_MD5 */
+
+#ifndef XMLSEC_NO_RIPEMD160
+    gXmlSecOpenSSLFunctions->transformHmacRipemd160GetKlass 	= xmlSecOpenSSLTransformHmacRipemd160GetKlass;
+#endif /* XMLSEC_NO_RIPEMD160 */
+
+#ifndef XMLSEC_NO_SHA1    
+    gXmlSecOpenSSLFunctions->transformHmacSha1GetKlass 		= xmlSecOpenSSLTransformHmacSha1GetKlass;
+#endif /* XMLSEC_NO_SHA1 */
+
+#ifndef XMLSEC_NO_SHA224
+    gXmlSecOpenSSLFunctions->transformHmacSha224GetKlass 	= xmlSecOpenSSLTransformHmacSha224GetKlass;
+#endif /* XMLSEC_NO_SHA224 */
+
+#ifndef XMLSEC_NO_SHA256
+    gXmlSecOpenSSLFunctions->transformHmacSha256GetKlass 	= xmlSecOpenSSLTransformHmacSha256GetKlass;
+#endif /* XMLSEC_NO_SHA256 */
+
+#ifndef XMLSEC_NO_SHA384
+    gXmlSecOpenSSLFunctions->transformHmacSha384GetKlass 	= xmlSecOpenSSLTransformHmacSha384GetKlass;
+#endif /* XMLSEC_NO_SHA384 */
+
+#ifndef XMLSEC_NO_SHA512
+    gXmlSecOpenSSLFunctions->transformHmacSha512GetKlass 	= xmlSecOpenSSLTransformHmacSha512GetKlass;
+#endif /* XMLSEC_NO_SHA512 */
+
+
 #endif /* XMLSEC_NO_HMAC */
 
+    /******************************* MD5 ********************************/
+#ifndef XMLSEC_NO_MD5
+    gXmlSecOpenSSLFunctions->transformMd5GetKlass 		= xmlSecOpenSSLTransformMd5GetKlass;
+#endif /* XMLSEC_NO_MD5 */
+
+    /******************************* RIPEMD160 ********************************/
 #ifndef XMLSEC_NO_RIPEMD160
     gXmlSecOpenSSLFunctions->transformRipemd160GetKlass 	= xmlSecOpenSSLTransformRipemd160GetKlass;
 #endif /* XMLSEC_NO_RIPEMD160 */
 
+    /******************************* RSA ********************************/
 #ifndef XMLSEC_NO_RSA
+#ifndef XMLSEC_NO_MD5
+    gXmlSecOpenSSLFunctions->transformRsaMd5GetKlass 		= xmlSecOpenSSLTransformRsaMd5GetKlass;
+#endif /* XMLSEC_NO_MD5 */
+
+#ifndef XMLSEC_NO_RIPEMD160
+    gXmlSecOpenSSLFunctions->transformRsaRipemd160GetKlass	= xmlSecOpenSSLTransformRsaRipemd160GetKlass;
+#endif /* XMLSEC_NO_RIPEMD160 */
+
+#ifndef XMLSEC_NO_SHA1    
     gXmlSecOpenSSLFunctions->transformRsaSha1GetKlass 		= xmlSecOpenSSLTransformRsaSha1GetKlass;
+#endif /* XMLSEC_NO_SHA1 */
+
+#ifndef XMLSEC_NO_SHA224    
+    gXmlSecOpenSSLFunctions->transformRsaSha224GetKlass		= xmlSecOpenSSLTransformRsaSha224GetKlass;
+#endif /* XMLSEC_NO_SHA224 */
+
+#ifndef XMLSEC_NO_SHA256    
+    gXmlSecOpenSSLFunctions->transformRsaSha256GetKlass		= xmlSecOpenSSLTransformRsaSha256GetKlass;
+#endif /* XMLSEC_NO_SHA256 */
+
+#ifndef XMLSEC_NO_SHA384    
+    gXmlSecOpenSSLFunctions->transformRsaSha384GetKlass 	= xmlSecOpenSSLTransformRsaSha384GetKlass;
+#endif /* XMLSEC_NO_SHA384 */
+
+#ifndef XMLSEC_NO_SHA512
+    gXmlSecOpenSSLFunctions->transformRsaSha512GetKlass 	= xmlSecOpenSSLTransformRsaSha512GetKlass;
+#endif /* XMLSEC_NO_SHA512 */
+
     gXmlSecOpenSSLFunctions->transformRsaPkcs1GetKlass 		= xmlSecOpenSSLTransformRsaPkcs1GetKlass;
     gXmlSecOpenSSLFunctions->transformRsaOaepGetKlass 		= xmlSecOpenSSLTransformRsaOaepGetKlass;
 #endif /* XMLSEC_NO_RSA */
 
+    /******************************* SHA ********************************/
 #ifndef XMLSEC_NO_SHA1    
     gXmlSecOpenSSLFunctions->transformSha1GetKlass 		= xmlSecOpenSSLTransformSha1GetKlass;
 #endif /* XMLSEC_NO_SHA1 */
+#ifndef XMLSEC_NO_SHA224
+    gXmlSecOpenSSLFunctions->transformSha224GetKlass 		= xmlSecOpenSSLTransformSha224GetKlass;
+#endif /* XMLSEC_NO_SHA224 */
+#ifndef XMLSEC_NO_SHA256
+    gXmlSecOpenSSLFunctions->transformSha256GetKlass 		= xmlSecOpenSSLTransformSha256GetKlass;
+#endif /* XMLSEC_NO_SHA256 */
+#ifndef XMLSEC_NO_SHA384
+    gXmlSecOpenSSLFunctions->transformSha384GetKlass 		= xmlSecOpenSSLTransformSha384GetKlass;
+#endif /* XMLSEC_NO_SHA384 */
+#ifndef XMLSEC_NO_SHA512
+    gXmlSecOpenSSLFunctions->transformSha512GetKlass 		= xmlSecOpenSSLTransformSha512GetKlass;
+#endif /* XMLSEC_NO_SHA512 */
 
     /**
      * High level routines form xmlsec command line utility
@@ -154,7 +230,7 @@ xmlSecCryptoGetFunctions_openssl(void) {
 #endif /* XMLSEC_NO_X509 */
     gXmlSecOpenSSLFunctions->cryptoAppKeyLoad 			= xmlSecOpenSSLAppKeyLoad; 
     gXmlSecOpenSSLFunctions->cryptoAppKeyLoadMemory		= xmlSecOpenSSLAppKeyLoadMemory; 
-    gXmlSecOpenSSLFunctions->cryptoAppDefaultPwdCallback	= (void*)xmlSecOpenSSLAppGetDefaultPwdCallback;
+    gXmlSecOpenSSLFunctions->cryptoAppDefaultPwdCallback	= (void*)xmlSecOpenSSLAppGetDefaultPwdCallback();
 
     return(gXmlSecOpenSSLFunctions);
 }
diff --git a/src/openssl/digests.c b/src/openssl/digests.c
index 0e451d8..71cef7b 100644
--- a/src/openssl/digests.c
+++ b/src/openssl/digests.c
@@ -60,18 +60,53 @@ static int	xmlSecOpenSSLEvpDigestCheckId		(xmlSecTransformPtr transform);
 static int
 xmlSecOpenSSLEvpDigestCheckId(xmlSecTransformPtr transform) {
 
+#ifndef XMLSEC_NO_MD5
+    if(xmlSecTransformCheckId(transform, xmlSecOpenSSLTransformMd5Id)) {
+	return(1);
+    } else
+#endif /* XMLSEC_NO_MD5 */    
+
+#ifndef XMLSEC_NO_RIPEMD160
+    if(xmlSecTransformCheckId(transform, xmlSecOpenSSLTransformRipemd160Id)) {
+	return(1);
+    } else
+#endif /* XMLSEC_NO_RIPEMD160 */    
+
 #ifndef XMLSEC_NO_SHA1
     if(xmlSecTransformCheckId(transform, xmlSecOpenSSLTransformSha1Id)) {
 	return(1);
-    }
+    } else
 #endif /* XMLSEC_NO_SHA1 */    
+
+#ifndef XMLSEC_NO_SHA224
+    if(xmlSecTransformCheckId(transform, xmlSecOpenSSLTransformSha224Id)) {
+	return(1);
+    } else
+#endif /* XMLSEC_NO_SHA224 */    
     
-#ifndef XMLSEC_NO_RIPEMD160
-    if(xmlSecTransformCheckId(transform, xmlSecOpenSSLTransformRipemd160Id)) {
+#ifndef XMLSEC_NO_SHA256
+    if(xmlSecTransformCheckId(transform, xmlSecOpenSSLTransformSha256Id)) {
 	return(1);
-    }
-#endif /* XMLSEC_NO_RIPEMD160 */    
+    } else
+#endif /* XMLSEC_NO_SHA256 */    
 
+#ifndef XMLSEC_NO_SHA384
+    if(xmlSecTransformCheckId(transform, xmlSecOpenSSLTransformSha384Id)) {
+	return(1);
+    } else
+#endif /* XMLSEC_NO_SHA384 */    
+
+#ifndef XMLSEC_NO_SHA512
+    if(xmlSecTransformCheckId(transform, xmlSecOpenSSLTransformSha512Id)) {
+	return(1);
+    } else
+#endif /* XMLSEC_NO_SHA512 */    
+
+
+    {
+	return(0);
+    }
+    
     return(0);
 }
 
@@ -88,11 +123,11 @@ xmlSecOpenSSLEvpDigestInitialize(xmlSecTransformPtr transform) {
     /* initialize context */
     memset(ctx, 0, sizeof(xmlSecOpenSSLDigestCtx));
 
-#ifndef XMLSEC_NO_SHA1
-    if(xmlSecTransformCheckId(transform, xmlSecOpenSSLTransformSha1Id)) {
-        ctx->digest = EVP_sha1();
+#ifndef XMLSEC_NO_MD5
+    if(xmlSecTransformCheckId(transform, xmlSecOpenSSLTransformMd5Id)) {
+        ctx->digest = EVP_md5();
     } else 
-#endif /* XMLSEC_NO_SHA1 */    
+#endif /* XMLSEC_NO_MD5 */
     
 #ifndef XMLSEC_NO_RIPEMD160 
     if(xmlSecTransformCheckId(transform, xmlSecOpenSSLTransformRipemd160Id)) {
@@ -100,6 +135,36 @@ xmlSecOpenSSLEvpDigestInitialize(xmlSecTransformPtr transform) {
     } else 
 #endif /* XMLSEC_NO_RIPEMD160 */
     
+#ifndef XMLSEC_NO_SHA1
+    if(xmlSecTransformCheckId(transform, xmlSecOpenSSLTransformSha1Id)) {
+        ctx->digest = EVP_sha1();
+    } else 
+#endif /* XMLSEC_NO_SHA1 */    
+
+#ifndef XMLSEC_NO_SHA224
+    if(xmlSecTransformCheckId(transform, xmlSecOpenSSLTransformSha224Id)) {
+        ctx->digest = EVP_sha224();
+    } else 
+#endif /* XMLSEC_NO_SHA224 */    
+
+#ifndef XMLSEC_NO_SHA256
+    if(xmlSecTransformCheckId(transform, xmlSecOpenSSLTransformSha256Id)) {
+        ctx->digest = EVP_sha256();
+    } else 
+#endif /* XMLSEC_NO_SHA256 */    
+    
+#ifndef XMLSEC_NO_SHA384
+    if(xmlSecTransformCheckId(transform, xmlSecOpenSSLTransformSha384Id)) {
+        ctx->digest = EVP_sha384();
+    } else 
+#endif /* XMLSEC_NO_SHA384 */    
+
+#ifndef XMLSEC_NO_SHA512
+    if(xmlSecTransformCheckId(transform, xmlSecOpenSSLTransformSha512Id)) {
+        ctx->digest = EVP_sha512();
+    } else 
+#endif /* XMLSEC_NO_SHA512 */    
+
     {
 	xmlSecError(XMLSEC_ERRORS_HERE, 
 		    xmlSecErrorsSafeString(xmlSecTransformGetName(transform)),
@@ -289,6 +354,52 @@ xmlSecOpenSSLEvpDigestExecute(xmlSecTransformPtr transform, int last, xmlSecTran
 }
 
 
+#ifndef XMLSEC_NO_MD5
+/******************************************************************************
+ *
+ * MD5
+ *
+ *****************************************************************************/
+static xmlSecTransformKlass xmlSecOpenSSLMd5Klass = {
+    /* klass/object sizes */
+    sizeof(xmlSecTransformKlass),		/* xmlSecSize klassSize */
+    xmlSecOpenSSLEvpDigestSize,			/* xmlSecSize objSize */
+
+    xmlSecNameMd5,				/* const xmlChar* name; */
+    xmlSecHrefMd5, 				/* const xmlChar* href; */
+    xmlSecTransformUsageDigestMethod,		/* xmlSecTransformUsage usage; */
+    
+    xmlSecOpenSSLEvpDigestInitialize,		/* xmlSecTransformInitializeMethod initialize; */
+    xmlSecOpenSSLEvpDigestFinalize,		/* xmlSecTransformFinalizeMethod finalize; */
+    NULL,					/* xmlSecTransformNodeReadMethod readNode; */
+    NULL,					/* xmlSecTransformNodeWriteMethod writeNode; */
+    NULL,					/* xmlSecTransformSetKeyReqMethod setKeyReq; */
+    NULL,					/* xmlSecTransformSetKeyMethod setKey; */
+    xmlSecOpenSSLEvpDigestVerify,		/* xmlSecTransformVerifyMethod verify; */
+    xmlSecTransformDefaultGetDataType,		/* xmlSecTransformGetDataTypeMethod getDataType; */
+    xmlSecTransformDefaultPushBin,		/* xmlSecTransformPushBinMethod pushBin; */
+    xmlSecTransformDefaultPopBin,		/* xmlSecTransformPopBinMethod popBin; */
+    NULL,					/* xmlSecTransformPushXmlMethod pushXml; */
+    NULL,					/* xmlSecTransformPopXmlMethod popXml; */
+    xmlSecOpenSSLEvpDigestExecute,		/* xmlSecTransformExecuteMethod execute; */
+    
+    NULL,					/* void* reserved0; */
+    NULL,					/* void* reserved1; */
+};
+
+/** 
+ * xmlSecOpenSSLTransformMd5GetKlass:
+ *
+ * MD5 digest transform klass.
+ *
+ * Returns pointer to MD5 digest transform klass.
+ */
+xmlSecTransformId 
+xmlSecOpenSSLTransformMd5GetKlass(void) {
+    return(&xmlSecOpenSSLMd5Klass);
+}
+#endif /* XMLSEC_NO_MD5 */
+
 #ifndef XMLSEC_NO_RIPEMD160
 /******************************************************************************
  *
@@ -381,3 +492,188 @@ xmlSecOpenSSLTransformSha1GetKlass(void) {
     return(&xmlSecOpenSSLSha1Klass);
 }
 #endif /* XMLSEC_NO_SHA1 */
+
+#ifndef XMLSEC_NO_SHA224
+/******************************************************************************
+ *
+ * SHA224
+ *
+ *****************************************************************************/
+static xmlSecTransformKlass xmlSecOpenSSLSha224Klass = {
+    /* klass/object sizes */
+    sizeof(xmlSecTransformKlass),		/* xmlSecSize klassSize */
+    xmlSecOpenSSLEvpDigestSize,			/* xmlSecSize objSize */
+
+    xmlSecNameSha224,				/* const xmlChar* name; */
+    xmlSecHrefSha224, 				/* const xmlChar* href; */
+    xmlSecTransformUsageDigestMethod,		/* xmlSecTransformUsage usage; */
+    
+    xmlSecOpenSSLEvpDigestInitialize,		/* xmlSecTransformInitializeMethod initialize; */
+    xmlSecOpenSSLEvpDigestFinalize,		/* xmlSecTransformFinalizeMethod finalize; */
+    NULL,					/* xmlSecTransformNodeReadMethod readNode; */
+    NULL,					/* xmlSecTransformNodeWriteMethod writeNode; */
+    NULL,					/* xmlSecTransformSetKeyReqMethod setKeyReq; */
+    NULL,					/* xmlSecTransformSetKeyMethod setKey; */
+    xmlSecOpenSSLEvpDigestVerify,		/* xmlSecTransformVerifyMethod verify; */
+    xmlSecTransformDefaultGetDataType,		/* xmlSecTransformGetDataTypeMethod getDataType; */
+    xmlSecTransformDefaultPushBin,		/* xmlSecTransformPushBinMethod pushBin; */
+    xmlSecTransformDefaultPopBin,		/* xmlSecTransformPopBinMethod popBin; */
+    NULL,					/* xmlSecTransformPushXmlMethod pushXml; */
+    NULL,					/* xmlSecTransformPopXmlMethod popXml; */
+    xmlSecOpenSSLEvpDigestExecute,		/* xmlSecTransformExecuteMethod execute; */
+    
+    NULL,					/* void* reserved0; */
+    NULL,					/* void* reserved1; */
+};
+
+/** 
+ * xmlSecOpenSSLTransformSha224GetKlass:
+ *
+ * SHA-224 digest transform klass.
+ *
+ * Returns pointer to SHA-224 digest transform klass.
+ */
+xmlSecTransformId 
+xmlSecOpenSSLTransformSha224GetKlass(void) {
+    return(&xmlSecOpenSSLSha224Klass);
+}
+#endif /* XMLSEC_NO_SHA224 */
+
+#ifndef XMLSEC_NO_SHA256
+/******************************************************************************
+ *
+ * SHA256
+ *
+ *****************************************************************************/
+static xmlSecTransformKlass xmlSecOpenSSLSha256Klass = {
+    /* klass/object sizes */
+    sizeof(xmlSecTransformKlass),		/* xmlSecSize klassSize */
+    xmlSecOpenSSLEvpDigestSize,			/* xmlSecSize objSize */
+
+    xmlSecNameSha256,				/* const xmlChar* name; */
+    xmlSecHrefSha256, 				/* const xmlChar* href; */
+    xmlSecTransformUsageDigestMethod,		/* xmlSecTransformUsage usage; */
+    
+    xmlSecOpenSSLEvpDigestInitialize,		/* xmlSecTransformInitializeMethod initialize; */
+    xmlSecOpenSSLEvpDigestFinalize,		/* xmlSecTransformFinalizeMethod finalize; */
+    NULL,					/* xmlSecTransformNodeReadMethod readNode; */
+    NULL,					/* xmlSecTransformNodeWriteMethod writeNode; */
+    NULL,					/* xmlSecTransformSetKeyReqMethod setKeyReq; */
+    NULL,					/* xmlSecTransformSetKeyMethod setKey; */
+    xmlSecOpenSSLEvpDigestVerify,		/* xmlSecTransformVerifyMethod verify; */
+    xmlSecTransformDefaultGetDataType,		/* xmlSecTransformGetDataTypeMethod getDataType; */
+    xmlSecTransformDefaultPushBin,		/* xmlSecTransformPushBinMethod pushBin; */
+    xmlSecTransformDefaultPopBin,		/* xmlSecTransformPopBinMethod popBin; */
+    NULL,					/* xmlSecTransformPushXmlMethod pushXml; */
+    NULL,					/* xmlSecTransformPopXmlMethod popXml; */
+    xmlSecOpenSSLEvpDigestExecute,		/* xmlSecTransformExecuteMethod execute; */
+    
+    NULL,					/* void* reserved0; */
+    NULL,					/* void* reserved1; */
+};
+
+/** 
+ * xmlSecOpenSSLTransformSha256GetKlass:
+ *
+ * SHA-256 digest transform klass.
+ *
+ * Returns pointer to SHA-256 digest transform klass.
+ */
+xmlSecTransformId 
+xmlSecOpenSSLTransformSha256GetKlass(void) {
+    return(&xmlSecOpenSSLSha256Klass);
+}
+#endif /* XMLSEC_NO_SHA256 */
+
+#ifndef XMLSEC_NO_SHA384
+/******************************************************************************
+ *
+ * SHA384
+ *
+ *****************************************************************************/
+static xmlSecTransformKlass xmlSecOpenSSLSha384Klass = {
+    /* klass/object sizes */
+    sizeof(xmlSecTransformKlass),		/* xmlSecSize klassSize */
+    xmlSecOpenSSLEvpDigestSize,			/* xmlSecSize objSize */
+
+    xmlSecNameSha384,				/* const xmlChar* name; */
+    xmlSecHrefSha384, 				/* const xmlChar* href; */
+    xmlSecTransformUsageDigestMethod,		/* xmlSecTransformUsage usage; */
+    
+    xmlSecOpenSSLEvpDigestInitialize,		/* xmlSecTransformInitializeMethod initialize; */
+    xmlSecOpenSSLEvpDigestFinalize,		/* xmlSecTransformFinalizeMethod finalize; */
+    NULL,					/* xmlSecTransformNodeReadMethod readNode; */
+    NULL,					/* xmlSecTransformNodeWriteMethod writeNode; */
+    NULL,					/* xmlSecTransformSetKeyReqMethod setKeyReq; */
+    NULL,					/* xmlSecTransformSetKeyMethod setKey; */
+    xmlSecOpenSSLEvpDigestVerify,		/* xmlSecTransformVerifyMethod verify; */
+    xmlSecTransformDefaultGetDataType,		/* xmlSecTransformGetDataTypeMethod getDataType; */
+    xmlSecTransformDefaultPushBin,		/* xmlSecTransformPushBinMethod pushBin; */
+    xmlSecTransformDefaultPopBin,		/* xmlSecTransformPopBinMethod popBin; */
+    NULL,					/* xmlSecTransformPushXmlMethod pushXml; */
+    NULL,					/* xmlSecTransformPopXmlMethod popXml; */
+    xmlSecOpenSSLEvpDigestExecute,		/* xmlSecTransformExecuteMethod execute; */
+    
+    NULL,					/* void* reserved0; */
+    NULL,					/* void* reserved1; */
+};
+
+/** 
+ * xmlSecOpenSSLTransformSha384GetKlass:
+ *
+ * SHA-384 digest transform klass.
+ *
+ * Returns pointer to SHA-384 digest transform klass.
+ */
+xmlSecTransformId 
+xmlSecOpenSSLTransformSha384GetKlass(void) {
+    return(&xmlSecOpenSSLSha384Klass);
+}
+#endif /* XMLSEC_NO_SHA384 */
+
+#ifndef XMLSEC_NO_SHA512
+/******************************************************************************
+ *
+ * SHA512
+ *
+ *****************************************************************************/
+static xmlSecTransformKlass xmlSecOpenSSLSha512Klass = {
+    /* klass/object sizes */
+    sizeof(xmlSecTransformKlass),		/* xmlSecSize klassSize */
+    xmlSecOpenSSLEvpDigestSize,			/* xmlSecSize objSize */
+
+    xmlSecNameSha512,				/* const xmlChar* name; */
+    xmlSecHrefSha512, 				/* const xmlChar* href; */
+    xmlSecTransformUsageDigestMethod,		/* xmlSecTransformUsage usage; */
+    
+    xmlSecOpenSSLEvpDigestInitialize,		/* xmlSecTransformInitializeMethod initialize; */
+    xmlSecOpenSSLEvpDigestFinalize,		/* xmlSecTransformFinalizeMethod finalize; */
+    NULL,					/* xmlSecTransformNodeReadMethod readNode; */
+    NULL,					/* xmlSecTransformNodeWriteMethod writeNode; */
+    NULL,					/* xmlSecTransformSetKeyReqMethod setKeyReq; */
+    NULL,					/* xmlSecTransformSetKeyMethod setKey; */
+    xmlSecOpenSSLEvpDigestVerify,		/* xmlSecTransformVerifyMethod verify; */
+    xmlSecTransformDefaultGetDataType,		/* xmlSecTransformGetDataTypeMethod getDataType; */
+    xmlSecTransformDefaultPushBin,		/* xmlSecTransformPushBinMethod pushBin; */
+    xmlSecTransformDefaultPopBin,		/* xmlSecTransformPopBinMethod popBin; */
+    NULL,					/* xmlSecTransformPushXmlMethod pushXml; */
+    NULL,					/* xmlSecTransformPopXmlMethod popXml; */
+    xmlSecOpenSSLEvpDigestExecute,		/* xmlSecTransformExecuteMethod execute; */
+    
+    NULL,					/* void* reserved0; */
+    NULL,					/* void* reserved1; */
+};
+
+/** 
+ * xmlSecOpenSSLTransformSha512GetKlass:
+ *
+ * SHA-512 digest transform klass.
+ *
+ * Returns pointer to SHA-512 digest transform klass.
+ */
+xmlSecTransformId 
+xmlSecOpenSSLTransformSha512GetKlass(void) {
+    return(&xmlSecOpenSSLSha512Klass);
+}
+#endif /* XMLSEC_NO_SHA512 */
+
diff --git a/src/openssl/evp.c b/src/openssl/evp.c
index 1c60665..3edaa8a 100644
--- a/src/openssl/evp.c
+++ b/src/openssl/evp.c
@@ -935,6 +935,15 @@ xmlSecOpenSSLKeyDataDsaGetType(xmlSecKeyDataPtr data) {
        
         if(dsa->priv_key != NULL) {
 	    return(xmlSecKeyDataTypePrivate | xmlSecKeyDataTypePublic);
+	} else if(dsa->engine != NULL) {
+	    /**
+	     * !!! HACK !!! Also see RSA key
+	     *
+	     * We assume here that engine *always* has private key.
+	     * This might be incorrect but it seems that there is no
+	     * way to ask engine if given key is private or not.
+	     */
+	    return(xmlSecKeyDataTypePrivate | xmlSecKeyDataTypePublic);
 	} else {
 	    return(xmlSecKeyDataTypePublic);
 	}
@@ -1498,6 +1507,15 @@ xmlSecOpenSSLKeyDataRsaGetType(xmlSecKeyDataPtr data) {
     if((rsa != NULL) && (rsa->n != NULL) && (rsa->e != NULL)) {
 	if(rsa->d != NULL) {
 	    return(xmlSecKeyDataTypePrivate | xmlSecKeyDataTypePublic);
+	} else if(rsa->engine != NULL) {
+	    /**
+	     * !!! HACK !!! Also see DSA key
+	     *
+	     * We assume here that engine *always* has private key.
+	     * This might be incorrect but it seems that there is no
+	     * way to ask engine if given key is private or not.
+	     */
+	    return(xmlSecKeyDataTypePrivate | xmlSecKeyDataTypePublic);
 	} else {
 	    return(xmlSecKeyDataTypePublic);
 	}
diff --git a/src/openssl/hmac.c b/src/openssl/hmac.c
index 472a030..492663b 100644
--- a/src/openssl/hmac.c
+++ b/src/openssl/hmac.c
@@ -59,6 +59,7 @@ struct _xmlSecOpenSSLHmacCtx {
 #define xmlSecOpenSSLHmacSize	\
     (sizeof(xmlSecTransform) + sizeof(xmlSecOpenSSLHmacCtx))
 
+static int	xmlSecOpenSSLHmacCheckId			(xmlSecTransformPtr transform);
 static int	xmlSecOpenSSLHmacInitialize			(xmlSecTransformPtr transform);
 static void	xmlSecOpenSSLHmacFinalize			(xmlSecTransformPtr transform);
 static int 	xmlSecOpenSSLHmacNodeRead			(xmlSecTransformPtr transform,
@@ -77,10 +78,58 @@ static int	xmlSecOpenSSLHmacExecute			(xmlSecTransformPtr transform,
 								 xmlSecTransformCtxPtr transformCtx);
 
 
-#define xmlSecOpenSSLHmacCheckId(transform) \
-    (xmlSecTransformCheckId((transform), xmlSecOpenSSLTransformHmacSha1Id) || \
-     xmlSecTransformCheckId((transform), xmlSecOpenSSLTransformHmacRipemd160Id) || \
-     xmlSecTransformCheckId((transform), xmlSecOpenSSLTransformHmacMd5Id))
+static int
+xmlSecOpenSSLHmacCheckId(xmlSecTransformPtr transform) {
+
+#ifndef XMLSEC_NO_SHA1
+    if(xmlSecTransformCheckId(transform, xmlSecOpenSSLTransformHmacSha1Id)) {
+	return(1);
+    } else
+#endif /* XMLSEC_NO_SHA1 */    
+
+#ifndef XMLSEC_NO_SHA224
+    if(xmlSecTransformCheckId(transform, xmlSecOpenSSLTransformHmacSha224Id)) {
+	return(1);
+    } else
+#endif /* XMLSEC_NO_SHA224 */    
+    
+#ifndef XMLSEC_NO_SHA256
+    if(xmlSecTransformCheckId(transform, xmlSecOpenSSLTransformHmacSha256Id)) {
+	return(1);
+    } else
+#endif /* XMLSEC_NO_SHA256 */    
+
+#ifndef XMLSEC_NO_SHA384
+    if(xmlSecTransformCheckId(transform, xmlSecOpenSSLTransformHmacSha384Id)) {
+	return(1);
+    } else
+#endif /* XMLSEC_NO_SHA384 */    
+
+#ifndef XMLSEC_NO_SHA512
+    if(xmlSecTransformCheckId(transform, xmlSecOpenSSLTransformHmacSha512Id)) {
+	return(1);
+    } else
+#endif /* XMLSEC_NO_SHA512 */    
+
+#ifndef XMLSEC_NO_RIPEMD160
+    if(xmlSecTransformCheckId(transform, xmlSecOpenSSLTransformHmacRipemd160Id)) {
+	return(1);
+    } else
+#endif /* XMLSEC_NO_RIPEMD160 */    
+
+#ifndef XMLSEC_NO_MD5
+    if(xmlSecTransformCheckId(transform, xmlSecOpenSSLTransformHmacMd5Id)) {
+	return(1);
+    } else
+#endif /* XMLSEC_NO_MD5 */    
+
+    {
+	return(0);
+    }
+    
+    return(0);
+}
+
 
 
 static int 
@@ -95,14 +144,50 @@ xmlSecOpenSSLHmacInitialize(xmlSecTransformPtr transform) {
     
     /* initialize context */
     memset(ctx, 0, sizeof(xmlSecOpenSSLHmacCtx));
-    
+
+#ifndef XMLSEC_NO_SHA1
     if(xmlSecTransformCheckId(transform, xmlSecOpenSSLTransformHmacSha1Id)) {
-	ctx->hmacDgst = EVP_sha1();
-    } else if(xmlSecTransformCheckId(transform, xmlSecOpenSSLTransformHmacRipemd160Id)) {
-	ctx->hmacDgst = EVP_ripemd160();	   
-    } else if(xmlSecTransformCheckId(transform, xmlSecOpenSSLTransformHmacMd5Id)) {
-	ctx->hmacDgst = EVP_md5();
-    } else {
+        ctx->hmacDgst = EVP_sha1();
+    } else 
+#endif /* XMLSEC_NO_SHA1 */    
+
+#ifndef XMLSEC_NO_SHA224
+    if(xmlSecTransformCheckId(transform, xmlSecOpenSSLTransformHmacSha224Id)) {
+        ctx->hmacDgst = EVP_sha224();
+    } else 
+#endif /* XMLSEC_NO_SHA224 */    
+
+#ifndef XMLSEC_NO_SHA256
+    if(xmlSecTransformCheckId(transform, xmlSecOpenSSLTransformHmacSha256Id)) {
+        ctx->hmacDgst = EVP_sha256();
+    } else 
+#endif /* XMLSEC_NO_SHA256 */    
+    
+#ifndef XMLSEC_NO_SHA384
+    if(xmlSecTransformCheckId(transform, xmlSecOpenSSLTransformHmacSha384Id)) {
+        ctx->hmacDgst = EVP_sha384();
+    } else 
+#endif /* XMLSEC_NO_SHA384 */    
+
+#ifndef XMLSEC_NO_SHA512
+    if(xmlSecTransformCheckId(transform, xmlSecOpenSSLTransformHmacSha512Id)) {
+        ctx->hmacDgst = EVP_sha512();
+    } else 
+#endif /* XMLSEC_NO_SHA512 */    
+
+#ifndef XMLSEC_NO_RIPEMD160 
+    if(xmlSecTransformCheckId(transform, xmlSecOpenSSLTransformHmacRipemd160Id)) {
+        ctx->hmacDgst = EVP_ripemd160();
+    } else 
+#endif /* XMLSEC_NO_RIPEMD160 */
+
+#ifndef XMLSEC_NO_MD5
+    if(xmlSecTransformCheckId(transform, xmlSecOpenSSLTransformHmacMd5Id)) {
+        ctx->hmacDgst = EVP_md5();
+    } else 
+#endif /* XMLSEC_NO_MD5 */
+    
+    {
 	xmlSecError(XMLSEC_ERRORS_HERE, 
 		    xmlSecErrorsSafeString(xmlSecTransformGetName(transform)),
 		    NULL,
@@ -380,6 +465,98 @@ xmlSecOpenSSLHmacExecute(xmlSecTransformPtr transform, int last, xmlSecTransform
     return(0);
 }
 
+#ifndef XMLSEC_NO_MD5 
+
+/** 
+ * HMAC MD5
+ */
+static xmlSecTransformKlass xmlSecOpenSSLHmacMd5Klass = {
+    /* klass/object sizes */
+    sizeof(xmlSecTransformKlass),		/* xmlSecSize klassSize */
+    xmlSecOpenSSLHmacSize,			/* xmlSecSize objSize */
+
+    xmlSecNameHmacMd5,				/* const xmlChar* name; */
+    xmlSecHrefHmacMd5, 				/* const xmlChar* href; */
+    xmlSecTransformUsageSignatureMethod,	/* xmlSecTransformUsage usage; */
+	
+    xmlSecOpenSSLHmacInitialize,		/* xmlSecTransformInitializeMethod initialize; */
+    xmlSecOpenSSLHmacFinalize,			/* xmlSecTransformFinalizeMethod finalize; */
+    xmlSecOpenSSLHmacNodeRead,			/* xmlSecTransformNodeReadMethod readNode; */
+    NULL,					/* xmlSecTransformNodeWriteMethod writeNode; */
+    xmlSecOpenSSLHmacSetKeyReq,			/* xmlSecTransformSetKeyReqMethod setKeyReq; */
+    xmlSecOpenSSLHmacSetKey,			/* xmlSecTransformSetKeyMethod setKey; */
+    xmlSecOpenSSLHmacVerify,			/* xmlSecTransformValidateMethod validate; */
+    xmlSecTransformDefaultGetDataType,		/* xmlSecTransformGetDataTypeMethod getDataType; */
+    xmlSecTransformDefaultPushBin,		/* xmlSecTransformPushBinMethod pushBin; */
+    xmlSecTransformDefaultPopBin,		/* xmlSecTransformPopBinMethod popBin; */
+    NULL,					/* xmlSecTransformPushXmlMethod pushXml; */
+    NULL,					/* xmlSecTransformPopXmlMethod popXml; */
+    xmlSecOpenSSLHmacExecute,			/* xmlSecTransformExecuteMethod execute; */
+    
+    NULL,					/* void* reserved0; */
+    NULL,					/* void* reserved1; */
+};
+
+/** 
+ * xmlSecOpenSSLTransformHmacMd5GetKlass:
+ *
+ * The HMAC-MD5 transform klass.
+ *
+ * Returns the HMAC-MD5 transform klass.
+ */
+xmlSecTransformId 
+xmlSecOpenSSLTransformHmacMd5GetKlass(void) {
+    return(&xmlSecOpenSSLHmacMd5Klass);
+}
+
+#endif /* XMLSEC_NO_MD5 */
+
+
+#ifndef XMLSEC_NO_RIPEMD160 
+/** 
+ * HMAC RIPEMD160 
+ */
+static xmlSecTransformKlass xmlSecOpenSSLHmacRipemd160Klass = {
+    /* klass/object sizes */
+    sizeof(xmlSecTransformKlass),		/* xmlSecSize klassSize */
+    xmlSecOpenSSLHmacSize,			/* xmlSecSize objSize */
+
+    xmlSecNameHmacRipemd160,			/* const xmlChar* name; */
+    xmlSecHrefHmacRipemd160, 			/* const xmlChar* href; */
+    xmlSecTransformUsageSignatureMethod,	/* xmlSecTransformUsage usage; */
+    
+    xmlSecOpenSSLHmacInitialize,		/* xmlSecTransformInitializeMethod initialize; */
+    xmlSecOpenSSLHmacFinalize,			/* xmlSecTransformFinalizeMethod finalize; */
+    xmlSecOpenSSLHmacNodeRead,			/* xmlSecTransformNodeReadMethod readNode; */
+    NULL,					/* xmlSecTransformNodeWriteMethod writeNode; */
+    xmlSecOpenSSLHmacSetKeyReq,			/* xmlSecTransformSetKeyReqMethod setKeyReq; */
+    xmlSecOpenSSLHmacSetKey,			/* xmlSecTransformSetKeyMethod setKey; */
+    xmlSecOpenSSLHmacVerify,			/* xmlSecTransformValidateMethod validate; */
+    xmlSecTransformDefaultGetDataType,		/* xmlSecTransformGetDataTypeMethod getDataType; */
+    xmlSecTransformDefaultPushBin,		/* xmlSecTransformPushBinMethod pushBin; */
+    xmlSecTransformDefaultPopBin,		/* xmlSecTransformPopBinMethod popBin; */
+    NULL,					/* xmlSecTransformPushXmlMethod pushXml; */
+    NULL,					/* xmlSecTransformPopXmlMethod popXml; */
+    xmlSecOpenSSLHmacExecute,			/* xmlSecTransformExecuteMethod execute; */
+    
+    NULL,					/* void* reserved0; */
+    NULL,					/* void* reserved1; */
+};
+
+/** 
+ * xmlSecOpenSSLTransformHmacRipemd160GetKlass:
+ *
+ * The HMAC-RIPEMD160 transform klass.
+ *
+ * Returns the HMAC-RIPEMD160 transform klass.
+ */
+xmlSecTransformId 
+xmlSecOpenSSLTransformHmacRipemd160GetKlass(void) {
+    return(&xmlSecOpenSSLHmacRipemd160Klass);
+}
+#endif /* XMLSEC_NO_RIPEMD160 */
+
+#ifndef XMLSEC_NO_SHA1
 /** 
  * HMAC SHA1
  */
@@ -422,16 +599,19 @@ xmlSecOpenSSLTransformHmacSha1GetKlass(void) {
     return(&xmlSecOpenSSLHmacSha1Klass);
 }
 
+#endif /* XMLSEC_NO_SHA1 */
+
+#ifndef XMLSEC_NO_SHA224
 /** 
- * HMAC RIPEMD160 
+ * HMAC SHA224
  */
-static xmlSecTransformKlass xmlSecOpenSSLHmacRipemd160Klass = {
+static xmlSecTransformKlass xmlSecOpenSSLHmacSha224Klass = {
     /* klass/object sizes */
     sizeof(xmlSecTransformKlass),		/* xmlSecSize klassSize */
     xmlSecOpenSSLHmacSize,			/* xmlSecSize objSize */
 
-    xmlSecNameHmacRipemd160,			/* const xmlChar* name; */
-    xmlSecHrefHmacRipemd160, 			/* const xmlChar* href; */
+    xmlSecNameHmacSha224,			/* const xmlChar* name; */
+    xmlSecHrefHmacSha224, 			/* const xmlChar* href; */
     xmlSecTransformUsageSignatureMethod,	/* xmlSecTransformUsage usage; */
     
     xmlSecOpenSSLHmacInitialize,		/* xmlSecTransformInitializeMethod initialize; */
@@ -453,29 +633,32 @@ static xmlSecTransformKlass xmlSecOpenSSLHmacRipemd160Klass = {
 };
 
 /** 
- * xmlSecOpenSSLTransformHmacRipemd160GetKlass:
+ * xmlSecOpenSSLTransformHmacSha224GetKlass:
  *
- * The HMAC-RIPEMD160 transform klass.
+ * The HMAC-SHA224 transform klass.
  *
- * Returns the HMAC-RIPEMD160 transform klass.
+ * Returns the HMAC-SHA224 transform klass.
  */
 xmlSecTransformId 
-xmlSecOpenSSLTransformHmacRipemd160GetKlass(void) {
-    return(&xmlSecOpenSSLHmacRipemd160Klass);
+xmlSecOpenSSLTransformHmacSha224GetKlass(void) {
+    return(&xmlSecOpenSSLHmacSha224Klass);
 }
 
+#endif /* XMLSEC_NO_SHA224 */
+
+#ifndef XMLSEC_NO_SHA256
 /** 
- * HMAC MD5
+ * HMAC SHA256
  */
-static xmlSecTransformKlass xmlSecOpenSSLHmacMd5Klass = {
+static xmlSecTransformKlass xmlSecOpenSSLHmacSha256Klass = {
     /* klass/object sizes */
     sizeof(xmlSecTransformKlass),		/* xmlSecSize klassSize */
     xmlSecOpenSSLHmacSize,			/* xmlSecSize objSize */
 
-    xmlSecNameHmacMd5,				/* const xmlChar* name; */
-    xmlSecHrefHmacMd5, 				/* const xmlChar* href; */
+    xmlSecNameHmacSha256,			/* const xmlChar* name; */
+    xmlSecHrefHmacSha256, 			/* const xmlChar* href; */
     xmlSecTransformUsageSignatureMethod,	/* xmlSecTransformUsage usage; */
-	
+    
     xmlSecOpenSSLHmacInitialize,		/* xmlSecTransformInitializeMethod initialize; */
     xmlSecOpenSSLHmacFinalize,			/* xmlSecTransformFinalizeMethod finalize; */
     xmlSecOpenSSLHmacNodeRead,			/* xmlSecTransformNodeReadMethod readNode; */
@@ -495,16 +678,109 @@ static xmlSecTransformKlass xmlSecOpenSSLHmacMd5Klass = {
 };
 
 /** 
- * xmlSecOpenSSLTransformHmacMd5GetKlass:
+ * xmlSecOpenSSLTransformHmacSha256GetKlass:
  *
- * The HMAC-MD5 transform klass.
+ * The HMAC-SHA256 transform klass.
  *
- * Returns the HMAC-MD5 transform klass.
+ * Returns the HMAC-SHA256 transform klass.
  */
 xmlSecTransformId 
-xmlSecOpenSSLTransformHmacMd5GetKlass(void) {
-    return(&xmlSecOpenSSLHmacMd5Klass);
+xmlSecOpenSSLTransformHmacSha256GetKlass(void) {
+    return(&xmlSecOpenSSLHmacSha256Klass);
 }
 
+#endif /* XMLSEC_NO_SHA256 */
+
+#ifndef XMLSEC_NO_SHA384
+/** 
+ * HMAC SHA384
+ */
+static xmlSecTransformKlass xmlSecOpenSSLHmacSha384Klass = {
+    /* klass/object sizes */
+    sizeof(xmlSecTransformKlass),		/* xmlSecSize klassSize */
+    xmlSecOpenSSLHmacSize,			/* xmlSecSize objSize */
+
+    xmlSecNameHmacSha384,			/* const xmlChar* name; */
+    xmlSecHrefHmacSha384, 			/* const xmlChar* href; */
+    xmlSecTransformUsageSignatureMethod,	/* xmlSecTransformUsage usage; */
+    
+    xmlSecOpenSSLHmacInitialize,		/* xmlSecTransformInitializeMethod initialize; */
+    xmlSecOpenSSLHmacFinalize,			/* xmlSecTransformFinalizeMethod finalize; */
+    xmlSecOpenSSLHmacNodeRead,			/* xmlSecTransformNodeReadMethod readNode; */
+    NULL,					/* xmlSecTransformNodeWriteMethod writeNode; */
+    xmlSecOpenSSLHmacSetKeyReq,			/* xmlSecTransformSetKeyReqMethod setKeyReq; */
+    xmlSecOpenSSLHmacSetKey,			/* xmlSecTransformSetKeyMethod setKey; */
+    xmlSecOpenSSLHmacVerify,			/* xmlSecTransformValidateMethod validate; */
+    xmlSecTransformDefaultGetDataType,		/* xmlSecTransformGetDataTypeMethod getDataType; */
+    xmlSecTransformDefaultPushBin,		/* xmlSecTransformPushBinMethod pushBin; */
+    xmlSecTransformDefaultPopBin,		/* xmlSecTransformPopBinMethod popBin; */
+    NULL,					/* xmlSecTransformPushXmlMethod pushXml; */
+    NULL,					/* xmlSecTransformPopXmlMethod popXml; */
+    xmlSecOpenSSLHmacExecute,			/* xmlSecTransformExecuteMethod execute; */
+    
+    NULL,					/* void* reserved0; */
+    NULL,					/* void* reserved1; */
+};
+
+/** 
+ * xmlSecOpenSSLTransformHmacSha384GetKlass:
+ *
+ * The HMAC-SHA384 transform klass.
+ *
+ * Returns the HMAC-SHA384 transform klass.
+ */
+xmlSecTransformId 
+xmlSecOpenSSLTransformHmacSha384GetKlass(void) {
+    return(&xmlSecOpenSSLHmacSha384Klass);
+}
+
+#endif /* XMLSEC_NO_SHA384 */
+
+#ifndef XMLSEC_NO_SHA512
+/** 
+ * HMAC SHA512
+ */
+static xmlSecTransformKlass xmlSecOpenSSLHmacSha512Klass = {
+    /* klass/object sizes */
+    sizeof(xmlSecTransformKlass),		/* xmlSecSize klassSize */
+    xmlSecOpenSSLHmacSize,			/* xmlSecSize objSize */
+
+    xmlSecNameHmacSha512,			/* const xmlChar* name; */
+    xmlSecHrefHmacSha512, 			/* const xmlChar* href; */
+    xmlSecTransformUsageSignatureMethod,	/* xmlSecTransformUsage usage; */
+    
+    xmlSecOpenSSLHmacInitialize,		/* xmlSecTransformInitializeMethod initialize; */
+    xmlSecOpenSSLHmacFinalize,			/* xmlSecTransformFinalizeMethod finalize; */
+    xmlSecOpenSSLHmacNodeRead,			/* xmlSecTransformNodeReadMethod readNode; */
+    NULL,					/* xmlSecTransformNodeWriteMethod writeNode; */
+    xmlSecOpenSSLHmacSetKeyReq,			/* xmlSecTransformSetKeyReqMethod setKeyReq; */
+    xmlSecOpenSSLHmacSetKey,			/* xmlSecTransformSetKeyMethod setKey; */
+    xmlSecOpenSSLHmacVerify,			/* xmlSecTransformValidateMethod validate; */
+    xmlSecTransformDefaultGetDataType,		/* xmlSecTransformGetDataTypeMethod getDataType; */
+    xmlSecTransformDefaultPushBin,		/* xmlSecTransformPushBinMethod pushBin; */
+    xmlSecTransformDefaultPopBin,		/* xmlSecTransformPopBinMethod popBin; */
+    NULL,					/* xmlSecTransformPushXmlMethod pushXml; */
+    NULL,					/* xmlSecTransformPopXmlMethod popXml; */
+    xmlSecOpenSSLHmacExecute,			/* xmlSecTransformExecuteMethod execute; */
+    
+    NULL,					/* void* reserved0; */
+    NULL,					/* void* reserved1; */
+};
+
+/** 
+ * xmlSecOpenSSLTransformHmacSha512GetKlass:
+ *
+ * The HMAC-SHA512 transform klass.
+ *
+ * Returns the HMAC-SHA512 transform klass.
+ */
+xmlSecTransformId 
+xmlSecOpenSSLTransformHmacSha512GetKlass(void) {
+    return(&xmlSecOpenSSLHmacSha512Klass);
+}
+
+#endif /* XMLSEC_NO_SHA512 */
+
+
 #endif /* XMLSEC_NO_HMAC */
 
diff --git a/src/openssl/signatures.c b/src/openssl/signatures.c
index bf5f173..06d047f 100644
--- a/src/openssl/signatures.c
+++ b/src/openssl/signatures.c
@@ -24,7 +24,7 @@
 
 #ifndef XMLSEC_NO_DSA
 #define XMLSEC_OPENSSL_DSA_SIGNATURE_SIZE			40
-static const EVP_MD *xmlSecOpenSSLDsaEvp			(void);
+static const EVP_MD *xmlSecOpenSSLDsaSha1Evp			(void);
 #endif /* XMLSEC_NO_DSA */
 
 
@@ -72,17 +72,65 @@ static int	xmlSecOpenSSLEvpSignatureExecute		(xmlSecTransformPtr transform,
 static int
 xmlSecOpenSSLEvpSignatureCheckId(xmlSecTransformPtr transform) {
 #ifndef XMLSEC_NO_DSA
+
+#ifndef XMLSEC_NO_SHA1
     if(xmlSecTransformCheckId(transform, xmlSecOpenSSLTransformDsaSha1Id)) {
 	return(1);
-    }
+    } else
+#endif /* XMLSEC_NO_SHA1 */
+
 #endif /* XMLSEC_NO_DSA */
 
 #ifndef XMLSEC_NO_RSA
+
+#ifndef XMLSEC_NO_MD5
+    if(xmlSecTransformCheckId(transform, xmlSecOpenSSLTransformRsaMd5Id)) {
+	return(1);
+    } else 
+#endif /* XMLSEC_NO_MD5 */
+
+#ifndef XMLSEC_NO_RIPEMD160
+    if(xmlSecTransformCheckId(transform, xmlSecOpenSSLTransformRsaRipemd160Id)) {
+	return(1);
+    } else 
+#endif /* XMLSEC_NO_RIPEMD160 */
+
+#ifndef XMLSEC_NO_SHA1
     if(xmlSecTransformCheckId(transform, xmlSecOpenSSLTransformRsaSha1Id)) {
 	return(1);
-    }
-#endif /* XMLSEC_NO_RSA */
+    } else 
+#endif /* XMLSEC_NO_SHA1 */
 
+#ifndef XMLSEC_NO_SHA224
+    if(xmlSecTransformCheckId(transform, xmlSecOpenSSLTransformRsaSha224Id)) {
+	return(1);
+    } else 
+#endif /* XMLSEC_NO_SHA224 */
+
+#ifndef XMLSEC_NO_SHA256
+    if(xmlSecTransformCheckId(transform, xmlSecOpenSSLTransformRsaSha256Id)) {
+	return(1);
+    } else 
+#endif /* XMLSEC_NO_SHA256 */
+
+#ifndef XMLSEC_NO_SHA384
+    if(xmlSecTransformCheckId(transform, xmlSecOpenSSLTransformRsaSha384Id)) {
+	return(1);
+    } else 
+#endif /* XMLSEC_NO_SHA384 */
+
+#ifndef XMLSEC_NO_SHA512
+    if(xmlSecTransformCheckId(transform, xmlSecOpenSSLTransformRsaSha512Id)) {
+	return(1);
+    } else 
+#endif /* XMLSEC_NO_SHA512 */
+
+#endif /* XMLSEC_NO_RSA */
+    
+    {
+	return(0);
+    }
+    
     return(0);
 }
 
@@ -99,17 +147,67 @@ xmlSecOpenSSLEvpSignatureInitialize(xmlSecTransformPtr transform) {
     memset(ctx, 0, sizeof(xmlSecOpenSSLEvpSignatureCtx));    
 
 #ifndef XMLSEC_NO_DSA
+
+#ifndef XMLSEC_NO_SHA1
     if(xmlSecTransformCheckId(transform, xmlSecOpenSSLTransformDsaSha1Id)) {
-	ctx->digest	= xmlSecOpenSSLDsaEvp();
+	ctx->digest	= xmlSecOpenSSLDsaSha1Evp();
 	ctx->keyId	= xmlSecOpenSSLKeyDataDsaId;
     } else 
+#endif /* XMLSEC_NO_SHA1 */
+
 #endif /* XMLSEC_NO_DSA */
 
 #ifndef XMLSEC_NO_RSA
+
+#ifndef XMLSEC_NO_MD5
+    if(xmlSecTransformCheckId(transform, xmlSecOpenSSLTransformRsaMd5Id)) {
+	ctx->digest	= EVP_md5();
+	ctx->keyId	= xmlSecOpenSSLKeyDataRsaId;
+    } else 
+#endif /* XMLSEC_NO_MD5 */
+
+#ifndef XMLSEC_NO_RIPEMD160
+    if(xmlSecTransformCheckId(transform, xmlSecOpenSSLTransformRsaRipemd160Id)) {
+	ctx->digest	= EVP_ripemd160();
+	ctx->keyId	= xmlSecOpenSSLKeyDataRsaId;
+    } else 
+#endif /* XMLSEC_NO_RIPEMD160 */
+
+#ifndef XMLSEC_NO_SHA1
     if(xmlSecTransformCheckId(transform, xmlSecOpenSSLTransformRsaSha1Id)) {
 	ctx->digest	= EVP_sha1();
 	ctx->keyId	= xmlSecOpenSSLKeyDataRsaId;
     } else 
+#endif /* XMLSEC_NO_SHA1 */
+
+#ifndef XMLSEC_NO_SHA224
+    if(xmlSecTransformCheckId(transform, xmlSecOpenSSLTransformRsaSha224Id)) {
+	ctx->digest	= EVP_sha224();
+	ctx->keyId	= xmlSecOpenSSLKeyDataRsaId;
+    } else 
+#endif /* XMLSEC_NO_SHA224 */
+
+#ifndef XMLSEC_NO_SHA256
+    if(xmlSecTransformCheckId(transform, xmlSecOpenSSLTransformRsaSha256Id)) {
+	ctx->digest	= EVP_sha256();
+	ctx->keyId	= xmlSecOpenSSLKeyDataRsaId;
+    } else 
+#endif /* XMLSEC_NO_SHA256 */
+
+#ifndef XMLSEC_NO_SHA384
+    if(xmlSecTransformCheckId(transform, xmlSecOpenSSLTransformRsaSha384Id)) {
+	ctx->digest	= EVP_sha384();
+	ctx->keyId	= xmlSecOpenSSLKeyDataRsaId;
+    } else 
+#endif /* XMLSEC_NO_SHA384 */
+
+#ifndef XMLSEC_NO_SHA512
+    if(xmlSecTransformCheckId(transform, xmlSecOpenSSLTransformRsaSha512Id)) {
+	ctx->digest	= EVP_sha512();
+	ctx->keyId	= xmlSecOpenSSLKeyDataRsaId;
+    } else 
+#endif /* XMLSEC_NO_SHA512 */
+
 #endif /* XMLSEC_NO_RSA */
 
     if(1) {
@@ -369,9 +467,11 @@ xmlSecOpenSSLEvpSignatureExecute(xmlSecTransformPtr transform, int last, xmlSecT
 	     * we get size from EVP_PKEY_size(),
 	     * for dsa signature we use a fixed constant */
 	    outSize = EVP_PKEY_size(ctx->pKey);
+#ifndef XMLSEC_NO_DSA 
 	    if(outSize < XMLSEC_OPENSSL_DSA_SIGNATURE_SIZE) {
 		outSize = XMLSEC_OPENSSL_DSA_SIGNATURE_SIZE;
 	    }
+#endif /* XMLSEC_NO_DSA */ 
 
 	    ret = xmlSecBufferSetMaxSize(out, outSize);
 	    if(ret < 0) {
@@ -422,6 +522,8 @@ xmlSecOpenSSLEvpSignatureExecute(xmlSecTransformPtr transform, int last, xmlSecT
 }
 
 #ifndef XMLSEC_NO_DSA
+
+#ifndef XMLSEC_NO_SHA1
 /****************************************************************************
  *
  * DSA-SHA1 signature transform
@@ -495,26 +597,26 @@ xmlSecOpenSSLTransformDsaSha1GetKlass(void) {
  ***************************************************************************/
 #ifndef XMLSEC_OPENSSL_096
 static int 
-xmlSecOpenSSLDsaEvpInit(EVP_MD_CTX *ctx)
+xmlSecOpenSSLDsaSha1EvpInit(EVP_MD_CTX *ctx)
 { 
     return SHA1_Init(ctx->md_data); 
 }
 
 static int 
-xmlSecOpenSSLDsaEvpUpdate(EVP_MD_CTX *ctx,const void *data,unsigned long count)
+xmlSecOpenSSLDsaSha1EvpUpdate(EVP_MD_CTX *ctx,const void *data,unsigned long count)
 { 
     return SHA1_Update(ctx->md_data,data,count); 
 }
 
 static int 
-xmlSecOpenSSLDsaEvpFinal(EVP_MD_CTX *ctx,xmlSecByte *md)
+xmlSecOpenSSLDsaSha1EvpFinal(EVP_MD_CTX *ctx,xmlSecByte *md)
 { 
     return SHA1_Final(md,ctx->md_data); 
 }
 #endif /* XMLSEC_OPENSSL_096 */
 
 static int 	
-xmlSecOpenSSLDsaEvpSign(int type ATTRIBUTE_UNUSED, 
+xmlSecOpenSSLDsaSha1EvpSign(int type ATTRIBUTE_UNUSED, 
 			const xmlSecByte *dgst, int dlen,
 			xmlSecByte *sig, unsigned int *siglen, DSA *dsa) {
     DSA_SIG *s;
@@ -551,7 +653,7 @@ xmlSecOpenSSLDsaEvpSign(int type ATTRIBUTE_UNUSED,
 }
 
 static int 
-xmlSecOpenSSLDsaEvpVerify(int type ATTRIBUTE_UNUSED, 
+xmlSecOpenSSLDsaSha1EvpVerify(int type ATTRIBUTE_UNUSED, 
 			const xmlSecByte *dgst, int dgst_len,
 			const xmlSecByte *sigbuf, int siglen, DSA *dsa) {
     DSA_SIG *s;    
@@ -597,9 +699,9 @@ static const EVP_MD xmlSecOpenSSLDsaMdEvp = {
     SHA_DIGEST_LENGTH,
 #ifndef XMLSEC_OPENSSL_096
     0,
-    xmlSecOpenSSLDsaEvpInit,
-    xmlSecOpenSSLDsaEvpUpdate,
-    xmlSecOpenSSLDsaEvpFinal,
+    xmlSecOpenSSLDsaSha1EvpInit,
+    xmlSecOpenSSLDsaSha1EvpUpdate,
+    xmlSecOpenSSLDsaSha1EvpFinal,
     NULL,
     NULL,
 #else /* XMLSEC_OPENSSL_096 */
@@ -607,21 +709,118 @@ static const EVP_MD xmlSecOpenSSLDsaMdEvp = {
     SHA1_Update,
     SHA1_Final,
 #endif /* XMLSEC_OPENSSL_096 */
-    xmlSecOpenSSLDsaEvpSign,
-    xmlSecOpenSSLDsaEvpVerify, 
+    xmlSecOpenSSLDsaSha1EvpSign,
+    xmlSecOpenSSLDsaSha1EvpVerify, 
     {EVP_PKEY_DSA,EVP_PKEY_DSA2,EVP_PKEY_DSA3,EVP_PKEY_DSA4,0},
     SHA_CBLOCK,
     sizeof(EVP_MD *)+sizeof(SHA_CTX),
 };
 
-static const EVP_MD *xmlSecOpenSSLDsaEvp(void)
+static const EVP_MD *xmlSecOpenSSLDsaSha1Evp(void)
 {
     return(&xmlSecOpenSSLDsaMdEvp);
 }
+#endif /* XMLSEC_NO_SHA1 */
 
 #endif /* XMLSEC_NO_DSA */
 
 #ifndef XMLSEC_NO_RSA
+
+#ifndef XMLSEC_NO_MD5
+/****************************************************************************
+ *
+ * RSA-MD5 signature transform
+ *
+ ***************************************************************************/
+static xmlSecTransformKlass xmlSecOpenSSLRsaMd5Klass = {
+    /* klass/object sizes */
+    sizeof(xmlSecTransformKlass),		/* xmlSecSize klassSize */
+    xmlSecOpenSSLEvpSignatureSize,		/* xmlSecSize objSize */
+
+    xmlSecNameRsaMd5,				/* const xmlChar* name; */
+    xmlSecHrefRsaMd5, 				/* const xmlChar* href; */
+    xmlSecTransformUsageSignatureMethod,	/* xmlSecTransformUsage usage; */
+    
+    xmlSecOpenSSLEvpSignatureInitialize,	/* xmlSecTransformInitializeMethod initialize; */
+    xmlSecOpenSSLEvpSignatureFinalize,		/* xmlSecTransformFinalizeMethod finalize; */
+    NULL,					/* xmlSecTransformNodeReadMethod readNode; */
+    NULL,					/* xmlSecTransformNodeWriteMethod writeNode; */
+    xmlSecOpenSSLEvpSignatureSetKeyReq,		/* xmlSecTransformSetKeyReqMethod setKeyReq; */
+    xmlSecOpenSSLEvpSignatureSetKey,		/* xmlSecTransformSetKeyMethod setKey; */
+    xmlSecOpenSSLEvpSignatureVerify,		/* xmlSecTransformVerifyMethod verify; */
+    xmlSecTransformDefaultGetDataType,		/* xmlSecTransformGetDataTypeMethod getDataType; */
+    xmlSecTransformDefaultPushBin,		/* xmlSecTransformPushBinMethod pushBin; */
+    xmlSecTransformDefaultPopBin,		/* xmlSecTransformPopBinMethod popBin; */
+    NULL,					/* xmlSecTransformPushXmlMethod pushXml; */
+    NULL,					/* xmlSecTransformPopXmlMethod popXml; */
+    xmlSecOpenSSLEvpSignatureExecute,		/* xmlSecTransformExecuteMethod execute; */
+    
+    NULL,					/* void* reserved0; */
+    NULL,					/* void* reserved1; */
+};
+
+/**
+ * xmlSecOpenSSLTransformRsaMd5GetKlass:
+ * 
+ * The RSA-MD5 signature transform klass.
+ *
+ * Returns RSA-MD5 signature transform klass.
+ */
+xmlSecTransformId 
+xmlSecOpenSSLTransformRsaMd5GetKlass(void) {
+    return(&xmlSecOpenSSLRsaMd5Klass);
+}
+
+#endif /* XMLSEC_NO_MD5 */
+
+#ifndef XMLSEC_NO_RIPEMD160
+/****************************************************************************
+ *
+ * RSA-RIPEMD160 signature transform
+ *
+ ***************************************************************************/
+static xmlSecTransformKlass xmlSecOpenSSLRsaRipemd160Klass = {
+    /* klass/object sizes */
+    sizeof(xmlSecTransformKlass),		/* xmlSecSize klassSize */
+    xmlSecOpenSSLEvpSignatureSize,		/* xmlSecSize objSize */
+
+    xmlSecNameRsaRipemd160,				/* const xmlChar* name; */
+    xmlSecHrefRsaRipemd160, 				/* const xmlChar* href; */
+    xmlSecTransformUsageSignatureMethod,	/* xmlSecTransformUsage usage; */
+    
+    xmlSecOpenSSLEvpSignatureInitialize,	/* xmlSecTransformInitializeMethod initialize; */
+    xmlSecOpenSSLEvpSignatureFinalize,		/* xmlSecTransformFinalizeMethod finalize; */
+    NULL,					/* xmlSecTransformNodeReadMethod readNode; */
+    NULL,					/* xmlSecTransformNodeWriteMethod writeNode; */
+    xmlSecOpenSSLEvpSignatureSetKeyReq,		/* xmlSecTransformSetKeyReqMethod setKeyReq; */
+    xmlSecOpenSSLEvpSignatureSetKey,		/* xmlSecTransformSetKeyMethod setKey; */
+    xmlSecOpenSSLEvpSignatureVerify,		/* xmlSecTransformVerifyMethod verify; */
+    xmlSecTransformDefaultGetDataType,		/* xmlSecTransformGetDataTypeMethod getDataType; */
+    xmlSecTransformDefaultPushBin,		/* xmlSecTransformPushBinMethod pushBin; */
+    xmlSecTransformDefaultPopBin,		/* xmlSecTransformPopBinMethod popBin; */
+    NULL,					/* xmlSecTransformPushXmlMethod pushXml; */
+    NULL,					/* xmlSecTransformPopXmlMethod popXml; */
+    xmlSecOpenSSLEvpSignatureExecute,		/* xmlSecTransformExecuteMethod execute; */
+    
+    NULL,					/* void* reserved0; */
+    NULL,					/* void* reserved1; */
+};
+
+/**
+ * xmlSecOpenSSLTransformRsaRipemd160GetKlass:
+ * 
+ * The RSA-RIPEMD160 signature transform klass.
+ *
+ * Returns RSA-RIPEMD160 signature transform klass.
+ */
+xmlSecTransformId 
+xmlSecOpenSSLTransformRsaRipemd160GetKlass(void) {
+    return(&xmlSecOpenSSLRsaRipemd160Klass);
+}
+
+#endif /* XMLSEC_NO_RIPEMD160 */
+
+#ifndef XMLSEC_NO_SHA1
 /****************************************************************************
  *
  * RSA-SHA1 signature transform
@@ -666,6 +865,197 @@ xmlSecOpenSSLTransformRsaSha1GetKlass(void) {
     return(&xmlSecOpenSSLRsaSha1Klass);
 }
 
-#endif /* XMLSEC_NO_DSA */
+#endif /* XMLSEC_NO_SHA1 */
+
+#ifndef XMLSEC_NO_SHA224
+/****************************************************************************
+ *
+ * RSA-SHA224 signature transform
+ *
+ ***************************************************************************/
+static xmlSecTransformKlass xmlSecOpenSSLRsaSha224Klass = {
+    /* klass/object sizes */
+    sizeof(xmlSecTransformKlass),		/* xmlSecSize klassSize */
+    xmlSecOpenSSLEvpSignatureSize,		/* xmlSecSize objSize */
+
+    xmlSecNameRsaSha224,				/* const xmlChar* name; */
+    xmlSecHrefRsaSha224, 				/* const xmlChar* href; */
+    xmlSecTransformUsageSignatureMethod,	/* xmlSecTransformUsage usage; */
+    
+    xmlSecOpenSSLEvpSignatureInitialize,	/* xmlSecTransformInitializeMethod initialize; */
+    xmlSecOpenSSLEvpSignatureFinalize,		/* xmlSecTransformFinalizeMethod finalize; */
+    NULL,					/* xmlSecTransformNodeReadMethod readNode; */
+    NULL,					/* xmlSecTransformNodeWriteMethod writeNode; */
+    xmlSecOpenSSLEvpSignatureSetKeyReq,		/* xmlSecTransformSetKeyReqMethod setKeyReq; */
+    xmlSecOpenSSLEvpSignatureSetKey,		/* xmlSecTransformSetKeyMethod setKey; */
+    xmlSecOpenSSLEvpSignatureVerify,		/* xmlSecTransformVerifyMethod verify; */
+    xmlSecTransformDefaultGetDataType,		/* xmlSecTransformGetDataTypeMethod getDataType; */
+    xmlSecTransformDefaultPushBin,		/* xmlSecTransformPushBinMethod pushBin; */
+    xmlSecTransformDefaultPopBin,		/* xmlSecTransformPopBinMethod popBin; */
+    NULL,					/* xmlSecTransformPushXmlMethod pushXml; */
+    NULL,					/* xmlSecTransformPopXmlMethod popXml; */
+    xmlSecOpenSSLEvpSignatureExecute,		/* xmlSecTransformExecuteMethod execute; */
+    
+    NULL,					/* void* reserved0; */
+    NULL,					/* void* reserved1; */
+};
+
+/**
+ * xmlSecOpenSSLTransformRsaSha224GetKlass:
+ * 
+ * The RSA-SHA224 signature transform klass.
+ *
+ * Returns RSA-SHA224 signature transform klass.
+ */
+xmlSecTransformId 
+xmlSecOpenSSLTransformRsaSha224GetKlass(void) {
+    return(&xmlSecOpenSSLRsaSha224Klass);
+}
+
+#endif /* XMLSEC_NO_SHA224 */
+
+#ifndef XMLSEC_NO_SHA256
+/****************************************************************************
+ *
+ * RSA-SHA256 signature transform
+ *
+ ***************************************************************************/
+static xmlSecTransformKlass xmlSecOpenSSLRsaSha256Klass = {
+    /* klass/object sizes */
+    sizeof(xmlSecTransformKlass),		/* xmlSecSize klassSize */
+    xmlSecOpenSSLEvpSignatureSize,		/* xmlSecSize objSize */
+
+    xmlSecNameRsaSha256,				/* const xmlChar* name; */
+    xmlSecHrefRsaSha256, 				/* const xmlChar* href; */
+    xmlSecTransformUsageSignatureMethod,	/* xmlSecTransformUsage usage; */
+    
+    xmlSecOpenSSLEvpSignatureInitialize,	/* xmlSecTransformInitializeMethod initialize; */
+    xmlSecOpenSSLEvpSignatureFinalize,		/* xmlSecTransformFinalizeMethod finalize; */
+    NULL,					/* xmlSecTransformNodeReadMethod readNode; */
+    NULL,					/* xmlSecTransformNodeWriteMethod writeNode; */
+    xmlSecOpenSSLEvpSignatureSetKeyReq,		/* xmlSecTransformSetKeyReqMethod setKeyReq; */
+    xmlSecOpenSSLEvpSignatureSetKey,		/* xmlSecTransformSetKeyMethod setKey; */
+    xmlSecOpenSSLEvpSignatureVerify,		/* xmlSecTransformVerifyMethod verify; */
+    xmlSecTransformDefaultGetDataType,		/* xmlSecTransformGetDataTypeMethod getDataType; */
+    xmlSecTransformDefaultPushBin,		/* xmlSecTransformPushBinMethod pushBin; */
+    xmlSecTransformDefaultPopBin,		/* xmlSecTransformPopBinMethod popBin; */
+    NULL,					/* xmlSecTransformPushXmlMethod pushXml; */
+    NULL,					/* xmlSecTransformPopXmlMethod popXml; */
+    xmlSecOpenSSLEvpSignatureExecute,		/* xmlSecTransformExecuteMethod execute; */
+    
+    NULL,					/* void* reserved0; */
+    NULL,					/* void* reserved1; */
+};
+
+/**
+ * xmlSecOpenSSLTransformRsaSha256GetKlass:
+ * 
+ * The RSA-SHA256 signature transform klass.
+ *
+ * Returns RSA-SHA256 signature transform klass.
+ */
+xmlSecTransformId 
+xmlSecOpenSSLTransformRsaSha256GetKlass(void) {
+    return(&xmlSecOpenSSLRsaSha256Klass);
+}
+
+#endif /* XMLSEC_NO_SHA256 */
+
+#ifndef XMLSEC_NO_SHA384
+/****************************************************************************
+ *
+ * RSA-SHA384 signature transform
+ *
+ ***************************************************************************/
+static xmlSecTransformKlass xmlSecOpenSSLRsaSha384Klass = {
+    /* klass/object sizes */
+    sizeof(xmlSecTransformKlass),		/* xmlSecSize klassSize */
+    xmlSecOpenSSLEvpSignatureSize,		/* xmlSecSize objSize */
+
+    xmlSecNameRsaSha384,				/* const xmlChar* name; */
+    xmlSecHrefRsaSha384, 				/* const xmlChar* href; */
+    xmlSecTransformUsageSignatureMethod,	/* xmlSecTransformUsage usage; */
+    
+    xmlSecOpenSSLEvpSignatureInitialize,	/* xmlSecTransformInitializeMethod initialize; */
+    xmlSecOpenSSLEvpSignatureFinalize,		/* xmlSecTransformFinalizeMethod finalize; */
+    NULL,					/* xmlSecTransformNodeReadMethod readNode; */
+    NULL,					/* xmlSecTransformNodeWriteMethod writeNode; */
+    xmlSecOpenSSLEvpSignatureSetKeyReq,		/* xmlSecTransformSetKeyReqMethod setKeyReq; */
+    xmlSecOpenSSLEvpSignatureSetKey,		/* xmlSecTransformSetKeyMethod setKey; */
+    xmlSecOpenSSLEvpSignatureVerify,		/* xmlSecTransformVerifyMethod verify; */
+    xmlSecTransformDefaultGetDataType,		/* xmlSecTransformGetDataTypeMethod getDataType; */
+    xmlSecTransformDefaultPushBin,		/* xmlSecTransformPushBinMethod pushBin; */
+    xmlSecTransformDefaultPopBin,		/* xmlSecTransformPopBinMethod popBin; */
+    NULL,					/* xmlSecTransformPushXmlMethod pushXml; */
+    NULL,					/* xmlSecTransformPopXmlMethod popXml; */
+    xmlSecOpenSSLEvpSignatureExecute,		/* xmlSecTransformExecuteMethod execute; */
+    
+    NULL,					/* void* reserved0; */
+    NULL,					/* void* reserved1; */
+};
+
+/**
+ * xmlSecOpenSSLTransformRsaSha384GetKlass:
+ * 
+ * The RSA-SHA384 signature transform klass.
+ *
+ * Returns RSA-SHA384 signature transform klass.
+ */
+xmlSecTransformId 
+xmlSecOpenSSLTransformRsaSha384GetKlass(void) {
+    return(&xmlSecOpenSSLRsaSha384Klass);
+}
+
+#endif /* XMLSEC_NO_SHA384 */
+
+#ifndef XMLSEC_NO_SHA512
+/****************************************************************************
+ *
+ * RSA-SHA512 signature transform
+ *
+ ***************************************************************************/
+static xmlSecTransformKlass xmlSecOpenSSLRsaSha512Klass = {
+    /* klass/object sizes */
+    sizeof(xmlSecTransformKlass),		/* xmlSecSize klassSize */
+    xmlSecOpenSSLEvpSignatureSize,		/* xmlSecSize objSize */
+
+    xmlSecNameRsaSha512,				/* const xmlChar* name; */
+    xmlSecHrefRsaSha512, 				/* const xmlChar* href; */
+    xmlSecTransformUsageSignatureMethod,	/* xmlSecTransformUsage usage; */
+    
+    xmlSecOpenSSLEvpSignatureInitialize,	/* xmlSecTransformInitializeMethod initialize; */
+    xmlSecOpenSSLEvpSignatureFinalize,		/* xmlSecTransformFinalizeMethod finalize; */
+    NULL,					/* xmlSecTransformNodeReadMethod readNode; */
+    NULL,					/* xmlSecTransformNodeWriteMethod writeNode; */
+    xmlSecOpenSSLEvpSignatureSetKeyReq,		/* xmlSecTransformSetKeyReqMethod setKeyReq; */
+    xmlSecOpenSSLEvpSignatureSetKey,		/* xmlSecTransformSetKeyMethod setKey; */
+    xmlSecOpenSSLEvpSignatureVerify,		/* xmlSecTransformVerifyMethod verify; */
+    xmlSecTransformDefaultGetDataType,		/* xmlSecTransformGetDataTypeMethod getDataType; */
+    xmlSecTransformDefaultPushBin,		/* xmlSecTransformPushBinMethod pushBin; */
+    xmlSecTransformDefaultPopBin,		/* xmlSecTransformPopBinMethod popBin; */
+    NULL,					/* xmlSecTransformPushXmlMethod pushXml; */
+    NULL,					/* xmlSecTransformPopXmlMethod popXml; */
+    xmlSecOpenSSLEvpSignatureExecute,		/* xmlSecTransformExecuteMethod execute; */
+    
+    NULL,					/* void* reserved0; */
+    NULL,					/* void* reserved1; */
+};
+
+/**
+ * xmlSecOpenSSLTransformRsaSha512GetKlass:
+ * 
+ * The RSA-SHA512 signature transform klass.
+ *
+ * Returns RSA-SHA512 signature transform klass.
+ */
+xmlSecTransformId 
+xmlSecOpenSSLTransformRsaSha512GetKlass(void) {
+    return(&xmlSecOpenSSLRsaSha512Klass);
+}
+
+#endif /* XMLSEC_NO_SHA512 */
+
+#endif /* XMLSEC_NO_RSA */
+
 
 
diff --git a/src/openssl/x509vfy.c b/src/openssl/x509vfy.c
index 1ebdbff..bac172b 100644
--- a/src/openssl/x509vfy.c
+++ b/src/openssl/x509vfy.c
@@ -48,6 +48,10 @@ struct _xmlSecOpenSSLX509StoreCtx {
     X509_STORE* 	xst;
     STACK_OF(X509)* 	untrusted;
     STACK_OF(X509_CRL)* crls;
+
+#if !defined(XMLSEC_OPENSSL_096) && !defined(XMLSEC_OPENSSL_097)
+    X509_VERIFY_PARAM * vpm;	    
+#endif /* !defined(XMLSEC_OPENSSL_096) && !defined(XMLSEC_OPENSSL_097) */
 };	    
 
 /****************************************************************************
@@ -139,6 +143,7 @@ xmlSecOpenSSLX509StoreFindCert(xmlSecKeyDataStorePtr store, xmlChar *subjectName
 				xmlChar *issuerName, xmlChar *issuerSerial,
 				xmlChar *ski, xmlSecKeyInfoCtx* keyInfoCtx) {
     xmlSecOpenSSLX509StoreCtxPtr ctx;
+    X509* res = NULL;
     
     xmlSecAssert2(xmlSecKeyDataStoreCheckId(store, xmlSecOpenSSLX509StoreId), NULL);
     xmlSecAssert2(keyInfoCtx != NULL, NULL);
@@ -146,10 +151,10 @@ xmlSecOpenSSLX509StoreFindCert(xmlSecKeyDataStorePtr store, xmlChar *subjectName
     ctx = xmlSecOpenSSLX509StoreGetCtx(store);
     xmlSecAssert2(ctx != NULL, NULL);
 
-    if(ctx->untrusted != NULL) {
-        return(xmlSecOpenSSLX509FindCert(ctx->untrusted, subjectName, issuerName, issuerSerial, ski));
+    if((res == NULL) && (ctx->untrusted != NULL)) {
+        res = xmlSecOpenSSLX509FindCert(ctx->untrusted, subjectName, issuerName, issuerSerial, ski);
     }
-    return(NULL);
+    return(res);
 }
 
 /**
@@ -172,6 +177,7 @@ xmlSecOpenSSLX509StoreVerify(xmlSecKeyDataStorePtr store, XMLSEC_STACK_OF_X509*
     X509* res = NULL;
     X509* cert;
     X509 *err_cert = NULL;
+    char buf[256];
     int err = 0, depth;
     int i;
     int ret;
@@ -275,51 +281,102 @@ xmlSecOpenSSLX509StoreVerify(xmlSecKeyDataStorePtr store, XMLSEC_STACK_OF_X509*
 	++i;
     }	
 
-    /* finally get one cert after another and try to verify */
+    /* get one cert after another and try to verify */
     for(i = 0; i < sk_X509_num(certs2); ++i) { 
 	cert = sk_X509_value(certs2, i);
-	
 	if(xmlSecOpenSSLX509FindNextChainCert(certs2, cert) == NULL) {
 	    X509_STORE_CTX xsc; 
+
+#if !defined(XMLSEC_OPENSSL_096) && !defined(XMLSEC_OPENSSL_097)
+	    X509_VERIFY_PARAM * vpm = NULL;	    
+	    unsigned long vpm_flags = 0;
+
+	    vpm = X509_VERIFY_PARAM_new();
+	    if(vpm == NULL) {
+		xmlSecError(XMLSEC_ERRORS_HERE,
+			    xmlSecErrorsSafeString(xmlSecKeyDataStoreGetName(store)),
+			    "X509_VERIFY_PARAM_new",
+		    	    XMLSEC_ERRORS_R_CRYPTO_FAILED,
+			    XMLSEC_ERRORS_NO_MESSAGE);
+	        goto done;
+	    }
+	    vpm_flags = vpm->flags;
+/*
+	    vpm_flags &= (~X509_V_FLAG_X509_STRICT);
+*/
+	    vpm_flags &= (~X509_V_FLAG_CRL_CHECK);
+
+	    X509_VERIFY_PARAM_set_depth(vpm, 9);  
+	    X509_VERIFY_PARAM_set_flags(vpm, vpm_flags);
+#endif /* !defined(XMLSEC_OPENSSL_096) && !defined(XMLSEC_OPENSSL_097) */
     
+
 	    X509_STORE_CTX_init (&xsc, ctx->xst, cert, certs2);
+
 	    if(keyInfoCtx->certsVerificationTime > 0) {	
+#if !defined(XMLSEC_OPENSSL_096) && !defined(XMLSEC_OPENSSL_097)
+		vpm_flags |= X509_V_FLAG_USE_CHECK_TIME;
+	        X509_VERIFY_PARAM_set_time(vpm, keyInfoCtx->certsVerificationTime);
+#endif /* !defined(XMLSEC_OPENSSL_096) && !defined(XMLSEC_OPENSSL_097) */
 		X509_STORE_CTX_set_time(&xsc, 0, keyInfoCtx->certsVerificationTime);
 	    }
+
+#if !defined(XMLSEC_OPENSSL_096) && !defined(XMLSEC_OPENSSL_097)
+	    X509_STORE_CTX_set0_param(&xsc, vpm);	    
+#endif /* !defined(XMLSEC_OPENSSL_096) && !defined(XMLSEC_OPENSSL_097) */
+
+	    
 	    ret 	= X509_verify_cert(&xsc); 
 	    err_cert 	= X509_STORE_CTX_get_current_cert(&xsc);
 	    err	 	= X509_STORE_CTX_get_error(&xsc);
 	    depth	= X509_STORE_CTX_get_error_depth(&xsc);
+	    
 	    X509_STORE_CTX_cleanup (&xsc);  
-
+	    
 	    if(ret == 1) {
 		res = cert;
 		goto done;
 	    } else if(ret < 0) {
 		const char* err_msg;
 		
+		buf[0] = '\0';
+	        X509_NAME_oneline(X509_get_subject_name(err_cert), buf, sizeof buf);
 		err_msg = X509_verify_cert_error_string(err);
 		xmlSecError(XMLSEC_ERRORS_HERE,
 			    xmlSecErrorsSafeString(xmlSecKeyDataStoreGetName(store)),
 			    "X509_verify_cert",
 			    XMLSEC_ERRORS_R_CRYPTO_FAILED,
-		    	    "err=%d;msg=%s", 
+		    	    "subj=%s;err=%d;msg=%s", 
+			    xmlSecErrorsSafeString(buf),
 			    err, 
 			    xmlSecErrorsSafeString(err_msg));
 		goto done;
+	    } else if(ret == 0) {
+		const char* err_msg;
+		
+		buf[0] = '\0';
+	        X509_NAME_oneline(X509_get_subject_name(err_cert), buf, sizeof buf);
+		err_msg = X509_verify_cert_error_string(err);
+		xmlSecError(XMLSEC_ERRORS_HERE,
+			    xmlSecErrorsSafeString(xmlSecKeyDataStoreGetName(store)),
+			    "X509_verify_cert",
+			    XMLSEC_ERRORS_R_CRYPTO_FAILED,
+		    	    "subj=%s;err=%d;msg=%s", 
+			    xmlSecErrorsSafeString(buf),
+			    err, 
+			    xmlSecErrorsSafeString(err_msg));
 	    }
 	}
     }
 
     /* if we came here then we found nothing. do we have any error? */
     if((err != 0) && (err_cert != NULL)) {
-	char buf[256];
 	const char* err_msg;
 
 	err_msg = X509_verify_cert_error_string(err);
 	switch (err) {
 	case X509_V_ERR_UNABLE_TO_GET_ISSUER_CERT:
-	    X509_NAME_oneline(X509_get_issuer_name(err_cert), buf, 256);
+	    X509_NAME_oneline(X509_get_issuer_name(err_cert), buf, sizeof buf);
 	    xmlSecError(XMLSEC_ERRORS_HERE,
 			xmlSecErrorsSafeString(xmlSecKeyDataStoreGetName(store)),
 			NULL,
@@ -389,19 +446,19 @@ xmlSecOpenSSLX509StoreAdoptCert(xmlSecKeyDataStorePtr store, X509* cert, xmlSecK
     xmlSecAssert2(ctx != NULL, -1);
 
     if((type & xmlSecKeyDataTypeTrusted) != 0) {
-	xmlSecAssert2(ctx->xst != NULL, -1);
-
-	ret = X509_STORE_add_cert(ctx->xst, cert);
-	if(ret != 1) {
-	    xmlSecError(XMLSEC_ERRORS_HERE,
-			xmlSecErrorsSafeString(xmlSecKeyDataStoreGetName(store)),
-			"X509_STORE_add_cert",
-			XMLSEC_ERRORS_R_CRYPTO_FAILED,
-			XMLSEC_ERRORS_NO_MESSAGE);
-	    return(-1);
-	}
-	/* add cert increments the reference */
-	X509_free(cert);
+        xmlSecAssert2(ctx->xst != NULL, -1);
+
+        ret = X509_STORE_add_cert(ctx->xst, cert);
+        if(ret != 1) {
+            xmlSecError(XMLSEC_ERRORS_HERE,
+                        xmlSecErrorsSafeString(xmlSecKeyDataStoreGetName(store)),
+                        "X509_STORE_add_cert",
+                        XMLSEC_ERRORS_R_CRYPTO_FAILED,
+                        XMLSEC_ERRORS_NO_MESSAGE);
+            return(-1);
+        }
+        /* add cert increments the reference */
+        X509_free(cert);
     } else {
 	xmlSecAssert2(ctx->untrusted != NULL, -1);
 
@@ -499,8 +556,7 @@ xmlSecOpenSSLX509StoreInitialize(xmlSecKeyDataStorePtr store) {
 	}    
 	X509_LOOKUP_add_dir(lookup, (char*)path, X509_FILETYPE_DEFAULT);
     }
-    ctx->xst->depth = 9; /* the default cert verification path in openssl */	
-	
+
     ctx->untrusted = sk_X509_new_null();
     if(ctx->untrusted == NULL) {
 	xmlSecError(XMLSEC_ERRORS_HERE,
@@ -521,6 +577,23 @@ xmlSecOpenSSLX509StoreInitialize(xmlSecKeyDataStorePtr store) {
 	return(-1);
     }    
     
+#if !defined(XMLSEC_OPENSSL_096) && !defined(XMLSEC_OPENSSL_097)
+    ctx->vpm = X509_VERIFY_PARAM_new();
+    if(ctx->vpm == NULL) {
+	xmlSecError(XMLSEC_ERRORS_HERE,
+		    xmlSecErrorsSafeString(xmlSecKeyDataStoreGetName(store)),
+		    "X509_VERIFY_PARAM_new",
+		    XMLSEC_ERRORS_R_CRYPTO_FAILED,
+		    XMLSEC_ERRORS_NO_MESSAGE);
+	return(-1);
+    }    
+    X509_VERIFY_PARAM_set_depth(ctx->vpm, 9); /* the default cert verification path in openssl */	
+    X509_STORE_set1_param(ctx->xst, ctx->vpm);
+    
+#else  /* !defined(XMLSEC_OPENSSL_096) && !defined(XMLSEC_OPENSSL_097) */
+    ctx->xst->depth = 9; /* the default cert verification path in openssl */	
+#endif /* !defined(XMLSEC_OPENSSL_096) && !defined(XMLSEC_OPENSSL_097) */
+
     return(0);    
 }
 
@@ -532,6 +605,7 @@ xmlSecOpenSSLX509StoreFinalize(xmlSecKeyDataStorePtr store) {
     ctx = xmlSecOpenSSLX509StoreGetCtx(store);
     xmlSecAssert(ctx != NULL);
     
+
     if(ctx->xst != NULL) {
 	X509_STORE_free(ctx->xst);
     }
@@ -541,6 +615,12 @@ xmlSecOpenSSLX509StoreFinalize(xmlSecKeyDataStorePtr store) {
     if(ctx->crls != NULL) {
 	sk_X509_CRL_pop_free(ctx->crls, X509_CRL_free);
     }
+#if !defined(XMLSEC_OPENSSL_096) && !defined(XMLSEC_OPENSSL_097)
+    if(ctx->vpm != NULL) {
+	X509_VERIFY_PARAM_free(ctx->vpm);
+    }
+#endif /* !defined(XMLSEC_OPENSSL_096) && !defined(XMLSEC_OPENSSL_097) */
+
     memset(ctx, 0, sizeof(xmlSecOpenSSLX509StoreCtx));
 }
 
@@ -857,6 +937,7 @@ xmlSecOpenSSLX509NameRead(xmlSecByte *str, int len) {
 	if(len > 0) {
 	    ++str; --len;
 	    if((*str) == '\"') {
+		++str; --len;
 		valueLen = xmlSecOpenSSLX509NameStringRead(&str, &len, 
 					value, sizeof(value), '"', 1);	
 		if(valueLen < 0) {
@@ -868,6 +949,20 @@ xmlSecOpenSSLX509NameRead(xmlSecByte *str, int len) {
 		    X509_NAME_free(nm);
 		    return(NULL);
     		}
+		
+		/* skip quote */
+		if((len <= 0) || ((*str) != '\"')) {
+		    xmlSecError(XMLSEC_ERRORS_HERE,
+				NULL,
+				NULL,
+				XMLSEC_ERRORS_R_INVALID_DATA,
+				"quote is expected:%s",
+				xmlSecErrorsSafeString(str));
+		    X509_NAME_free(nm);
+		    return(NULL);
+		}
+                ++str; --len;
+
 		/* skip spaces before comma or semicolon */
 		while((len > 0) && isspace(*str)) {
 		    ++str; --len;
@@ -877,7 +972,8 @@ xmlSecOpenSSLX509NameRead(xmlSecByte *str, int len) {
 				NULL,
 				NULL,
 				XMLSEC_ERRORS_R_INVALID_DATA,
-				"comma is expected");
+				"comma is expected:%s",
+				xmlSecErrorsSafeString(str));
 		    X509_NAME_free(nm);
 		    return(NULL);
 		}
diff --git a/src/skeleton/crypto.c b/src/skeleton/crypto.c
index a84d34d..539d2b2 100644
--- a/src/skeleton/crypto.c
+++ b/src/skeleton/crypto.c
@@ -144,7 +144,7 @@ xmlSecCryptoGetFunctions_skeleton(void) {
 #endif /* XMLSEC_NO_X509 */
     gXmlSecSkeletonFunctions->cryptoAppKeyLoad 			= xmlSecSkeletonAppKeyLoad; 
     gXmlSecSkeletonFunctions->cryptoAppKeyLoadMemory		= xmlSecSkeletonAppKeyLoadMemory; 
-    gXmlSecSkeletonFunctions->cryptoAppDefaultPwdCallback	= (void*)xmlSecSkeletonAppGetDefaultPwdCallback;
+    gXmlSecSkeletonFunctions->cryptoAppDefaultPwdCallback	= (void*)xmlSecSkeletonAppGetDefaultPwdCallback();
 
     return(gXmlSecSkeletonFunctions);
 }
diff --git a/src/strings.c b/src/strings.c
index 365ef7f..8ed534b 100644
--- a/src/strings.c
+++ b/src/strings.c
@@ -331,14 +331,26 @@ const xmlChar xmlSecHrefHMACKeyValue[]		= "http://www.aleksey.com/xmlsec/2002#HM
 
 const xmlChar xmlSecNodeHMACOutputLength[] 	= "HMACOutputLength";
 
-const xmlChar xmlSecNameHmacSha1[]		= "hmac-sha1";
-const xmlChar xmlSecHrefHmacSha1[]		= "http://www.w3.org/2000/09/xmldsig#hmac-sha1";
+const xmlChar xmlSecNameHmacMd5[]		= "hmac-md5";
+const xmlChar xmlSecHrefHmacMd5[]		= "http://www.w3.org/2001/04/xmldsig-more#hmac-md5";
 
 const xmlChar xmlSecNameHmacRipemd160[]		= "hmac-ripemd160";
 const xmlChar xmlSecHrefHmacRipemd160[]		= "http://www.w3.org/2001/04/xmldsig-more#hmac-ripemd160";
 
-const xmlChar xmlSecNameHmacMd5[]		= "hmac-md5";
-const xmlChar xmlSecHrefHmacMd5[]		= "http://www.w3.org/2001/04/xmldsig-more#hmac-md5";
+const xmlChar xmlSecNameHmacSha1[]		= "hmac-sha1";
+const xmlChar xmlSecHrefHmacSha1[]		= "http://www.w3.org/2000/09/xmldsig#hmac-sha1";
+
+const xmlChar xmlSecNameHmacSha224[]		= "hmac-sha224";
+const xmlChar xmlSecHrefHmacSha224[]		= "http://www.w3.org/2001/04/xmldsig-more#hmac-sha224";
+
+const xmlChar xmlSecNameHmacSha256[]		= "hmac-sha256";
+const xmlChar xmlSecHrefHmacSha256[]		= "http://www.w3.org/2001/04/xmldsig-more#hmac-sha256";
+
+const xmlChar xmlSecNameHmacSha384[]		= "hmac-sha384";
+const xmlChar xmlSecHrefHmacSha384[]		= "http://www.w3.org/2001/04/xmldsig-more#hmac-sha384";
+
+const xmlChar xmlSecNameHmacSha512[]		= "hmac-sha512";
+const xmlChar xmlSecHrefHmacSha512[]		= "http://www.w3.org/2001/04/xmldsig-more#hmac-sha512";
 
 /*************************************************************************
  *
@@ -365,6 +377,14 @@ const xmlChar xmlSecNameMemBuf[]		= "membuf-transform";
 
 /*************************************************************************
  *
+ * MD5 strings
+ *
+ ************************************************************************/
+const xmlChar xmlSecNameMd5[]			= "md5";
+const xmlChar xmlSecHrefMd5[]			= "http://www.w3.org/2001/04/xmldsig-more#md5";
+
+/*************************************************************************
+ *
  * RetrievalMethod
  *
  ************************************************************************/
@@ -391,9 +411,27 @@ const xmlChar xmlSecNodeRSAModulus[]		= "Modulus";
 const xmlChar xmlSecNodeRSAExponent[]		= "Exponent";
 const xmlChar xmlSecNodeRSAPrivateExponent[] 	= "PrivateExponent";
 
+const xmlChar xmlSecNameRsaMd5[]		= "rsa-md5";
+const xmlChar xmlSecHrefRsaMd5[]		= "http://www.w3.org/2001/04/xmldsig-more#rsa-md5";
+
+const xmlChar xmlSecNameRsaRipemd160[]		= "rsa-ripemd160";
+const xmlChar xmlSecHrefRsaRipemd160[]		= "http://www.w3.org/2001/04/xmldsig-more#rsa-ripemd160";
+
 const xmlChar xmlSecNameRsaSha1[]		= "rsa-sha1";
 const xmlChar xmlSecHrefRsaSha1[]		= "http://www.w3.org/2000/09/xmldsig#rsa-sha1";
 
+const xmlChar xmlSecNameRsaSha224[]		= "rsa-sha224";
+const xmlChar xmlSecHrefRsaSha224[]		= "http://www.w3.org/2001/04/xmldsig-more#rsa-sha224";
+
+const xmlChar xmlSecNameRsaSha256[]		= "rsa-sha256";
+const xmlChar xmlSecHrefRsaSha256[]		= "http://www.w3.org/2001/04/xmldsig-more#rsa-sha256";
+
+const xmlChar xmlSecNameRsaSha384[]		= "rsa-sha384";
+const xmlChar xmlSecHrefRsaSha384[]		= "http://www.w3.org/2001/04/xmldsig-more#rsa-sha384";
+
+const xmlChar xmlSecNameRsaSha512[]		= "rsa-sha512";
+const xmlChar xmlSecHrefRsaSha512[]		= "http://www.w3.org/2001/04/xmldsig-more#rsa-sha512";
+
 const xmlChar xmlSecNameRsaPkcs1[]		= "rsa-1_5";
 const xmlChar xmlSecHrefRsaPkcs1[]		= "http://www.w3.org/2001/04/xmlenc#rsa-1_5";
 
@@ -409,6 +447,18 @@ const xmlChar xmlSecNodeRsaOAEPparams[]		= "OAEPparams";
 const xmlChar xmlSecNameSha1[]			= "sha1";
 const xmlChar xmlSecHrefSha1[]			= "http://www.w3.org/2000/09/xmldsig#sha1";
 
+const xmlChar xmlSecNameSha224[]		= "sha224";
+const xmlChar xmlSecHrefSha224[]		= "http://www.w3.org/2001/04/xmldsig-more#sha224";
+
+const xmlChar xmlSecNameSha256[]		= "sha256";
+const xmlChar xmlSecHrefSha256[]		= "http://www.w3.org/2001/04/xmlenc#sha256";
+
+const xmlChar xmlSecNameSha384[]		= "sha384";
+const xmlChar xmlSecHrefSha384[]		= "http://www.w3.org/2001/04/xmldsig-more#sha384";
+
+const xmlChar xmlSecNameSha512[]		= "sha512";
+const xmlChar xmlSecHrefSha512[]		= "http://www.w3.org/2001/04/xmlenc#sha512";
+
 /*************************************************************************
  *
  * X509 strings
diff --git a/src/templates.c b/src/templates.c
index 16f5240..1368d75 100644
--- a/src/templates.c
+++ b/src/templates.c
@@ -1300,7 +1300,7 @@ xmlSecTmplKeyInfoAddRetrievalMethod(xmlNodePtr keyInfoNode, const xmlChar *uri,
  * Adds <dsig:Transform/> node (and the parent <dsig:Transforms/> node
  * if required) to the <dsig:RetrievalMethod/> node @retrMethod.
  *
- * Returns the pointer to the newly created <dsig:dsig:Transforms/> node or
+ * Returns the pointer to the newly created <dsig:Transforms/> node or
  * NULL if an error occurs.
  */
 xmlNodePtr
@@ -1405,6 +1405,212 @@ xmlSecTmplKeyInfoAddEncryptedKey(xmlNodePtr keyInfoNode, xmlSecTransformId encMe
     return(encKeyNode);    
 }
 
+/***********************************************************************
+ *
+ * <dsig:X509Data> node
+ *
+ **********************************************************************/ 
+/**
+ * xmlSecTmplX509DataAddIssuerSerial:
+ * @x509DataNode: 	the pointer to <dsig:X509Data/> node.
+ * 
+ * Adds <dsig:X509IssuerSerial/> node to the given <dsig:X509Data/> node.
+ *
+ * Returns the pointer to the newly created <dsig:X509IssuerSerial/> node or
+ * NULL if an error occurs.
+ */
+
+xmlNodePtr 
+xmlSecTmplX509DataAddIssuerSerial(xmlNodePtr x509DataNode) {
+    xmlNodePtr cur;
+
+    xmlSecAssert2(x509DataNode != NULL, NULL);
+
+    cur = xmlSecFindChild(x509DataNode, xmlSecNodeX509IssuerSerial, xmlSecDSigNs);
+    if(cur != NULL) {
+	xmlSecError(XMLSEC_ERRORS_HERE,
+		    NULL,
+		    xmlSecErrorsSafeString(xmlSecNodeX509IssuerSerial),
+		    XMLSEC_ERRORS_R_NODE_ALREADY_PRESENT,
+		    XMLSEC_ERRORS_NO_MESSAGE);
+	return(NULL);
+    }
+    
+    cur = xmlSecAddChild(x509DataNode, xmlSecNodeX509IssuerSerial, xmlSecDSigNs);
+    if(cur == NULL) {
+	xmlSecError(XMLSEC_ERRORS_HERE,
+		    NULL,
+		    "xmlSecAddChild",
+		    XMLSEC_ERRORS_R_XMLSEC_FAILED,
+		    "node=%s", 
+		    xmlSecErrorsSafeString(xmlSecNodeX509IssuerSerial));
+	return(NULL);
+    }    
+    
+    return (cur);
+}
+
+/**
+ * xmlSecTmplX509DataAddSubjectName:
+ * @x509DataNode: 	the pointer to <dsig:X509Data/> node.
+ * 
+ * Adds <dsig:X509SubjectName/> node to the given <dsig:X509Data/> node.
+ *
+ * Returns the pointer to the newly created <dsig:X509SubjectName/> node or
+ * NULL if an error occurs.
+ */
+
+xmlNodePtr 
+xmlSecTmplX509DataAddSubjectName(xmlNodePtr x509DataNode) {
+    xmlNodePtr cur;
+
+    xmlSecAssert2(x509DataNode != NULL, NULL);
+
+    cur = xmlSecFindChild(x509DataNode, xmlSecNodeX509SubjectName, xmlSecDSigNs);
+    if(cur != NULL) {
+	xmlSecError(XMLSEC_ERRORS_HERE,
+		    NULL,
+		    xmlSecErrorsSafeString(xmlSecNodeX509SubjectName),
+		    XMLSEC_ERRORS_R_NODE_ALREADY_PRESENT,
+		    XMLSEC_ERRORS_NO_MESSAGE);
+	return(NULL);
+    }
+    
+    cur = xmlSecAddChild(x509DataNode, xmlSecNodeX509SubjectName, xmlSecDSigNs);
+    if(cur == NULL) {
+	xmlSecError(XMLSEC_ERRORS_HERE,
+		    NULL,
+		    "xmlSecAddChild",
+		    XMLSEC_ERRORS_R_XMLSEC_FAILED,
+		    "node=%s", 
+		    xmlSecErrorsSafeString(xmlSecNodeX509SubjectName));
+	return(NULL);
+    }    
+    
+    return (cur);
+}
+
+/**
+ * xmlSecTmplX509DataAddSKI:
+ * @x509DataNode: 	the pointer to <dsig:X509Data/> node.
+ * 
+ * Adds <dsig:X509SKI/> node to the given <dsig:X509Data/> node.
+ *
+ * Returns the pointer to the newly created <dsig:X509SKI/> node or
+ * NULL if an error occurs.
+ */
+
+xmlNodePtr 
+xmlSecTmplX509DataAddSKI(xmlNodePtr x509DataNode) {
+    xmlNodePtr cur;
+
+    xmlSecAssert2(x509DataNode != NULL, NULL);
+
+    cur = xmlSecFindChild(x509DataNode, xmlSecNodeX509SKI, xmlSecDSigNs);
+    if(cur != NULL) {
+	xmlSecError(XMLSEC_ERRORS_HERE,
+		    NULL,
+		    xmlSecErrorsSafeString(xmlSecNodeX509SKI),
+		    XMLSEC_ERRORS_R_NODE_ALREADY_PRESENT,
+		    XMLSEC_ERRORS_NO_MESSAGE);
+	return(NULL);
+    }
+    
+    cur = xmlSecAddChild(x509DataNode, xmlSecNodeX509SKI, xmlSecDSigNs);
+    if(cur == NULL) {
+	xmlSecError(XMLSEC_ERRORS_HERE,
+		    NULL,
+		    "xmlSecAddChild",
+		    XMLSEC_ERRORS_R_XMLSEC_FAILED,
+		    "node=%s", 
+		    xmlSecErrorsSafeString(xmlSecNodeX509SKI));
+	return(NULL);
+    }    
+    
+    return (cur);
+}
+
+
+/**
+ * xmlSecTmplX509DataAddCertificate:
+ * @x509DataNode: 	the pointer to <dsig:X509Data/> node.
+ * 
+ * Adds <dsig:X509Certificate/> node to the given <dsig:X509Data/> node.
+ *
+ * Returns the pointer to the newly created <dsig:X509Certificate/> node or
+ * NULL if an error occurs.
+ */
+
+xmlNodePtr 
+xmlSecTmplX509DataAddCertificate(xmlNodePtr x509DataNode) {
+    xmlNodePtr cur;
+
+    xmlSecAssert2(x509DataNode != NULL, NULL);
+
+    cur = xmlSecFindChild(x509DataNode, xmlSecNodeX509Certificate, xmlSecDSigNs);
+    if(cur != NULL) {
+	xmlSecError(XMLSEC_ERRORS_HERE,
+		    NULL,
+		    xmlSecErrorsSafeString(xmlSecNodeX509Certificate),
+		    XMLSEC_ERRORS_R_NODE_ALREADY_PRESENT,
+		    XMLSEC_ERRORS_NO_MESSAGE);
+	return(NULL);
+    }
+    
+    cur = xmlSecAddChild(x509DataNode, xmlSecNodeX509Certificate, xmlSecDSigNs);
+    if(cur == NULL) {
+	xmlSecError(XMLSEC_ERRORS_HERE,
+		    NULL,
+		    "xmlSecAddChild",
+		    XMLSEC_ERRORS_R_XMLSEC_FAILED,
+		    "node=%s", 
+		    xmlSecErrorsSafeString(xmlSecNodeX509Certificate));
+	return(NULL);
+    }    
+    
+    return (cur);
+}
+
+/**
+ * xmlSecTmplX509DataAddCRL:
+ * @x509DataNode: 	the pointer to <dsig:X509Data/> node.
+ * 
+ * Adds <dsig:X509CRL/> node to the given <dsig:X509Data/> node.
+ *
+ * Returns the pointer to the newly created <dsig:X509CRL/> node or
+ * NULL if an error occurs.
+ */
+
+xmlNodePtr 
+xmlSecTmplX509DataAddCRL(xmlNodePtr x509DataNode) {
+    xmlNodePtr cur;
+
+    xmlSecAssert2(x509DataNode != NULL, NULL);
+
+    cur = xmlSecFindChild(x509DataNode, xmlSecNodeX509CRL, xmlSecDSigNs);
+    if(cur != NULL) {
+	xmlSecError(XMLSEC_ERRORS_HERE,
+		    NULL,
+		    xmlSecErrorsSafeString(xmlSecNodeX509CRL),
+		    XMLSEC_ERRORS_R_NODE_ALREADY_PRESENT,
+		    XMLSEC_ERRORS_NO_MESSAGE);
+	return(NULL);
+    }
+    
+    cur = xmlSecAddChild(x509DataNode, xmlSecNodeX509CRL, xmlSecDSigNs);
+    if(cur == NULL) {
+	xmlSecError(XMLSEC_ERRORS_HERE,
+		    NULL,
+		    "xmlSecAddChild",
+		    XMLSEC_ERRORS_R_XMLSEC_FAILED,
+		    "node=%s", 
+		    xmlSecErrorsSafeString(xmlSecNodeX509CRL));
+	return(NULL);
+    }    
+    
+    return (cur);
+}
+
 /*************************************************************************
  *
  * <dsig:Transform/> node
diff --git a/src/xmltree.c b/src/xmltree.c
index 0dc4d8e..a995808 100644
--- a/src/xmltree.c
+++ b/src/xmltree.c
@@ -183,7 +183,7 @@ xmlSecAddChild(xmlNodePtr parent, const xmlChar *name, const xmlChar *ns) {
 
     if(parent->children == NULL) {
         /* TODO: add indents */
-	text = xmlNewText(BAD_CAST "\n"); 
+	text = xmlNewText(xmlSecStringCR); 
         if(text == NULL) {	
 	    xmlSecError(XMLSEC_ERRORS_HERE,
 			NULL,
@@ -212,12 +212,12 @@ xmlSecAddChild(xmlNodePtr parent, const xmlChar *name, const xmlChar *ns) {
 	nsPtr = xmlSearchNs(cur->doc, cur, NULL);
 	if((nsPtr == NULL) || !xmlStrEqual(nsPtr->href, ns)) {
 	    nsPtr = xmlNewNs(cur, ns, NULL);
-	    xmlSetNs(cur, nsPtr);
 	}
+	xmlSetNs(cur, nsPtr);
     }
     
     /* TODO: add indents */
-    text = xmlNewText(BAD_CAST "\n"); 
+    text = xmlNewText(xmlSecStringCR); 
     if(text == NULL) {	
 	xmlSecError(XMLSEC_ERRORS_HERE,
 		    NULL,
@@ -249,7 +249,7 @@ xmlSecAddChildNode(xmlNodePtr parent, xmlNodePtr child) {
 
     if(parent->children == NULL) {
         /* TODO: add indents */
-	text = xmlNewText(BAD_CAST "\n"); 
+	text = xmlNewText(xmlSecStringCR); 
         if(text == NULL) {	
 	    xmlSecError(XMLSEC_ERRORS_HERE,
 			NULL,
@@ -264,7 +264,7 @@ xmlSecAddChildNode(xmlNodePtr parent, xmlNodePtr child) {
     xmlAddChild(parent, child);
 
     /* TODO: add indents */
-    text = xmlNewText(BAD_CAST "\n"); 
+    text = xmlNewText(xmlSecStringCR); 
     if(text == NULL) {	
 	xmlSecError(XMLSEC_ERRORS_HERE,
 		    NULL,
@@ -314,12 +314,12 @@ xmlSecAddNextSibling(xmlNodePtr node, const xmlChar *name, const xmlChar *ns) {
 	nsPtr = xmlSearchNs(cur->doc, cur, NULL);
 	if((nsPtr == NULL) || !xmlStrEqual(nsPtr->href, ns)) {
 	    nsPtr = xmlNewNs(cur, ns, NULL);
-	    xmlSetNs(cur, nsPtr);
 	}
+	xmlSetNs(cur, nsPtr);
     }
 
     /* TODO: add indents */
-    text = xmlNewText(BAD_CAST "\n");
+    text = xmlNewText(xmlSecStringCR);
     if(text == NULL) {	
 	xmlSecError(XMLSEC_ERRORS_HERE,
 		    NULL,
@@ -369,12 +369,12 @@ xmlSecAddPrevSibling(xmlNodePtr node, const xmlChar *name, const xmlChar *ns) {
 	nsPtr = xmlSearchNs(cur->doc, cur, NULL);
 	if((nsPtr == NULL) || !xmlStrEqual(nsPtr->href, ns)) {
 	    nsPtr = xmlNewNs(cur, ns, NULL);
-	    xmlSetNs(cur, nsPtr);
 	}
+	xmlSetNs(cur, nsPtr);
     }
 
     /* TODO: add indents */
-    text = xmlNewText(BAD_CAST "\n");
+    text = xmlNewText(xmlSecStringCR);
     if(text == NULL) {	
 	xmlSecError(XMLSEC_ERRORS_HERE,
 		    NULL,
@@ -486,47 +486,33 @@ xmlSecReplaceContent(xmlNodePtr node, xmlNodePtr newNode) {
 int
 xmlSecReplaceNodeBuffer(xmlNodePtr node, 
 			const xmlSecByte *buffer, xmlSecSize size) {
-    static const char dummyPrefix[] = "<dummy>";
-    static const char dummyPostfix[] = "</dummy>";
-    xmlDocPtr doc;
-    xmlNodePtr ptr1, ptr2;
+    xmlNodePtr results = NULL;
+    xmlNodePtr next = NULL;
 
     xmlSecAssert2(node != NULL, -1);
-    
-    doc = xmlSecParseMemoryExt((xmlSecByte*)dummyPrefix, strlen(dummyPrefix),
-			       buffer, size,
-			       (xmlSecByte*)dummyPostfix, strlen(dummyPostfix));
-    if(doc == NULL){
-	xmlSecError(XMLSEC_ERRORS_HERE,
-		    NULL,
-		    "xmlSecParseMemoryExt",
-		    XMLSEC_ERRORS_R_XMLSEC_FAILED,
-		    XMLSEC_ERRORS_NO_MESSAGE);
-	return(-1);	    	
-    }
-	    
-    ptr1 = xmlDocGetRootElement(doc);
-    if(ptr1 == NULL){
-	xmlSecError(XMLSEC_ERRORS_HERE,
-		    NULL,
-		    "xmlDocGetRootElement",
-		    XMLSEC_ERRORS_R_XML_FAILED,
-		    "root is null");
-	xmlFreeDoc(doc);
-	return(-1);	    	
+    xmlSecAssert2(node->parent != NULL, -1);
+
+    /* parse buffer in the context of node's parent */
+    if(xmlParseInNodeContext(node->parent, (const char*)buffer, size, XML_PARSE_NODICT, &results) != XML_ERR_OK) {
+        xmlSecError(XMLSEC_ERRORS_HERE,
+                    NULL,
+                    "xmlParseInNodeContext",
+                    XMLSEC_ERRORS_R_XML_FAILED,
+                    "Failed to parse content");
+        return(-1);         
     }
-    
-    ptr1 = ptr1->children;
-    while(ptr1 != NULL) {
-	ptr2 = ptr1->next;
-	xmlUnlinkNode(ptr1);
-	xmlAddPrevSibling(node, ptr1);
-	ptr1 = ptr2;
+
+    /* add new nodes */
+    while (results != NULL) {
+        next = results->next;
+        xmlAddPrevSibling(node, results);
+        results = next;
     }
-	    
+
+    /* remove old node */
     xmlUnlinkNode(node);
     xmlFreeNode(node);  
-    xmlFreeDoc(doc);
+
     return(0);
 }
 
@@ -631,6 +617,7 @@ xmlSecGenerateAndAddID(xmlNodePtr node, const xmlChar* attrName, const xmlChar*
 	        return(-1);	
 	    }
 	    
+	    xmlFree(id);
 	    return(0);
 	}
 	xmlFree(id);
@@ -723,7 +710,7 @@ xmlSecGenerateID(const xmlChar* prefix, xmlSecSize len) {
 	
 	tmpLen = xmlStrlen(prefix) + xmlStrlen(res) + 1;
 	tmp = xmlMalloc(tmpLen + 1);
-	if(res == NULL) {
+	if(tmp == NULL) {
 	    xmlSecError(XMLSEC_ERRORS_HERE,
 		        NULL,
 			"xmlMalloc",
@@ -733,7 +720,7 @@ xmlSecGenerateID(const xmlChar* prefix, xmlSecSize len) {
 	    return(NULL);
 	}
 	
-	xmlSecStrPrintf(res, tmpLen, BAD_CAST "%s%s", prefix, res);
+	xmlSecStrPrintf(tmp, tmpLen, BAD_CAST "%s%s", prefix, res);
 	xmlFree(res);
 	res = tmp;    
     } else {
diff --git a/tests/01-geuerp-xfilter2/xpath2filterOmitComments.tmpl b/tests/01-geuerp-xfilter2/xpath2filterOmitComments.tmpl
deleted file mode 100644
index b54a5f7..0000000
--- a/tests/01-geuerp-xfilter2/xpath2filterOmitComments.tmpl
+++ /dev/null
@@ -1,49 +0,0 @@
-<Document>
-     <ToBeSigned>
-       <!-- comment -->
-       <Data></Data>
-       <NotToBeSigned>
-         <ReallyToBeSigned>
-           <!-- comment -->
-           <Data></Data>
-         </ReallyToBeSigned>
-       </NotToBeSigned>
-     </ToBeSigned>
-     <ToBeSigned>
-       <Data></Data>
-       <NotToBeSigned>
-         <Data></Data>
-       </NotToBeSigned>
-     </ToBeSigned>
-<ds:Signature xmlns:ds="http://www.w3.org/2000/09/xmldsig#">
-<ds:SignedInfo>
-<ds:CanonicalizationMethod Algorithm="http://www.w3.org/TR/2001/REC-xml-c14n-20010315"></ds:CanonicalizationMethod>
-<ds:SignatureMethod Algorithm="http://www.w3.org/2000/09/xmldsig#hmac-sha1"></ds:SignatureMethod>
-<ds:Reference URI="">
-<ds:Transforms>
-<ds:Transform Algorithm="http://www.w3.org/2002/04/xmldsig-filter2">
-<dsig-xpath:XPath xmlns:dsig-xpath="http://www.w3.org/2002/04/xmldsig-filter2" Filter="intersect">
-//ToBeSigned
-</dsig-xpath:XPath>
-</ds:Transform>
-<ds:Transform Algorithm="http://www.w3.org/2002/04/xmldsig-filter2">
-<dsig-xpath:XPath xmlns:dsig-xpath="http://www.w3.org/2002/04/xmldsig-filter2" Filter="subtract">
-//NotToBeSigned
-</dsig-xpath:XPath>
-</ds:Transform>
-<ds:Transform Algorithm="http://www.w3.org/2002/04/xmldsig-filter2">
-<dsig-xpath:XPath xmlns:dsig-xpath="http://www.w3.org/2002/04/xmldsig-filter2" Filter="union">
-//ReallyToBeSigned
-</dsig-xpath:XPath>
-</ds:Transform>
-</ds:Transforms>
-<ds:DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"></ds:DigestMethod>
-<ds:DigestValue></ds:DigestValue>
-</ds:Reference>
-</ds:SignedInfo>
-<ds:SignatureValue></ds:SignatureValue>
-<ds:KeyInfo>
-<ds:KeyName>test-hmac-sha1</ds:KeyName>
-</ds:KeyInfo>
-</ds:Signature>
-</Document>
\ No newline at end of file
diff --git a/tests/01-geuerp-xfilter2/xpath2filterOmitComments.xml b/tests/01-geuerp-xfilter2/xpath2filterOmitComments.xml
deleted file mode 100644
index 0cfd74e..0000000
--- a/tests/01-geuerp-xfilter2/xpath2filterOmitComments.xml
+++ /dev/null
@@ -1,49 +0,0 @@
-<Document>
-     <ToBeSigned>
-       <!-- comment -->
-       <Data></Data>
-       <NotToBeSigned>
-         <ReallyToBeSigned>
-           <!-- comment -->
-           <Data></Data>
-         </ReallyToBeSigned>
-       </NotToBeSigned>
-     </ToBeSigned>
-     <ToBeSigned>
-       <Data></Data>
-       <NotToBeSigned>
-         <Data></Data>
-       </NotToBeSigned>
-     </ToBeSigned>
-<ds:Signature xmlns:ds="http://www.w3.org/2000/09/xmldsig#">
-<ds:SignedInfo>
-<ds:CanonicalizationMethod Algorithm="http://www.w3.org/TR/2001/REC-xml-c14n-20010315"></ds:CanonicalizationMethod>
-<ds:SignatureMethod Algorithm="http://www.w3.org/2000/09/xmldsig#hmac-sha1"></ds:SignatureMethod>
-<ds:Reference URI="">
-<ds:Transforms>
-<ds:Transform Algorithm="http://www.w3.org/2002/04/xmldsig-filter2">
-<dsig-xpath:XPath xmlns:dsig-xpath="http://www.w3.org/2002/04/xmldsig-filter2" Filter="intersect">
-//ToBeSigned
-</dsig-xpath:XPath>
-</ds:Transform>
-<ds:Transform Algorithm="http://www.w3.org/2002/04/xmldsig-filter2">
-<dsig-xpath:XPath xmlns:dsig-xpath="http://www.w3.org/2002/04/xmldsig-filter2" Filter="subtract">
-//NotToBeSigned
-</dsig-xpath:XPath>
-</ds:Transform>
-<ds:Transform Algorithm="http://www.w3.org/2002/04/xmldsig-filter2">
-<dsig-xpath:XPath xmlns:dsig-xpath="http://www.w3.org/2002/04/xmldsig-filter2" Filter="union">
-//ReallyToBeSigned
-</dsig-xpath:XPath>
-</ds:Transform>
-</ds:Transforms>
-<ds:DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"></ds:DigestMethod>
-<ds:DigestValue>fYOT32q8tu2q8QBximRTopkGFAM=</ds:DigestValue>
-</ds:Reference>
-</ds:SignedInfo>
-<ds:SignatureValue>7BeqHEYVknT9VuJn27D/YwL/UZo=</ds:SignatureValue>
-<ds:KeyInfo>
-<ds:KeyName>test-hmac-sha1</ds:KeyName>
-</ds:KeyInfo>
-</ds:Signature>
-</Document>
\ No newline at end of file
diff --git a/tests/01-geuerp-xfilter2/xpath2filterWithComments.tmpl b/tests/01-geuerp-xfilter2/xpath2filterWithComments.tmpl
deleted file mode 100644
index 6186a9a..0000000
--- a/tests/01-geuerp-xfilter2/xpath2filterWithComments.tmpl
+++ /dev/null
@@ -1,50 +0,0 @@
-<Document>
-     <ToBeSigned>
-       <!-- comment -->
-       <Data></Data>
-       <NotToBeSigned>
-         <ReallyToBeSigned>
-           <!-- comment -->
-           <Data></Data>
-         </ReallyToBeSigned>
-       </NotToBeSigned>
-     </ToBeSigned>
-     <ToBeSigned>
-       <Data></Data>
-       <NotToBeSigned>
-         <Data></Data>
-       </NotToBeSigned>
-     </ToBeSigned>
-<ds:Signature xmlns:ds="http://www.w3.org/2000/09/xmldsig#">
-<ds:SignedInfo>
-<ds:CanonicalizationMethod Algorithm="http://www.w3.org/TR/2001/REC-xml-c14n-20010315"></ds:CanonicalizationMethod>
-<ds:SignatureMethod Algorithm="http://www.w3.org/2000/09/xmldsig#hmac-sha1"></ds:SignatureMethod>
-<ds:Reference URI="">
-<ds:Transforms>
-<ds:Transform Algorithm="http://www.w3.org/2002/04/xmldsig-filter2">
-<dsig-xpath:XPath xmlns:dsig-xpath="http://www.w3.org/2002/04/xmldsig-filter2" Filter="intersect">
-//ToBeSigned
-</dsig-xpath:XPath>
-</ds:Transform>
-<ds:Transform Algorithm="http://www.w3.org/2002/04/xmldsig-filter2">
-<dsig-xpath:XPath xmlns:dsig-xpath="http://www.w3.org/2002/04/xmldsig-filter2" Filter="subtract">
-//NotToBeSigned
-</dsig-xpath:XPath>
-</ds:Transform>
-<ds:Transform Algorithm="http://www.w3.org/2002/04/xmldsig-filter2">
-<dsig-xpath:XPath xmlns:dsig-xpath="http://www.w3.org/2002/04/xmldsig-filter2" Filter="union">
-//ReallyToBeSigned
-</dsig-xpath:XPath>
-</ds:Transform>
-<ds:Transform Algorithm="http://www.w3.org/TR/2001/REC-xml-c14n-20010315#WithComments"></ds:Transform>
-</ds:Transforms>
-<ds:DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"></ds:DigestMethod>
-<ds:DigestValue>zyVVYItyOgm1KmkYVapBXXEHlLc=</ds:DigestValue>
-</ds:Reference>
-</ds:SignedInfo>
-<ds:SignatureValue>9hCB+9RRKYeGE/YhfzdnEWf0WrY=</ds:SignatureValue>
-<ds:KeyInfo>
-<ds:KeyName>test-hmac-sha1</ds:KeyName>
-</ds:KeyInfo>
-</ds:Signature>
-</Document>
\ No newline at end of file
diff --git a/tests/01-geuerp-xfilter2/xpath2filterWithComments.xml b/tests/01-geuerp-xfilter2/xpath2filterWithComments.xml
deleted file mode 100644
index 6186a9a..0000000
--- a/tests/01-geuerp-xfilter2/xpath2filterWithComments.xml
+++ /dev/null
@@ -1,50 +0,0 @@
-<Document>
-     <ToBeSigned>
-       <!-- comment -->
-       <Data></Data>
-       <NotToBeSigned>
-         <ReallyToBeSigned>
-           <!-- comment -->
-           <Data></Data>
-         </ReallyToBeSigned>
-       </NotToBeSigned>
-     </ToBeSigned>
-     <ToBeSigned>
-       <Data></Data>
-       <NotToBeSigned>
-         <Data></Data>
-       </NotToBeSigned>
-     </ToBeSigned>
-<ds:Signature xmlns:ds="http://www.w3.org/2000/09/xmldsig#">
-<ds:SignedInfo>
-<ds:CanonicalizationMethod Algorithm="http://www.w3.org/TR/2001/REC-xml-c14n-20010315"></ds:CanonicalizationMethod>
-<ds:SignatureMethod Algorithm="http://www.w3.org/2000/09/xmldsig#hmac-sha1"></ds:SignatureMethod>
-<ds:Reference URI="">
-<ds:Transforms>
-<ds:Transform Algorithm="http://www.w3.org/2002/04/xmldsig-filter2">
-<dsig-xpath:XPath xmlns:dsig-xpath="http://www.w3.org/2002/04/xmldsig-filter2" Filter="intersect">
-//ToBeSigned
-</dsig-xpath:XPath>
-</ds:Transform>
-<ds:Transform Algorithm="http://www.w3.org/2002/04/xmldsig-filter2">
-<dsig-xpath:XPath xmlns:dsig-xpath="http://www.w3.org/2002/04/xmldsig-filter2" Filter="subtract">
-//NotToBeSigned
-</dsig-xpath:XPath>
-</ds:Transform>
-<ds:Transform Algorithm="http://www.w3.org/2002/04/xmldsig-filter2">
-<dsig-xpath:XPath xmlns:dsig-xpath="http://www.w3.org/2002/04/xmldsig-filter2" Filter="union">
-//ReallyToBeSigned
-</dsig-xpath:XPath>
-</ds:Transform>
-<ds:Transform Algorithm="http://www.w3.org/TR/2001/REC-xml-c14n-20010315#WithComments"></ds:Transform>
-</ds:Transforms>
-<ds:DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"></ds:DigestMethod>
-<ds:DigestValue>zyVVYItyOgm1KmkYVapBXXEHlLc=</ds:DigestValue>
-</ds:Reference>
-</ds:SignedInfo>
-<ds:SignatureValue>9hCB+9RRKYeGE/YhfzdnEWf0WrY=</ds:SignatureValue>
-<ds:KeyInfo>
-<ds:KeyName>test-hmac-sha1</ds:KeyName>
-</ds:KeyInfo>
-</ds:Signature>
-</Document>
\ No newline at end of file
diff --git a/tests/aleksey-xmldsig-01/enveloping-dsa-x509chain.xml b/tests/aleksey-xmldsig-01/enveloping-dsa-x509chain.xml
index dbd1974..f6d02ea 100644
--- a/tests/aleksey-xmldsig-01/enveloping-dsa-x509chain.xml
+++ b/tests/aleksey-xmldsig-01/enveloping-dsa-x509chain.xml
@@ -8,59 +8,79 @@
       <DigestValue>7/XTsHaBSOnJ/jXD5v0zL6VKYsk=</DigestValue>
     </Reference>
   </SignedInfo>
-  <SignatureValue>Ple9/Pxq19YDA67TjwHu4z6ZocSEX6PEJhJc9ero3J1DXmCi9jpY1Q==</SignatureValue>
+  <SignatureValue>Niji66p2agomSLiShIYXIekL7bdFEnxzpa2ETcad9mHXHWd218vjUg==</SignatureValue>
   <KeyInfo>
     <X509Data>
-    <X509Certificate>MIIFKTCCBNOgAwIBAgIBAjANBgkqhkiG9w0BAQQFADCBvzELMAkGA1UEBhMCVVMx
-EzARBgNVBAgTCkNhbGlmb3JuaWExPTA7BgNVBAoTNFhNTCBTZWN1cml0eSBMaWJy
-YXJ5IChodHRwOi8vd3d3LmFsZWtzZXkuY29tL3htbHNlYykxITAfBgNVBAsTGFNl
-Y29uZCBMZXZlbCBDZXJ0aWZpY2F0ZTEWMBQGA1UEAxMNQWxla3NleSBTYW5pbjEh
-MB8GCSqGSIb3DQEJARYSeG1sc2VjQGFsZWtzZXkuY29tMB4XDTAyMDIwMjA4MDEy
-N1oXDTEyMDEzMTA4MDEyN1owgcIxCzAJBgNVBAYTAlVTMRMwEQYDVQQIEwpDYWxp
-Zm9ybmlhMT0wOwYDVQQKEzRYTUwgU2VjdXJpdHkgTGlicmFyeSAoaHR0cDovL3d3
-dy5hbGVrc2V5LmNvbS94bWxzZWMpMSQwIgYDVQQLExtUaGlyZCBMZXZlbCBEU0Eg
-Q2VydGlmaWNhdGUxFjAUBgNVBAMTDUFsZWtzZXkgU2FuaW4xITAfBgkqhkiG9w0B
-CQEWEnhtbHNlY0BhbGVrc2V5LmNvbTCCAbYwggErBgcqhkjOOAQBMIIBHgKBgQCK
-ZbopgE9hcB/qK1IC5izVos9+zz+8ESK6y/+mXVcyK4y8Hu/KImBKPz81ORFyL9Rf
-+tVe/ytsJGO9gVffHn/nd/iFzocrPslAjiqoHsWXk3zrOn4GxDE1Di3Oi6z1LYdN
-3b/N1PBWy874f2XcVqGZWn+bYgcThbbsligXj2o/XQIVAL/8c1qo0b4npJNqzFt8
-KWLKU/VLAoGAUIyzUDlLe6uCCgF4Rh98fiKZvg64UJ4FM5L+WbCSMmVsFN06fTwx
-y3naPPOCzzoufsHv/Bve2gvrDvd078oXWJJf9A44pIZnJkdjEhm2RsDFpXNq0tPK
-ZFcjVsdmqg4MX6YNuwpvZuTwSoDG5u1QMN0mmH9gmbIT3j9x4MO+7EYDgYQAAoGA
-On+KBJE3q1TRhG9RspNX01VI5C0VzSy4N/QyC4YzEENoq3GJkKHIYq+grq9ZqV9x
-g2Geo/3mqhdcENOtYRmWEfOZJj18oukD6TNceYRZ4HjHjK3WY3wK2OV6QOly+k3f
-xgEQpP/7IlCka5YICLuHXrbqjn5b0XcK9L2GDtWOyjujggFXMIIBUzAJBgNVHRME
-AjAAMCwGCWCGSAGG+EIBDQQfFh1PcGVuU1NMIEdlbmVyYXRlZCBDZXJ0aWZpY2F0
-ZTAdBgNVHQ4EFgQUR7VOGhej7APDOGwJ9bRy5E64hJYwgfgGA1UdIwSB8DCB7YAU
-eNctkWEvlSJKu+HVPcYmr6uX0gShgdGkgc4wgcsxCzAJBgNVBAYTAlVTMRMwEQYD
-VQQIEwpDYWxpZm9ybmlhMRIwEAYDVQQHEwlTdW5ueXZhbGUxPTA7BgNVBAoTNFhN
-TCBTZWN1cml0eSBMaWJyYXJ5IChodHRwOi8vd3d3LmFsZWtzZXkuY29tL3htbHNl
-YykxGTAXBgNVBAsTEFJvb3QgQ2VydGlmaWNhdGUxFjAUBgNVBAMTDUFsZWtzZXkg
-U2FuaW4xITAfBgkqhkiG9w0BCQEWEnhtbHNlY0BhbGVrc2V5LmNvbYIBATANBgkq
-hkiG9w0BAQQFAANBAHq6UzC5QtbSUWhx7K5cSNMQKaDLgkCv/Ak0rVhOEWNrPQ6s
-I1OWyk2BUi17BxfN2xGP3u6wArxFarKjupTvr0Q=</X509Certificate>
-<X509Certificate>MIIEFzCCA4CgAwIBAgIBATANBgkqhkiG9w0BAQQFADCByzELMAkGA1UEBhMCVVMx
-EzARBgNVBAgTCkNhbGlmb3JuaWExEjAQBgNVBAcTCVN1bm55dmFsZTE9MDsGA1UE
-ChM0WE1MIFNlY3VyaXR5IExpYnJhcnkgKGh0dHA6Ly93d3cuYWxla3NleS5jb20v
-eG1sc2VjKTEZMBcGA1UECxMQUm9vdCBDZXJ0aWZpY2F0ZTEWMBQGA1UEAxMNQWxl
-a3NleSBTYW5pbjEhMB8GCSqGSIb3DQEJARYSeG1sc2VjQGFsZWtzZXkuY29tMB4X
-DTAyMDIwMjA4MDA1OVoXDTEyMDEzMTA4MDA1OVowgb8xCzAJBgNVBAYTAlVTMRMw
-EQYDVQQIEwpDYWxpZm9ybmlhMT0wOwYDVQQKEzRYTUwgU2VjdXJpdHkgTGlicmFy
-eSAoaHR0cDovL3d3dy5hbGVrc2V5LmNvbS94bWxzZWMpMSEwHwYDVQQLExhTZWNv
-bmQgTGV2ZWwgQ2VydGlmaWNhdGUxFjAUBgNVBAMTDUFsZWtzZXkgU2FuaW4xITAf
-BgkqhkiG9w0BCQEWEnhtbHNlY0BhbGVrc2V5LmNvbTBcMA0GCSqGSIb3DQEBAQUA
-A0sAMEgCQQDILuuqHAryfyHYBbaHp8ujFfsylBhgR1S5346z5DnM9eZ+i2By9WGT
-VygXfiZuHwu3rTFhca9O6sVPOcBuFTrnAgMBAAGjggFXMIIBUzAJBgNVHRMEAjAA
-MCwGCWCGSAGG+EIBDQQfFh1PcGVuU1NMIEdlbmVyYXRlZCBDZXJ0aWZpY2F0ZTAd
-BgNVHQ4EFgQUeNctkWEvlSJKu+HVPcYmr6uX0gQwgfgGA1UdIwSB8DCB7YAUtLnv
-muaXDmhlHpjO+lUNiQbbTHyhgdGkgc4wgcsxCzAJBgNVBAYTAlVTMRMwEQYDVQQI
-EwpDYWxpZm9ybmlhMRIwEAYDVQQHEwlTdW5ueXZhbGUxPTA7BgNVBAoTNFhNTCBT
-ZWN1cml0eSBMaWJyYXJ5IChodHRwOi8vd3d3LmFsZWtzZXkuY29tL3htbHNlYykx
-GTAXBgNVBAsTEFJvb3QgQ2VydGlmaWNhdGUxFjAUBgNVBAMTDUFsZWtzZXkgU2Fu
-aW4xITAfBgkqhkiG9w0BCQEWEnhtbHNlY0BhbGVrc2V5LmNvbYIBADANBgkqhkiG
-9w0BAQQFAAOBgQBxJHfdMbcTOpUWJdQrWNzHbQtyHMSdLSHTALIh10ORhltBXSYe
-vJywXmYz2F7080WuEDxdHuUysL8EKPlM7LRTJooqVyM4t635UaMYsm+4S0A4g9pW
-tHA0SUfq9q6hihzmVxDA7Lwj194ObRNMWFILTrfURzOE0xQbutPweMRm/g==</X509Certificate>
+    <X509Certificate>MIIETTCCA7agAwIBAgIJANaOuOCRgiz3MA0GCSqGSIb3DQEBBQUAMIG8MQswCQYD
+VQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTE9MDsGA1UEChM0WE1MIFNlY3Vy
+aXR5IExpYnJhcnkgKGh0dHA6Ly93d3cuYWxla3NleS5jb20veG1sc2VjKTEeMBwG
+A1UECxMVVGVzdCBSb290IENlcnRpZmljYXRlMRYwFAYDVQQDEw1BbGVrc2V5IFNh
+bmluMSEwHwYJKoZIhvcNAQkBFhJ4bWxzZWNAYWxla3NleS5jb20wHhcNMDUwNzEw
+MDIyOTAxWhcNMTUwNzA4MDIyOTAxWjCBvDELMAkGA1UEBhMCVVMxEzARBgNVBAgT
+CkNhbGlmb3JuaWExPTA7BgNVBAoTNFhNTCBTZWN1cml0eSBMaWJyYXJ5IChodHRw
+Oi8vd3d3LmFsZWtzZXkuY29tL3htbHNlYykxHjAcBgNVBAsTFVRlc3QgUm9vdCBD
+ZXJ0aWZpY2F0ZTEWMBQGA1UEAxMNQWxla3NleSBTYW5pbjEhMB8GCSqGSIb3DQEJ
+ARYSeG1sc2VjQGFsZWtzZXkuY29tMIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKB
+gQDayaFajJxOdVU+8EjwO31S2XqNmYxxbHfiUJO3w2h57OPUkKAcKe5Gvt9hJbPT
+b3C4blPScOke2RexKnXS7pAXXbxFlgUlZ0QK0K2pdl559OSmrtH3mPP9BJvvDMlx
+kcNj9/EeD+yGd8GN/yT6PTDh8G/4lszOXL+tyKIkC4Ys/wIDAQABo4IBUzCCAU8w
+DAYDVR0TBAUwAwEB/zAsBglghkgBhvhCAQ0EHxYdT3BlblNTTCBHZW5lcmF0ZWQg
+Q2VydGlmaWNhdGUwHQYDVR0OBBYEFNpG6Wvmr9M9quUhS1LtymYo4P6FMIHxBgNV
+HSMEgekwgeaAFNpG6Wvmr9M9quUhS1LtymYo4P6FoYHCpIG/MIG8MQswCQYDVQQG
+EwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTE9MDsGA1UEChM0WE1MIFNlY3VyaXR5
+IExpYnJhcnkgKGh0dHA6Ly93d3cuYWxla3NleS5jb20veG1sc2VjKTEeMBwGA1UE
+CxMVVGVzdCBSb290IENlcnRpZmljYXRlMRYwFAYDVQQDEw1BbGVrc2V5IFNhbmlu
+MSEwHwYJKoZIhvcNAQkBFhJ4bWxzZWNAYWxla3NleS5jb22CCQDWjrjgkYIs9zAN
+BgkqhkiG9w0BAQUFAAOBgQBUXbdOTQwArcNrbxavzARp2JGOnzo6WzTm+OFSXC0F
+08YwT8jWbht97e8lNNVOBU4Y/38ReZqYC9OqFofG1/O9AdQ58WL/FWg8DgP5MJPT
+T9kRU3FU01jUiX2+kbdnghZAOJm0ziRNxfNPwIIWPKYXyXEKQQzrnxyFey1hP7cg
+6A==</X509Certificate>
+<X509Certificate>MIIEFTCCA36gAwIBAgIJANaOuOCRgiz4MA0GCSqGSIb3DQEBBQUAMIG8MQswCQYD
+VQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTE9MDsGA1UEChM0WE1MIFNlY3Vy
+aXR5IExpYnJhcnkgKGh0dHA6Ly93d3cuYWxla3NleS5jb20veG1sc2VjKTEeMBwG
+A1UECxMVVGVzdCBSb290IENlcnRpZmljYXRlMRYwFAYDVQQDEw1BbGVrc2V5IFNh
+bmluMSEwHwYJKoZIhvcNAQkBFhJ4bWxzZWNAYWxla3NleS5jb20wHhcNMDUwNzEw
+MDIyOTU1WhcNMTUwNzA4MDIyOTU1WjCByDELMAkGA1UEBhMCVVMxEzARBgNVBAgT
+CkNhbGlmb3JuaWExPTA7BgNVBAoTNFhNTCBTZWN1cml0eSBMaWJyYXJ5IChodHRw
+Oi8vd3d3LmFsZWtzZXkuY29tL3htbHNlYykxKjAoBgNVBAsTIVRlc3QgU2Vjb25k
+IExldmVsIFJTQSBDZXJ0aWZpY2F0ZTEWMBQGA1UEAxMNQWxla3NleSBTYW5pbjEh
+MB8GCSqGSIb3DQEJARYSeG1sc2VjQGFsZWtzZXkuY29tMFwwDQYJKoZIhvcNAQEB
+BQADSwAwSAJBALK68onYK5Q8PfeCE+3hDwyKV6wfFVtunIp+ZputhWkMZUOY4oqn
+ffuolRln3kp/CVdtHaPTPIpYma9HFTH4+xMCAwEAAaOCAVMwggFPMAwGA1UdEwQF
+MAMBAf8wLAYJYIZIAYb4QgENBB8WHU9wZW5TU0wgR2VuZXJhdGVkIENlcnRpZmlj
+YXRlMB0GA1UdDgQWBBT+5OxTJPCVlccQteFEtV05ZVrjfjCB8QYDVR0jBIHpMIHm
+gBTaRulr5q/TParlIUtS7cpmKOD+haGBwqSBvzCBvDELMAkGA1UEBhMCVVMxEzAR
+BgNVBAgTCkNhbGlmb3JuaWExPTA7BgNVBAoTNFhNTCBTZWN1cml0eSBMaWJyYXJ5
+IChodHRwOi8vd3d3LmFsZWtzZXkuY29tL3htbHNlYykxHjAcBgNVBAsTFVRlc3Qg
+Um9vdCBDZXJ0aWZpY2F0ZTEWMBQGA1UEAxMNQWxla3NleSBTYW5pbjEhMB8GCSqG
+SIb3DQEJARYSeG1sc2VjQGFsZWtzZXkuY29tggkA1o644JGCLPcwDQYJKoZIhvcN
+AQEFBQADgYEAmY0RjbSVqOU/xvyhSq8Juk6u8bDHYIUgrfhIDZUtVT1s+op4ReOO
+kC7W7ZDOl8MxhJmt4KMqc6niYoQeuXTA9QpOleBqi8R7+0cyeGebo5JOFWN7J7wl
+lupKp1iJcKtcARwA7bso/Q5OefAwDN4pucg13fOYKVktF8XLQkIUsfY=</X509Certificate>
+<X509Certificate>MIIEdDCCBB6gAwIBAgIJANaOuOCRgiz5MA0GCSqGSIb3DQEBBQUAMIHIMQswCQYD
+VQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTE9MDsGA1UEChM0WE1MIFNlY3Vy
+aXR5IExpYnJhcnkgKGh0dHA6Ly93d3cuYWxla3NleS5jb20veG1sc2VjKTEqMCgG
+A1UECxMhVGVzdCBTZWNvbmQgTGV2ZWwgUlNBIENlcnRpZmljYXRlMRYwFAYDVQQD
+Ew1BbGVrc2V5IFNhbmluMSEwHwYJKoZIhvcNAQkBFhJ4bWxzZWNAYWxla3NleS5j
+b20wHhcNMDUwNzEwMDIzMTU5WhcNMTUwNzA4MDIzMTU5WjCBxzELMAkGA1UEBhMC
+VVMxEzARBgNVBAgTCkNhbGlmb3JuaWExPTA7BgNVBAoTNFhNTCBTZWN1cml0eSBM
+aWJyYXJ5IChodHRwOi8vd3d3LmFsZWtzZXkuY29tL3htbHNlYykxKTAnBgNVBAsT
+IFRlc3QgVGhpcmQgTGV2ZWwgRFNBIENlcnRpZmljYXRlMRYwFAYDVQQDEw1BbGVr
+c2V5IFNhbmluMSEwHwYJKoZIhvcNAQkBFhJ4bWxzZWNAYWxla3NleS5jb20wgfAw
+gagGByqGSM44BAEwgZwCQQDIMfw6P79Fcw0hrxYKq3ePh7wmevc95UjfF2JHQJBX
+Jb9XFBa5LRy71lzh/OYMH4oh4giiFVRVBCW9HpZqOTNJAhUAlEOrmqjJG3tfjU49
+XjJuM3AXNskCQAUzwzmbp53bZ+bzDcOU6UGh3Ig/TFdLGXYevs3tiZaFLa//EYF+
+l5Tdsr3NQpGRRf4arXvXPZyIJhYYHJVk7OMDQwACQDonSDDJk3VaIfdVHPnOitRq
+V5XPFfMDksNb0WelnZdl/qokl9eaU+8uiH7LtsU0QYX9lE8kTplcUdD0bxjDYJ2j
+ggFTMIIBTzAMBgNVHRMEBTADAQH/MCwGCWCGSAGG+EIBDQQfFh1PcGVuU1NMIEdl
+bmVyYXRlZCBDZXJ0aWZpY2F0ZTAdBgNVHQ4EFgQUpVifKXAtGkJHRAParmenuvcp
+ZT4wgfEGA1UdIwSB6TCB5oAU/uTsUyTwlZXHELXhRLVdOWVa436hgcKkgb8wgbwx
+CzAJBgNVBAYTAlVTMRMwEQYDVQQIEwpDYWxpZm9ybmlhMT0wOwYDVQQKEzRYTUwg
+U2VjdXJpdHkgTGlicmFyeSAoaHR0cDovL3d3dy5hbGVrc2V5LmNvbS94bWxzZWMp
+MR4wHAYDVQQLExVUZXN0IFJvb3QgQ2VydGlmaWNhdGUxFjAUBgNVBAMTDUFsZWtz
+ZXkgU2FuaW4xITAfBgkqhkiG9w0BCQEWEnhtbHNlY0BhbGVrc2V5LmNvbYIJANaO
+uOCRgiz4MA0GCSqGSIb3DQEBBQUAA0EAJB9Kc4/Z0hTwiDYR5fXVPyzAjD+BeChR
+F14ztWl1Ol6REWFRbIGfEz3XDgCHCiocM8ExXi7zn26R072cdBz7+w==</X509Certificate>
 </X509Data>
   </KeyInfo>
   <Object Id="object">some text</Object>
diff --git a/tests/aleksey-xmldsig-01/enveloping-expired-cert.xml b/tests/aleksey-xmldsig-01/enveloping-expired-cert.xml
index 9950a49..cc4d4cc 100644
--- a/tests/aleksey-xmldsig-01/enveloping-expired-cert.xml
+++ b/tests/aleksey-xmldsig-01/enveloping-expired-cert.xml
@@ -8,53 +8,77 @@
       <DigestValue>7/XTsHaBSOnJ/jXD5v0zL6VKYsk=</DigestValue>
     </Reference>
   </SignedInfo>
-  <SignatureValue>J2cc6cAop5niWfYCM91ZwsfNumAX3jC+xEJGZcvm9jGYdZx4fjf3/ZZ4f05Ubt8a
-tiGeEcUj9F2PWTLclDoxbw==</SignatureValue>
+  <SignatureValue>SPqE1/nehy9KOKeFSODZWZyvUZ/iS4jameUSXtvmfPgez5lN5QL4ox+QDlo37IeW
+NDjt380ZiA7kx9pnlx8jfQ==</SignatureValue>
   <KeyInfo>
     <X509Data>
-    <X509Certificate>MIIEFzCCA4CgAwIBAgIBATANBgkqhkiG9w0BAQQFADCByzELMAkGA1UEBhMCVVMx
-EzARBgNVBAgTCkNhbGlmb3JuaWExEjAQBgNVBAcTCVN1bm55dmFsZTE9MDsGA1UE
-ChM0WE1MIFNlY3VyaXR5IExpYnJhcnkgKGh0dHA6Ly93d3cuYWxla3NleS5jb20v
-eG1sc2VjKTEZMBcGA1UECxMQUm9vdCBDZXJ0aWZpY2F0ZTEWMBQGA1UEAxMNQWxl
-a3NleSBTYW5pbjEhMB8GCSqGSIb3DQEJARYSeG1sc2VjQGFsZWtzZXkuY29tMB4X
-DTAyMDIwMjA4MDA1OVoXDTEyMDEzMTA4MDA1OVowgb8xCzAJBgNVBAYTAlVTMRMw
-EQYDVQQIEwpDYWxpZm9ybmlhMT0wOwYDVQQKEzRYTUwgU2VjdXJpdHkgTGlicmFy
-eSAoaHR0cDovL3d3dy5hbGVrc2V5LmNvbS94bWxzZWMpMSEwHwYDVQQLExhTZWNv
-bmQgTGV2ZWwgQ2VydGlmaWNhdGUxFjAUBgNVBAMTDUFsZWtzZXkgU2FuaW4xITAf
-BgkqhkiG9w0BCQEWEnhtbHNlY0BhbGVrc2V5LmNvbTBcMA0GCSqGSIb3DQEBAQUA
-A0sAMEgCQQDILuuqHAryfyHYBbaHp8ujFfsylBhgR1S5346z5DnM9eZ+i2By9WGT
-VygXfiZuHwu3rTFhca9O6sVPOcBuFTrnAgMBAAGjggFXMIIBUzAJBgNVHRMEAjAA
-MCwGCWCGSAGG+EIBDQQfFh1PcGVuU1NMIEdlbmVyYXRlZCBDZXJ0aWZpY2F0ZTAd
-BgNVHQ4EFgQUeNctkWEvlSJKu+HVPcYmr6uX0gQwgfgGA1UdIwSB8DCB7YAUtLnv
-muaXDmhlHpjO+lUNiQbbTHyhgdGkgc4wgcsxCzAJBgNVBAYTAlVTMRMwEQYDVQQI
-EwpDYWxpZm9ybmlhMRIwEAYDVQQHEwlTdW5ueXZhbGUxPTA7BgNVBAoTNFhNTCBT
-ZWN1cml0eSBMaWJyYXJ5IChodHRwOi8vd3d3LmFsZWtzZXkuY29tL3htbHNlYykx
-GTAXBgNVBAsTEFJvb3QgQ2VydGlmaWNhdGUxFjAUBgNVBAMTDUFsZWtzZXkgU2Fu
-aW4xITAfBgkqhkiG9w0BCQEWEnhtbHNlY0BhbGVrc2V5LmNvbYIBADANBgkqhkiG
-9w0BAQQFAAOBgQBxJHfdMbcTOpUWJdQrWNzHbQtyHMSdLSHTALIh10ORhltBXSYe
-vJywXmYz2F7080WuEDxdHuUysL8EKPlM7LRTJooqVyM4t635UaMYsm+4S0A4g9pW
-tHA0SUfq9q6hihzmVxDA7Lwj194ObRNMWFILTrfURzOE0xQbutPweMRm/g==</X509Certificate>
-<X509Certificate>MIIDxTCCA2+gAwIBAgIBBDANBgkqhkiG9w0BAQQFADCBvzELMAkGA1UEBhMCVVMx
-EzARBgNVBAgTCkNhbGlmb3JuaWExPTA7BgNVBAoTNFhNTCBTZWN1cml0eSBMaWJy
-YXJ5IChodHRwOi8vd3d3LmFsZWtzZXkuY29tL3htbHNlYykxITAfBgNVBAsTGFNl
-Y29uZCBMZXZlbCBDZXJ0aWZpY2F0ZTEWMBQGA1UEAxMNQWxla3NleSBTYW5pbjEh
-MB8GCSqGSIb3DQEJARYSeG1sc2VjQGFsZWtzZXkuY29tMB4XDTAyMDIwMjA4MDMw
-MVoXDTAyMDUwMzA4MDMwMVowgboxCzAJBgNVBAYTAlVTMRMwEQYDVQQIEwpDYWxp
-Zm9ybmlhMT0wOwYDVQQKEzRYTUwgU2VjdXJpdHkgTGlicmFyeSAoaHR0cDovL3d3
-dy5hbGVrc2V5LmNvbS94bWxzZWMpMRwwGgYDVQQLExNFeHBpcmVkIENlcnRpZmlj
-YXRlMRYwFAYDVQQDEw1BbGVrc2V5IFNhbmluMSEwHwYJKoZIhvcNAQkBFhJ4bWxz
-ZWNAYWxla3NleS5jb20wXDANBgkqhkiG9w0BAQEFAANLADBIAkEAwCDjK5s0Hhx4
-zKarIKVsS48FYD0euQC7iifYRtWet8GrsvjmUmQZVDZESz1oCH59L2+ITEFQL5CM
-NX8l2OdHoQIDAQABo4IBVzCCAVMwCQYDVR0TBAIwADAsBglghkgBhvhCAQ0EHxYd
-T3BlblNTTCBHZW5lcmF0ZWQgQ2VydGlmaWNhdGUwHQYDVR0OBBYEFK+3plhzHaoU
-Mzd9OM7XqgBoJjlhMIH4BgNVHSMEgfAwge2AFHjXLZFhL5UiSrvh1T3GJq+rl9IE
-oYHRpIHOMIHLMQswCQYDVQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTESMBAG
-A1UEBxMJU3Vubnl2YWxlMT0wOwYDVQQKEzRYTUwgU2VjdXJpdHkgTGlicmFyeSAo
-aHR0cDovL3d3dy5hbGVrc2V5LmNvbS94bWxzZWMpMRkwFwYDVQQLExBSb290IENl
-cnRpZmljYXRlMRYwFAYDVQQDEw1BbGVrc2V5IFNhbmluMSEwHwYJKoZIhvcNAQkB
-FhJ4bWxzZWNAYWxla3NleS5jb22CAQEwDQYJKoZIhvcNAQEEBQADQQAXQgfwjZAU
-wygZ7AdM4DNUacBsB4TDL8sKH0S2FYoTjDv0PdPcqtIUtZwEdVepfkajcAA97kYf
-EXnaNAgAaL8x</X509Certificate>
+    <X509Certificate>MIIEFTCCA36gAwIBAgIJANaOuOCRgiz4MA0GCSqGSIb3DQEBBQUAMIG8MQswCQYD
+VQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTE9MDsGA1UEChM0WE1MIFNlY3Vy
+aXR5IExpYnJhcnkgKGh0dHA6Ly93d3cuYWxla3NleS5jb20veG1sc2VjKTEeMBwG
+A1UECxMVVGVzdCBSb290IENlcnRpZmljYXRlMRYwFAYDVQQDEw1BbGVrc2V5IFNh
+bmluMSEwHwYJKoZIhvcNAQkBFhJ4bWxzZWNAYWxla3NleS5jb20wHhcNMDUwNzEw
+MDIyOTU1WhcNMTUwNzA4MDIyOTU1WjCByDELMAkGA1UEBhMCVVMxEzARBgNVBAgT
+CkNhbGlmb3JuaWExPTA7BgNVBAoTNFhNTCBTZWN1cml0eSBMaWJyYXJ5IChodHRw
+Oi8vd3d3LmFsZWtzZXkuY29tL3htbHNlYykxKjAoBgNVBAsTIVRlc3QgU2Vjb25k
+IExldmVsIFJTQSBDZXJ0aWZpY2F0ZTEWMBQGA1UEAxMNQWxla3NleSBTYW5pbjEh
+MB8GCSqGSIb3DQEJARYSeG1sc2VjQGFsZWtzZXkuY29tMFwwDQYJKoZIhvcNAQEB
+BQADSwAwSAJBALK68onYK5Q8PfeCE+3hDwyKV6wfFVtunIp+ZputhWkMZUOY4oqn
+ffuolRln3kp/CVdtHaPTPIpYma9HFTH4+xMCAwEAAaOCAVMwggFPMAwGA1UdEwQF
+MAMBAf8wLAYJYIZIAYb4QgENBB8WHU9wZW5TU0wgR2VuZXJhdGVkIENlcnRpZmlj
+YXRlMB0GA1UdDgQWBBT+5OxTJPCVlccQteFEtV05ZVrjfjCB8QYDVR0jBIHpMIHm
+gBTaRulr5q/TParlIUtS7cpmKOD+haGBwqSBvzCBvDELMAkGA1UEBhMCVVMxEzAR
+BgNVBAgTCkNhbGlmb3JuaWExPTA7BgNVBAoTNFhNTCBTZWN1cml0eSBMaWJyYXJ5
+IChodHRwOi8vd3d3LmFsZWtzZXkuY29tL3htbHNlYykxHjAcBgNVBAsTFVRlc3Qg
+Um9vdCBDZXJ0aWZpY2F0ZTEWMBQGA1UEAxMNQWxla3NleSBTYW5pbjEhMB8GCSqG
+SIb3DQEJARYSeG1sc2VjQGFsZWtzZXkuY29tggkA1o644JGCLPcwDQYJKoZIhvcN
+AQEFBQADgYEAmY0RjbSVqOU/xvyhSq8Juk6u8bDHYIUgrfhIDZUtVT1s+op4ReOO
+kC7W7ZDOl8MxhJmt4KMqc6niYoQeuXTA9QpOleBqi8R7+0cyeGebo5JOFWN7J7wl
+lupKp1iJcKtcARwA7bso/Q5OefAwDN4pucg13fOYKVktF8XLQkIUsfY=</X509Certificate>
+<X509Certificate>MIIETTCCA7agAwIBAgIJANaOuOCRgiz3MA0GCSqGSIb3DQEBBQUAMIG8MQswCQYD
+VQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTE9MDsGA1UEChM0WE1MIFNlY3Vy
+aXR5IExpYnJhcnkgKGh0dHA6Ly93d3cuYWxla3NleS5jb20veG1sc2VjKTEeMBwG
+A1UECxMVVGVzdCBSb290IENlcnRpZmljYXRlMRYwFAYDVQQDEw1BbGVrc2V5IFNh
+bmluMSEwHwYJKoZIhvcNAQkBFhJ4bWxzZWNAYWxla3NleS5jb20wHhcNMDUwNzEw
+MDIyOTAxWhcNMTUwNzA4MDIyOTAxWjCBvDELMAkGA1UEBhMCVVMxEzARBgNVBAgT
+CkNhbGlmb3JuaWExPTA7BgNVBAoTNFhNTCBTZWN1cml0eSBMaWJyYXJ5IChodHRw
+Oi8vd3d3LmFsZWtzZXkuY29tL3htbHNlYykxHjAcBgNVBAsTFVRlc3QgUm9vdCBD
+ZXJ0aWZpY2F0ZTEWMBQGA1UEAxMNQWxla3NleSBTYW5pbjEhMB8GCSqGSIb3DQEJ
+ARYSeG1sc2VjQGFsZWtzZXkuY29tMIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKB
+gQDayaFajJxOdVU+8EjwO31S2XqNmYxxbHfiUJO3w2h57OPUkKAcKe5Gvt9hJbPT
+b3C4blPScOke2RexKnXS7pAXXbxFlgUlZ0QK0K2pdl559OSmrtH3mPP9BJvvDMlx
+kcNj9/EeD+yGd8GN/yT6PTDh8G/4lszOXL+tyKIkC4Ys/wIDAQABo4IBUzCCAU8w
+DAYDVR0TBAUwAwEB/zAsBglghkgBhvhCAQ0EHxYdT3BlblNTTCBHZW5lcmF0ZWQg
+Q2VydGlmaWNhdGUwHQYDVR0OBBYEFNpG6Wvmr9M9quUhS1LtymYo4P6FMIHxBgNV
+HSMEgekwgeaAFNpG6Wvmr9M9quUhS1LtymYo4P6FoYHCpIG/MIG8MQswCQYDVQQG
+EwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTE9MDsGA1UEChM0WE1MIFNlY3VyaXR5
+IExpYnJhcnkgKGh0dHA6Ly93d3cuYWxla3NleS5jb20veG1sc2VjKTEeMBwGA1UE
+CxMVVGVzdCBSb290IENlcnRpZmljYXRlMRYwFAYDVQQDEw1BbGVrc2V5IFNhbmlu
+MSEwHwYJKoZIhvcNAQkBFhJ4bWxzZWNAYWxla3NleS5jb22CCQDWjrjgkYIs9zAN
+BgkqhkiG9w0BAQUFAAOBgQBUXbdOTQwArcNrbxavzARp2JGOnzo6WzTm+OFSXC0F
+08YwT8jWbht97e8lNNVOBU4Y/38ReZqYC9OqFofG1/O9AdQ58WL/FWg8DgP5MJPT
+T9kRU3FU01jUiX2+kbdnghZAOJm0ziRNxfNPwIIWPKYXyXEKQQzrnxyFey1hP7cg
+6A==</X509Certificate>
+<X509Certificate>MIID2zCCA4WgAwIBAgIJANaOuOCRgiz7MA0GCSqGSIb3DQEBBQUAMIHIMQswCQYD
+VQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTE9MDsGA1UEChM0WE1MIFNlY3Vy
+aXR5IExpYnJhcnkgKGh0dHA6Ly93d3cuYWxla3NleS5jb20veG1sc2VjKTEqMCgG
+A1UECxMhVGVzdCBTZWNvbmQgTGV2ZWwgUlNBIENlcnRpZmljYXRlMRYwFAYDVQQD
+Ew1BbGVrc2V5IFNhbmluMSEwHwYJKoZIhvcNAQkBFhJ4bWxzZWNAYWxla3NleS5j
+b20wHhcNMDUwNzEwMDM1MTU2WhcNMDUwNzExMDM1MTU2WjCBwzELMAkGA1UEBhMC
+VVMxEzARBgNVBAgTCkNhbGlmb3JuaWExPTA7BgNVBAoTNFhNTCBTZWN1cml0eSBM
+aWJyYXJ5IChodHRwOi8vd3d3LmFsZWtzZXkuY29tL3htbHNlYykxJTAjBgNVBAsT
+HFRlc3QgRXhwaXJlZCBSU0EgQ2VydGlmaWNhdGUxFjAUBgNVBAMTDUFsZWtzZXkg
+U2FuaW4xITAfBgkqhkiG9w0BCQEWEnhtbHNlY0BhbGVrc2V5LmNvbTBcMA0GCSqG
+SIb3DQEBAQUAA0sAMEgCQQDJUmVgQEBmML80PvR8zIwGkyDiE5boEWR4pGmaGUOH
+bRnFQkt2mt+4/QeYtm7GRVRUe6YJigUovU1u3DQDiOjzAgMBAAGjggFTMIIBTzAM
+BgNVHRMEBTADAQH/MCwGCWCGSAGG+EIBDQQfFh1PcGVuU1NMIEdlbmVyYXRlZCBD
+ZXJ0aWZpY2F0ZTAdBgNVHQ4EFgQU+fqJEjRKO1kG3y4X8sCPsiYHeMkwgfEGA1Ud
+IwSB6TCB5oAU/uTsUyTwlZXHELXhRLVdOWVa436hgcKkgb8wgbwxCzAJBgNVBAYT
+AlVTMRMwEQYDVQQIEwpDYWxpZm9ybmlhMT0wOwYDVQQKEzRYTUwgU2VjdXJpdHkg
+TGlicmFyeSAoaHR0cDovL3d3dy5hbGVrc2V5LmNvbS94bWxzZWMpMR4wHAYDVQQL
+ExVUZXN0IFJvb3QgQ2VydGlmaWNhdGUxFjAUBgNVBAMTDUFsZWtzZXkgU2FuaW4x
+ITAfBgkqhkiG9w0BCQEWEnhtbHNlY0BhbGVrc2V5LmNvbYIJANaOuOCRgiz4MA0G
+CSqGSIb3DQEBBQUAA0EAmLTpL4oqi+VjrLISYYxY5FfAqACYAOpIbIdWM2QtjozB
+dQxFVSK2RHn2z1W2gWy7N8VQmfrggN73LIKOXuoV5A==</X509Certificate>
 </X509Data>
   </KeyInfo>
   <Object Id="object">some text</Object>
diff --git a/tests/aleksey-xmldsig-01/enveloping-hmac-md5-64.tmpl b/tests/aleksey-xmldsig-01/enveloping-md5-hmac-md5-64.tmpl
similarity index 87%
copy from tests/aleksey-xmldsig-01/enveloping-hmac-md5-64.tmpl
copy to tests/aleksey-xmldsig-01/enveloping-md5-hmac-md5-64.tmpl
index 57b7603..e95e766 100644
--- a/tests/aleksey-xmldsig-01/enveloping-hmac-md5-64.tmpl
+++ b/tests/aleksey-xmldsig-01/enveloping-md5-hmac-md5-64.tmpl
@@ -6,7 +6,7 @@
       <HMACOutputLength>64</HMACOutputLength>
     </SignatureMethod>
     <Reference URI="#object">
-      <DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1" />
+      <DigestMethod Algorithm="http://www.w3.org/2001/04/xmldsig-more#md5"/>
       <DigestValue></DigestValue>
     </Reference>
   </SignedInfo>
diff --git a/tests/aleksey-xmldsig-01/enveloping-hmac-md5-64.xml b/tests/aleksey-xmldsig-01/enveloping-md5-hmac-md5-64.xml
similarity index 71%
copy from tests/aleksey-xmldsig-01/enveloping-hmac-md5-64.xml
copy to tests/aleksey-xmldsig-01/enveloping-md5-hmac-md5-64.xml
index fa219f5..0df316d 100644
--- a/tests/aleksey-xmldsig-01/enveloping-hmac-md5-64.xml
+++ b/tests/aleksey-xmldsig-01/enveloping-md5-hmac-md5-64.xml
@@ -6,10 +6,10 @@
       <HMACOutputLength>64</HMACOutputLength>
     </SignatureMethod>
     <Reference URI="#object">
-      <DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"/>
-      <DigestValue>7/XTsHaBSOnJ/jXD5v0zL6VKYsk=</DigestValue>
+      <DigestMethod Algorithm="http://www.w3.org/2001/04/xmldsig-more#md5"/>
+      <DigestValue>/u+47lA0BK55De4qRAg16w==</DigestValue>
     </Reference>
   </SignedInfo>
-  <SignatureValue>GlqEfgOS/dk=</SignatureValue>
+  <SignatureValue>j202k+irNYE=</SignatureValue>
   <Object Id="object">some text</Object>
 </Signature>
diff --git a/tests/aleksey-xmldsig-01/enveloping-hmac-md5.tmpl b/tests/aleksey-xmldsig-01/enveloping-md5-hmac-md5.tmpl
similarity index 85%
copy from tests/aleksey-xmldsig-01/enveloping-hmac-md5.tmpl
copy to tests/aleksey-xmldsig-01/enveloping-md5-hmac-md5.tmpl
index 5f4bddd..55dd5c1 100644
--- a/tests/aleksey-xmldsig-01/enveloping-hmac-md5.tmpl
+++ b/tests/aleksey-xmldsig-01/enveloping-md5-hmac-md5.tmpl
@@ -4,7 +4,7 @@
     <CanonicalizationMethod Algorithm="http://www.w3.org/TR/2001/REC-xml-c14n-20010315" />
     <SignatureMethod Algorithm="http://www.w3.org/2001/04/xmldsig-more#hmac-md5" />
     <Reference URI="#object">
-      <DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1" />
+      <DigestMethod Algorithm="http://www.w3.org/2001/04/xmldsig-more#md5" />
       <DigestValue></DigestValue>
     </Reference>
   </SignedInfo>
diff --git a/tests/aleksey-xmldsig-01/enveloping-hmac-md5.xml b/tests/aleksey-xmldsig-01/enveloping-md5-hmac-md5.xml
similarity index 67%
copy from tests/aleksey-xmldsig-01/enveloping-hmac-md5.xml
copy to tests/aleksey-xmldsig-01/enveloping-md5-hmac-md5.xml
index 55790b2..d815978 100644
--- a/tests/aleksey-xmldsig-01/enveloping-hmac-md5.xml
+++ b/tests/aleksey-xmldsig-01/enveloping-md5-hmac-md5.xml
@@ -4,10 +4,10 @@
     <CanonicalizationMethod Algorithm="http://www.w3.org/TR/2001/REC-xml-c14n-20010315"/>
     <SignatureMethod Algorithm="http://www.w3.org/2001/04/xmldsig-more#hmac-md5"/>
     <Reference URI="#object">
-      <DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"/>
-      <DigestValue>7/XTsHaBSOnJ/jXD5v0zL6VKYsk=</DigestValue>
+      <DigestMethod Algorithm="http://www.w3.org/2001/04/xmldsig-more#md5"/>
+      <DigestValue>/u+47lA0BK55De4qRAg16w==</DigestValue>
     </Reference>
   </SignedInfo>
-  <SignatureValue>9bdR2cW6lUFvPBd0Ng/3gw==</SignatureValue>
+  <SignatureValue>7uFBgN6DOM9SJj+UBkM2fQ==</SignatureValue>
   <Object Id="object">some text</Object>
 </Signature>
diff --git a/tests/aleksey-xmldsig-01/enveloping-hmac-md5.tmpl b/tests/aleksey-xmldsig-01/enveloping-md5-rsa-md5.tmpl
similarity index 76%
copy from tests/aleksey-xmldsig-01/enveloping-hmac-md5.tmpl
copy to tests/aleksey-xmldsig-01/enveloping-md5-rsa-md5.tmpl
index 5f4bddd..1eb428a 100644
--- a/tests/aleksey-xmldsig-01/enveloping-hmac-md5.tmpl
+++ b/tests/aleksey-xmldsig-01/enveloping-md5-rsa-md5.tmpl
@@ -2,13 +2,16 @@
 <Signature xmlns="http://www.w3.org/2000/09/xmldsig#">
   <SignedInfo>
     <CanonicalizationMethod Algorithm="http://www.w3.org/TR/2001/REC-xml-c14n-20010315" />
-    <SignatureMethod Algorithm="http://www.w3.org/2001/04/xmldsig-more#hmac-md5" />
+    <SignatureMethod Algorithm="http://www.w3.org/2001/04/xmldsig-more#rsa-md5"/>
     <Reference URI="#object">
-      <DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1" />
+      <DigestMethod Algorithm="http://www.w3.org/2001/04/xmldsig-more#md5"/>
       <DigestValue></DigestValue>
     </Reference>
   </SignedInfo>
   <SignatureValue>
   </SignatureValue>
+  <KeyInfo>
+    <X509Data/>
+  </KeyInfo>
   <Object Id="object">some text</Object>
 </Signature>
diff --git a/tests/aleksey-xmldsig-01/enveloping-md5-rsa-md5.xml b/tests/aleksey-xmldsig-01/enveloping-md5-rsa-md5.xml
new file mode 100644
index 0000000..ebca503
--- /dev/null
+++ b/tests/aleksey-xmldsig-01/enveloping-md5-rsa-md5.xml
@@ -0,0 +1,85 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<Signature xmlns="http://www.w3.org/2000/09/xmldsig#">
+  <SignedInfo>
+    <CanonicalizationMethod Algorithm="http://www.w3.org/TR/2001/REC-xml-c14n-20010315"/>
+    <SignatureMethod Algorithm="http://www.w3.org/2001/04/xmldsig-more#rsa-md5"/>
+    <Reference URI="#object">
+      <DigestMethod Algorithm="http://www.w3.org/2001/04/xmldsig-more#md5"/>
+      <DigestValue>/u+47lA0BK55De4qRAg16w==</DigestValue>
+    </Reference>
+  </SignedInfo>
+  <SignatureValue>dpWrHCBhPfYE9VLIhCfEe3HrViieYwgo/52RmQLtYM5VRbWwa237LqE6xf8UUdxr
+veblI1kr28sjdrxE+zAEhQ==</SignatureValue>
+  <KeyInfo>
+    <X509Data>
+<X509Certificate>MIIEFTCCA36gAwIBAgIJANaOuOCRgiz4MA0GCSqGSIb3DQEBBQUAMIG8MQswCQYD
+VQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTE9MDsGA1UEChM0WE1MIFNlY3Vy
+aXR5IExpYnJhcnkgKGh0dHA6Ly93d3cuYWxla3NleS5jb20veG1sc2VjKTEeMBwG
+A1UECxMVVGVzdCBSb290IENlcnRpZmljYXRlMRYwFAYDVQQDEw1BbGVrc2V5IFNh
+bmluMSEwHwYJKoZIhvcNAQkBFhJ4bWxzZWNAYWxla3NleS5jb20wHhcNMDUwNzEw
+MDIyOTU1WhcNMTUwNzA4MDIyOTU1WjCByDELMAkGA1UEBhMCVVMxEzARBgNVBAgT
+CkNhbGlmb3JuaWExPTA7BgNVBAoTNFhNTCBTZWN1cml0eSBMaWJyYXJ5IChodHRw
+Oi8vd3d3LmFsZWtzZXkuY29tL3htbHNlYykxKjAoBgNVBAsTIVRlc3QgU2Vjb25k
+IExldmVsIFJTQSBDZXJ0aWZpY2F0ZTEWMBQGA1UEAxMNQWxla3NleSBTYW5pbjEh
+MB8GCSqGSIb3DQEJARYSeG1sc2VjQGFsZWtzZXkuY29tMFwwDQYJKoZIhvcNAQEB
+BQADSwAwSAJBALK68onYK5Q8PfeCE+3hDwyKV6wfFVtunIp+ZputhWkMZUOY4oqn
+ffuolRln3kp/CVdtHaPTPIpYma9HFTH4+xMCAwEAAaOCAVMwggFPMAwGA1UdEwQF
+MAMBAf8wLAYJYIZIAYb4QgENBB8WHU9wZW5TU0wgR2VuZXJhdGVkIENlcnRpZmlj
+YXRlMB0GA1UdDgQWBBT+5OxTJPCVlccQteFEtV05ZVrjfjCB8QYDVR0jBIHpMIHm
+gBTaRulr5q/TParlIUtS7cpmKOD+haGBwqSBvzCBvDELMAkGA1UEBhMCVVMxEzAR
+BgNVBAgTCkNhbGlmb3JuaWExPTA7BgNVBAoTNFhNTCBTZWN1cml0eSBMaWJyYXJ5
+IChodHRwOi8vd3d3LmFsZWtzZXkuY29tL3htbHNlYykxHjAcBgNVBAsTFVRlc3Qg
+Um9vdCBDZXJ0aWZpY2F0ZTEWMBQGA1UEAxMNQWxla3NleSBTYW5pbjEhMB8GCSqG
+SIb3DQEJARYSeG1sc2VjQGFsZWtzZXkuY29tggkA1o644JGCLPcwDQYJKoZIhvcN
+AQEFBQADgYEAmY0RjbSVqOU/xvyhSq8Juk6u8bDHYIUgrfhIDZUtVT1s+op4ReOO
+kC7W7ZDOl8MxhJmt4KMqc6niYoQeuXTA9QpOleBqi8R7+0cyeGebo5JOFWN7J7wl
+lupKp1iJcKtcARwA7bso/Q5OefAwDN4pucg13fOYKVktF8XLQkIUsfY=</X509Certificate>
+<X509Certificate>MIIETTCCA7agAwIBAgIJANaOuOCRgiz3MA0GCSqGSIb3DQEBBQUAMIG8MQswCQYD
+VQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTE9MDsGA1UEChM0WE1MIFNlY3Vy
+aXR5IExpYnJhcnkgKGh0dHA6Ly93d3cuYWxla3NleS5jb20veG1sc2VjKTEeMBwG
+A1UECxMVVGVzdCBSb290IENlcnRpZmljYXRlMRYwFAYDVQQDEw1BbGVrc2V5IFNh
+bmluMSEwHwYJKoZIhvcNAQkBFhJ4bWxzZWNAYWxla3NleS5jb20wHhcNMDUwNzEw
+MDIyOTAxWhcNMTUwNzA4MDIyOTAxWjCBvDELMAkGA1UEBhMCVVMxEzARBgNVBAgT
+CkNhbGlmb3JuaWExPTA7BgNVBAoTNFhNTCBTZWN1cml0eSBMaWJyYXJ5IChodHRw
+Oi8vd3d3LmFsZWtzZXkuY29tL3htbHNlYykxHjAcBgNVBAsTFVRlc3QgUm9vdCBD
+ZXJ0aWZpY2F0ZTEWMBQGA1UEAxMNQWxla3NleSBTYW5pbjEhMB8GCSqGSIb3DQEJ
+ARYSeG1sc2VjQGFsZWtzZXkuY29tMIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKB
+gQDayaFajJxOdVU+8EjwO31S2XqNmYxxbHfiUJO3w2h57OPUkKAcKe5Gvt9hJbPT
+b3C4blPScOke2RexKnXS7pAXXbxFlgUlZ0QK0K2pdl559OSmrtH3mPP9BJvvDMlx
+kcNj9/EeD+yGd8GN/yT6PTDh8G/4lszOXL+tyKIkC4Ys/wIDAQABo4IBUzCCAU8w
+DAYDVR0TBAUwAwEB/zAsBglghkgBhvhCAQ0EHxYdT3BlblNTTCBHZW5lcmF0ZWQg
+Q2VydGlmaWNhdGUwHQYDVR0OBBYEFNpG6Wvmr9M9quUhS1LtymYo4P6FMIHxBgNV
+HSMEgekwgeaAFNpG6Wvmr9M9quUhS1LtymYo4P6FoYHCpIG/MIG8MQswCQYDVQQG
+EwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTE9MDsGA1UEChM0WE1MIFNlY3VyaXR5
+IExpYnJhcnkgKGh0dHA6Ly93d3cuYWxla3NleS5jb20veG1sc2VjKTEeMBwGA1UE
+CxMVVGVzdCBSb290IENlcnRpZmljYXRlMRYwFAYDVQQDEw1BbGVrc2V5IFNhbmlu
+MSEwHwYJKoZIhvcNAQkBFhJ4bWxzZWNAYWxla3NleS5jb22CCQDWjrjgkYIs9zAN
+BgkqhkiG9w0BAQUFAAOBgQBUXbdOTQwArcNrbxavzARp2JGOnzo6WzTm+OFSXC0F
+08YwT8jWbht97e8lNNVOBU4Y/38ReZqYC9OqFofG1/O9AdQ58WL/FWg8DgP5MJPT
+T9kRU3FU01jUiX2+kbdnghZAOJm0ziRNxfNPwIIWPKYXyXEKQQzrnxyFey1hP7cg
+6A==</X509Certificate>
+<X509Certificate>MIID3zCCA4mgAwIBAgIJANaOuOCRgiz6MA0GCSqGSIb3DQEBBQUAMIHIMQswCQYD
+VQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTE9MDsGA1UEChM0WE1MIFNlY3Vy
+aXR5IExpYnJhcnkgKGh0dHA6Ly93d3cuYWxla3NleS5jb20veG1sc2VjKTEqMCgG
+A1UECxMhVGVzdCBTZWNvbmQgTGV2ZWwgUlNBIENlcnRpZmljYXRlMRYwFAYDVQQD
+Ew1BbGVrc2V5IFNhbmluMSEwHwYJKoZIhvcNAQkBFhJ4bWxzZWNAYWxla3NleS5j
+b20wHhcNMDUwNzEwMDIzMzAyWhcNMTUwNzA4MDIzMzAyWjCBxzELMAkGA1UEBhMC
+VVMxEzARBgNVBAgTCkNhbGlmb3JuaWExPTA7BgNVBAoTNFhNTCBTZWN1cml0eSBM
+aWJyYXJ5IChodHRwOi8vd3d3LmFsZWtzZXkuY29tL3htbHNlYykxKTAnBgNVBAsT
+IFRlc3QgVGhpcmQgTGV2ZWwgUlNBIENlcnRpZmljYXRlMRYwFAYDVQQDEw1BbGVr
+c2V5IFNhbmluMSEwHwYJKoZIhvcNAQkBFhJ4bWxzZWNAYWxla3NleS5jb20wXDAN
+BgkqhkiG9w0BAQEFAANLADBIAkEA09BtD3aeVt6DVDkk0dI7Vh7LjqdnsYmW0tbD
+VxxK+nume+Z9Sb4znbUKkWl+vgQATdRUEyhT2P+Gqrd0UBzYfQIDAQABo4IBUzCC
+AU8wDAYDVR0TBAUwAwEB/zAsBglghkgBhvhCAQ0EHxYdT3BlblNTTCBHZW5lcmF0
+ZWQgQ2VydGlmaWNhdGUwHQYDVR0OBBYEFNf0xkZ3zjcEI60pVPuwDqTMQygZMIHx
+BgNVHSMEgekwgeaAFP7k7FMk8JWVxxC14US1XTllWuN+oYHCpIG/MIG8MQswCQYD
+VQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTE9MDsGA1UEChM0WE1MIFNlY3Vy
+aXR5IExpYnJhcnkgKGh0dHA6Ly93d3cuYWxla3NleS5jb20veG1sc2VjKTEeMBwG
+A1UECxMVVGVzdCBSb290IENlcnRpZmljYXRlMRYwFAYDVQQDEw1BbGVrc2V5IFNh
+bmluMSEwHwYJKoZIhvcNAQkBFhJ4bWxzZWNAYWxla3NleS5jb22CCQDWjrjgkYIs
++DANBgkqhkiG9w0BAQUFAANBAEfjvmWwi2gBpYt7bwF6oHiFLoIh5kiLAPrlOFAb
+PZlLDqr5+eDcr1cf0pksgW7fVE9NzTSmwjDFuEcPqJV62Ek=</X509Certificate>
+</X509Data>
+  </KeyInfo>
+  <Object Id="object">some text</Object>
+</Signature>
diff --git a/tests/aleksey-xmldsig-01/enveloping-hmac-ripemd160-64.tmpl b/tests/aleksey-xmldsig-01/enveloping-ripemd160-hmac-ripemd160-64.tmpl
similarity index 87%
rename from tests/aleksey-xmldsig-01/enveloping-hmac-ripemd160-64.tmpl
rename to tests/aleksey-xmldsig-01/enveloping-ripemd160-hmac-ripemd160-64.tmpl
index 83215cd..129a860 100644
--- a/tests/aleksey-xmldsig-01/enveloping-hmac-ripemd160-64.tmpl
+++ b/tests/aleksey-xmldsig-01/enveloping-ripemd160-hmac-ripemd160-64.tmpl
@@ -6,7 +6,7 @@
       <HMACOutputLength>64</HMACOutputLength>
     </SignatureMethod>
     <Reference URI="#object">
-      <DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1" />
+      <DigestMethod Algorithm="http://www.w3.org/2001/04/xmlenc#ripemd160"/>
       <DigestValue></DigestValue>
     </Reference>
   </SignedInfo>
diff --git a/tests/aleksey-xmldsig-01/enveloping-hmac-ripemd160-64.xml b/tests/aleksey-xmldsig-01/enveloping-ripemd160-hmac-ripemd160-64.xml
similarity index 71%
copy from tests/aleksey-xmldsig-01/enveloping-hmac-ripemd160-64.xml
copy to tests/aleksey-xmldsig-01/enveloping-ripemd160-hmac-ripemd160-64.xml
index 5932a71..582dc96 100644
--- a/tests/aleksey-xmldsig-01/enveloping-hmac-ripemd160-64.xml
+++ b/tests/aleksey-xmldsig-01/enveloping-ripemd160-hmac-ripemd160-64.xml
@@ -6,10 +6,10 @@
       <HMACOutputLength>64</HMACOutputLength>
     </SignatureMethod>
     <Reference URI="#object">
-      <DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"/>
-      <DigestValue>7/XTsHaBSOnJ/jXD5v0zL6VKYsk=</DigestValue>
+      <DigestMethod Algorithm="http://www.w3.org/2001/04/xmlenc#ripemd160"/>
+      <DigestValue>Ofs8NqfoXX+r0Cas3GRY2GbzhPo=</DigestValue>
     </Reference>
   </SignedInfo>
-  <SignatureValue>hWfbs+v35BI=</SignatureValue>
+  <SignatureValue>+TxC/QCigpQ=</SignatureValue>
   <Object Id="object">some text</Object>
 </Signature>
diff --git a/tests/aleksey-xmldsig-01/enveloping-hmac-ripemd160.tmpl b/tests/aleksey-xmldsig-01/enveloping-ripemd160-hmac-ripemd160.tmpl
similarity index 86%
rename from tests/aleksey-xmldsig-01/enveloping-hmac-ripemd160.tmpl
rename to tests/aleksey-xmldsig-01/enveloping-ripemd160-hmac-ripemd160.tmpl
index ea19e30..8f15996 100644
--- a/tests/aleksey-xmldsig-01/enveloping-hmac-ripemd160.tmpl
+++ b/tests/aleksey-xmldsig-01/enveloping-ripemd160-hmac-ripemd160.tmpl
@@ -4,7 +4,7 @@
     <CanonicalizationMethod Algorithm="http://www.w3.org/TR/2001/REC-xml-c14n-20010315" />
     <SignatureMethod Algorithm="http://www.w3.org/2001/04/xmldsig-more#hmac-ripemd160" />
     <Reference URI="#object">
-      <DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1" />
+      <DigestMethod Algorithm="http://www.w3.org/2001/04/xmlenc#ripemd160"/>
       <DigestValue></DigestValue>
     </Reference>
   </SignedInfo>
diff --git a/tests/aleksey-xmldsig-01/enveloping-hmac-ripemd160.xml b/tests/aleksey-xmldsig-01/enveloping-ripemd160-hmac-ripemd160.xml
similarity index 66%
copy from tests/aleksey-xmldsig-01/enveloping-hmac-ripemd160.xml
copy to tests/aleksey-xmldsig-01/enveloping-ripemd160-hmac-ripemd160.xml
index 0268930..057cf47 100644
--- a/tests/aleksey-xmldsig-01/enveloping-hmac-ripemd160.xml
+++ b/tests/aleksey-xmldsig-01/enveloping-ripemd160-hmac-ripemd160.xml
@@ -4,10 +4,10 @@
     <CanonicalizationMethod Algorithm="http://www.w3.org/TR/2001/REC-xml-c14n-20010315"/>
     <SignatureMethod Algorithm="http://www.w3.org/2001/04/xmldsig-more#hmac-ripemd160"/>
     <Reference URI="#object">
-      <DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"/>
-      <DigestValue>7/XTsHaBSOnJ/jXD5v0zL6VKYsk=</DigestValue>
+      <DigestMethod Algorithm="http://www.w3.org/2001/04/xmlenc#ripemd160"/>
+      <DigestValue>Ofs8NqfoXX+r0Cas3GRY2GbzhPo=</DigestValue>
     </Reference>
   </SignedInfo>
-  <SignatureValue>RLli8k0EbB85YkoKa66AhzHU0Zo=</SignatureValue>
+  <SignatureValue>tt3/nrk/uQ79pKHEZaCxXNncAtg=</SignatureValue>
   <Object Id="object">some text</Object>
 </Signature>
diff --git a/tests/aleksey-xmldsig-01/enveloping-hmac-md5.tmpl b/tests/aleksey-xmldsig-01/enveloping-ripemd160-rsa-ripemd160.tmpl
similarity index 76%
copy from tests/aleksey-xmldsig-01/enveloping-hmac-md5.tmpl
copy to tests/aleksey-xmldsig-01/enveloping-ripemd160-rsa-ripemd160.tmpl
index 5f4bddd..6675f7c 100644
--- a/tests/aleksey-xmldsig-01/enveloping-hmac-md5.tmpl
+++ b/tests/aleksey-xmldsig-01/enveloping-ripemd160-rsa-ripemd160.tmpl
@@ -2,13 +2,16 @@
 <Signature xmlns="http://www.w3.org/2000/09/xmldsig#">
   <SignedInfo>
     <CanonicalizationMethod Algorithm="http://www.w3.org/TR/2001/REC-xml-c14n-20010315" />
-    <SignatureMethod Algorithm="http://www.w3.org/2001/04/xmldsig-more#hmac-md5" />
+    <SignatureMethod Algorithm="http://www.w3.org/2001/04/xmldsig-more#rsa-ripemd160"/>
     <Reference URI="#object">
-      <DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1" />
+      <DigestMethod Algorithm="http://www.w3.org/2001/04/xmlenc#ripemd160"/>
       <DigestValue></DigestValue>
     </Reference>
   </SignedInfo>
   <SignatureValue>
   </SignatureValue>
+  <KeyInfo>
+    <X509Data/>
+  </KeyInfo>
   <Object Id="object">some text</Object>
 </Signature>
diff --git a/tests/aleksey-xmldsig-01/enveloping-ripemd160-rsa-ripemd160.xml b/tests/aleksey-xmldsig-01/enveloping-ripemd160-rsa-ripemd160.xml
new file mode 100644
index 0000000..9180626
--- /dev/null
+++ b/tests/aleksey-xmldsig-01/enveloping-ripemd160-rsa-ripemd160.xml
@@ -0,0 +1,85 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<Signature xmlns="http://www.w3.org/2000/09/xmldsig#">
+  <SignedInfo>
+    <CanonicalizationMethod Algorithm="http://www.w3.org/TR/2001/REC-xml-c14n-20010315"/>
+    <SignatureMethod Algorithm="http://www.w3.org/2001/04/xmldsig-more#rsa-ripemd160"/>
+    <Reference URI="#object">
+      <DigestMethod Algorithm="http://www.w3.org/2001/04/xmlenc#ripemd160"/>
+      <DigestValue>Ofs8NqfoXX+r0Cas3GRY2GbzhPo=</DigestValue>
+    </Reference>
+  </SignedInfo>
+  <SignatureValue>un5Fwdn5LTFBPQPv1GSst3mviS7I1X8icM7cYRTSIqKMnkXOIzXgcEKVcfO1oodP
+9ABdLzQB0wdZJW6CCoHKwA==</SignatureValue>
+  <KeyInfo>
+    <X509Data>
+<X509Certificate>MIIEFTCCA36gAwIBAgIJANaOuOCRgiz4MA0GCSqGSIb3DQEBBQUAMIG8MQswCQYD
+VQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTE9MDsGA1UEChM0WE1MIFNlY3Vy
+aXR5IExpYnJhcnkgKGh0dHA6Ly93d3cuYWxla3NleS5jb20veG1sc2VjKTEeMBwG
+A1UECxMVVGVzdCBSb290IENlcnRpZmljYXRlMRYwFAYDVQQDEw1BbGVrc2V5IFNh
+bmluMSEwHwYJKoZIhvcNAQkBFhJ4bWxzZWNAYWxla3NleS5jb20wHhcNMDUwNzEw
+MDIyOTU1WhcNMTUwNzA4MDIyOTU1WjCByDELMAkGA1UEBhMCVVMxEzARBgNVBAgT
+CkNhbGlmb3JuaWExPTA7BgNVBAoTNFhNTCBTZWN1cml0eSBMaWJyYXJ5IChodHRw
+Oi8vd3d3LmFsZWtzZXkuY29tL3htbHNlYykxKjAoBgNVBAsTIVRlc3QgU2Vjb25k
+IExldmVsIFJTQSBDZXJ0aWZpY2F0ZTEWMBQGA1UEAxMNQWxla3NleSBTYW5pbjEh
+MB8GCSqGSIb3DQEJARYSeG1sc2VjQGFsZWtzZXkuY29tMFwwDQYJKoZIhvcNAQEB
+BQADSwAwSAJBALK68onYK5Q8PfeCE+3hDwyKV6wfFVtunIp+ZputhWkMZUOY4oqn
+ffuolRln3kp/CVdtHaPTPIpYma9HFTH4+xMCAwEAAaOCAVMwggFPMAwGA1UdEwQF
+MAMBAf8wLAYJYIZIAYb4QgENBB8WHU9wZW5TU0wgR2VuZXJhdGVkIENlcnRpZmlj
+YXRlMB0GA1UdDgQWBBT+5OxTJPCVlccQteFEtV05ZVrjfjCB8QYDVR0jBIHpMIHm
+gBTaRulr5q/TParlIUtS7cpmKOD+haGBwqSBvzCBvDELMAkGA1UEBhMCVVMxEzAR
+BgNVBAgTCkNhbGlmb3JuaWExPTA7BgNVBAoTNFhNTCBTZWN1cml0eSBMaWJyYXJ5
+IChodHRwOi8vd3d3LmFsZWtzZXkuY29tL3htbHNlYykxHjAcBgNVBAsTFVRlc3Qg
+Um9vdCBDZXJ0aWZpY2F0ZTEWMBQGA1UEAxMNQWxla3NleSBTYW5pbjEhMB8GCSqG
+SIb3DQEJARYSeG1sc2VjQGFsZWtzZXkuY29tggkA1o644JGCLPcwDQYJKoZIhvcN
+AQEFBQADgYEAmY0RjbSVqOU/xvyhSq8Juk6u8bDHYIUgrfhIDZUtVT1s+op4ReOO
+kC7W7ZDOl8MxhJmt4KMqc6niYoQeuXTA9QpOleBqi8R7+0cyeGebo5JOFWN7J7wl
+lupKp1iJcKtcARwA7bso/Q5OefAwDN4pucg13fOYKVktF8XLQkIUsfY=</X509Certificate>
+<X509Certificate>MIIETTCCA7agAwIBAgIJANaOuOCRgiz3MA0GCSqGSIb3DQEBBQUAMIG8MQswCQYD
+VQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTE9MDsGA1UEChM0WE1MIFNlY3Vy
+aXR5IExpYnJhcnkgKGh0dHA6Ly93d3cuYWxla3NleS5jb20veG1sc2VjKTEeMBwG
+A1UECxMVVGVzdCBSb290IENlcnRpZmljYXRlMRYwFAYDVQQDEw1BbGVrc2V5IFNh
+bmluMSEwHwYJKoZIhvcNAQkBFhJ4bWxzZWNAYWxla3NleS5jb20wHhcNMDUwNzEw
+MDIyOTAxWhcNMTUwNzA4MDIyOTAxWjCBvDELMAkGA1UEBhMCVVMxEzARBgNVBAgT
+CkNhbGlmb3JuaWExPTA7BgNVBAoTNFhNTCBTZWN1cml0eSBMaWJyYXJ5IChodHRw
+Oi8vd3d3LmFsZWtzZXkuY29tL3htbHNlYykxHjAcBgNVBAsTFVRlc3QgUm9vdCBD
+ZXJ0aWZpY2F0ZTEWMBQGA1UEAxMNQWxla3NleSBTYW5pbjEhMB8GCSqGSIb3DQEJ
+ARYSeG1sc2VjQGFsZWtzZXkuY29tMIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKB
+gQDayaFajJxOdVU+8EjwO31S2XqNmYxxbHfiUJO3w2h57OPUkKAcKe5Gvt9hJbPT
+b3C4blPScOke2RexKnXS7pAXXbxFlgUlZ0QK0K2pdl559OSmrtH3mPP9BJvvDMlx
+kcNj9/EeD+yGd8GN/yT6PTDh8G/4lszOXL+tyKIkC4Ys/wIDAQABo4IBUzCCAU8w
+DAYDVR0TBAUwAwEB/zAsBglghkgBhvhCAQ0EHxYdT3BlblNTTCBHZW5lcmF0ZWQg
+Q2VydGlmaWNhdGUwHQYDVR0OBBYEFNpG6Wvmr9M9quUhS1LtymYo4P6FMIHxBgNV
+HSMEgekwgeaAFNpG6Wvmr9M9quUhS1LtymYo4P6FoYHCpIG/MIG8MQswCQYDVQQG
+EwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTE9MDsGA1UEChM0WE1MIFNlY3VyaXR5
+IExpYnJhcnkgKGh0dHA6Ly93d3cuYWxla3NleS5jb20veG1sc2VjKTEeMBwGA1UE
+CxMVVGVzdCBSb290IENlcnRpZmljYXRlMRYwFAYDVQQDEw1BbGVrc2V5IFNhbmlu
+MSEwHwYJKoZIhvcNAQkBFhJ4bWxzZWNAYWxla3NleS5jb22CCQDWjrjgkYIs9zAN
+BgkqhkiG9w0BAQUFAAOBgQBUXbdOTQwArcNrbxavzARp2JGOnzo6WzTm+OFSXC0F
+08YwT8jWbht97e8lNNVOBU4Y/38ReZqYC9OqFofG1/O9AdQ58WL/FWg8DgP5MJPT
+T9kRU3FU01jUiX2+kbdnghZAOJm0ziRNxfNPwIIWPKYXyXEKQQzrnxyFey1hP7cg
+6A==</X509Certificate>
+<X509Certificate>MIID3zCCA4mgAwIBAgIJANaOuOCRgiz6MA0GCSqGSIb3DQEBBQUAMIHIMQswCQYD
+VQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTE9MDsGA1UEChM0WE1MIFNlY3Vy
+aXR5IExpYnJhcnkgKGh0dHA6Ly93d3cuYWxla3NleS5jb20veG1sc2VjKTEqMCgG
+A1UECxMhVGVzdCBTZWNvbmQgTGV2ZWwgUlNBIENlcnRpZmljYXRlMRYwFAYDVQQD
+Ew1BbGVrc2V5IFNhbmluMSEwHwYJKoZIhvcNAQkBFhJ4bWxzZWNAYWxla3NleS5j
+b20wHhcNMDUwNzEwMDIzMzAyWhcNMTUwNzA4MDIzMzAyWjCBxzELMAkGA1UEBhMC
+VVMxEzARBgNVBAgTCkNhbGlmb3JuaWExPTA7BgNVBAoTNFhNTCBTZWN1cml0eSBM
+aWJyYXJ5IChodHRwOi8vd3d3LmFsZWtzZXkuY29tL3htbHNlYykxKTAnBgNVBAsT
+IFRlc3QgVGhpcmQgTGV2ZWwgUlNBIENlcnRpZmljYXRlMRYwFAYDVQQDEw1BbGVr
+c2V5IFNhbmluMSEwHwYJKoZIhvcNAQkBFhJ4bWxzZWNAYWxla3NleS5jb20wXDAN
+BgkqhkiG9w0BAQEFAANLADBIAkEA09BtD3aeVt6DVDkk0dI7Vh7LjqdnsYmW0tbD
+VxxK+nume+Z9Sb4znbUKkWl+vgQATdRUEyhT2P+Gqrd0UBzYfQIDAQABo4IBUzCC
+AU8wDAYDVR0TBAUwAwEB/zAsBglghkgBhvhCAQ0EHxYdT3BlblNTTCBHZW5lcmF0
+ZWQgQ2VydGlmaWNhdGUwHQYDVR0OBBYEFNf0xkZ3zjcEI60pVPuwDqTMQygZMIHx
+BgNVHSMEgekwgeaAFP7k7FMk8JWVxxC14US1XTllWuN+oYHCpIG/MIG8MQswCQYD
+VQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTE9MDsGA1UEChM0WE1MIFNlY3Vy
+aXR5IExpYnJhcnkgKGh0dHA6Ly93d3cuYWxla3NleS5jb20veG1sc2VjKTEeMBwG
+A1UECxMVVGVzdCBSb290IENlcnRpZmljYXRlMRYwFAYDVQQDEw1BbGVrc2V5IFNh
+bmluMSEwHwYJKoZIhvcNAQkBFhJ4bWxzZWNAYWxla3NleS5jb22CCQDWjrjgkYIs
++DANBgkqhkiG9w0BAQUFAANBAEfjvmWwi2gBpYt7bwF6oHiFLoIh5kiLAPrlOFAb
+PZlLDqr5+eDcr1cf0pksgW7fVE9NzTSmwjDFuEcPqJV62Ek=</X509Certificate>
+</X509Data>
+  </KeyInfo>
+  <Object Id="object">some text</Object>
+</Signature>
diff --git a/tests/aleksey-xmldsig-01/enveloping-rsa-x509chain.xml b/tests/aleksey-xmldsig-01/enveloping-rsa-x509chain.xml
index cdc3c16..0cf0f42 100644
--- a/tests/aleksey-xmldsig-01/enveloping-rsa-x509chain.xml
+++ b/tests/aleksey-xmldsig-01/enveloping-rsa-x509chain.xml
@@ -8,53 +8,77 @@
       <DigestValue>7/XTsHaBSOnJ/jXD5v0zL6VKYsk=</DigestValue>
     </Reference>
   </SignedInfo>
-  <SignatureValue>diIxxg+JwsBYA38N0EySE0heGc2d76ZWRDBPIL74I0ODjc3jeYnVBnO/swuAHkNx
-s1L0jQ2Zo+hLuC1TS5fp0Q==</SignatureValue>
+  <SignatureValue>RCkGabfqV1XpXvx0rGDEIAzs4/U9TDKvZIWN9MBRi5BPAr1pXnX0iAve+2OEeBTm
+nstv7BjG6CDnb69ouJSeWg==</SignatureValue>
   <KeyInfo>
     <X509Data>
-    <X509Certificate>MIIDzTCCA3egAwIBAgIBAzANBgkqhkiG9w0BAQQFADCBvzELMAkGA1UEBhMCVVMx
-EzARBgNVBAgTCkNhbGlmb3JuaWExPTA7BgNVBAoTNFhNTCBTZWN1cml0eSBMaWJy
-YXJ5IChodHRwOi8vd3d3LmFsZWtzZXkuY29tL3htbHNlYykxITAfBgNVBAsTGFNl
-Y29uZCBMZXZlbCBDZXJ0aWZpY2F0ZTEWMBQGA1UEAxMNQWxla3NleSBTYW5pbjEh
-MB8GCSqGSIb3DQEJARYSeG1sc2VjQGFsZWtzZXkuY29tMB4XDTAyMDIwMjA4MDE0
-OFoXDTEyMDEzMTA4MDE0OFowgcIxCzAJBgNVBAYTAlVTMRMwEQYDVQQIEwpDYWxp
-Zm9ybmlhMT0wOwYDVQQKEzRYTUwgU2VjdXJpdHkgTGlicmFyeSAoaHR0cDovL3d3
-dy5hbGVrc2V5LmNvbS94bWxzZWMpMSQwIgYDVQQLExtUaGlyZCBMZXZlbCBSU0Eg
-Q2VydGlmaWNhdGUxFjAUBgNVBAMTDUFsZWtzZXkgU2FuaW4xITAfBgkqhkiG9w0B
-CQEWEnhtbHNlY0BhbGVrc2V5LmNvbTBcMA0GCSqGSIb3DQEBAQUAA0sAMEgCQQDQ
-p6WLdrHhNMYcqSJd27S9wW6xHRwEUJKSCYQ56aug0n+4sa492l8lWj1rYvrmsdtV
-37UCtJWqOSwobj9npysXAgMBAAGjggFXMIIBUzAJBgNVHRMEAjAAMCwGCWCGSAGG
-+EIBDQQfFh1PcGVuU1NMIEdlbmVyYXRlZCBDZXJ0aWZpY2F0ZTAdBgNVHQ4EFgQU
-pBgdE9WMMoQMndG4iDT9XDfZ+kgwgfgGA1UdIwSB8DCB7YAUeNctkWEvlSJKu+HV
-PcYmr6uX0gShgdGkgc4wgcsxCzAJBgNVBAYTAlVTMRMwEQYDVQQIEwpDYWxpZm9y
-bmlhMRIwEAYDVQQHEwlTdW5ueXZhbGUxPTA7BgNVBAoTNFhNTCBTZWN1cml0eSBM
-aWJyYXJ5IChodHRwOi8vd3d3LmFsZWtzZXkuY29tL3htbHNlYykxGTAXBgNVBAsT
-EFJvb3QgQ2VydGlmaWNhdGUxFjAUBgNVBAMTDUFsZWtzZXkgU2FuaW4xITAfBgkq
-hkiG9w0BCQEWEnhtbHNlY0BhbGVrc2V5LmNvbYIBATANBgkqhkiG9w0BAQQFAANB
-AC8/OGwrGhhATlRLCmOLHHl8o+J2UAPnpnmc8+tc7GGjuy1L+HQzx3f242DgudEH
-1i71E0auLg1+ikczHPbdj08=</X509Certificate>
-<X509Certificate>MIIEFzCCA4CgAwIBAgIBATANBgkqhkiG9w0BAQQFADCByzELMAkGA1UEBhMCVVMx
-EzARBgNVBAgTCkNhbGlmb3JuaWExEjAQBgNVBAcTCVN1bm55dmFsZTE9MDsGA1UE
-ChM0WE1MIFNlY3VyaXR5IExpYnJhcnkgKGh0dHA6Ly93d3cuYWxla3NleS5jb20v
-eG1sc2VjKTEZMBcGA1UECxMQUm9vdCBDZXJ0aWZpY2F0ZTEWMBQGA1UEAxMNQWxl
-a3NleSBTYW5pbjEhMB8GCSqGSIb3DQEJARYSeG1sc2VjQGFsZWtzZXkuY29tMB4X
-DTAyMDIwMjA4MDA1OVoXDTEyMDEzMTA4MDA1OVowgb8xCzAJBgNVBAYTAlVTMRMw
-EQYDVQQIEwpDYWxpZm9ybmlhMT0wOwYDVQQKEzRYTUwgU2VjdXJpdHkgTGlicmFy
-eSAoaHR0cDovL3d3dy5hbGVrc2V5LmNvbS94bWxzZWMpMSEwHwYDVQQLExhTZWNv
-bmQgTGV2ZWwgQ2VydGlmaWNhdGUxFjAUBgNVBAMTDUFsZWtzZXkgU2FuaW4xITAf
-BgkqhkiG9w0BCQEWEnhtbHNlY0BhbGVrc2V5LmNvbTBcMA0GCSqGSIb3DQEBAQUA
-A0sAMEgCQQDILuuqHAryfyHYBbaHp8ujFfsylBhgR1S5346z5DnM9eZ+i2By9WGT
-VygXfiZuHwu3rTFhca9O6sVPOcBuFTrnAgMBAAGjggFXMIIBUzAJBgNVHRMEAjAA
-MCwGCWCGSAGG+EIBDQQfFh1PcGVuU1NMIEdlbmVyYXRlZCBDZXJ0aWZpY2F0ZTAd
-BgNVHQ4EFgQUeNctkWEvlSJKu+HVPcYmr6uX0gQwgfgGA1UdIwSB8DCB7YAUtLnv
-muaXDmhlHpjO+lUNiQbbTHyhgdGkgc4wgcsxCzAJBgNVBAYTAlVTMRMwEQYDVQQI
-EwpDYWxpZm9ybmlhMRIwEAYDVQQHEwlTdW5ueXZhbGUxPTA7BgNVBAoTNFhNTCBT
-ZWN1cml0eSBMaWJyYXJ5IChodHRwOi8vd3d3LmFsZWtzZXkuY29tL3htbHNlYykx
-GTAXBgNVBAsTEFJvb3QgQ2VydGlmaWNhdGUxFjAUBgNVBAMTDUFsZWtzZXkgU2Fu
-aW4xITAfBgkqhkiG9w0BCQEWEnhtbHNlY0BhbGVrc2V5LmNvbYIBADANBgkqhkiG
-9w0BAQQFAAOBgQBxJHfdMbcTOpUWJdQrWNzHbQtyHMSdLSHTALIh10ORhltBXSYe
-vJywXmYz2F7080WuEDxdHuUysL8EKPlM7LRTJooqVyM4t635UaMYsm+4S0A4g9pW
-tHA0SUfq9q6hihzmVxDA7Lwj194ObRNMWFILTrfURzOE0xQbutPweMRm/g==</X509Certificate>
+    <X509Certificate>MIIEFTCCA36gAwIBAgIJANaOuOCRgiz4MA0GCSqGSIb3DQEBBQUAMIG8MQswCQYD
+VQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTE9MDsGA1UEChM0WE1MIFNlY3Vy
+aXR5IExpYnJhcnkgKGh0dHA6Ly93d3cuYWxla3NleS5jb20veG1sc2VjKTEeMBwG
+A1UECxMVVGVzdCBSb290IENlcnRpZmljYXRlMRYwFAYDVQQDEw1BbGVrc2V5IFNh
+bmluMSEwHwYJKoZIhvcNAQkBFhJ4bWxzZWNAYWxla3NleS5jb20wHhcNMDUwNzEw
+MDIyOTU1WhcNMTUwNzA4MDIyOTU1WjCByDELMAkGA1UEBhMCVVMxEzARBgNVBAgT
+CkNhbGlmb3JuaWExPTA7BgNVBAoTNFhNTCBTZWN1cml0eSBMaWJyYXJ5IChodHRw
+Oi8vd3d3LmFsZWtzZXkuY29tL3htbHNlYykxKjAoBgNVBAsTIVRlc3QgU2Vjb25k
+IExldmVsIFJTQSBDZXJ0aWZpY2F0ZTEWMBQGA1UEAxMNQWxla3NleSBTYW5pbjEh
+MB8GCSqGSIb3DQEJARYSeG1sc2VjQGFsZWtzZXkuY29tMFwwDQYJKoZIhvcNAQEB
+BQADSwAwSAJBALK68onYK5Q8PfeCE+3hDwyKV6wfFVtunIp+ZputhWkMZUOY4oqn
+ffuolRln3kp/CVdtHaPTPIpYma9HFTH4+xMCAwEAAaOCAVMwggFPMAwGA1UdEwQF
+MAMBAf8wLAYJYIZIAYb4QgENBB8WHU9wZW5TU0wgR2VuZXJhdGVkIENlcnRpZmlj
+YXRlMB0GA1UdDgQWBBT+5OxTJPCVlccQteFEtV05ZVrjfjCB8QYDVR0jBIHpMIHm
+gBTaRulr5q/TParlIUtS7cpmKOD+haGBwqSBvzCBvDELMAkGA1UEBhMCVVMxEzAR
+BgNVBAgTCkNhbGlmb3JuaWExPTA7BgNVBAoTNFhNTCBTZWN1cml0eSBMaWJyYXJ5
+IChodHRwOi8vd3d3LmFsZWtzZXkuY29tL3htbHNlYykxHjAcBgNVBAsTFVRlc3Qg
+Um9vdCBDZXJ0aWZpY2F0ZTEWMBQGA1UEAxMNQWxla3NleSBTYW5pbjEhMB8GCSqG
+SIb3DQEJARYSeG1sc2VjQGFsZWtzZXkuY29tggkA1o644JGCLPcwDQYJKoZIhvcN
+AQEFBQADgYEAmY0RjbSVqOU/xvyhSq8Juk6u8bDHYIUgrfhIDZUtVT1s+op4ReOO
+kC7W7ZDOl8MxhJmt4KMqc6niYoQeuXTA9QpOleBqi8R7+0cyeGebo5JOFWN7J7wl
+lupKp1iJcKtcARwA7bso/Q5OefAwDN4pucg13fOYKVktF8XLQkIUsfY=</X509Certificate>
+<X509Certificate>MIIETTCCA7agAwIBAgIJANaOuOCRgiz3MA0GCSqGSIb3DQEBBQUAMIG8MQswCQYD
+VQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTE9MDsGA1UEChM0WE1MIFNlY3Vy
+aXR5IExpYnJhcnkgKGh0dHA6Ly93d3cuYWxla3NleS5jb20veG1sc2VjKTEeMBwG
+A1UECxMVVGVzdCBSb290IENlcnRpZmljYXRlMRYwFAYDVQQDEw1BbGVrc2V5IFNh
+bmluMSEwHwYJKoZIhvcNAQkBFhJ4bWxzZWNAYWxla3NleS5jb20wHhcNMDUwNzEw
+MDIyOTAxWhcNMTUwNzA4MDIyOTAxWjCBvDELMAkGA1UEBhMCVVMxEzARBgNVBAgT
+CkNhbGlmb3JuaWExPTA7BgNVBAoTNFhNTCBTZWN1cml0eSBMaWJyYXJ5IChodHRw
+Oi8vd3d3LmFsZWtzZXkuY29tL3htbHNlYykxHjAcBgNVBAsTFVRlc3QgUm9vdCBD
+ZXJ0aWZpY2F0ZTEWMBQGA1UEAxMNQWxla3NleSBTYW5pbjEhMB8GCSqGSIb3DQEJ
+ARYSeG1sc2VjQGFsZWtzZXkuY29tMIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKB
+gQDayaFajJxOdVU+8EjwO31S2XqNmYxxbHfiUJO3w2h57OPUkKAcKe5Gvt9hJbPT
+b3C4blPScOke2RexKnXS7pAXXbxFlgUlZ0QK0K2pdl559OSmrtH3mPP9BJvvDMlx
+kcNj9/EeD+yGd8GN/yT6PTDh8G/4lszOXL+tyKIkC4Ys/wIDAQABo4IBUzCCAU8w
+DAYDVR0TBAUwAwEB/zAsBglghkgBhvhCAQ0EHxYdT3BlblNTTCBHZW5lcmF0ZWQg
+Q2VydGlmaWNhdGUwHQYDVR0OBBYEFNpG6Wvmr9M9quUhS1LtymYo4P6FMIHxBgNV
+HSMEgekwgeaAFNpG6Wvmr9M9quUhS1LtymYo4P6FoYHCpIG/MIG8MQswCQYDVQQG
+EwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTE9MDsGA1UEChM0WE1MIFNlY3VyaXR5
+IExpYnJhcnkgKGh0dHA6Ly93d3cuYWxla3NleS5jb20veG1sc2VjKTEeMBwGA1UE
+CxMVVGVzdCBSb290IENlcnRpZmljYXRlMRYwFAYDVQQDEw1BbGVrc2V5IFNhbmlu
+MSEwHwYJKoZIhvcNAQkBFhJ4bWxzZWNAYWxla3NleS5jb22CCQDWjrjgkYIs9zAN
+BgkqhkiG9w0BAQUFAAOBgQBUXbdOTQwArcNrbxavzARp2JGOnzo6WzTm+OFSXC0F
+08YwT8jWbht97e8lNNVOBU4Y/38ReZqYC9OqFofG1/O9AdQ58WL/FWg8DgP5MJPT
+T9kRU3FU01jUiX2+kbdnghZAOJm0ziRNxfNPwIIWPKYXyXEKQQzrnxyFey1hP7cg
+6A==</X509Certificate>
+<X509Certificate>MIID3zCCA4mgAwIBAgIJANaOuOCRgiz6MA0GCSqGSIb3DQEBBQUAMIHIMQswCQYD
+VQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTE9MDsGA1UEChM0WE1MIFNlY3Vy
+aXR5IExpYnJhcnkgKGh0dHA6Ly93d3cuYWxla3NleS5jb20veG1sc2VjKTEqMCgG
+A1UECxMhVGVzdCBTZWNvbmQgTGV2ZWwgUlNBIENlcnRpZmljYXRlMRYwFAYDVQQD
+Ew1BbGVrc2V5IFNhbmluMSEwHwYJKoZIhvcNAQkBFhJ4bWxzZWNAYWxla3NleS5j
+b20wHhcNMDUwNzEwMDIzMzAyWhcNMTUwNzA4MDIzMzAyWjCBxzELMAkGA1UEBhMC
+VVMxEzARBgNVBAgTCkNhbGlmb3JuaWExPTA7BgNVBAoTNFhNTCBTZWN1cml0eSBM
+aWJyYXJ5IChodHRwOi8vd3d3LmFsZWtzZXkuY29tL3htbHNlYykxKTAnBgNVBAsT
+IFRlc3QgVGhpcmQgTGV2ZWwgUlNBIENlcnRpZmljYXRlMRYwFAYDVQQDEw1BbGVr
+c2V5IFNhbmluMSEwHwYJKoZIhvcNAQkBFhJ4bWxzZWNAYWxla3NleS5jb20wXDAN
+BgkqhkiG9w0BAQEFAANLADBIAkEA09BtD3aeVt6DVDkk0dI7Vh7LjqdnsYmW0tbD
+VxxK+nume+Z9Sb4znbUKkWl+vgQATdRUEyhT2P+Gqrd0UBzYfQIDAQABo4IBUzCC
+AU8wDAYDVR0TBAUwAwEB/zAsBglghkgBhvhCAQ0EHxYdT3BlblNTTCBHZW5lcmF0
+ZWQgQ2VydGlmaWNhdGUwHQYDVR0OBBYEFNf0xkZ3zjcEI60pVPuwDqTMQygZMIHx
+BgNVHSMEgekwgeaAFP7k7FMk8JWVxxC14US1XTllWuN+oYHCpIG/MIG8MQswCQYD
+VQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTE9MDsGA1UEChM0WE1MIFNlY3Vy
+aXR5IExpYnJhcnkgKGh0dHA6Ly93d3cuYWxla3NleS5jb20veG1sc2VjKTEeMBwG
+A1UECxMVVGVzdCBSb290IENlcnRpZmljYXRlMRYwFAYDVQQDEw1BbGVrc2V5IFNh
+bmluMSEwHwYJKoZIhvcNAQkBFhJ4bWxzZWNAYWxla3NleS5jb22CCQDWjrjgkYIs
++DANBgkqhkiG9w0BAQUFAANBAEfjvmWwi2gBpYt7bwF6oHiFLoIh5kiLAPrlOFAb
+PZlLDqr5+eDcr1cf0pksgW7fVE9NzTSmwjDFuEcPqJV62Ek=</X509Certificate>
 </X509Data>
   </KeyInfo>
   <Object Id="object">some text</Object>
diff --git a/tests/aleksey-xmldsig-01/enveloping-hmac-md5-64.tmpl b/tests/aleksey-xmldsig-01/enveloping-sha1-hmac-sha1-64.tmpl
similarity index 85%
copy from tests/aleksey-xmldsig-01/enveloping-hmac-md5-64.tmpl
copy to tests/aleksey-xmldsig-01/enveloping-sha1-hmac-sha1-64.tmpl
index 57b7603..7057978 100644
--- a/tests/aleksey-xmldsig-01/enveloping-hmac-md5-64.tmpl
+++ b/tests/aleksey-xmldsig-01/enveloping-sha1-hmac-sha1-64.tmpl
@@ -2,11 +2,11 @@
 <Signature xmlns="http://www.w3.org/2000/09/xmldsig#">
   <SignedInfo>
     <CanonicalizationMethod Algorithm="http://www.w3.org/TR/2001/REC-xml-c14n-20010315" />
-    <SignatureMethod Algorithm="http://www.w3.org/2001/04/xmldsig-more#hmac-md5">
+    <SignatureMethod Algorithm="http://www.w3.org/2000/09/xmldsig#hmac-sha1">
       <HMACOutputLength>64</HMACOutputLength>
     </SignatureMethod>
     <Reference URI="#object">
-      <DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1" />
+      <DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"/>
       <DigestValue></DigestValue>
     </Reference>
   </SignedInfo>
diff --git a/tests/aleksey-xmldsig-01/enveloping-hmac-md5-64.xml b/tests/aleksey-xmldsig-01/enveloping-sha1-hmac-sha1-64.xml
similarity index 80%
copy from tests/aleksey-xmldsig-01/enveloping-hmac-md5-64.xml
copy to tests/aleksey-xmldsig-01/enveloping-sha1-hmac-sha1-64.xml
index fa219f5..bdb5f74 100644
--- a/tests/aleksey-xmldsig-01/enveloping-hmac-md5-64.xml
+++ b/tests/aleksey-xmldsig-01/enveloping-sha1-hmac-sha1-64.xml
@@ -2,7 +2,7 @@
 <Signature xmlns="http://www.w3.org/2000/09/xmldsig#">
   <SignedInfo>
     <CanonicalizationMethod Algorithm="http://www.w3.org/TR/2001/REC-xml-c14n-20010315"/>
-    <SignatureMethod Algorithm="http://www.w3.org/2001/04/xmldsig-more#hmac-md5">
+    <SignatureMethod Algorithm="http://www.w3.org/2000/09/xmldsig#hmac-sha1">
       <HMACOutputLength>64</HMACOutputLength>
     </SignatureMethod>
     <Reference URI="#object">
@@ -10,6 +10,6 @@
       <DigestValue>7/XTsHaBSOnJ/jXD5v0zL6VKYsk=</DigestValue>
     </Reference>
   </SignedInfo>
-  <SignatureValue>GlqEfgOS/dk=</SignatureValue>
+  <SignatureValue>f/uhIfsfFeg=</SignatureValue>
   <Object Id="object">some text</Object>
 </Signature>
diff --git a/tests/aleksey-xmldsig-01/enveloping-hmac-md5.tmpl b/tests/aleksey-xmldsig-01/enveloping-sha1-hmac-sha1.tmpl
similarity index 82%
copy from tests/aleksey-xmldsig-01/enveloping-hmac-md5.tmpl
copy to tests/aleksey-xmldsig-01/enveloping-sha1-hmac-sha1.tmpl
index 5f4bddd..92eeb55 100644
--- a/tests/aleksey-xmldsig-01/enveloping-hmac-md5.tmpl
+++ b/tests/aleksey-xmldsig-01/enveloping-sha1-hmac-sha1.tmpl
@@ -2,9 +2,9 @@
 <Signature xmlns="http://www.w3.org/2000/09/xmldsig#">
   <SignedInfo>
     <CanonicalizationMethod Algorithm="http://www.w3.org/TR/2001/REC-xml-c14n-20010315" />
-    <SignatureMethod Algorithm="http://www.w3.org/2001/04/xmldsig-more#hmac-md5" />
+    <SignatureMethod Algorithm="http://www.w3.org/2000/09/xmldsig#hmac-sha1"/>
     <Reference URI="#object">
-      <DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1" />
+      <DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"/>
       <DigestValue></DigestValue>
     </Reference>
   </SignedInfo>
diff --git a/tests/aleksey-xmldsig-01/enveloping-hmac-md5.xml b/tests/aleksey-xmldsig-01/enveloping-sha1-hmac-sha1.xml
similarity index 75%
rename from tests/aleksey-xmldsig-01/enveloping-hmac-md5.xml
rename to tests/aleksey-xmldsig-01/enveloping-sha1-hmac-sha1.xml
index 55790b2..ce01eab 100644
--- a/tests/aleksey-xmldsig-01/enveloping-hmac-md5.xml
+++ b/tests/aleksey-xmldsig-01/enveloping-sha1-hmac-sha1.xml
@@ -2,12 +2,12 @@
 <Signature xmlns="http://www.w3.org/2000/09/xmldsig#">
   <SignedInfo>
     <CanonicalizationMethod Algorithm="http://www.w3.org/TR/2001/REC-xml-c14n-20010315"/>
-    <SignatureMethod Algorithm="http://www.w3.org/2001/04/xmldsig-more#hmac-md5"/>
+    <SignatureMethod Algorithm="http://www.w3.org/2000/09/xmldsig#hmac-sha1"/>
     <Reference URI="#object">
       <DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"/>
       <DigestValue>7/XTsHaBSOnJ/jXD5v0zL6VKYsk=</DigestValue>
     </Reference>
   </SignedInfo>
-  <SignatureValue>9bdR2cW6lUFvPBd0Ng/3gw==</SignatureValue>
+  <SignatureValue>JElPttIT4Am7Q+MNoMyv+WDfAZw=</SignatureValue>
   <Object Id="object">some text</Object>
 </Signature>
diff --git a/tests/aleksey-xmldsig-01/enveloping-hmac-md5.tmpl b/tests/aleksey-xmldsig-01/enveloping-sha1-rsa-sha1.tmpl
similarity index 78%
copy from tests/aleksey-xmldsig-01/enveloping-hmac-md5.tmpl
copy to tests/aleksey-xmldsig-01/enveloping-sha1-rsa-sha1.tmpl
index 5f4bddd..c71f4cc 100644
--- a/tests/aleksey-xmldsig-01/enveloping-hmac-md5.tmpl
+++ b/tests/aleksey-xmldsig-01/enveloping-sha1-rsa-sha1.tmpl
@@ -2,13 +2,16 @@
 <Signature xmlns="http://www.w3.org/2000/09/xmldsig#">
   <SignedInfo>
     <CanonicalizationMethod Algorithm="http://www.w3.org/TR/2001/REC-xml-c14n-20010315" />
-    <SignatureMethod Algorithm="http://www.w3.org/2001/04/xmldsig-more#hmac-md5" />
+    <SignatureMethod Algorithm="http://www.w3.org/2000/09/xmldsig#rsa-sha1"/>
     <Reference URI="#object">
-      <DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1" />
+      <DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"/>
       <DigestValue></DigestValue>
     </Reference>
   </SignedInfo>
   <SignatureValue>
   </SignatureValue>
+  <KeyInfo>
+    <X509Data/>
+  </KeyInfo>
   <Object Id="object">some text</Object>
 </Signature>
diff --git a/tests/aleksey-xmldsig-01/enveloping-sha1-rsa-sha1.xml b/tests/aleksey-xmldsig-01/enveloping-sha1-rsa-sha1.xml
new file mode 100644
index 0000000..79794a9
--- /dev/null
+++ b/tests/aleksey-xmldsig-01/enveloping-sha1-rsa-sha1.xml
@@ -0,0 +1,85 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<Signature xmlns="http://www.w3.org/2000/09/xmldsig#">
+  <SignedInfo>
+    <CanonicalizationMethod Algorithm="http://www.w3.org/TR/2001/REC-xml-c14n-20010315"/>
+    <SignatureMethod Algorithm="http://www.w3.org/2000/09/xmldsig#rsa-sha1"/>
+    <Reference URI="#object">
+      <DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"/>
+      <DigestValue>7/XTsHaBSOnJ/jXD5v0zL6VKYsk=</DigestValue>
+    </Reference>
+  </SignedInfo>
+  <SignatureValue>RCkGabfqV1XpXvx0rGDEIAzs4/U9TDKvZIWN9MBRi5BPAr1pXnX0iAve+2OEeBTm
+nstv7BjG6CDnb69ouJSeWg==</SignatureValue>
+  <KeyInfo>
+    <X509Data>
+<X509Certificate>MIIEFTCCA36gAwIBAgIJANaOuOCRgiz4MA0GCSqGSIb3DQEBBQUAMIG8MQswCQYD
+VQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTE9MDsGA1UEChM0WE1MIFNlY3Vy
+aXR5IExpYnJhcnkgKGh0dHA6Ly93d3cuYWxla3NleS5jb20veG1sc2VjKTEeMBwG
+A1UECxMVVGVzdCBSb290IENlcnRpZmljYXRlMRYwFAYDVQQDEw1BbGVrc2V5IFNh
+bmluMSEwHwYJKoZIhvcNAQkBFhJ4bWxzZWNAYWxla3NleS5jb20wHhcNMDUwNzEw
+MDIyOTU1WhcNMTUwNzA4MDIyOTU1WjCByDELMAkGA1UEBhMCVVMxEzARBgNVBAgT
+CkNhbGlmb3JuaWExPTA7BgNVBAoTNFhNTCBTZWN1cml0eSBMaWJyYXJ5IChodHRw
+Oi8vd3d3LmFsZWtzZXkuY29tL3htbHNlYykxKjAoBgNVBAsTIVRlc3QgU2Vjb25k
+IExldmVsIFJTQSBDZXJ0aWZpY2F0ZTEWMBQGA1UEAxMNQWxla3NleSBTYW5pbjEh
+MB8GCSqGSIb3DQEJARYSeG1sc2VjQGFsZWtzZXkuY29tMFwwDQYJKoZIhvcNAQEB
+BQADSwAwSAJBALK68onYK5Q8PfeCE+3hDwyKV6wfFVtunIp+ZputhWkMZUOY4oqn
+ffuolRln3kp/CVdtHaPTPIpYma9HFTH4+xMCAwEAAaOCAVMwggFPMAwGA1UdEwQF
+MAMBAf8wLAYJYIZIAYb4QgENBB8WHU9wZW5TU0wgR2VuZXJhdGVkIENlcnRpZmlj
+YXRlMB0GA1UdDgQWBBT+5OxTJPCVlccQteFEtV05ZVrjfjCB8QYDVR0jBIHpMIHm
+gBTaRulr5q/TParlIUtS7cpmKOD+haGBwqSBvzCBvDELMAkGA1UEBhMCVVMxEzAR
+BgNVBAgTCkNhbGlmb3JuaWExPTA7BgNVBAoTNFhNTCBTZWN1cml0eSBMaWJyYXJ5
+IChodHRwOi8vd3d3LmFsZWtzZXkuY29tL3htbHNlYykxHjAcBgNVBAsTFVRlc3Qg
+Um9vdCBDZXJ0aWZpY2F0ZTEWMBQGA1UEAxMNQWxla3NleSBTYW5pbjEhMB8GCSqG
+SIb3DQEJARYSeG1sc2VjQGFsZWtzZXkuY29tggkA1o644JGCLPcwDQYJKoZIhvcN
+AQEFBQADgYEAmY0RjbSVqOU/xvyhSq8Juk6u8bDHYIUgrfhIDZUtVT1s+op4ReOO
+kC7W7ZDOl8MxhJmt4KMqc6niYoQeuXTA9QpOleBqi8R7+0cyeGebo5JOFWN7J7wl
+lupKp1iJcKtcARwA7bso/Q5OefAwDN4pucg13fOYKVktF8XLQkIUsfY=</X509Certificate>
+<X509Certificate>MIIETTCCA7agAwIBAgIJANaOuOCRgiz3MA0GCSqGSIb3DQEBBQUAMIG8MQswCQYD
+VQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTE9MDsGA1UEChM0WE1MIFNlY3Vy
+aXR5IExpYnJhcnkgKGh0dHA6Ly93d3cuYWxla3NleS5jb20veG1sc2VjKTEeMBwG
+A1UECxMVVGVzdCBSb290IENlcnRpZmljYXRlMRYwFAYDVQQDEw1BbGVrc2V5IFNh
+bmluMSEwHwYJKoZIhvcNAQkBFhJ4bWxzZWNAYWxla3NleS5jb20wHhcNMDUwNzEw
+MDIyOTAxWhcNMTUwNzA4MDIyOTAxWjCBvDELMAkGA1UEBhMCVVMxEzARBgNVBAgT
+CkNhbGlmb3JuaWExPTA7BgNVBAoTNFhNTCBTZWN1cml0eSBMaWJyYXJ5IChodHRw
+Oi8vd3d3LmFsZWtzZXkuY29tL3htbHNlYykxHjAcBgNVBAsTFVRlc3QgUm9vdCBD
+ZXJ0aWZpY2F0ZTEWMBQGA1UEAxMNQWxla3NleSBTYW5pbjEhMB8GCSqGSIb3DQEJ
+ARYSeG1sc2VjQGFsZWtzZXkuY29tMIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKB
+gQDayaFajJxOdVU+8EjwO31S2XqNmYxxbHfiUJO3w2h57OPUkKAcKe5Gvt9hJbPT
+b3C4blPScOke2RexKnXS7pAXXbxFlgUlZ0QK0K2pdl559OSmrtH3mPP9BJvvDMlx
+kcNj9/EeD+yGd8GN/yT6PTDh8G/4lszOXL+tyKIkC4Ys/wIDAQABo4IBUzCCAU8w
+DAYDVR0TBAUwAwEB/zAsBglghkgBhvhCAQ0EHxYdT3BlblNTTCBHZW5lcmF0ZWQg
+Q2VydGlmaWNhdGUwHQYDVR0OBBYEFNpG6Wvmr9M9quUhS1LtymYo4P6FMIHxBgNV
+HSMEgekwgeaAFNpG6Wvmr9M9quUhS1LtymYo4P6FoYHCpIG/MIG8MQswCQYDVQQG
+EwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTE9MDsGA1UEChM0WE1MIFNlY3VyaXR5
+IExpYnJhcnkgKGh0dHA6Ly93d3cuYWxla3NleS5jb20veG1sc2VjKTEeMBwGA1UE
+CxMVVGVzdCBSb290IENlcnRpZmljYXRlMRYwFAYDVQQDEw1BbGVrc2V5IFNhbmlu
+MSEwHwYJKoZIhvcNAQkBFhJ4bWxzZWNAYWxla3NleS5jb22CCQDWjrjgkYIs9zAN
+BgkqhkiG9w0BAQUFAAOBgQBUXbdOTQwArcNrbxavzARp2JGOnzo6WzTm+OFSXC0F
+08YwT8jWbht97e8lNNVOBU4Y/38ReZqYC9OqFofG1/O9AdQ58WL/FWg8DgP5MJPT
+T9kRU3FU01jUiX2+kbdnghZAOJm0ziRNxfNPwIIWPKYXyXEKQQzrnxyFey1hP7cg
+6A==</X509Certificate>
+<X509Certificate>MIID3zCCA4mgAwIBAgIJANaOuOCRgiz6MA0GCSqGSIb3DQEBBQUAMIHIMQswCQYD
+VQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTE9MDsGA1UEChM0WE1MIFNlY3Vy
+aXR5IExpYnJhcnkgKGh0dHA6Ly93d3cuYWxla3NleS5jb20veG1sc2VjKTEqMCgG
+A1UECxMhVGVzdCBTZWNvbmQgTGV2ZWwgUlNBIENlcnRpZmljYXRlMRYwFAYDVQQD
+Ew1BbGVrc2V5IFNhbmluMSEwHwYJKoZIhvcNAQkBFhJ4bWxzZWNAYWxla3NleS5j
+b20wHhcNMDUwNzEwMDIzMzAyWhcNMTUwNzA4MDIzMzAyWjCBxzELMAkGA1UEBhMC
+VVMxEzARBgNVBAgTCkNhbGlmb3JuaWExPTA7BgNVBAoTNFhNTCBTZWN1cml0eSBM
+aWJyYXJ5IChodHRwOi8vd3d3LmFsZWtzZXkuY29tL3htbHNlYykxKTAnBgNVBAsT
+IFRlc3QgVGhpcmQgTGV2ZWwgUlNBIENlcnRpZmljYXRlMRYwFAYDVQQDEw1BbGVr
+c2V5IFNhbmluMSEwHwYJKoZIhvcNAQkBFhJ4bWxzZWNAYWxla3NleS5jb20wXDAN
+BgkqhkiG9w0BAQEFAANLADBIAkEA09BtD3aeVt6DVDkk0dI7Vh7LjqdnsYmW0tbD
+VxxK+nume+Z9Sb4znbUKkWl+vgQATdRUEyhT2P+Gqrd0UBzYfQIDAQABo4IBUzCC
+AU8wDAYDVR0TBAUwAwEB/zAsBglghkgBhvhCAQ0EHxYdT3BlblNTTCBHZW5lcmF0
+ZWQgQ2VydGlmaWNhdGUwHQYDVR0OBBYEFNf0xkZ3zjcEI60pVPuwDqTMQygZMIHx
+BgNVHSMEgekwgeaAFP7k7FMk8JWVxxC14US1XTllWuN+oYHCpIG/MIG8MQswCQYD
+VQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTE9MDsGA1UEChM0WE1MIFNlY3Vy
+aXR5IExpYnJhcnkgKGh0dHA6Ly93d3cuYWxla3NleS5jb20veG1sc2VjKTEeMBwG
+A1UECxMVVGVzdCBSb290IENlcnRpZmljYXRlMRYwFAYDVQQDEw1BbGVrc2V5IFNh
+bmluMSEwHwYJKoZIhvcNAQkBFhJ4bWxzZWNAYWxla3NleS5jb22CCQDWjrjgkYIs
++DANBgkqhkiG9w0BAQUFAANBAEfjvmWwi2gBpYt7bwF6oHiFLoIh5kiLAPrlOFAb
+PZlLDqr5+eDcr1cf0pksgW7fVE9NzTSmwjDFuEcPqJV62Ek=</X509Certificate>
+</X509Data>
+  </KeyInfo>
+  <Object Id="object">some text</Object>
+</Signature>
diff --git a/tests/aleksey-xmldsig-01/enveloping-hmac-md5-64.tmpl b/tests/aleksey-xmldsig-01/enveloping-sha224-hmac-sha224-64.tmpl
similarity index 83%
copy from tests/aleksey-xmldsig-01/enveloping-hmac-md5-64.tmpl
copy to tests/aleksey-xmldsig-01/enveloping-sha224-hmac-sha224-64.tmpl
index 57b7603..3a649e8 100644
--- a/tests/aleksey-xmldsig-01/enveloping-hmac-md5-64.tmpl
+++ b/tests/aleksey-xmldsig-01/enveloping-sha224-hmac-sha224-64.tmpl
@@ -2,11 +2,11 @@
 <Signature xmlns="http://www.w3.org/2000/09/xmldsig#">
   <SignedInfo>
     <CanonicalizationMethod Algorithm="http://www.w3.org/TR/2001/REC-xml-c14n-20010315" />
-    <SignatureMethod Algorithm="http://www.w3.org/2001/04/xmldsig-more#hmac-md5">
+    <SignatureMethod Algorithm="http://www.w3.org/2001/04/xmldsig-more#hmac-sha224">
       <HMACOutputLength>64</HMACOutputLength>
     </SignatureMethod>
     <Reference URI="#object">
-      <DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1" />
+      <DigestMethod Algorithm="http://www.w3.org/2001/04/xmldsig-more#sha224"/>
       <DigestValue></DigestValue>
     </Reference>
   </SignedInfo>
diff --git a/tests/aleksey-xmldsig-01/enveloping-hmac-md5-64.xml b/tests/aleksey-xmldsig-01/enveloping-sha224-hmac-sha224-64.xml
similarity index 66%
copy from tests/aleksey-xmldsig-01/enveloping-hmac-md5-64.xml
copy to tests/aleksey-xmldsig-01/enveloping-sha224-hmac-sha224-64.xml
index fa219f5..bd0b4ce 100644
--- a/tests/aleksey-xmldsig-01/enveloping-hmac-md5-64.xml
+++ b/tests/aleksey-xmldsig-01/enveloping-sha224-hmac-sha224-64.xml
@@ -2,14 +2,14 @@
 <Signature xmlns="http://www.w3.org/2000/09/xmldsig#">
   <SignedInfo>
     <CanonicalizationMethod Algorithm="http://www.w3.org/TR/2001/REC-xml-c14n-20010315"/>
-    <SignatureMethod Algorithm="http://www.w3.org/2001/04/xmldsig-more#hmac-md5">
+    <SignatureMethod Algorithm="http://www.w3.org/2001/04/xmldsig-more#hmac-sha224">
       <HMACOutputLength>64</HMACOutputLength>
     </SignatureMethod>
     <Reference URI="#object">
-      <DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"/>
-      <DigestValue>7/XTsHaBSOnJ/jXD5v0zL6VKYsk=</DigestValue>
+      <DigestMethod Algorithm="http://www.w3.org/2001/04/xmldsig-more#sha224"/>
+      <DigestValue>azpKU6mkkPqPdDdtDXlEzVb0Xo2HgZMfuJ8KBw==</DigestValue>
     </Reference>
   </SignedInfo>
-  <SignatureValue>GlqEfgOS/dk=</SignatureValue>
+  <SignatureValue>ULeTuYfbvSc=</SignatureValue>
   <Object Id="object">some text</Object>
 </Signature>
diff --git a/tests/aleksey-xmldsig-01/enveloping-hmac-md5.tmpl b/tests/aleksey-xmldsig-01/enveloping-sha224-hmac-sha224.tmpl
similarity index 81%
copy from tests/aleksey-xmldsig-01/enveloping-hmac-md5.tmpl
copy to tests/aleksey-xmldsig-01/enveloping-sha224-hmac-sha224.tmpl
index 5f4bddd..d60dd52 100644
--- a/tests/aleksey-xmldsig-01/enveloping-hmac-md5.tmpl
+++ b/tests/aleksey-xmldsig-01/enveloping-sha224-hmac-sha224.tmpl
@@ -2,9 +2,9 @@
 <Signature xmlns="http://www.w3.org/2000/09/xmldsig#">
   <SignedInfo>
     <CanonicalizationMethod Algorithm="http://www.w3.org/TR/2001/REC-xml-c14n-20010315" />
-    <SignatureMethod Algorithm="http://www.w3.org/2001/04/xmldsig-more#hmac-md5" />
+    <SignatureMethod Algorithm="http://www.w3.org/2001/04/xmldsig-more#hmac-sha224"/>
     <Reference URI="#object">
-      <DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1" />
+      <DigestMethod Algorithm="http://www.w3.org/2001/04/xmldsig-more#sha224"/>
       <DigestValue></DigestValue>
     </Reference>
   </SignedInfo>
diff --git a/tests/aleksey-xmldsig-01/enveloping-hmac-ripemd160.xml b/tests/aleksey-xmldsig-01/enveloping-sha224-hmac-sha224.xml
similarity index 60%
copy from tests/aleksey-xmldsig-01/enveloping-hmac-ripemd160.xml
copy to tests/aleksey-xmldsig-01/enveloping-sha224-hmac-sha224.xml
index 0268930..1672050 100644
--- a/tests/aleksey-xmldsig-01/enveloping-hmac-ripemd160.xml
+++ b/tests/aleksey-xmldsig-01/enveloping-sha224-hmac-sha224.xml
@@ -2,12 +2,12 @@
 <Signature xmlns="http://www.w3.org/2000/09/xmldsig#">
   <SignedInfo>
     <CanonicalizationMethod Algorithm="http://www.w3.org/TR/2001/REC-xml-c14n-20010315"/>
-    <SignatureMethod Algorithm="http://www.w3.org/2001/04/xmldsig-more#hmac-ripemd160"/>
+    <SignatureMethod Algorithm="http://www.w3.org/2001/04/xmldsig-more#hmac-sha224"/>
     <Reference URI="#object">
-      <DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"/>
-      <DigestValue>7/XTsHaBSOnJ/jXD5v0zL6VKYsk=</DigestValue>
+      <DigestMethod Algorithm="http://www.w3.org/2001/04/xmldsig-more#sha224"/>
+      <DigestValue>azpKU6mkkPqPdDdtDXlEzVb0Xo2HgZMfuJ8KBw==</DigestValue>
     </Reference>
   </SignedInfo>
-  <SignatureValue>RLli8k0EbB85YkoKa66AhzHU0Zo=</SignatureValue>
+  <SignatureValue>w3xX2+aJSszo0AZX86jF2/fhzv5JyJrO0MTcWg==</SignatureValue>
   <Object Id="object">some text</Object>
 </Signature>
diff --git a/tests/aleksey-xmldsig-01/enveloping-hmac-md5.tmpl b/tests/aleksey-xmldsig-01/enveloping-sha224-rsa-sha224.tmpl
similarity index 76%
copy from tests/aleksey-xmldsig-01/enveloping-hmac-md5.tmpl
copy to tests/aleksey-xmldsig-01/enveloping-sha224-rsa-sha224.tmpl
index 5f4bddd..5bb4008 100644
--- a/tests/aleksey-xmldsig-01/enveloping-hmac-md5.tmpl
+++ b/tests/aleksey-xmldsig-01/enveloping-sha224-rsa-sha224.tmpl
@@ -2,13 +2,16 @@
 <Signature xmlns="http://www.w3.org/2000/09/xmldsig#">
   <SignedInfo>
     <CanonicalizationMethod Algorithm="http://www.w3.org/TR/2001/REC-xml-c14n-20010315" />
-    <SignatureMethod Algorithm="http://www.w3.org/2001/04/xmldsig-more#hmac-md5" />
+    <SignatureMethod Algorithm="http://www.w3.org/2001/04/xmldsig-more#rsa-sha224"/>
     <Reference URI="#object">
-      <DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1" />
+      <DigestMethod Algorithm="http://www.w3.org/2001/04/xmldsig-more#sha224"/>
       <DigestValue></DigestValue>
     </Reference>
   </SignedInfo>
   <SignatureValue>
   </SignatureValue>
+  <KeyInfo>
+    <X509Data/>
+  </KeyInfo>
   <Object Id="object">some text</Object>
 </Signature>
diff --git a/tests/aleksey-xmldsig-01/enveloping-sha224-rsa-sha224.xml b/tests/aleksey-xmldsig-01/enveloping-sha224-rsa-sha224.xml
new file mode 100644
index 0000000..979073e
--- /dev/null
+++ b/tests/aleksey-xmldsig-01/enveloping-sha224-rsa-sha224.xml
@@ -0,0 +1,85 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<Signature xmlns="http://www.w3.org/2000/09/xmldsig#">
+  <SignedInfo>
+    <CanonicalizationMethod Algorithm="http://www.w3.org/TR/2001/REC-xml-c14n-20010315"/>
+    <SignatureMethod Algorithm="http://www.w3.org/2001/04/xmldsig-more#rsa-sha224"/>
+    <Reference URI="#object">
+      <DigestMethod Algorithm="http://www.w3.org/2001/04/xmldsig-more#sha224"/>
+      <DigestValue>azpKU6mkkPqPdDdtDXlEzVb0Xo2HgZMfuJ8KBw==</DigestValue>
+    </Reference>
+  </SignedInfo>
+  <SignatureValue>Ywv4CqyMcauc5+yFHkavKYK5CRplbcIsNtG8+EJE2j7xuKpi05LsRhbZpyBR8B92
+9C6zUO2A/7unU1mJc2WZcQ==</SignatureValue>
+  <KeyInfo>
+    <X509Data>
+<X509Certificate>MIIEFTCCA36gAwIBAgIJANaOuOCRgiz4MA0GCSqGSIb3DQEBBQUAMIG8MQswCQYD
+VQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTE9MDsGA1UEChM0WE1MIFNlY3Vy
+aXR5IExpYnJhcnkgKGh0dHA6Ly93d3cuYWxla3NleS5jb20veG1sc2VjKTEeMBwG
+A1UECxMVVGVzdCBSb290IENlcnRpZmljYXRlMRYwFAYDVQQDEw1BbGVrc2V5IFNh
+bmluMSEwHwYJKoZIhvcNAQkBFhJ4bWxzZWNAYWxla3NleS5jb20wHhcNMDUwNzEw
+MDIyOTU1WhcNMTUwNzA4MDIyOTU1WjCByDELMAkGA1UEBhMCVVMxEzARBgNVBAgT
+CkNhbGlmb3JuaWExPTA7BgNVBAoTNFhNTCBTZWN1cml0eSBMaWJyYXJ5IChodHRw
+Oi8vd3d3LmFsZWtzZXkuY29tL3htbHNlYykxKjAoBgNVBAsTIVRlc3QgU2Vjb25k
+IExldmVsIFJTQSBDZXJ0aWZpY2F0ZTEWMBQGA1UEAxMNQWxla3NleSBTYW5pbjEh
+MB8GCSqGSIb3DQEJARYSeG1sc2VjQGFsZWtzZXkuY29tMFwwDQYJKoZIhvcNAQEB
+BQADSwAwSAJBALK68onYK5Q8PfeCE+3hDwyKV6wfFVtunIp+ZputhWkMZUOY4oqn
+ffuolRln3kp/CVdtHaPTPIpYma9HFTH4+xMCAwEAAaOCAVMwggFPMAwGA1UdEwQF
+MAMBAf8wLAYJYIZIAYb4QgENBB8WHU9wZW5TU0wgR2VuZXJhdGVkIENlcnRpZmlj
+YXRlMB0GA1UdDgQWBBT+5OxTJPCVlccQteFEtV05ZVrjfjCB8QYDVR0jBIHpMIHm
+gBTaRulr5q/TParlIUtS7cpmKOD+haGBwqSBvzCBvDELMAkGA1UEBhMCVVMxEzAR
+BgNVBAgTCkNhbGlmb3JuaWExPTA7BgNVBAoTNFhNTCBTZWN1cml0eSBMaWJyYXJ5
+IChodHRwOi8vd3d3LmFsZWtzZXkuY29tL3htbHNlYykxHjAcBgNVBAsTFVRlc3Qg
+Um9vdCBDZXJ0aWZpY2F0ZTEWMBQGA1UEAxMNQWxla3NleSBTYW5pbjEhMB8GCSqG
+SIb3DQEJARYSeG1sc2VjQGFsZWtzZXkuY29tggkA1o644JGCLPcwDQYJKoZIhvcN
+AQEFBQADgYEAmY0RjbSVqOU/xvyhSq8Juk6u8bDHYIUgrfhIDZUtVT1s+op4ReOO
+kC7W7ZDOl8MxhJmt4KMqc6niYoQeuXTA9QpOleBqi8R7+0cyeGebo5JOFWN7J7wl
+lupKp1iJcKtcARwA7bso/Q5OefAwDN4pucg13fOYKVktF8XLQkIUsfY=</X509Certificate>
+<X509Certificate>MIIETTCCA7agAwIBAgIJANaOuOCRgiz3MA0GCSqGSIb3DQEBBQUAMIG8MQswCQYD
+VQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTE9MDsGA1UEChM0WE1MIFNlY3Vy
+aXR5IExpYnJhcnkgKGh0dHA6Ly93d3cuYWxla3NleS5jb20veG1sc2VjKTEeMBwG
+A1UECxMVVGVzdCBSb290IENlcnRpZmljYXRlMRYwFAYDVQQDEw1BbGVrc2V5IFNh
+bmluMSEwHwYJKoZIhvcNAQkBFhJ4bWxzZWNAYWxla3NleS5jb20wHhcNMDUwNzEw
+MDIyOTAxWhcNMTUwNzA4MDIyOTAxWjCBvDELMAkGA1UEBhMCVVMxEzARBgNVBAgT
+CkNhbGlmb3JuaWExPTA7BgNVBAoTNFhNTCBTZWN1cml0eSBMaWJyYXJ5IChodHRw
+Oi8vd3d3LmFsZWtzZXkuY29tL3htbHNlYykxHjAcBgNVBAsTFVRlc3QgUm9vdCBD
+ZXJ0aWZpY2F0ZTEWMBQGA1UEAxMNQWxla3NleSBTYW5pbjEhMB8GCSqGSIb3DQEJ
+ARYSeG1sc2VjQGFsZWtzZXkuY29tMIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKB
+gQDayaFajJxOdVU+8EjwO31S2XqNmYxxbHfiUJO3w2h57OPUkKAcKe5Gvt9hJbPT
+b3C4blPScOke2RexKnXS7pAXXbxFlgUlZ0QK0K2pdl559OSmrtH3mPP9BJvvDMlx
+kcNj9/EeD+yGd8GN/yT6PTDh8G/4lszOXL+tyKIkC4Ys/wIDAQABo4IBUzCCAU8w
+DAYDVR0TBAUwAwEB/zAsBglghkgBhvhCAQ0EHxYdT3BlblNTTCBHZW5lcmF0ZWQg
+Q2VydGlmaWNhdGUwHQYDVR0OBBYEFNpG6Wvmr9M9quUhS1LtymYo4P6FMIHxBgNV
+HSMEgekwgeaAFNpG6Wvmr9M9quUhS1LtymYo4P6FoYHCpIG/MIG8MQswCQYDVQQG
+EwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTE9MDsGA1UEChM0WE1MIFNlY3VyaXR5
+IExpYnJhcnkgKGh0dHA6Ly93d3cuYWxla3NleS5jb20veG1sc2VjKTEeMBwGA1UE
+CxMVVGVzdCBSb290IENlcnRpZmljYXRlMRYwFAYDVQQDEw1BbGVrc2V5IFNhbmlu
+MSEwHwYJKoZIhvcNAQkBFhJ4bWxzZWNAYWxla3NleS5jb22CCQDWjrjgkYIs9zAN
+BgkqhkiG9w0BAQUFAAOBgQBUXbdOTQwArcNrbxavzARp2JGOnzo6WzTm+OFSXC0F
+08YwT8jWbht97e8lNNVOBU4Y/38ReZqYC9OqFofG1/O9AdQ58WL/FWg8DgP5MJPT
+T9kRU3FU01jUiX2+kbdnghZAOJm0ziRNxfNPwIIWPKYXyXEKQQzrnxyFey1hP7cg
+6A==</X509Certificate>
+<X509Certificate>MIID3zCCA4mgAwIBAgIJANaOuOCRgiz6MA0GCSqGSIb3DQEBBQUAMIHIMQswCQYD
+VQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTE9MDsGA1UEChM0WE1MIFNlY3Vy
+aXR5IExpYnJhcnkgKGh0dHA6Ly93d3cuYWxla3NleS5jb20veG1sc2VjKTEqMCgG
+A1UECxMhVGVzdCBTZWNvbmQgTGV2ZWwgUlNBIENlcnRpZmljYXRlMRYwFAYDVQQD
+Ew1BbGVrc2V5IFNhbmluMSEwHwYJKoZIhvcNAQkBFhJ4bWxzZWNAYWxla3NleS5j
+b20wHhcNMDUwNzEwMDIzMzAyWhcNMTUwNzA4MDIzMzAyWjCBxzELMAkGA1UEBhMC
+VVMxEzARBgNVBAgTCkNhbGlmb3JuaWExPTA7BgNVBAoTNFhNTCBTZWN1cml0eSBM
+aWJyYXJ5IChodHRwOi8vd3d3LmFsZWtzZXkuY29tL3htbHNlYykxKTAnBgNVBAsT
+IFRlc3QgVGhpcmQgTGV2ZWwgUlNBIENlcnRpZmljYXRlMRYwFAYDVQQDEw1BbGVr
+c2V5IFNhbmluMSEwHwYJKoZIhvcNAQkBFhJ4bWxzZWNAYWxla3NleS5jb20wXDAN
+BgkqhkiG9w0BAQEFAANLADBIAkEA09BtD3aeVt6DVDkk0dI7Vh7LjqdnsYmW0tbD
+VxxK+nume+Z9Sb4znbUKkWl+vgQATdRUEyhT2P+Gqrd0UBzYfQIDAQABo4IBUzCC
+AU8wDAYDVR0TBAUwAwEB/zAsBglghkgBhvhCAQ0EHxYdT3BlblNTTCBHZW5lcmF0
+ZWQgQ2VydGlmaWNhdGUwHQYDVR0OBBYEFNf0xkZ3zjcEI60pVPuwDqTMQygZMIHx
+BgNVHSMEgekwgeaAFP7k7FMk8JWVxxC14US1XTllWuN+oYHCpIG/MIG8MQswCQYD
+VQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTE9MDsGA1UEChM0WE1MIFNlY3Vy
+aXR5IExpYnJhcnkgKGh0dHA6Ly93d3cuYWxla3NleS5jb20veG1sc2VjKTEeMBwG
+A1UECxMVVGVzdCBSb290IENlcnRpZmljYXRlMRYwFAYDVQQDEw1BbGVrc2V5IFNh
+bmluMSEwHwYJKoZIhvcNAQkBFhJ4bWxzZWNAYWxla3NleS5jb22CCQDWjrjgkYIs
++DANBgkqhkiG9w0BAQUFAANBAEfjvmWwi2gBpYt7bwF6oHiFLoIh5kiLAPrlOFAb
+PZlLDqr5+eDcr1cf0pksgW7fVE9NzTSmwjDFuEcPqJV62Ek=</X509Certificate>
+</X509Data>
+  </KeyInfo>
+  <Object Id="object">some text</Object>
+</Signature>
diff --git a/tests/aleksey-xmldsig-01/enveloping-hmac-md5-64.tmpl b/tests/aleksey-xmldsig-01/enveloping-sha256-hmac-sha256-64.tmpl
similarity index 84%
copy from tests/aleksey-xmldsig-01/enveloping-hmac-md5-64.tmpl
copy to tests/aleksey-xmldsig-01/enveloping-sha256-hmac-sha256-64.tmpl
index 57b7603..d0940ba 100644
--- a/tests/aleksey-xmldsig-01/enveloping-hmac-md5-64.tmpl
+++ b/tests/aleksey-xmldsig-01/enveloping-sha256-hmac-sha256-64.tmpl
@@ -2,11 +2,11 @@
 <Signature xmlns="http://www.w3.org/2000/09/xmldsig#">
   <SignedInfo>
     <CanonicalizationMethod Algorithm="http://www.w3.org/TR/2001/REC-xml-c14n-20010315" />
-    <SignatureMethod Algorithm="http://www.w3.org/2001/04/xmldsig-more#hmac-md5">
+    <SignatureMethod Algorithm="http://www.w3.org/2001/04/xmldsig-more#hmac-sha256">
       <HMACOutputLength>64</HMACOutputLength>
     </SignatureMethod>
     <Reference URI="#object">
-      <DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1" />
+      <DigestMethod Algorithm="http://www.w3.org/2001/04/xmlenc#sha256"/>
       <DigestValue></DigestValue>
     </Reference>
   </SignedInfo>
diff --git a/tests/aleksey-xmldsig-01/enveloping-hmac-md5-64.xml b/tests/aleksey-xmldsig-01/enveloping-sha256-hmac-sha256-64.xml
similarity index 67%
copy from tests/aleksey-xmldsig-01/enveloping-hmac-md5-64.xml
copy to tests/aleksey-xmldsig-01/enveloping-sha256-hmac-sha256-64.xml
index fa219f5..9044be7 100644
--- a/tests/aleksey-xmldsig-01/enveloping-hmac-md5-64.xml
+++ b/tests/aleksey-xmldsig-01/enveloping-sha256-hmac-sha256-64.xml
@@ -2,14 +2,14 @@
 <Signature xmlns="http://www.w3.org/2000/09/xmldsig#">
   <SignedInfo>
     <CanonicalizationMethod Algorithm="http://www.w3.org/TR/2001/REC-xml-c14n-20010315"/>
-    <SignatureMethod Algorithm="http://www.w3.org/2001/04/xmldsig-more#hmac-md5">
+    <SignatureMethod Algorithm="http://www.w3.org/2001/04/xmldsig-more#hmac-sha256">
       <HMACOutputLength>64</HMACOutputLength>
     </SignatureMethod>
     <Reference URI="#object">
-      <DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"/>
-      <DigestValue>7/XTsHaBSOnJ/jXD5v0zL6VKYsk=</DigestValue>
+      <DigestMethod Algorithm="http://www.w3.org/2001/04/xmlenc#sha256"/>
+      <DigestValue>iDhYt78o294fA6pzQ7k44+eejrQMi+WX3l3UrUdtL1Q=</DigestValue>
     </Reference>
   </SignedInfo>
-  <SignatureValue>GlqEfgOS/dk=</SignatureValue>
+  <SignatureValue>BSM2P+9soOk=</SignatureValue>
   <Object Id="object">some text</Object>
 </Signature>
diff --git a/tests/aleksey-xmldsig-01/enveloping-hmac-md5.tmpl b/tests/aleksey-xmldsig-01/enveloping-sha256-hmac-sha256.tmpl
similarity index 82%
copy from tests/aleksey-xmldsig-01/enveloping-hmac-md5.tmpl
copy to tests/aleksey-xmldsig-01/enveloping-sha256-hmac-sha256.tmpl
index 5f4bddd..c475cc9 100644
--- a/tests/aleksey-xmldsig-01/enveloping-hmac-md5.tmpl
+++ b/tests/aleksey-xmldsig-01/enveloping-sha256-hmac-sha256.tmpl
@@ -2,9 +2,9 @@
 <Signature xmlns="http://www.w3.org/2000/09/xmldsig#">
   <SignedInfo>
     <CanonicalizationMethod Algorithm="http://www.w3.org/TR/2001/REC-xml-c14n-20010315" />
-    <SignatureMethod Algorithm="http://www.w3.org/2001/04/xmldsig-more#hmac-md5" />
+    <SignatureMethod Algorithm="http://www.w3.org/2001/04/xmldsig-more#hmac-sha256"/>
     <Reference URI="#object">
-      <DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1" />
+      <DigestMethod Algorithm="http://www.w3.org/2001/04/xmlenc#sha256"/>
       <DigestValue></DigestValue>
     </Reference>
   </SignedInfo>
diff --git a/tests/aleksey-xmldsig-01/enveloping-hmac-ripemd160.xml b/tests/aleksey-xmldsig-01/enveloping-sha256-hmac-sha256.xml
similarity index 59%
rename from tests/aleksey-xmldsig-01/enveloping-hmac-ripemd160.xml
rename to tests/aleksey-xmldsig-01/enveloping-sha256-hmac-sha256.xml
index 0268930..427a551 100644
--- a/tests/aleksey-xmldsig-01/enveloping-hmac-ripemd160.xml
+++ b/tests/aleksey-xmldsig-01/enveloping-sha256-hmac-sha256.xml
@@ -2,12 +2,12 @@
 <Signature xmlns="http://www.w3.org/2000/09/xmldsig#">
   <SignedInfo>
     <CanonicalizationMethod Algorithm="http://www.w3.org/TR/2001/REC-xml-c14n-20010315"/>
-    <SignatureMethod Algorithm="http://www.w3.org/2001/04/xmldsig-more#hmac-ripemd160"/>
+    <SignatureMethod Algorithm="http://www.w3.org/2001/04/xmldsig-more#hmac-sha256"/>
     <Reference URI="#object">
-      <DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"/>
-      <DigestValue>7/XTsHaBSOnJ/jXD5v0zL6VKYsk=</DigestValue>
+      <DigestMethod Algorithm="http://www.w3.org/2001/04/xmlenc#sha256"/>
+      <DigestValue>iDhYt78o294fA6pzQ7k44+eejrQMi+WX3l3UrUdtL1Q=</DigestValue>
     </Reference>
   </SignedInfo>
-  <SignatureValue>RLli8k0EbB85YkoKa66AhzHU0Zo=</SignatureValue>
+  <SignatureValue>6E34uTISXH5HLnt9wyOB8dxwz/Z31S+qxWF+rULRnhU=</SignatureValue>
   <Object Id="object">some text</Object>
 </Signature>
diff --git a/tests/aleksey-xmldsig-01/enveloping-hmac-md5.tmpl b/tests/aleksey-xmldsig-01/enveloping-sha256-rsa-sha256.tmpl
similarity index 76%
copy from tests/aleksey-xmldsig-01/enveloping-hmac-md5.tmpl
copy to tests/aleksey-xmldsig-01/enveloping-sha256-rsa-sha256.tmpl
index 5f4bddd..ed5daf7 100644
--- a/tests/aleksey-xmldsig-01/enveloping-hmac-md5.tmpl
+++ b/tests/aleksey-xmldsig-01/enveloping-sha256-rsa-sha256.tmpl
@@ -2,13 +2,16 @@
 <Signature xmlns="http://www.w3.org/2000/09/xmldsig#">
   <SignedInfo>
     <CanonicalizationMethod Algorithm="http://www.w3.org/TR/2001/REC-xml-c14n-20010315" />
-    <SignatureMethod Algorithm="http://www.w3.org/2001/04/xmldsig-more#hmac-md5" />
+    <SignatureMethod Algorithm="http://www.w3.org/2001/04/xmldsig-more#rsa-sha256"/>
     <Reference URI="#object">
-      <DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1" />
+      <DigestMethod Algorithm="http://www.w3.org/2001/04/xmlenc#sha256"/>
       <DigestValue></DigestValue>
     </Reference>
   </SignedInfo>
   <SignatureValue>
   </SignatureValue>
+  <KeyInfo>
+    <X509Data/>
+  </KeyInfo>
   <Object Id="object">some text</Object>
 </Signature>
diff --git a/tests/aleksey-xmldsig-01/enveloping-sha256-rsa-sha256.xml b/tests/aleksey-xmldsig-01/enveloping-sha256-rsa-sha256.xml
new file mode 100644
index 0000000..b96be4a
--- /dev/null
+++ b/tests/aleksey-xmldsig-01/enveloping-sha256-rsa-sha256.xml
@@ -0,0 +1,85 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<Signature xmlns="http://www.w3.org/2000/09/xmldsig#">
+  <SignedInfo>
+    <CanonicalizationMethod Algorithm="http://www.w3.org/TR/2001/REC-xml-c14n-20010315"/>
+    <SignatureMethod Algorithm="http://www.w3.org/2001/04/xmldsig-more#rsa-sha256"/>
+    <Reference URI="#object">
+      <DigestMethod Algorithm="http://www.w3.org/2001/04/xmlenc#sha256"/>
+      <DigestValue>iDhYt78o294fA6pzQ7k44+eejrQMi+WX3l3UrUdtL1Q=</DigestValue>
+    </Reference>
+  </SignedInfo>
+  <SignatureValue>xOSp1bweDaNd5+NzBNO+m+1oEOm1jNjBMXf12F7LsXoBDpvgC3efL2XgkoRY8LJ9
+msV4PSDkJRzzmvSTvQ6Txg==</SignatureValue>
+  <KeyInfo>
+    <X509Data>
+<X509Certificate>MIIEFTCCA36gAwIBAgIJANaOuOCRgiz4MA0GCSqGSIb3DQEBBQUAMIG8MQswCQYD
+VQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTE9MDsGA1UEChM0WE1MIFNlY3Vy
+aXR5IExpYnJhcnkgKGh0dHA6Ly93d3cuYWxla3NleS5jb20veG1sc2VjKTEeMBwG
+A1UECxMVVGVzdCBSb290IENlcnRpZmljYXRlMRYwFAYDVQQDEw1BbGVrc2V5IFNh
+bmluMSEwHwYJKoZIhvcNAQkBFhJ4bWxzZWNAYWxla3NleS5jb20wHhcNMDUwNzEw
+MDIyOTU1WhcNMTUwNzA4MDIyOTU1WjCByDELMAkGA1UEBhMCVVMxEzARBgNVBAgT
+CkNhbGlmb3JuaWExPTA7BgNVBAoTNFhNTCBTZWN1cml0eSBMaWJyYXJ5IChodHRw
+Oi8vd3d3LmFsZWtzZXkuY29tL3htbHNlYykxKjAoBgNVBAsTIVRlc3QgU2Vjb25k
+IExldmVsIFJTQSBDZXJ0aWZpY2F0ZTEWMBQGA1UEAxMNQWxla3NleSBTYW5pbjEh
+MB8GCSqGSIb3DQEJARYSeG1sc2VjQGFsZWtzZXkuY29tMFwwDQYJKoZIhvcNAQEB
+BQADSwAwSAJBALK68onYK5Q8PfeCE+3hDwyKV6wfFVtunIp+ZputhWkMZUOY4oqn
+ffuolRln3kp/CVdtHaPTPIpYma9HFTH4+xMCAwEAAaOCAVMwggFPMAwGA1UdEwQF
+MAMBAf8wLAYJYIZIAYb4QgENBB8WHU9wZW5TU0wgR2VuZXJhdGVkIENlcnRpZmlj
+YXRlMB0GA1UdDgQWBBT+5OxTJPCVlccQteFEtV05ZVrjfjCB8QYDVR0jBIHpMIHm
+gBTaRulr5q/TParlIUtS7cpmKOD+haGBwqSBvzCBvDELMAkGA1UEBhMCVVMxEzAR
+BgNVBAgTCkNhbGlmb3JuaWExPTA7BgNVBAoTNFhNTCBTZWN1cml0eSBMaWJyYXJ5
+IChodHRwOi8vd3d3LmFsZWtzZXkuY29tL3htbHNlYykxHjAcBgNVBAsTFVRlc3Qg
+Um9vdCBDZXJ0aWZpY2F0ZTEWMBQGA1UEAxMNQWxla3NleSBTYW5pbjEhMB8GCSqG
+SIb3DQEJARYSeG1sc2VjQGFsZWtzZXkuY29tggkA1o644JGCLPcwDQYJKoZIhvcN
+AQEFBQADgYEAmY0RjbSVqOU/xvyhSq8Juk6u8bDHYIUgrfhIDZUtVT1s+op4ReOO
+kC7W7ZDOl8MxhJmt4KMqc6niYoQeuXTA9QpOleBqi8R7+0cyeGebo5JOFWN7J7wl
+lupKp1iJcKtcARwA7bso/Q5OefAwDN4pucg13fOYKVktF8XLQkIUsfY=</X509Certificate>
+<X509Certificate>MIIETTCCA7agAwIBAgIJANaOuOCRgiz3MA0GCSqGSIb3DQEBBQUAMIG8MQswCQYD
+VQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTE9MDsGA1UEChM0WE1MIFNlY3Vy
+aXR5IExpYnJhcnkgKGh0dHA6Ly93d3cuYWxla3NleS5jb20veG1sc2VjKTEeMBwG
+A1UECxMVVGVzdCBSb290IENlcnRpZmljYXRlMRYwFAYDVQQDEw1BbGVrc2V5IFNh
+bmluMSEwHwYJKoZIhvcNAQkBFhJ4bWxzZWNAYWxla3NleS5jb20wHhcNMDUwNzEw
+MDIyOTAxWhcNMTUwNzA4MDIyOTAxWjCBvDELMAkGA1UEBhMCVVMxEzARBgNVBAgT
+CkNhbGlmb3JuaWExPTA7BgNVBAoTNFhNTCBTZWN1cml0eSBMaWJyYXJ5IChodHRw
+Oi8vd3d3LmFsZWtzZXkuY29tL3htbHNlYykxHjAcBgNVBAsTFVRlc3QgUm9vdCBD
+ZXJ0aWZpY2F0ZTEWMBQGA1UEAxMNQWxla3NleSBTYW5pbjEhMB8GCSqGSIb3DQEJ
+ARYSeG1sc2VjQGFsZWtzZXkuY29tMIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKB
+gQDayaFajJxOdVU+8EjwO31S2XqNmYxxbHfiUJO3w2h57OPUkKAcKe5Gvt9hJbPT
+b3C4blPScOke2RexKnXS7pAXXbxFlgUlZ0QK0K2pdl559OSmrtH3mPP9BJvvDMlx
+kcNj9/EeD+yGd8GN/yT6PTDh8G/4lszOXL+tyKIkC4Ys/wIDAQABo4IBUzCCAU8w
+DAYDVR0TBAUwAwEB/zAsBglghkgBhvhCAQ0EHxYdT3BlblNTTCBHZW5lcmF0ZWQg
+Q2VydGlmaWNhdGUwHQYDVR0OBBYEFNpG6Wvmr9M9quUhS1LtymYo4P6FMIHxBgNV
+HSMEgekwgeaAFNpG6Wvmr9M9quUhS1LtymYo4P6FoYHCpIG/MIG8MQswCQYDVQQG
+EwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTE9MDsGA1UEChM0WE1MIFNlY3VyaXR5
+IExpYnJhcnkgKGh0dHA6Ly93d3cuYWxla3NleS5jb20veG1sc2VjKTEeMBwGA1UE
+CxMVVGVzdCBSb290IENlcnRpZmljYXRlMRYwFAYDVQQDEw1BbGVrc2V5IFNhbmlu
+MSEwHwYJKoZIhvcNAQkBFhJ4bWxzZWNAYWxla3NleS5jb22CCQDWjrjgkYIs9zAN
+BgkqhkiG9w0BAQUFAAOBgQBUXbdOTQwArcNrbxavzARp2JGOnzo6WzTm+OFSXC0F
+08YwT8jWbht97e8lNNVOBU4Y/38ReZqYC9OqFofG1/O9AdQ58WL/FWg8DgP5MJPT
+T9kRU3FU01jUiX2+kbdnghZAOJm0ziRNxfNPwIIWPKYXyXEKQQzrnxyFey1hP7cg
+6A==</X509Certificate>
+<X509Certificate>MIID3zCCA4mgAwIBAgIJANaOuOCRgiz6MA0GCSqGSIb3DQEBBQUAMIHIMQswCQYD
+VQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTE9MDsGA1UEChM0WE1MIFNlY3Vy
+aXR5IExpYnJhcnkgKGh0dHA6Ly93d3cuYWxla3NleS5jb20veG1sc2VjKTEqMCgG
+A1UECxMhVGVzdCBTZWNvbmQgTGV2ZWwgUlNBIENlcnRpZmljYXRlMRYwFAYDVQQD
+Ew1BbGVrc2V5IFNhbmluMSEwHwYJKoZIhvcNAQkBFhJ4bWxzZWNAYWxla3NleS5j
+b20wHhcNMDUwNzEwMDIzMzAyWhcNMTUwNzA4MDIzMzAyWjCBxzELMAkGA1UEBhMC
+VVMxEzARBgNVBAgTCkNhbGlmb3JuaWExPTA7BgNVBAoTNFhNTCBTZWN1cml0eSBM
+aWJyYXJ5IChodHRwOi8vd3d3LmFsZWtzZXkuY29tL3htbHNlYykxKTAnBgNVBAsT
+IFRlc3QgVGhpcmQgTGV2ZWwgUlNBIENlcnRpZmljYXRlMRYwFAYDVQQDEw1BbGVr
+c2V5IFNhbmluMSEwHwYJKoZIhvcNAQkBFhJ4bWxzZWNAYWxla3NleS5jb20wXDAN
+BgkqhkiG9w0BAQEFAANLADBIAkEA09BtD3aeVt6DVDkk0dI7Vh7LjqdnsYmW0tbD
+VxxK+nume+Z9Sb4znbUKkWl+vgQATdRUEyhT2P+Gqrd0UBzYfQIDAQABo4IBUzCC
+AU8wDAYDVR0TBAUwAwEB/zAsBglghkgBhvhCAQ0EHxYdT3BlblNTTCBHZW5lcmF0
+ZWQgQ2VydGlmaWNhdGUwHQYDVR0OBBYEFNf0xkZ3zjcEI60pVPuwDqTMQygZMIHx
+BgNVHSMEgekwgeaAFP7k7FMk8JWVxxC14US1XTllWuN+oYHCpIG/MIG8MQswCQYD
+VQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTE9MDsGA1UEChM0WE1MIFNlY3Vy
+aXR5IExpYnJhcnkgKGh0dHA6Ly93d3cuYWxla3NleS5jb20veG1sc2VjKTEeMBwG
+A1UECxMVVGVzdCBSb290IENlcnRpZmljYXRlMRYwFAYDVQQDEw1BbGVrc2V5IFNh
+bmluMSEwHwYJKoZIhvcNAQkBFhJ4bWxzZWNAYWxla3NleS5jb22CCQDWjrjgkYIs
++DANBgkqhkiG9w0BAQUFAANBAEfjvmWwi2gBpYt7bwF6oHiFLoIh5kiLAPrlOFAb
+PZlLDqr5+eDcr1cf0pksgW7fVE9NzTSmwjDFuEcPqJV62Ek=</X509Certificate>
+</X509Data>
+  </KeyInfo>
+  <Object Id="object">some text</Object>
+</Signature>
diff --git a/tests/aleksey-xmldsig-01/enveloping-hmac-md5-64.tmpl b/tests/aleksey-xmldsig-01/enveloping-sha384-hmac-sha384-64.tmpl
similarity index 83%
copy from tests/aleksey-xmldsig-01/enveloping-hmac-md5-64.tmpl
copy to tests/aleksey-xmldsig-01/enveloping-sha384-hmac-sha384-64.tmpl
index 57b7603..10b6a5f 100644
--- a/tests/aleksey-xmldsig-01/enveloping-hmac-md5-64.tmpl
+++ b/tests/aleksey-xmldsig-01/enveloping-sha384-hmac-sha384-64.tmpl
@@ -2,11 +2,11 @@
 <Signature xmlns="http://www.w3.org/2000/09/xmldsig#">
   <SignedInfo>
     <CanonicalizationMethod Algorithm="http://www.w3.org/TR/2001/REC-xml-c14n-20010315" />
-    <SignatureMethod Algorithm="http://www.w3.org/2001/04/xmldsig-more#hmac-md5">
+    <SignatureMethod Algorithm="http://www.w3.org/2001/04/xmldsig-more#hmac-sha384">
       <HMACOutputLength>64</HMACOutputLength>
     </SignatureMethod>
     <Reference URI="#object">
-      <DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1" />
+      <DigestMethod Algorithm="http://www.w3.org/2001/04/xmldsig-more#sha384"/>
       <DigestValue></DigestValue>
     </Reference>
   </SignedInfo>
diff --git a/tests/aleksey-xmldsig-01/enveloping-hmac-md5-64.xml b/tests/aleksey-xmldsig-01/enveloping-sha384-hmac-sha384-64.xml
similarity index 64%
copy from tests/aleksey-xmldsig-01/enveloping-hmac-md5-64.xml
copy to tests/aleksey-xmldsig-01/enveloping-sha384-hmac-sha384-64.xml
index fa219f5..b487c2b 100644
--- a/tests/aleksey-xmldsig-01/enveloping-hmac-md5-64.xml
+++ b/tests/aleksey-xmldsig-01/enveloping-sha384-hmac-sha384-64.xml
@@ -2,14 +2,14 @@
 <Signature xmlns="http://www.w3.org/2000/09/xmldsig#">
   <SignedInfo>
     <CanonicalizationMethod Algorithm="http://www.w3.org/TR/2001/REC-xml-c14n-20010315"/>
-    <SignatureMethod Algorithm="http://www.w3.org/2001/04/xmldsig-more#hmac-md5">
+    <SignatureMethod Algorithm="http://www.w3.org/2001/04/xmldsig-more#hmac-sha384">
       <HMACOutputLength>64</HMACOutputLength>
     </SignatureMethod>
     <Reference URI="#object">
-      <DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"/>
-      <DigestValue>7/XTsHaBSOnJ/jXD5v0zL6VKYsk=</DigestValue>
+      <DigestMethod Algorithm="http://www.w3.org/2001/04/xmldsig-more#sha384"/>
+      <DigestValue>uTx8AeqrTmv+nijRsWW7TOs1pCIuCudsFRVloP6hPin8Q4x9fFX2j/zj53XB37OG</DigestValue>
     </Reference>
   </SignedInfo>
-  <SignatureValue>GlqEfgOS/dk=</SignatureValue>
+  <SignatureValue>azErzRgKjtM=</SignatureValue>
   <Object Id="object">some text</Object>
 </Signature>
diff --git a/tests/aleksey-xmldsig-01/enveloping-hmac-md5.tmpl b/tests/aleksey-xmldsig-01/enveloping-sha384-hmac-sha384.tmpl
similarity index 81%
copy from tests/aleksey-xmldsig-01/enveloping-hmac-md5.tmpl
copy to tests/aleksey-xmldsig-01/enveloping-sha384-hmac-sha384.tmpl
index 5f4bddd..13d87fe 100644
--- a/tests/aleksey-xmldsig-01/enveloping-hmac-md5.tmpl
+++ b/tests/aleksey-xmldsig-01/enveloping-sha384-hmac-sha384.tmpl
@@ -2,9 +2,9 @@
 <Signature xmlns="http://www.w3.org/2000/09/xmldsig#">
   <SignedInfo>
     <CanonicalizationMethod Algorithm="http://www.w3.org/TR/2001/REC-xml-c14n-20010315" />
-    <SignatureMethod Algorithm="http://www.w3.org/2001/04/xmldsig-more#hmac-md5" />
+    <SignatureMethod Algorithm="http://www.w3.org/2001/04/xmldsig-more#hmac-sha384"/>
     <Reference URI="#object">
-      <DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1" />
+      <DigestMethod Algorithm="http://www.w3.org/2001/04/xmldsig-more#sha384"/>
       <DigestValue></DigestValue>
     </Reference>
   </SignedInfo>
diff --git a/tests/aleksey-xmldsig-01/enveloping-hmac-ripemd160-64.xml b/tests/aleksey-xmldsig-01/enveloping-sha384-hmac-sha384.xml
similarity index 55%
copy from tests/aleksey-xmldsig-01/enveloping-hmac-ripemd160-64.xml
copy to tests/aleksey-xmldsig-01/enveloping-sha384-hmac-sha384.xml
index 5932a71..3072a94 100644
--- a/tests/aleksey-xmldsig-01/enveloping-hmac-ripemd160-64.xml
+++ b/tests/aleksey-xmldsig-01/enveloping-sha384-hmac-sha384.xml
@@ -2,14 +2,12 @@
 <Signature xmlns="http://www.w3.org/2000/09/xmldsig#">
   <SignedInfo>
     <CanonicalizationMethod Algorithm="http://www.w3.org/TR/2001/REC-xml-c14n-20010315"/>
-    <SignatureMethod Algorithm="http://www.w3.org/2001/04/xmldsig-more#hmac-ripemd160">
-      <HMACOutputLength>64</HMACOutputLength>
-    </SignatureMethod>
+    <SignatureMethod Algorithm="http://www.w3.org/2001/04/xmldsig-more#hmac-sha384"/>
     <Reference URI="#object">
-      <DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"/>
-      <DigestValue>7/XTsHaBSOnJ/jXD5v0zL6VKYsk=</DigestValue>
+      <DigestMethod Algorithm="http://www.w3.org/2001/04/xmldsig-more#sha384"/>
+      <DigestValue>uTx8AeqrTmv+nijRsWW7TOs1pCIuCudsFRVloP6hPin8Q4x9fFX2j/zj53XB37OG</DigestValue>
     </Reference>
   </SignedInfo>
-  <SignatureValue>hWfbs+v35BI=</SignatureValue>
+  <SignatureValue>kUBgPpyFGkOClebckbYHoEY3fMoJtQHPHXC0NLn7/pOUvMuIAH2djvCGnB2+HHhd</SignatureValue>
   <Object Id="object">some text</Object>
 </Signature>
diff --git a/tests/aleksey-xmldsig-01/enveloping-hmac-md5.tmpl b/tests/aleksey-xmldsig-01/enveloping-sha384-rsa-sha384.tmpl
similarity index 76%
copy from tests/aleksey-xmldsig-01/enveloping-hmac-md5.tmpl
copy to tests/aleksey-xmldsig-01/enveloping-sha384-rsa-sha384.tmpl
index 5f4bddd..7b05109 100644
--- a/tests/aleksey-xmldsig-01/enveloping-hmac-md5.tmpl
+++ b/tests/aleksey-xmldsig-01/enveloping-sha384-rsa-sha384.tmpl
@@ -2,13 +2,16 @@
 <Signature xmlns="http://www.w3.org/2000/09/xmldsig#">
   <SignedInfo>
     <CanonicalizationMethod Algorithm="http://www.w3.org/TR/2001/REC-xml-c14n-20010315" />
-    <SignatureMethod Algorithm="http://www.w3.org/2001/04/xmldsig-more#hmac-md5" />
+    <SignatureMethod Algorithm="http://www.w3.org/2001/04/xmldsig-more#rsa-sha384"/>
     <Reference URI="#object">
-      <DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1" />
+      <DigestMethod Algorithm="http://www.w3.org/2001/04/xmldsig-more#sha384"/>
       <DigestValue></DigestValue>
     </Reference>
   </SignedInfo>
   <SignatureValue>
   </SignatureValue>
+  <KeyInfo>
+    <X509Data/>
+  </KeyInfo>
   <Object Id="object">some text</Object>
 </Signature>
diff --git a/tests/aleksey-xmldsig-01/enveloping-sha384-rsa-sha384.xml b/tests/aleksey-xmldsig-01/enveloping-sha384-rsa-sha384.xml
new file mode 100644
index 0000000..4aeaac1
--- /dev/null
+++ b/tests/aleksey-xmldsig-01/enveloping-sha384-rsa-sha384.xml
@@ -0,0 +1,103 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<Signature xmlns="http://www.w3.org/2000/09/xmldsig#">
+  <SignedInfo>
+    <CanonicalizationMethod Algorithm="http://www.w3.org/TR/2001/REC-xml-c14n-20010315"/>
+    <SignatureMethod Algorithm="http://www.w3.org/2001/04/xmldsig-more#rsa-sha384"/>
+    <Reference URI="#object">
+      <DigestMethod Algorithm="http://www.w3.org/2001/04/xmldsig-more#sha384"/>
+      <DigestValue>uTx8AeqrTmv+nijRsWW7TOs1pCIuCudsFRVloP6hPin8Q4x9fFX2j/zj53XB37OG</DigestValue>
+    </Reference>
+  </SignedInfo>
+  <SignatureValue>uFn4ZDXvFwAuXt5pROQidUaCGAG1ptEeia2AIzQzRQpWnE9CQ/v+qXYC0PZITr7/
+UeYAr5vGnjXT4euuq/Na5HlTkUSIPfNP0XobrkbFoQHDsceKnw47OhinXICRxeAS
+HPNGrQ9lal9TatY/EG33dhpSOyHjngT+g4FxHDAchqNaUSTJHt5t8i+q0INA8Crx
+98AfhcbkfkcJZ3sZ4aGyvFJEq203KXEhCyQExZ/t1jjXhlEc+KX+2+qmiQnS6Ndy
+Ql4RbQt6us/wjXrunNEjYR75+k6U2U1cqZmPoHJtxEP9E1DfVHd5nkWs/nYS3u78
+Udz5Ot2Ms/7URAywG6sA6jPl2WZUe/kdvXfhYT4mR8cK9f/hPCXn4C0/cMTZEJRa
+lO1KajV590QmHv188Ec3nyaeorYnF/1oNdSXERlsEp4ZttfyQTIKqVQXMwZWjnid
+He09m3vBPZFUfy3oK7Y9fdaV4lNrhG7UVd9jhJwyE089sfqGvk5M02K2cBuES54d
+lU0IksBwqKwomfrjU0eMMqF59R5sKu1/25XmnJwj6SBEpeqxlWzz7NSLMIEJEdwq
+2ZkTvQEYbZjo/p0U1e8qr4w/zRamSQUhAaHPsuYrG4x5QnjMd6s8uxkOchnAEyYO
+ZtF20MPtrH6k1D7JwxPb87C8ET75iKR4lm4lYJiFrn8=</SignatureValue>
+  <KeyInfo>
+    <X509Data>
+<X509Certificate>MIIEFTCCA36gAwIBAgIJANaOuOCRgiz4MA0GCSqGSIb3DQEBBQUAMIG8MQswCQYD
+VQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTE9MDsGA1UEChM0WE1MIFNlY3Vy
+aXR5IExpYnJhcnkgKGh0dHA6Ly93d3cuYWxla3NleS5jb20veG1sc2VjKTEeMBwG
+A1UECxMVVGVzdCBSb290IENlcnRpZmljYXRlMRYwFAYDVQQDEw1BbGVrc2V5IFNh
+bmluMSEwHwYJKoZIhvcNAQkBFhJ4bWxzZWNAYWxla3NleS5jb20wHhcNMDUwNzEw
+MDIyOTU1WhcNMTUwNzA4MDIyOTU1WjCByDELMAkGA1UEBhMCVVMxEzARBgNVBAgT
+CkNhbGlmb3JuaWExPTA7BgNVBAoTNFhNTCBTZWN1cml0eSBMaWJyYXJ5IChodHRw
+Oi8vd3d3LmFsZWtzZXkuY29tL3htbHNlYykxKjAoBgNVBAsTIVRlc3QgU2Vjb25k
+IExldmVsIFJTQSBDZXJ0aWZpY2F0ZTEWMBQGA1UEAxMNQWxla3NleSBTYW5pbjEh
+MB8GCSqGSIb3DQEJARYSeG1sc2VjQGFsZWtzZXkuY29tMFwwDQYJKoZIhvcNAQEB
+BQADSwAwSAJBALK68onYK5Q8PfeCE+3hDwyKV6wfFVtunIp+ZputhWkMZUOY4oqn
+ffuolRln3kp/CVdtHaPTPIpYma9HFTH4+xMCAwEAAaOCAVMwggFPMAwGA1UdEwQF
+MAMBAf8wLAYJYIZIAYb4QgENBB8WHU9wZW5TU0wgR2VuZXJhdGVkIENlcnRpZmlj
+YXRlMB0GA1UdDgQWBBT+5OxTJPCVlccQteFEtV05ZVrjfjCB8QYDVR0jBIHpMIHm
+gBTaRulr5q/TParlIUtS7cpmKOD+haGBwqSBvzCBvDELMAkGA1UEBhMCVVMxEzAR
+BgNVBAgTCkNhbGlmb3JuaWExPTA7BgNVBAoTNFhNTCBTZWN1cml0eSBMaWJyYXJ5
+IChodHRwOi8vd3d3LmFsZWtzZXkuY29tL3htbHNlYykxHjAcBgNVBAsTFVRlc3Qg
+Um9vdCBDZXJ0aWZpY2F0ZTEWMBQGA1UEAxMNQWxla3NleSBTYW5pbjEhMB8GCSqG
+SIb3DQEJARYSeG1sc2VjQGFsZWtzZXkuY29tggkA1o644JGCLPcwDQYJKoZIhvcN
+AQEFBQADgYEAmY0RjbSVqOU/xvyhSq8Juk6u8bDHYIUgrfhIDZUtVT1s+op4ReOO
+kC7W7ZDOl8MxhJmt4KMqc6niYoQeuXTA9QpOleBqi8R7+0cyeGebo5JOFWN7J7wl
+lupKp1iJcKtcARwA7bso/Q5OefAwDN4pucg13fOYKVktF8XLQkIUsfY=</X509Certificate>
+<X509Certificate>MIIETTCCA7agAwIBAgIJANaOuOCRgiz3MA0GCSqGSIb3DQEBBQUAMIG8MQswCQYD
+VQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTE9MDsGA1UEChM0WE1MIFNlY3Vy
+aXR5IExpYnJhcnkgKGh0dHA6Ly93d3cuYWxla3NleS5jb20veG1sc2VjKTEeMBwG
+A1UECxMVVGVzdCBSb290IENlcnRpZmljYXRlMRYwFAYDVQQDEw1BbGVrc2V5IFNh
+bmluMSEwHwYJKoZIhvcNAQkBFhJ4bWxzZWNAYWxla3NleS5jb20wHhcNMDUwNzEw
+MDIyOTAxWhcNMTUwNzA4MDIyOTAxWjCBvDELMAkGA1UEBhMCVVMxEzARBgNVBAgT
+CkNhbGlmb3JuaWExPTA7BgNVBAoTNFhNTCBTZWN1cml0eSBMaWJyYXJ5IChodHRw
+Oi8vd3d3LmFsZWtzZXkuY29tL3htbHNlYykxHjAcBgNVBAsTFVRlc3QgUm9vdCBD
+ZXJ0aWZpY2F0ZTEWMBQGA1UEAxMNQWxla3NleSBTYW5pbjEhMB8GCSqGSIb3DQEJ
+ARYSeG1sc2VjQGFsZWtzZXkuY29tMIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKB
+gQDayaFajJxOdVU+8EjwO31S2XqNmYxxbHfiUJO3w2h57OPUkKAcKe5Gvt9hJbPT
+b3C4blPScOke2RexKnXS7pAXXbxFlgUlZ0QK0K2pdl559OSmrtH3mPP9BJvvDMlx
+kcNj9/EeD+yGd8GN/yT6PTDh8G/4lszOXL+tyKIkC4Ys/wIDAQABo4IBUzCCAU8w
+DAYDVR0TBAUwAwEB/zAsBglghkgBhvhCAQ0EHxYdT3BlblNTTCBHZW5lcmF0ZWQg
+Q2VydGlmaWNhdGUwHQYDVR0OBBYEFNpG6Wvmr9M9quUhS1LtymYo4P6FMIHxBgNV
+HSMEgekwgeaAFNpG6Wvmr9M9quUhS1LtymYo4P6FoYHCpIG/MIG8MQswCQYDVQQG
+EwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTE9MDsGA1UEChM0WE1MIFNlY3VyaXR5
+IExpYnJhcnkgKGh0dHA6Ly93d3cuYWxla3NleS5jb20veG1sc2VjKTEeMBwGA1UE
+CxMVVGVzdCBSb290IENlcnRpZmljYXRlMRYwFAYDVQQDEw1BbGVrc2V5IFNhbmlu
+MSEwHwYJKoZIhvcNAQkBFhJ4bWxzZWNAYWxla3NleS5jb22CCQDWjrjgkYIs9zAN
+BgkqhkiG9w0BAQUFAAOBgQBUXbdOTQwArcNrbxavzARp2JGOnzo6WzTm+OFSXC0F
+08YwT8jWbht97e8lNNVOBU4Y/38ReZqYC9OqFofG1/O9AdQ58WL/FWg8DgP5MJPT
+T9kRU3FU01jUiX2+kbdnghZAOJm0ziRNxfNPwIIWPKYXyXEKQQzrnxyFey1hP7cg
+6A==</X509Certificate>
+<X509Certificate>MIIFmTCCBUOgAwIBAgIJANaOuOCRgiz8MA0GCSqGSIb3DQEBBQUAMIHIMQswCQYD
+VQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTE9MDsGA1UEChM0WE1MIFNlY3Vy
+aXR5IExpYnJhcnkgKGh0dHA6Ly93d3cuYWxla3NleS5jb20veG1sc2VjKTEqMCgG
+A1UECxMhVGVzdCBTZWNvbmQgTGV2ZWwgUlNBIENlcnRpZmljYXRlMRYwFAYDVQQD
+Ew1BbGVrc2V5IFNhbmluMSEwHwYJKoZIhvcNAQkBFhJ4bWxzZWNAYWxla3NleS5j
+b20wHhcNMDUwNzExMDI1MDExWhcNMTUwNzA5MDI1MDExWjCBuTELMAkGA1UEBhMC
+VVMxEzARBgNVBAgTCkNhbGlmb3JuaWExPTA7BgNVBAoTNFhNTCBTZWN1cml0eSBM
+aWJyYXJ5IChodHRwOi8vd3d3LmFsZWtzZXkuY29tL3htbHNlYykxGzAZBgNVBAsT
+ElRlc3QgTGFyZ2UgUlNBIEtleTEWMBQGA1UEAxMNQWxla3NleSBTYW5pbjEhMB8G
+CSqGSIb3DQEJARYSeG1sc2VjQGFsZWtzZXkuY29tMIICIjANBgkqhkiG9w0BAQEF
+AAOCAg8AMIICCgKCAgEA82H5NlSuXRdoGxgoJHJOOV2/IBfIfCBZ+6NC5Cy3DW2X
+fuGbulnD5+hk/3Y1WOCQ+isTkl+6t39UJW7OzRujeJI0MX+d3IBhPHJpbbg1qPgf
+A2zl10FTJISKcnA84jmL7HCd088uCPYFgK82j+2O799QM5RYFY+HxLRlPaHRIwBq
+ZzVgBli9Q4qGUin0oeFff1luykp4Fp3aBNlh1KPqaXJ/G6r/yAdRE1DBPn2b93Dc
+ul2UqSus6lbgPH9dke+9giXyN+ss2a233T68hnqviY/5Ml6c0EEMjLeEXinpT/y1
+XPT5gjK5Ne2ECjIjMrWkscjFoBa1d40hj1OAxKGkZe6vCoQdNDDjBzXOFo5pe7ch
+kVYmwtc/eQ7gsnelymCIFTCPZaqPnZ/QUD0qm09hykMZuWlYG5h3Q0IeCHwwWFLU
+s+vRop4o3RuW/fko/XbY7JEh0Y1CTPUFcC7Su5rFyOF3XU5fwqufwHVREW7qaw7U
+vJPepJXj0lJXrHTFpuWilD/YQw5CjHWtDGnRqI7nSXcrOK/JrEN3J5CCHWLmMaAb
+F75+Yywp7Bs9S1I57Hoq/Egvvc7ZHyEC+yxu2UAUxWrOILwM5K6HNdLaX9uVUPPj
+7SyTrUJbr2X++EsK3GB/3Ug4iND8pKr8XweXz663Qz2H675R4/GMH2NDKSSMlCMC
+AwEAAaOCAVMwggFPMAwGA1UdEwQFMAMBAf8wLAYJYIZIAYb4QgENBB8WHU9wZW5T
+U0wgR2VuZXJhdGVkIENlcnRpZmljYXRlMB0GA1UdDgQWBBSQNTYRUvkAZfxx53Ow
+ke0LGYTGKDCB8QYDVR0jBIHpMIHmgBT+5OxTJPCVlccQteFEtV05ZVrjfqGBwqSB
+vzCBvDELMAkGA1UEBhMCVVMxEzARBgNVBAgTCkNhbGlmb3JuaWExPTA7BgNVBAoT
+NFhNTCBTZWN1cml0eSBMaWJyYXJ5IChodHRwOi8vd3d3LmFsZWtzZXkuY29tL3ht
+bHNlYykxHjAcBgNVBAsTFVRlc3QgUm9vdCBDZXJ0aWZpY2F0ZTEWMBQGA1UEAxMN
+QWxla3NleSBTYW5pbjEhMB8GCSqGSIb3DQEJARYSeG1sc2VjQGFsZWtzZXkuY29t
+ggkA1o644JGCLPgwDQYJKoZIhvcNAQEFBQADQQB5zUH88GYT8Xa9IlHdkS96Rv2w
+6kTmc12sAC1uDJCl4TvyTHV5Egjrf/qCfeD3dttjbAfpZQqYiE6xD9JXPd9P</X509Certificate>
+</X509Data>
+  </KeyInfo>
+  <Object Id="object">some text</Object>
+</Signature>
diff --git a/tests/aleksey-xmldsig-01/enveloping-hmac-md5-64.tmpl b/tests/aleksey-xmldsig-01/enveloping-sha512-hmac-sha512-64.tmpl
similarity index 84%
rename from tests/aleksey-xmldsig-01/enveloping-hmac-md5-64.tmpl
rename to tests/aleksey-xmldsig-01/enveloping-sha512-hmac-sha512-64.tmpl
index 57b7603..26bf823 100644
--- a/tests/aleksey-xmldsig-01/enveloping-hmac-md5-64.tmpl
+++ b/tests/aleksey-xmldsig-01/enveloping-sha512-hmac-sha512-64.tmpl
@@ -2,11 +2,11 @@
 <Signature xmlns="http://www.w3.org/2000/09/xmldsig#">
   <SignedInfo>
     <CanonicalizationMethod Algorithm="http://www.w3.org/TR/2001/REC-xml-c14n-20010315" />
-    <SignatureMethod Algorithm="http://www.w3.org/2001/04/xmldsig-more#hmac-md5">
+    <SignatureMethod Algorithm="http://www.w3.org/2001/04/xmldsig-more#hmac-sha512">
       <HMACOutputLength>64</HMACOutputLength>
     </SignatureMethod>
     <Reference URI="#object">
-      <DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1" />
+      <DigestMethod Algorithm="http://www.w3.org/2001/04/xmlenc#sha512"/>
       <DigestValue></DigestValue>
     </Reference>
   </SignedInfo>
diff --git a/tests/aleksey-xmldsig-01/enveloping-hmac-md5-64.xml b/tests/aleksey-xmldsig-01/enveloping-sha512-hmac-sha512-64.xml
similarity index 62%
rename from tests/aleksey-xmldsig-01/enveloping-hmac-md5-64.xml
rename to tests/aleksey-xmldsig-01/enveloping-sha512-hmac-sha512-64.xml
index fa219f5..3ec6672 100644
--- a/tests/aleksey-xmldsig-01/enveloping-hmac-md5-64.xml
+++ b/tests/aleksey-xmldsig-01/enveloping-sha512-hmac-sha512-64.xml
@@ -2,14 +2,15 @@
 <Signature xmlns="http://www.w3.org/2000/09/xmldsig#">
   <SignedInfo>
     <CanonicalizationMethod Algorithm="http://www.w3.org/TR/2001/REC-xml-c14n-20010315"/>
-    <SignatureMethod Algorithm="http://www.w3.org/2001/04/xmldsig-more#hmac-md5">
+    <SignatureMethod Algorithm="http://www.w3.org/2001/04/xmldsig-more#hmac-sha512">
       <HMACOutputLength>64</HMACOutputLength>
     </SignatureMethod>
     <Reference URI="#object">
-      <DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"/>
-      <DigestValue>7/XTsHaBSOnJ/jXD5v0zL6VKYsk=</DigestValue>
+      <DigestMethod Algorithm="http://www.w3.org/2001/04/xmlenc#sha512"/>
+      <DigestValue>E2Jo801uUCgAIa65niLU7jPSWPWUbsgT+okPgBcw/h72V7bmI0J2faJ+8EbwVwah
+XDnbRaf22WqerzX1vL0QzA==</DigestValue>
     </Reference>
   </SignedInfo>
-  <SignatureValue>GlqEfgOS/dk=</SignatureValue>
+  <SignatureValue>rQcObPRcpOc=</SignatureValue>
   <Object Id="object">some text</Object>
 </Signature>
diff --git a/tests/aleksey-xmldsig-01/enveloping-hmac-md5.tmpl b/tests/aleksey-xmldsig-01/enveloping-sha512-hmac-sha512.tmpl
similarity index 82%
copy from tests/aleksey-xmldsig-01/enveloping-hmac-md5.tmpl
copy to tests/aleksey-xmldsig-01/enveloping-sha512-hmac-sha512.tmpl
index 5f4bddd..0c0a5ec 100644
--- a/tests/aleksey-xmldsig-01/enveloping-hmac-md5.tmpl
+++ b/tests/aleksey-xmldsig-01/enveloping-sha512-hmac-sha512.tmpl
@@ -2,9 +2,9 @@
 <Signature xmlns="http://www.w3.org/2000/09/xmldsig#">
   <SignedInfo>
     <CanonicalizationMethod Algorithm="http://www.w3.org/TR/2001/REC-xml-c14n-20010315" />
-    <SignatureMethod Algorithm="http://www.w3.org/2001/04/xmldsig-more#hmac-md5" />
+    <SignatureMethod Algorithm="http://www.w3.org/2001/04/xmldsig-more#hmac-sha512"/>
     <Reference URI="#object">
-      <DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1" />
+      <DigestMethod Algorithm="http://www.w3.org/2001/04/xmlenc#sha512"/>
       <DigestValue></DigestValue>
     </Reference>
   </SignedInfo>
diff --git a/tests/aleksey-xmldsig-01/enveloping-hmac-ripemd160-64.xml b/tests/aleksey-xmldsig-01/enveloping-sha512-hmac-sha512.xml
similarity index 52%
rename from tests/aleksey-xmldsig-01/enveloping-hmac-ripemd160-64.xml
rename to tests/aleksey-xmldsig-01/enveloping-sha512-hmac-sha512.xml
index 5932a71..e672b8b 100644
--- a/tests/aleksey-xmldsig-01/enveloping-hmac-ripemd160-64.xml
+++ b/tests/aleksey-xmldsig-01/enveloping-sha512-hmac-sha512.xml
@@ -2,14 +2,14 @@
 <Signature xmlns="http://www.w3.org/2000/09/xmldsig#">
   <SignedInfo>
     <CanonicalizationMethod Algorithm="http://www.w3.org/TR/2001/REC-xml-c14n-20010315"/>
-    <SignatureMethod Algorithm="http://www.w3.org/2001/04/xmldsig-more#hmac-ripemd160">
-      <HMACOutputLength>64</HMACOutputLength>
-    </SignatureMethod>
+    <SignatureMethod Algorithm="http://www.w3.org/2001/04/xmldsig-more#hmac-sha512"/>
     <Reference URI="#object">
-      <DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"/>
-      <DigestValue>7/XTsHaBSOnJ/jXD5v0zL6VKYsk=</DigestValue>
+      <DigestMethod Algorithm="http://www.w3.org/2001/04/xmlenc#sha512"/>
+      <DigestValue>E2Jo801uUCgAIa65niLU7jPSWPWUbsgT+okPgBcw/h72V7bmI0J2faJ+8EbwVwah
+XDnbRaf22WqerzX1vL0QzA==</DigestValue>
     </Reference>
   </SignedInfo>
-  <SignatureValue>hWfbs+v35BI=</SignatureValue>
+  <SignatureValue>Zrlh7+epRyXMyvjgAzF9jRFFTWPEOTeOGh5HxrEn0xkKMvQtdAK36Xm1y92HmPlL
+SHYkQIF4KJJ5iIWQ0k/Lnw==</SignatureValue>
   <Object Id="object">some text</Object>
 </Signature>
diff --git a/tests/aleksey-xmldsig-01/enveloping-hmac-md5.tmpl b/tests/aleksey-xmldsig-01/enveloping-sha512-rsa-sha512.tmpl
similarity index 76%
rename from tests/aleksey-xmldsig-01/enveloping-hmac-md5.tmpl
rename to tests/aleksey-xmldsig-01/enveloping-sha512-rsa-sha512.tmpl
index 5f4bddd..4286ced 100644
--- a/tests/aleksey-xmldsig-01/enveloping-hmac-md5.tmpl
+++ b/tests/aleksey-xmldsig-01/enveloping-sha512-rsa-sha512.tmpl
@@ -2,13 +2,16 @@
 <Signature xmlns="http://www.w3.org/2000/09/xmldsig#">
   <SignedInfo>
     <CanonicalizationMethod Algorithm="http://www.w3.org/TR/2001/REC-xml-c14n-20010315" />
-    <SignatureMethod Algorithm="http://www.w3.org/2001/04/xmldsig-more#hmac-md5" />
+    <SignatureMethod Algorithm="http://www.w3.org/2001/04/xmldsig-more#rsa-sha512"/>
     <Reference URI="#object">
-      <DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1" />
+      <DigestMethod Algorithm="http://www.w3.org/2001/04/xmlenc#sha512"/>
       <DigestValue></DigestValue>
     </Reference>
   </SignedInfo>
   <SignatureValue>
   </SignatureValue>
+  <KeyInfo>
+    <X509Data/>
+  </KeyInfo>
   <Object Id="object">some text</Object>
 </Signature>
diff --git a/tests/aleksey-xmldsig-01/enveloping-sha512-rsa-sha512.xml b/tests/aleksey-xmldsig-01/enveloping-sha512-rsa-sha512.xml
new file mode 100644
index 0000000..5f37cf4
--- /dev/null
+++ b/tests/aleksey-xmldsig-01/enveloping-sha512-rsa-sha512.xml
@@ -0,0 +1,104 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<Signature xmlns="http://www.w3.org/2000/09/xmldsig#">
+  <SignedInfo>
+    <CanonicalizationMethod Algorithm="http://www.w3.org/TR/2001/REC-xml-c14n-20010315"/>
+    <SignatureMethod Algorithm="http://www.w3.org/2001/04/xmldsig-more#rsa-sha512"/>
+    <Reference URI="#object">
+      <DigestMethod Algorithm="http://www.w3.org/2001/04/xmlenc#sha512"/>
+      <DigestValue>E2Jo801uUCgAIa65niLU7jPSWPWUbsgT+okPgBcw/h72V7bmI0J2faJ+8EbwVwah
+XDnbRaf22WqerzX1vL0QzA==</DigestValue>
+    </Reference>
+  </SignedInfo>
+  <SignatureValue>X2d4uz1EmG0woubIv7rk7qznSNus9TtcDMvITXReQoeDLgsgdwtTlfkBIbOsR1Dr
+UNByKIpO/8FjRrqkdv6Ti+tR3tpSZHxeRKOyDvIjz5pUUcytikvT7MK7hPwq3TSe
+u0AW9ybbY6TKENJWI2IOKxj134QFJZCVfsGUnXxp2JY//OhuLMHU47WBIEOnG4pd
+heS/RkatH9s7ZbSkwWuN3HPUh3pssL5KPnwHnFdOIAaf7DcEjnegmmIv/5hedcto
+OvzAVrGoeht/UDYqOO7P4C6qwSr9UoUHaVFa/mCjWdk+Ld+P5SVywBYw3rlPVK6Y
+Os6YGMi8OC+HYjhSLn87xjZhX1LUmZjGrxIPtpkuY3i3YvQRo0im/o0u01CIKoXF
+ruAm3UzJs4dvwIuSgy6Jwso/y6KWuWM/fbjtoz7kKaalhmh51YW+0LNwwy5DutLv
+Ty9GOjTei/XZmSqkYTNtsn6FCcQs32q+l+t7q46t4RU7IBq50VJIJ8M+CRFFK1zt
+TdAd/ifZloxU7Dibg7qtUKwLf2YJDHMxyi4dYFiL1EbadJBnmsgcmbamhhvYidUt
+5M0PGCJxg9zURw7t81OT3c9mmgMkxVcAmjGqiZTlkNgsa+q7uiBfyCp8GbkejNBv
+tV0wvmrUFb5/Ds4qTwSbcNi4IN3YB0X6fy7YhhMW5gQ=</SignatureValue>
+  <KeyInfo>
+    <X509Data>
+<X509Certificate>MIIEFTCCA36gAwIBAgIJANaOuOCRgiz4MA0GCSqGSIb3DQEBBQUAMIG8MQswCQYD
+VQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTE9MDsGA1UEChM0WE1MIFNlY3Vy
+aXR5IExpYnJhcnkgKGh0dHA6Ly93d3cuYWxla3NleS5jb20veG1sc2VjKTEeMBwG
+A1UECxMVVGVzdCBSb290IENlcnRpZmljYXRlMRYwFAYDVQQDEw1BbGVrc2V5IFNh
+bmluMSEwHwYJKoZIhvcNAQkBFhJ4bWxzZWNAYWxla3NleS5jb20wHhcNMDUwNzEw
+MDIyOTU1WhcNMTUwNzA4MDIyOTU1WjCByDELMAkGA1UEBhMCVVMxEzARBgNVBAgT
+CkNhbGlmb3JuaWExPTA7BgNVBAoTNFhNTCBTZWN1cml0eSBMaWJyYXJ5IChodHRw
+Oi8vd3d3LmFsZWtzZXkuY29tL3htbHNlYykxKjAoBgNVBAsTIVRlc3QgU2Vjb25k
+IExldmVsIFJTQSBDZXJ0aWZpY2F0ZTEWMBQGA1UEAxMNQWxla3NleSBTYW5pbjEh
+MB8GCSqGSIb3DQEJARYSeG1sc2VjQGFsZWtzZXkuY29tMFwwDQYJKoZIhvcNAQEB
+BQADSwAwSAJBALK68onYK5Q8PfeCE+3hDwyKV6wfFVtunIp+ZputhWkMZUOY4oqn
+ffuolRln3kp/CVdtHaPTPIpYma9HFTH4+xMCAwEAAaOCAVMwggFPMAwGA1UdEwQF
+MAMBAf8wLAYJYIZIAYb4QgENBB8WHU9wZW5TU0wgR2VuZXJhdGVkIENlcnRpZmlj
+YXRlMB0GA1UdDgQWBBT+5OxTJPCVlccQteFEtV05ZVrjfjCB8QYDVR0jBIHpMIHm
+gBTaRulr5q/TParlIUtS7cpmKOD+haGBwqSBvzCBvDELMAkGA1UEBhMCVVMxEzAR
+BgNVBAgTCkNhbGlmb3JuaWExPTA7BgNVBAoTNFhNTCBTZWN1cml0eSBMaWJyYXJ5
+IChodHRwOi8vd3d3LmFsZWtzZXkuY29tL3htbHNlYykxHjAcBgNVBAsTFVRlc3Qg
+Um9vdCBDZXJ0aWZpY2F0ZTEWMBQGA1UEAxMNQWxla3NleSBTYW5pbjEhMB8GCSqG
+SIb3DQEJARYSeG1sc2VjQGFsZWtzZXkuY29tggkA1o644JGCLPcwDQYJKoZIhvcN
+AQEFBQADgYEAmY0RjbSVqOU/xvyhSq8Juk6u8bDHYIUgrfhIDZUtVT1s+op4ReOO
+kC7W7ZDOl8MxhJmt4KMqc6niYoQeuXTA9QpOleBqi8R7+0cyeGebo5JOFWN7J7wl
+lupKp1iJcKtcARwA7bso/Q5OefAwDN4pucg13fOYKVktF8XLQkIUsfY=</X509Certificate>
+<X509Certificate>MIIETTCCA7agAwIBAgIJANaOuOCRgiz3MA0GCSqGSIb3DQEBBQUAMIG8MQswCQYD
+VQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTE9MDsGA1UEChM0WE1MIFNlY3Vy
+aXR5IExpYnJhcnkgKGh0dHA6Ly93d3cuYWxla3NleS5jb20veG1sc2VjKTEeMBwG
+A1UECxMVVGVzdCBSb290IENlcnRpZmljYXRlMRYwFAYDVQQDEw1BbGVrc2V5IFNh
+bmluMSEwHwYJKoZIhvcNAQkBFhJ4bWxzZWNAYWxla3NleS5jb20wHhcNMDUwNzEw
+MDIyOTAxWhcNMTUwNzA4MDIyOTAxWjCBvDELMAkGA1UEBhMCVVMxEzARBgNVBAgT
+CkNhbGlmb3JuaWExPTA7BgNVBAoTNFhNTCBTZWN1cml0eSBMaWJyYXJ5IChodHRw
+Oi8vd3d3LmFsZWtzZXkuY29tL3htbHNlYykxHjAcBgNVBAsTFVRlc3QgUm9vdCBD
+ZXJ0aWZpY2F0ZTEWMBQGA1UEAxMNQWxla3NleSBTYW5pbjEhMB8GCSqGSIb3DQEJ
+ARYSeG1sc2VjQGFsZWtzZXkuY29tMIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKB
+gQDayaFajJxOdVU+8EjwO31S2XqNmYxxbHfiUJO3w2h57OPUkKAcKe5Gvt9hJbPT
+b3C4blPScOke2RexKnXS7pAXXbxFlgUlZ0QK0K2pdl559OSmrtH3mPP9BJvvDMlx
+kcNj9/EeD+yGd8GN/yT6PTDh8G/4lszOXL+tyKIkC4Ys/wIDAQABo4IBUzCCAU8w
+DAYDVR0TBAUwAwEB/zAsBglghkgBhvhCAQ0EHxYdT3BlblNTTCBHZW5lcmF0ZWQg
+Q2VydGlmaWNhdGUwHQYDVR0OBBYEFNpG6Wvmr9M9quUhS1LtymYo4P6FMIHxBgNV
+HSMEgekwgeaAFNpG6Wvmr9M9quUhS1LtymYo4P6FoYHCpIG/MIG8MQswCQYDVQQG
+EwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTE9MDsGA1UEChM0WE1MIFNlY3VyaXR5
+IExpYnJhcnkgKGh0dHA6Ly93d3cuYWxla3NleS5jb20veG1sc2VjKTEeMBwGA1UE
+CxMVVGVzdCBSb290IENlcnRpZmljYXRlMRYwFAYDVQQDEw1BbGVrc2V5IFNhbmlu
+MSEwHwYJKoZIhvcNAQkBFhJ4bWxzZWNAYWxla3NleS5jb22CCQDWjrjgkYIs9zAN
+BgkqhkiG9w0BAQUFAAOBgQBUXbdOTQwArcNrbxavzARp2JGOnzo6WzTm+OFSXC0F
+08YwT8jWbht97e8lNNVOBU4Y/38ReZqYC9OqFofG1/O9AdQ58WL/FWg8DgP5MJPT
+T9kRU3FU01jUiX2+kbdnghZAOJm0ziRNxfNPwIIWPKYXyXEKQQzrnxyFey1hP7cg
+6A==</X509Certificate>
+<X509Certificate>MIIFmTCCBUOgAwIBAgIJANaOuOCRgiz8MA0GCSqGSIb3DQEBBQUAMIHIMQswCQYD
+VQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTE9MDsGA1UEChM0WE1MIFNlY3Vy
+aXR5IExpYnJhcnkgKGh0dHA6Ly93d3cuYWxla3NleS5jb20veG1sc2VjKTEqMCgG
+A1UECxMhVGVzdCBTZWNvbmQgTGV2ZWwgUlNBIENlcnRpZmljYXRlMRYwFAYDVQQD
+Ew1BbGVrc2V5IFNhbmluMSEwHwYJKoZIhvcNAQkBFhJ4bWxzZWNAYWxla3NleS5j
+b20wHhcNMDUwNzExMDI1MDExWhcNMTUwNzA5MDI1MDExWjCBuTELMAkGA1UEBhMC
+VVMxEzARBgNVBAgTCkNhbGlmb3JuaWExPTA7BgNVBAoTNFhNTCBTZWN1cml0eSBM
+aWJyYXJ5IChodHRwOi8vd3d3LmFsZWtzZXkuY29tL3htbHNlYykxGzAZBgNVBAsT
+ElRlc3QgTGFyZ2UgUlNBIEtleTEWMBQGA1UEAxMNQWxla3NleSBTYW5pbjEhMB8G
+CSqGSIb3DQEJARYSeG1sc2VjQGFsZWtzZXkuY29tMIICIjANBgkqhkiG9w0BAQEF
+AAOCAg8AMIICCgKCAgEA82H5NlSuXRdoGxgoJHJOOV2/IBfIfCBZ+6NC5Cy3DW2X
+fuGbulnD5+hk/3Y1WOCQ+isTkl+6t39UJW7OzRujeJI0MX+d3IBhPHJpbbg1qPgf
+A2zl10FTJISKcnA84jmL7HCd088uCPYFgK82j+2O799QM5RYFY+HxLRlPaHRIwBq
+ZzVgBli9Q4qGUin0oeFff1luykp4Fp3aBNlh1KPqaXJ/G6r/yAdRE1DBPn2b93Dc
+ul2UqSus6lbgPH9dke+9giXyN+ss2a233T68hnqviY/5Ml6c0EEMjLeEXinpT/y1
+XPT5gjK5Ne2ECjIjMrWkscjFoBa1d40hj1OAxKGkZe6vCoQdNDDjBzXOFo5pe7ch
+kVYmwtc/eQ7gsnelymCIFTCPZaqPnZ/QUD0qm09hykMZuWlYG5h3Q0IeCHwwWFLU
+s+vRop4o3RuW/fko/XbY7JEh0Y1CTPUFcC7Su5rFyOF3XU5fwqufwHVREW7qaw7U
+vJPepJXj0lJXrHTFpuWilD/YQw5CjHWtDGnRqI7nSXcrOK/JrEN3J5CCHWLmMaAb
+F75+Yywp7Bs9S1I57Hoq/Egvvc7ZHyEC+yxu2UAUxWrOILwM5K6HNdLaX9uVUPPj
+7SyTrUJbr2X++EsK3GB/3Ug4iND8pKr8XweXz663Qz2H675R4/GMH2NDKSSMlCMC
+AwEAAaOCAVMwggFPMAwGA1UdEwQFMAMBAf8wLAYJYIZIAYb4QgENBB8WHU9wZW5T
+U0wgR2VuZXJhdGVkIENlcnRpZmljYXRlMB0GA1UdDgQWBBSQNTYRUvkAZfxx53Ow
+ke0LGYTGKDCB8QYDVR0jBIHpMIHmgBT+5OxTJPCVlccQteFEtV05ZVrjfqGBwqSB
+vzCBvDELMAkGA1UEBhMCVVMxEzARBgNVBAgTCkNhbGlmb3JuaWExPTA7BgNVBAoT
+NFhNTCBTZWN1cml0eSBMaWJyYXJ5IChodHRwOi8vd3d3LmFsZWtzZXkuY29tL3ht
+bHNlYykxHjAcBgNVBAsTFVRlc3QgUm9vdCBDZXJ0aWZpY2F0ZTEWMBQGA1UEAxMN
+QWxla3NleSBTYW5pbjEhMB8GCSqGSIb3DQEJARYSeG1sc2VjQGFsZWtzZXkuY29t
+ggkA1o644JGCLPgwDQYJKoZIhvcNAQEFBQADQQB5zUH88GYT8Xa9IlHdkS96Rv2w
+6kTmc12sAC1uDJCl4TvyTHV5Egjrf/qCfeD3dttjbAfpZQqYiE6xD9JXPd9P</X509Certificate>
+</X509Data>
+  </KeyInfo>
+  <Object Id="object">some text</Object>
+</Signature>
diff --git a/tests/aleksey-xmldsig-01/x509data-sn-test.tmpl b/tests/aleksey-xmldsig-01/x509data-sn-test.tmpl
new file mode 100755
index 0000000..9a875c0
--- /dev/null
+++ b/tests/aleksey-xmldsig-01/x509data-sn-test.tmpl
@@ -0,0 +1,27 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<Document>
+  <ToBeSigned>
+    Some very secret data
+  </ToBeSigned>
+  <Signature xmlns="http://www.w3.org/2000/09/xmldsig#">
+    <SignedInfo>
+      <CanonicalizationMethod Algorithm="http://www.w3.org/TR/2001/REC-xml-c14n-20010315" />
+      <SignatureMethod Algorithm="http://www.w3.org/2000/09/xmldsig#rsa-sha1" />
+      <Reference URI="">
+        <Transforms>
+          <Transform Algorithm="http://www.w3.org/2002/06/xmldsig-filter2">
+            <XPath xmlns="http://www.w3.org/2002/06/xmldsig-filter2" Filter="intersect"> //ToBeSigned </XPath>
+          </Transform>
+        </Transforms>
+        <DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1" />
+        <DigestValue/>
+      </Reference>
+    </SignedInfo>
+    <SignatureValue/>
+    <KeyInfo>
+      <X509Data>
+        <X509IssuerSerial/>
+      </X509Data>
+    </KeyInfo>
+  </Signature>
+</Document>
diff --git a/tests/aleksey-xmldsig-01/x509data-sn-test.xml b/tests/aleksey-xmldsig-01/x509data-sn-test.xml
new file mode 100755
index 0000000..2136faa
--- /dev/null
+++ b/tests/aleksey-xmldsig-01/x509data-sn-test.xml
@@ -0,0 +1,40 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<Document>
+  <ToBeSigned>
+    Some very secret data
+  </ToBeSigned>
+  <Signature xmlns="http://www.w3.org/2000/09/xmldsig#">
+    <SignedInfo>
+      <CanonicalizationMethod Algorithm="http://www.w3.org/TR/2001/REC-xml-c14n-20010315"/>
+      <SignatureMethod Algorithm="http://www.w3.org/2000/09/xmldsig#rsa-sha1"/>
+      <Reference URI="">
+        <Transforms>
+          <Transform Algorithm="http://www.w3.org/2002/06/xmldsig-filter2">
+            <XPath xmlns="http://www.w3.org/2002/06/xmldsig-filter2" Filter="intersect"> //ToBeSigned </XPath>
+          </Transform>
+        </Transforms>
+        <DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"/>
+        <DigestValue>3om1gINPzaogcdLuDdjIQlls4NE=</DigestValue>
+      </Reference>
+    </SignedInfo>
+    <SignatureValue>W/X7k6Q6T9RFW56VkRV9HGW5wkyUxvvlUcEyUkggVE04gsOK0Rx0rqq2woUxzkk1
+jvXfCtm2xknb2/cOmqfO/g==</SignatureValue>
+    <KeyInfo>
+      <X509Data>
+        
+      <X509IssuerSerial>
+<X509IssuerName>emailAddress=xmlsec at aleksey.com,CN=Aleksey Sanin,OU=Test Root Certificate,O=XML Security Library (http://www.aleksey.com/xmlsec),ST=California,C=US</X509IssuerName>
+<X509SerialNumber>15460497845462904056</X509SerialNumber>
+</X509IssuerSerial>
+<X509IssuerSerial>
+<X509IssuerName>emailAddress=xmlsec at aleksey.com,CN=Aleksey Sanin,OU=Test Root Certificate,O=XML Security Library (http://www.aleksey.com/xmlsec),ST=California,C=US</X509IssuerName>
+<X509SerialNumber>15460497845462904055</X509SerialNumber>
+</X509IssuerSerial>
+<X509IssuerSerial>
+<X509IssuerName>emailAddress=xmlsec at aleksey.com,CN=Aleksey Sanin,OU=Test Second Level RSA Certificate,O=XML Security Library (http://www.aleksey.com/xmlsec),ST=California,C=US</X509IssuerName>
+<X509SerialNumber>15460497845462904058</X509SerialNumber>
+</X509IssuerSerial>
+</X509Data>
+    </KeyInfo>
+  </Signature>
+</Document>
diff --git a/tests/aleksey-xmldsig-01/x509data-test.xml b/tests/aleksey-xmldsig-01/x509data-test.xml
index 3025062..287cc77 100644
--- a/tests/aleksey-xmldsig-01/x509data-test.xml
+++ b/tests/aleksey-xmldsig-01/x509data-test.xml
@@ -17,8 +17,8 @@
         <DigestValue>3om1gINPzaogcdLuDdjIQlls4NE=</DigestValue>
       </Reference>
     </SignedInfo>
-    <SignatureValue>J1+y+AwBUDD0yLthsFMxa9lwm9C/XhEDAjjZxjIJw8kD++Byx+aECA6W/U24FyHU
-HJ3ReMb+1Su6oSNuaTCYOQ==</SignatureValue>
+    <SignatureValue>W/X7k6Q6T9RFW56VkRV9HGW5wkyUxvvlUcEyUkggVE04gsOK0Rx0rqq2woUxzkk1
+jvXfCtm2xknb2/cOmqfO/g==</SignatureValue>
     <KeyInfo>
       <X509Data>
         
@@ -26,61 +26,91 @@ HJ3ReMb+1Su6oSNuaTCYOQ==</SignatureValue>
         
         
         
-      <X509Certificate>MIIEFzCCA4CgAwIBAgIBATANBgkqhkiG9w0BAQQFADCByzELMAkGA1UEBhMCVVMx
-EzARBgNVBAgTCkNhbGlmb3JuaWExEjAQBgNVBAcTCVN1bm55dmFsZTE9MDsGA1UE
-ChM0WE1MIFNlY3VyaXR5IExpYnJhcnkgKGh0dHA6Ly93d3cuYWxla3NleS5jb20v
-eG1sc2VjKTEZMBcGA1UECxMQUm9vdCBDZXJ0aWZpY2F0ZTEWMBQGA1UEAxMNQWxl
-a3NleSBTYW5pbjEhMB8GCSqGSIb3DQEJARYSeG1sc2VjQGFsZWtzZXkuY29tMB4X
-DTAyMDIwMjA4MDA1OVoXDTEyMDEzMTA4MDA1OVowgb8xCzAJBgNVBAYTAlVTMRMw
-EQYDVQQIEwpDYWxpZm9ybmlhMT0wOwYDVQQKEzRYTUwgU2VjdXJpdHkgTGlicmFy
-eSAoaHR0cDovL3d3dy5hbGVrc2V5LmNvbS94bWxzZWMpMSEwHwYDVQQLExhTZWNv
-bmQgTGV2ZWwgQ2VydGlmaWNhdGUxFjAUBgNVBAMTDUFsZWtzZXkgU2FuaW4xITAf
-BgkqhkiG9w0BCQEWEnhtbHNlY0BhbGVrc2V5LmNvbTBcMA0GCSqGSIb3DQEBAQUA
-A0sAMEgCQQDILuuqHAryfyHYBbaHp8ujFfsylBhgR1S5346z5DnM9eZ+i2By9WGT
-VygXfiZuHwu3rTFhca9O6sVPOcBuFTrnAgMBAAGjggFXMIIBUzAJBgNVHRMEAjAA
-MCwGCWCGSAGG+EIBDQQfFh1PcGVuU1NMIEdlbmVyYXRlZCBDZXJ0aWZpY2F0ZTAd
-BgNVHQ4EFgQUeNctkWEvlSJKu+HVPcYmr6uX0gQwgfgGA1UdIwSB8DCB7YAUtLnv
-muaXDmhlHpjO+lUNiQbbTHyhgdGkgc4wgcsxCzAJBgNVBAYTAlVTMRMwEQYDVQQI
-EwpDYWxpZm9ybmlhMRIwEAYDVQQHEwlTdW5ueXZhbGUxPTA7BgNVBAoTNFhNTCBT
-ZWN1cml0eSBMaWJyYXJ5IChodHRwOi8vd3d3LmFsZWtzZXkuY29tL3htbHNlYykx
-GTAXBgNVBAsTEFJvb3QgQ2VydGlmaWNhdGUxFjAUBgNVBAMTDUFsZWtzZXkgU2Fu
-aW4xITAfBgkqhkiG9w0BCQEWEnhtbHNlY0BhbGVrc2V5LmNvbYIBADANBgkqhkiG
-9w0BAQQFAAOBgQBxJHfdMbcTOpUWJdQrWNzHbQtyHMSdLSHTALIh10ORhltBXSYe
-vJywXmYz2F7080WuEDxdHuUysL8EKPlM7LRTJooqVyM4t635UaMYsm+4S0A4g9pW
-tHA0SUfq9q6hihzmVxDA7Lwj194ObRNMWFILTrfURzOE0xQbutPweMRm/g==</X509Certificate>
-<X509SubjectName>emailAddress=xmlsec at aleksey.com,CN=Aleksey Sanin,OU=Second Level Certificate,O=XML Security Library (http://www.aleksey.com/xmlsec),ST=California,C=US</X509SubjectName>
+      <X509Certificate>MIIEFTCCA36gAwIBAgIJANaOuOCRgiz4MA0GCSqGSIb3DQEBBQUAMIG8MQswCQYD
+VQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTE9MDsGA1UEChM0WE1MIFNlY3Vy
+aXR5IExpYnJhcnkgKGh0dHA6Ly93d3cuYWxla3NleS5jb20veG1sc2VjKTEeMBwG
+A1UECxMVVGVzdCBSb290IENlcnRpZmljYXRlMRYwFAYDVQQDEw1BbGVrc2V5IFNh
+bmluMSEwHwYJKoZIhvcNAQkBFhJ4bWxzZWNAYWxla3NleS5jb20wHhcNMDUwNzEw
+MDIyOTU1WhcNMTUwNzA4MDIyOTU1WjCByDELMAkGA1UEBhMCVVMxEzARBgNVBAgT
+CkNhbGlmb3JuaWExPTA7BgNVBAoTNFhNTCBTZWN1cml0eSBMaWJyYXJ5IChodHRw
+Oi8vd3d3LmFsZWtzZXkuY29tL3htbHNlYykxKjAoBgNVBAsTIVRlc3QgU2Vjb25k
+IExldmVsIFJTQSBDZXJ0aWZpY2F0ZTEWMBQGA1UEAxMNQWxla3NleSBTYW5pbjEh
+MB8GCSqGSIb3DQEJARYSeG1sc2VjQGFsZWtzZXkuY29tMFwwDQYJKoZIhvcNAQEB
+BQADSwAwSAJBALK68onYK5Q8PfeCE+3hDwyKV6wfFVtunIp+ZputhWkMZUOY4oqn
+ffuolRln3kp/CVdtHaPTPIpYma9HFTH4+xMCAwEAAaOCAVMwggFPMAwGA1UdEwQF
+MAMBAf8wLAYJYIZIAYb4QgENBB8WHU9wZW5TU0wgR2VuZXJhdGVkIENlcnRpZmlj
+YXRlMB0GA1UdDgQWBBT+5OxTJPCVlccQteFEtV05ZVrjfjCB8QYDVR0jBIHpMIHm
+gBTaRulr5q/TParlIUtS7cpmKOD+haGBwqSBvzCBvDELMAkGA1UEBhMCVVMxEzAR
+BgNVBAgTCkNhbGlmb3JuaWExPTA7BgNVBAoTNFhNTCBTZWN1cml0eSBMaWJyYXJ5
+IChodHRwOi8vd3d3LmFsZWtzZXkuY29tL3htbHNlYykxHjAcBgNVBAsTFVRlc3Qg
+Um9vdCBDZXJ0aWZpY2F0ZTEWMBQGA1UEAxMNQWxla3NleSBTYW5pbjEhMB8GCSqG
+SIb3DQEJARYSeG1sc2VjQGFsZWtzZXkuY29tggkA1o644JGCLPcwDQYJKoZIhvcN
+AQEFBQADgYEAmY0RjbSVqOU/xvyhSq8Juk6u8bDHYIUgrfhIDZUtVT1s+op4ReOO
+kC7W7ZDOl8MxhJmt4KMqc6niYoQeuXTA9QpOleBqi8R7+0cyeGebo5JOFWN7J7wl
+lupKp1iJcKtcARwA7bso/Q5OefAwDN4pucg13fOYKVktF8XLQkIUsfY=</X509Certificate>
+<X509SubjectName>emailAddress=xmlsec at aleksey.com,CN=Aleksey Sanin,OU=Test Second Level RSA Certificate,O=XML Security Library (http://www.aleksey.com/xmlsec),ST=California,C=US</X509SubjectName>
 <X509IssuerSerial>
-<X509IssuerName>emailAddress=xmlsec at aleksey.com,CN=Aleksey Sanin,OU=Root Certificate,O=XML Security Library (http://www.aleksey.com/xmlsec),L=Sunnyvale,ST=California,C=US</X509IssuerName>
-<X509SerialNumber>1</X509SerialNumber>
+<X509IssuerName>emailAddress=xmlsec at aleksey.com,CN=Aleksey Sanin,OU=Test Root Certificate,O=XML Security Library (http://www.aleksey.com/xmlsec),ST=California,C=US</X509IssuerName>
+<X509SerialNumber>15460497845462904056</X509SerialNumber>
 </X509IssuerSerial>
-<X509SKI>eNctkWEvlSJKu+HVPcYmr6uX0gQ=</X509SKI>
-<X509Certificate>MIIDzTCCA3egAwIBAgIBAzANBgkqhkiG9w0BAQQFADCBvzELMAkGA1UEBhMCVVMx
-EzARBgNVBAgTCkNhbGlmb3JuaWExPTA7BgNVBAoTNFhNTCBTZWN1cml0eSBMaWJy
-YXJ5IChodHRwOi8vd3d3LmFsZWtzZXkuY29tL3htbHNlYykxITAfBgNVBAsTGFNl
-Y29uZCBMZXZlbCBDZXJ0aWZpY2F0ZTEWMBQGA1UEAxMNQWxla3NleSBTYW5pbjEh
-MB8GCSqGSIb3DQEJARYSeG1sc2VjQGFsZWtzZXkuY29tMB4XDTAyMDIwMjA4MDE0
-OFoXDTEyMDEzMTA4MDE0OFowgcIxCzAJBgNVBAYTAlVTMRMwEQYDVQQIEwpDYWxp
-Zm9ybmlhMT0wOwYDVQQKEzRYTUwgU2VjdXJpdHkgTGlicmFyeSAoaHR0cDovL3d3
-dy5hbGVrc2V5LmNvbS94bWxzZWMpMSQwIgYDVQQLExtUaGlyZCBMZXZlbCBSU0Eg
-Q2VydGlmaWNhdGUxFjAUBgNVBAMTDUFsZWtzZXkgU2FuaW4xITAfBgkqhkiG9w0B
-CQEWEnhtbHNlY0BhbGVrc2V5LmNvbTBcMA0GCSqGSIb3DQEBAQUAA0sAMEgCQQDQ
-p6WLdrHhNMYcqSJd27S9wW6xHRwEUJKSCYQ56aug0n+4sa492l8lWj1rYvrmsdtV
-37UCtJWqOSwobj9npysXAgMBAAGjggFXMIIBUzAJBgNVHRMEAjAAMCwGCWCGSAGG
-+EIBDQQfFh1PcGVuU1NMIEdlbmVyYXRlZCBDZXJ0aWZpY2F0ZTAdBgNVHQ4EFgQU
-pBgdE9WMMoQMndG4iDT9XDfZ+kgwgfgGA1UdIwSB8DCB7YAUeNctkWEvlSJKu+HV
-PcYmr6uX0gShgdGkgc4wgcsxCzAJBgNVBAYTAlVTMRMwEQYDVQQIEwpDYWxpZm9y
-bmlhMRIwEAYDVQQHEwlTdW5ueXZhbGUxPTA7BgNVBAoTNFhNTCBTZWN1cml0eSBM
-aWJyYXJ5IChodHRwOi8vd3d3LmFsZWtzZXkuY29tL3htbHNlYykxGTAXBgNVBAsT
-EFJvb3QgQ2VydGlmaWNhdGUxFjAUBgNVBAMTDUFsZWtzZXkgU2FuaW4xITAfBgkq
-hkiG9w0BCQEWEnhtbHNlY0BhbGVrc2V5LmNvbYIBATANBgkqhkiG9w0BAQQFAANB
-AC8/OGwrGhhATlRLCmOLHHl8o+J2UAPnpnmc8+tc7GGjuy1L+HQzx3f242DgudEH
-1i71E0auLg1+ikczHPbdj08=</X509Certificate>
-<X509SubjectName>emailAddress=xmlsec at aleksey.com,CN=Aleksey Sanin,OU=Third Level RSA Certificate,O=XML Security Library (http://www.aleksey.com/xmlsec),ST=California,C=US</X509SubjectName>
+<X509SKI>/uTsUyTwlZXHELXhRLVdOWVa434=</X509SKI>
+<X509Certificate>MIIETTCCA7agAwIBAgIJANaOuOCRgiz3MA0GCSqGSIb3DQEBBQUAMIG8MQswCQYD
+VQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTE9MDsGA1UEChM0WE1MIFNlY3Vy
+aXR5IExpYnJhcnkgKGh0dHA6Ly93d3cuYWxla3NleS5jb20veG1sc2VjKTEeMBwG
+A1UECxMVVGVzdCBSb290IENlcnRpZmljYXRlMRYwFAYDVQQDEw1BbGVrc2V5IFNh
+bmluMSEwHwYJKoZIhvcNAQkBFhJ4bWxzZWNAYWxla3NleS5jb20wHhcNMDUwNzEw
+MDIyOTAxWhcNMTUwNzA4MDIyOTAxWjCBvDELMAkGA1UEBhMCVVMxEzARBgNVBAgT
+CkNhbGlmb3JuaWExPTA7BgNVBAoTNFhNTCBTZWN1cml0eSBMaWJyYXJ5IChodHRw
+Oi8vd3d3LmFsZWtzZXkuY29tL3htbHNlYykxHjAcBgNVBAsTFVRlc3QgUm9vdCBD
+ZXJ0aWZpY2F0ZTEWMBQGA1UEAxMNQWxla3NleSBTYW5pbjEhMB8GCSqGSIb3DQEJ
+ARYSeG1sc2VjQGFsZWtzZXkuY29tMIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKB
+gQDayaFajJxOdVU+8EjwO31S2XqNmYxxbHfiUJO3w2h57OPUkKAcKe5Gvt9hJbPT
+b3C4blPScOke2RexKnXS7pAXXbxFlgUlZ0QK0K2pdl559OSmrtH3mPP9BJvvDMlx
+kcNj9/EeD+yGd8GN/yT6PTDh8G/4lszOXL+tyKIkC4Ys/wIDAQABo4IBUzCCAU8w
+DAYDVR0TBAUwAwEB/zAsBglghkgBhvhCAQ0EHxYdT3BlblNTTCBHZW5lcmF0ZWQg
+Q2VydGlmaWNhdGUwHQYDVR0OBBYEFNpG6Wvmr9M9quUhS1LtymYo4P6FMIHxBgNV
+HSMEgekwgeaAFNpG6Wvmr9M9quUhS1LtymYo4P6FoYHCpIG/MIG8MQswCQYDVQQG
+EwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTE9MDsGA1UEChM0WE1MIFNlY3VyaXR5
+IExpYnJhcnkgKGh0dHA6Ly93d3cuYWxla3NleS5jb20veG1sc2VjKTEeMBwGA1UE
+CxMVVGVzdCBSb290IENlcnRpZmljYXRlMRYwFAYDVQQDEw1BbGVrc2V5IFNhbmlu
+MSEwHwYJKoZIhvcNAQkBFhJ4bWxzZWNAYWxla3NleS5jb22CCQDWjrjgkYIs9zAN
+BgkqhkiG9w0BAQUFAAOBgQBUXbdOTQwArcNrbxavzARp2JGOnzo6WzTm+OFSXC0F
+08YwT8jWbht97e8lNNVOBU4Y/38ReZqYC9OqFofG1/O9AdQ58WL/FWg8DgP5MJPT
+T9kRU3FU01jUiX2+kbdnghZAOJm0ziRNxfNPwIIWPKYXyXEKQQzrnxyFey1hP7cg
+6A==</X509Certificate>
+<X509SubjectName>emailAddress=xmlsec at aleksey.com,CN=Aleksey Sanin,OU=Test Root Certificate,O=XML Security Library (http://www.aleksey.com/xmlsec),ST=California,C=US</X509SubjectName>
 <X509IssuerSerial>
-<X509IssuerName>emailAddress=xmlsec at aleksey.com,CN=Aleksey Sanin,OU=Second Level Certificate,O=XML Security Library (http://www.aleksey.com/xmlsec),ST=California,C=US</X509IssuerName>
-<X509SerialNumber>3</X509SerialNumber>
+<X509IssuerName>emailAddress=xmlsec at aleksey.com,CN=Aleksey Sanin,OU=Test Root Certificate,O=XML Security Library (http://www.aleksey.com/xmlsec),ST=California,C=US</X509IssuerName>
+<X509SerialNumber>15460497845462904055</X509SerialNumber>
 </X509IssuerSerial>
-<X509SKI>pBgdE9WMMoQMndG4iDT9XDfZ+kg=</X509SKI>
+<X509SKI>2kbpa+av0z2q5SFLUu3KZijg/oU=</X509SKI>
+<X509Certificate>MIID3zCCA4mgAwIBAgIJANaOuOCRgiz6MA0GCSqGSIb3DQEBBQUAMIHIMQswCQYD
+VQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTE9MDsGA1UEChM0WE1MIFNlY3Vy
+aXR5IExpYnJhcnkgKGh0dHA6Ly93d3cuYWxla3NleS5jb20veG1sc2VjKTEqMCgG
+A1UECxMhVGVzdCBTZWNvbmQgTGV2ZWwgUlNBIENlcnRpZmljYXRlMRYwFAYDVQQD
+Ew1BbGVrc2V5IFNhbmluMSEwHwYJKoZIhvcNAQkBFhJ4bWxzZWNAYWxla3NleS5j
+b20wHhcNMDUwNzEwMDIzMzAyWhcNMTUwNzA4MDIzMzAyWjCBxzELMAkGA1UEBhMC
+VVMxEzARBgNVBAgTCkNhbGlmb3JuaWExPTA7BgNVBAoTNFhNTCBTZWN1cml0eSBM
+aWJyYXJ5IChodHRwOi8vd3d3LmFsZWtzZXkuY29tL3htbHNlYykxKTAnBgNVBAsT
+IFRlc3QgVGhpcmQgTGV2ZWwgUlNBIENlcnRpZmljYXRlMRYwFAYDVQQDEw1BbGVr
+c2V5IFNhbmluMSEwHwYJKoZIhvcNAQkBFhJ4bWxzZWNAYWxla3NleS5jb20wXDAN
+BgkqhkiG9w0BAQEFAANLADBIAkEA09BtD3aeVt6DVDkk0dI7Vh7LjqdnsYmW0tbD
+VxxK+nume+Z9Sb4znbUKkWl+vgQATdRUEyhT2P+Gqrd0UBzYfQIDAQABo4IBUzCC
+AU8wDAYDVR0TBAUwAwEB/zAsBglghkgBhvhCAQ0EHxYdT3BlblNTTCBHZW5lcmF0
+ZWQgQ2VydGlmaWNhdGUwHQYDVR0OBBYEFNf0xkZ3zjcEI60pVPuwDqTMQygZMIHx
+BgNVHSMEgekwgeaAFP7k7FMk8JWVxxC14US1XTllWuN+oYHCpIG/MIG8MQswCQYD
+VQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTE9MDsGA1UEChM0WE1MIFNlY3Vy
+aXR5IExpYnJhcnkgKGh0dHA6Ly93d3cuYWxla3NleS5jb20veG1sc2VjKTEeMBwG
+A1UECxMVVGVzdCBSb290IENlcnRpZmljYXRlMRYwFAYDVQQDEw1BbGVrc2V5IFNh
+bmluMSEwHwYJKoZIhvcNAQkBFhJ4bWxzZWNAYWxla3NleS5jb22CCQDWjrjgkYIs
++DANBgkqhkiG9w0BAQUFAANBAEfjvmWwi2gBpYt7bwF6oHiFLoIh5kiLAPrlOFAb
+PZlLDqr5+eDcr1cf0pksgW7fVE9NzTSmwjDFuEcPqJV62Ek=</X509Certificate>
+<X509SubjectName>emailAddress=xmlsec at aleksey.com,CN=Aleksey Sanin,OU=Test Third Level RSA Certificate,O=XML Security Library (http://www.aleksey.com/xmlsec),ST=California,C=US</X509SubjectName>
+<X509IssuerSerial>
+<X509IssuerName>emailAddress=xmlsec at aleksey.com,CN=Aleksey Sanin,OU=Test Second Level RSA Certificate,O=XML Security Library (http://www.aleksey.com/xmlsec),ST=California,C=US</X509IssuerName>
+<X509SerialNumber>15460497845462904058</X509SerialNumber>
+</X509IssuerSerial>
+<X509SKI>1/TGRnfONwQjrSlU+7AOpMxDKBk=</X509SKI>
 </X509Data>
     </KeyInfo>
   </Signature>
diff --git a/tests/keys/README b/tests/keys/README
index ca1fb6d..555fe51 100644
--- a/tests/keys/README
+++ b/tests/keys/README
@@ -1,8 +1,7 @@
 README
 
 0. Passwords
- For the cacert.pe the password is "qwerty".
- For all *.p8-pem and *.p8-der keys the password is "secret".
+ For all files the password is "secret".
 
 1. Files list
 
@@ -17,10 +16,14 @@ README
  hmackey.bin	HMAC key ('secret')
  expired.key	key for expired cert 
  expired.crt	expired certificate 
+ rsa2key.pem	RSA private key
+ rsa2cert.pem 	Self signed RSA certificate with negative serial number
 
 2. How certificates were generated:
 
  A. Create new CA 
+    - Change DAYS and CADAYS in CA.pl to 3650 (10 years)
+    > export SSLEAY_CONFIG="-config ./openssl.cnf"
     > CA.pl -newca
     > cp ./demoCA/cacert.pem .
     > cp ./demoCA/private/cakey.pem .
@@ -28,34 +31,59 @@ README
 
  B. Generate RSA key and second level CA
     > openssl genrsa -out ca2key.pem
-    > openssl req -new -key ca2key.pem -out ca2req.pem
-    > openssl ca -cert cacert.pem -keyfile cakey.pem \
+    > openssl req -config ./openssl.cnf -new -key ca2key.pem -out ca2req.pem
+    > openssl ca -config ./openssl.cnf -cert cacert.pem -keyfile cakey.pem \
 	    -out ca2cert.pem -infiles ca2req.pem
     > openssl verify -CAfile cacert.pem ca2cert.pem
 
  C. Generate and sign DSA key with second level CA
-    > penssl dsaparam -out dsakey.pem -genkey 512
-    > openssl req -new -key dsakey.pem -out dsareq.pem
-    > openssl ca -cert ca2cert.pem -keyfile ca2key.pem \
+    > openssl dsaparam -out dsakey.pem -genkey 512
+    > openssl req -config ./openssl.cnf -new -key dsakey.pem -out dsareq.pem
+    > openssl ca -config ./openssl.cnf -cert ca2cert.pem -keyfile ca2key.pem \
 	    -out dsacert.pem -infiles dsareq.pem
     > openssl verify -CAfile cacert.pem -untrusted ca2cert.pem dsacert.pem
 
  D. Generate and sign RSA key with second level CA
     > openssl genrsa -out rsakey.pem
-    > openssl req -new -key rsakey.pem -out rsareq.pem
-    > openssl ca -cert ca2cert.pem -keyfile ca2key.pem \
+    > openssl req -config ./openssl.cnf -new -key rsakey.pem -out rsareq.pem
+    > openssl ca -config ./openssl.cnf -cert ca2cert.pem -keyfile ca2key.pem \
 	    -out rsacert.pem -infiles rsareq.pem
     > openssl verify -CAfile cacert.pem -untrusted ca2cert.pem rsacert.pem
 
+ E. Generate and sign large RSA key with second level CA
+    > openssl genrsa -out largersakey.pem 4096
+    > openssl req -config ./openssl.cnf -new -key largersakey.pem -out largersareq.pem
+    > openssl ca -config ./openssl.cnf -cert ca2cert.pem -keyfile ca2key.pem \
+	    -out largersacert.pem -infiles largersareq.pem
+    > openssl verify -CAfile cacert.pem -untrusted ca2cert.pem largersacert.pem
+
+ F. Generate and sign short-live RSA cert for "expired cert" test
+    > openssl genrsa -out expiredkey.pem
+    > openssl req -config ./openssl.cnf -new -days 1 -key expiredkey.pem \
+	    -out expiredreq.pem
+    > openssl ca -config ./openssl.cnf -days 1 -cert ca2cert.pem \
+	    -keyfile ca2key.pem -out expiredcert.pem -infiles expiredreq.pem
+    > openssl verify -CAfile cacert.pem -untrusted ca2cert.pem expiredcert.pem
+ 
 3. Converting key and certs between PEM and DER formats
 
-  Convert PEM private key file to DER file
+  - Convert PEM private key file to DER file
   RSA key:
-    > openssl rsa -inform PEM -outform DER -in rsapriv.pem -out rsapriv.der
+    > openssl rsa -inform PEM -outform DER -in rsakey.pem -out rsakey.der
+    > openssl rsa -inform PEM -outform DER -in largersakey.pem -out largersakey.der
+    > openssl rsa -inform PEM -outform DER -in expiredkey.pem -out expiredkey.der
   DSA key:
     > openssl dsa -inform PEM -outform DER -in dsakey.pem -out dsakey.der
+
+  - Convert PEM cert file to DER file
+    > openssl x509 -outform DER -in cacert.pem -out cacert.der 
+    > openssl x509 -outform DER -in ca2cert.pem -out ca2cert.der 
+    > openssl x509 -outform DER -in dsacert.pem -out dsacert.der 
+    > openssl x509 -outform DER -in rsacert.pem -out rsacert.der 
+    > openssl x509 -outform DER -in largersacert.pem -out largersacert.der 
+    > openssl x509 -outform DER -in expiredcert.pem -out expiredcert.der 
   
-  Convert PEM public key file to DER file
+  - (optional) Convert PEM public key file to DER file
   RSA key:
     > openssl rsa -inform PEM -outform DER -pubin -pubout -in lugh.key -out lugh.der
   DSA key:
@@ -64,18 +92,39 @@ README
   If you aren't sure if the public key is RSA or DSA, just run one of
   the above commands, and the error messaging will make it clear :)
    
-  Convert PEM cert file to DER file
-    > openssl x509 -outform DER -in ca2cert.pem -out ca2cert.der 
+  - (optional) Convert DER cert file to PEM file
+    > openssl x509 -inform DER -outform PEM -in ca2cert.der -out ca2cert.pem
 
 4. Converting an unencrypted PEM or DER file containing a private key
    to an encrypted PEM or DER file containing the same private key but
    encrypted
-     > openssl pkcs8 -in unencryptedfile.<der|pem> -inform <der|pem> -out encryptedfile.<der|pem> -outform <der|pem> -topk8
-
+     > openssl pkcs8 -in dsakey.pem -inform pem -out dsakey.p8-pem -outform pem -topk8
+     > openssl pkcs8 -in dsakey.der -inform der -out dsakey.p8-der -outform der -topk8
+     > openssl pkcs8 -in rsakey.pem -inform pem -out rsakey.p8-pem -outform pem -topk8
+     > openssl pkcs8 -in rsakey.der -inform der -out rsakey.p8-der -outform der -topk8
+     > openssl pkcs8 -in largersakey.pem -inform pem -out largersakey.p8-pem \
+        -outform pem -topk8
+     > openssl pkcs8 -in largersakey.der -inform der -out largersakey.p8-der \
+        -outform der -topk8
+     
 5. NSS is unfriendly towards standalone private keys.
    This procedure helps convert raw private keys into PKCS12 form that is 
    suitable for not only NSS but all crypto engines.
 
+    > cat dsakey.pem dsacert.pem ca2cert.pem cacert.pem > alldsa.pem
+    > openssl pkcs12 -export -in alldsa.pem -name TestDsaKey -out dsakey.p12
+
+    > cat rsakey.pem rsacert.pem ca2cert.pem cacert.pem > allrsa.pem
+    > openssl pkcs12 -export -in allrsa.pem -name TestRsaKey -out rsakey.p12
+
+    > cat largersakey.pem largersacert.pem ca2cert.pem cacert.pem > alllargersa.pem
+    > openssl pkcs12 -export -in alllargersa.pem -name TestLargeRsaKey -out largersakey.p12
+
+    > cat expiredkey.pem expiredcert.pem ca2cert.pem cacert.pem > allexpired.pem
+    > openssl pkcs12 -export -in allexpired.pem -name TestExpiredRsaKey \
+      -out expiredkey.p12
+
+
    5a.
        Input: DSA/RSA private key in PEM or DER format
        Output: A PKCS12 file containing the private key, and a self-signed 
@@ -119,7 +168,10 @@ README
 
        # now using the certs and key in PEM format, conver them to a PKCS12 file
        # enter some password on prompt
-       > openssl pkcs12 -export -in allcerts.pem -inkey key.pem -name <nickname of key & keycert> [-caname <nickname of cert1> -caname <nickname of cert2>.... ] -out keycert.p12
+       > openssl pkcs12 -export -in allcerts.pem -inkey key.pem \
+         -name <nickname of key & keycert> 
+	 [-caname <nickname of cert1> -caname <nickname of cert2>.... ] 
+	 -out keycert.p12
     
        # This pkcs12 file can be used directly on the xmlsec command line, or
        # can be pre-loaded into the crypto engine database (if any).
diff --git a/tests/keys/ca2cert.der b/tests/keys/ca2cert.der
index c916878..0f163c4 100644
Binary files a/tests/keys/ca2cert.der and b/tests/keys/ca2cert.der differ
diff --git a/tests/keys/ca2cert.pem b/tests/keys/ca2cert.pem
index 27b2a81..aacdd36 100644
--- a/tests/keys/ca2cert.pem
+++ b/tests/keys/ca2cert.pem
@@ -1,24 +1,66 @@
+Certificate:
+    Data:
+        Version: 3 (0x2)
+        Serial Number:
+            d6:8e:b8:e0:91:82:2c:f8
+        Signature Algorithm: sha1WithRSAEncryption
+        Issuer: C=US, ST=California, O=XML Security Library (http://www.aleksey.com/xmlsec), OU=Test Root Certificate, CN=Aleksey Sanin/emailAddress=xmlsec at aleksey.com
+        Validity
+            Not Before: Jul 10 02:29:55 2005 GMT
+            Not After : Jul  8 02:29:55 2015 GMT
+        Subject: C=US, ST=California, O=XML Security Library (http://www.aleksey.com/xmlsec), OU=Test Second Level RSA Certificate, CN=Aleksey Sanin/emailAddress=xmlsec at aleksey.com
+        Subject Public Key Info:
+            Public Key Algorithm: rsaEncryption
+            RSA Public Key: (512 bit)
+                Modulus (512 bit):
+                    00:b2:ba:f2:89:d8:2b:94:3c:3d:f7:82:13:ed:e1:
+                    0f:0c:8a:57:ac:1f:15:5b:6e:9c:8a:7e:66:9b:ad:
+                    85:69:0c:65:43:98:e2:8a:a7:7d:fb:a8:95:19:67:
+                    de:4a:7f:09:57:6d:1d:a3:d3:3c:8a:58:99:af:47:
+                    15:31:f8:fb:13
+                Exponent: 65537 (0x10001)
+        X509v3 extensions:
+            X509v3 Basic Constraints: 
+                CA:TRUE
+            Netscape Comment: 
+                OpenSSL Generated Certificate
+            X509v3 Subject Key Identifier: 
+                FE:E4:EC:53:24:F0:95:95:C7:10:B5:E1:44:B5:5D:39:65:5A:E3:7E
+            X509v3 Authority Key Identifier: 
+                keyid:DA:46:E9:6B:E6:AF:D3:3D:AA:E5:21:4B:52:ED:CA:66:28:E0:FE:85
+                DirName:/C=US/ST=California/O=XML Security Library (http://www.aleksey.com/xmlsec)/OU=Test Root Certificate/CN=Aleksey Sanin/emailAddress=xmlsec at aleksey.com
+                serial:D6:8E:B8:E0:91:82:2C:F7
+
+    Signature Algorithm: sha1WithRSAEncryption
+        99:8d:11:8d:b4:95:a8:e5:3f:c6:fc:a1:4a:af:09:ba:4e:ae:
+        f1:b0:c7:60:85:20:ad:f8:48:0d:95:2d:55:3d:6c:fa:8a:78:
+        45:e3:8e:90:2e:d6:ed:90:ce:97:c3:31:84:99:ad:e0:a3:2a:
+        73:a9:e2:62:84:1e:b9:74:c0:f5:0a:4e:95:e0:6a:8b:c4:7b:
+        fb:47:32:78:67:9b:a3:92:4e:15:63:7b:27:bc:25:96:ea:4a:
+        a7:58:89:70:ab:5c:01:1c:00:ed:bb:28:fd:0e:4e:79:f0:30:
+        0c:de:29:b9:c8:35:dd:f3:98:29:59:2d:17:c5:cb:42:42:14:
+        b1:f6
 -----BEGIN CERTIFICATE-----
-MIIEFzCCA4CgAwIBAgIBATANBgkqhkiG9w0BAQQFADCByzELMAkGA1UEBhMCVVMx
-EzARBgNVBAgTCkNhbGlmb3JuaWExEjAQBgNVBAcTCVN1bm55dmFsZTE9MDsGA1UE
-ChM0WE1MIFNlY3VyaXR5IExpYnJhcnkgKGh0dHA6Ly93d3cuYWxla3NleS5jb20v
-eG1sc2VjKTEZMBcGA1UECxMQUm9vdCBDZXJ0aWZpY2F0ZTEWMBQGA1UEAxMNQWxl
-a3NleSBTYW5pbjEhMB8GCSqGSIb3DQEJARYSeG1sc2VjQGFsZWtzZXkuY29tMB4X
-DTAyMDIwMjA4MDA1OVoXDTEyMDEzMTA4MDA1OVowgb8xCzAJBgNVBAYTAlVTMRMw
-EQYDVQQIEwpDYWxpZm9ybmlhMT0wOwYDVQQKEzRYTUwgU2VjdXJpdHkgTGlicmFy
-eSAoaHR0cDovL3d3dy5hbGVrc2V5LmNvbS94bWxzZWMpMSEwHwYDVQQLExhTZWNv
-bmQgTGV2ZWwgQ2VydGlmaWNhdGUxFjAUBgNVBAMTDUFsZWtzZXkgU2FuaW4xITAf
-BgkqhkiG9w0BCQEWEnhtbHNlY0BhbGVrc2V5LmNvbTBcMA0GCSqGSIb3DQEBAQUA
-A0sAMEgCQQDILuuqHAryfyHYBbaHp8ujFfsylBhgR1S5346z5DnM9eZ+i2By9WGT
-VygXfiZuHwu3rTFhca9O6sVPOcBuFTrnAgMBAAGjggFXMIIBUzAJBgNVHRMEAjAA
-MCwGCWCGSAGG+EIBDQQfFh1PcGVuU1NMIEdlbmVyYXRlZCBDZXJ0aWZpY2F0ZTAd
-BgNVHQ4EFgQUeNctkWEvlSJKu+HVPcYmr6uX0gQwgfgGA1UdIwSB8DCB7YAUtLnv
-muaXDmhlHpjO+lUNiQbbTHyhgdGkgc4wgcsxCzAJBgNVBAYTAlVTMRMwEQYDVQQI
-EwpDYWxpZm9ybmlhMRIwEAYDVQQHEwlTdW5ueXZhbGUxPTA7BgNVBAoTNFhNTCBT
-ZWN1cml0eSBMaWJyYXJ5IChodHRwOi8vd3d3LmFsZWtzZXkuY29tL3htbHNlYykx
-GTAXBgNVBAsTEFJvb3QgQ2VydGlmaWNhdGUxFjAUBgNVBAMTDUFsZWtzZXkgU2Fu
-aW4xITAfBgkqhkiG9w0BCQEWEnhtbHNlY0BhbGVrc2V5LmNvbYIBADANBgkqhkiG
-9w0BAQQFAAOBgQBxJHfdMbcTOpUWJdQrWNzHbQtyHMSdLSHTALIh10ORhltBXSYe
-vJywXmYz2F7080WuEDxdHuUysL8EKPlM7LRTJooqVyM4t635UaMYsm+4S0A4g9pW
-tHA0SUfq9q6hihzmVxDA7Lwj194ObRNMWFILTrfURzOE0xQbutPweMRm/g==
+MIIEFTCCA36gAwIBAgIJANaOuOCRgiz4MA0GCSqGSIb3DQEBBQUAMIG8MQswCQYD
+VQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTE9MDsGA1UEChM0WE1MIFNlY3Vy
+aXR5IExpYnJhcnkgKGh0dHA6Ly93d3cuYWxla3NleS5jb20veG1sc2VjKTEeMBwG
+A1UECxMVVGVzdCBSb290IENlcnRpZmljYXRlMRYwFAYDVQQDEw1BbGVrc2V5IFNh
+bmluMSEwHwYJKoZIhvcNAQkBFhJ4bWxzZWNAYWxla3NleS5jb20wHhcNMDUwNzEw
+MDIyOTU1WhcNMTUwNzA4MDIyOTU1WjCByDELMAkGA1UEBhMCVVMxEzARBgNVBAgT
+CkNhbGlmb3JuaWExPTA7BgNVBAoTNFhNTCBTZWN1cml0eSBMaWJyYXJ5IChodHRw
+Oi8vd3d3LmFsZWtzZXkuY29tL3htbHNlYykxKjAoBgNVBAsTIVRlc3QgU2Vjb25k
+IExldmVsIFJTQSBDZXJ0aWZpY2F0ZTEWMBQGA1UEAxMNQWxla3NleSBTYW5pbjEh
+MB8GCSqGSIb3DQEJARYSeG1sc2VjQGFsZWtzZXkuY29tMFwwDQYJKoZIhvcNAQEB
+BQADSwAwSAJBALK68onYK5Q8PfeCE+3hDwyKV6wfFVtunIp+ZputhWkMZUOY4oqn
+ffuolRln3kp/CVdtHaPTPIpYma9HFTH4+xMCAwEAAaOCAVMwggFPMAwGA1UdEwQF
+MAMBAf8wLAYJYIZIAYb4QgENBB8WHU9wZW5TU0wgR2VuZXJhdGVkIENlcnRpZmlj
+YXRlMB0GA1UdDgQWBBT+5OxTJPCVlccQteFEtV05ZVrjfjCB8QYDVR0jBIHpMIHm
+gBTaRulr5q/TParlIUtS7cpmKOD+haGBwqSBvzCBvDELMAkGA1UEBhMCVVMxEzAR
+BgNVBAgTCkNhbGlmb3JuaWExPTA7BgNVBAoTNFhNTCBTZWN1cml0eSBMaWJyYXJ5
+IChodHRwOi8vd3d3LmFsZWtzZXkuY29tL3htbHNlYykxHjAcBgNVBAsTFVRlc3Qg
+Um9vdCBDZXJ0aWZpY2F0ZTEWMBQGA1UEAxMNQWxla3NleSBTYW5pbjEhMB8GCSqG
+SIb3DQEJARYSeG1sc2VjQGFsZWtzZXkuY29tggkA1o644JGCLPcwDQYJKoZIhvcN
+AQEFBQADgYEAmY0RjbSVqOU/xvyhSq8Juk6u8bDHYIUgrfhIDZUtVT1s+op4ReOO
+kC7W7ZDOl8MxhJmt4KMqc6niYoQeuXTA9QpOleBqi8R7+0cyeGebo5JOFWN7J7wl
+lupKp1iJcKtcARwA7bso/Q5OefAwDN4pucg13fOYKVktF8XLQkIUsfY=
 -----END CERTIFICATE-----
diff --git a/tests/keys/ca2key.p12 b/tests/keys/ca2key.p12
deleted file mode 100644
index 1b1ffe2..0000000
Binary files a/tests/keys/ca2key.p12 and /dev/null differ
diff --git a/tests/keys/ca2key.p8-der b/tests/keys/ca2key.p8-der
deleted file mode 100644
index f7a1b63..0000000
Binary files a/tests/keys/ca2key.p8-der and /dev/null differ
diff --git a/tests/keys/ca2key.p8-pem b/tests/keys/ca2key.p8-pem
deleted file mode 100644
index 0cbd0e7..0000000
--- a/tests/keys/ca2key.p8-pem
+++ /dev/null
@@ -1,11 +0,0 @@
------BEGIN ENCRYPTED PRIVATE KEY-----
-MIIBgTAbBgkqhkiG9w0BBQMwDgQI6znto8ZMLz4CAggABIIBYAQ8Y3Uw7+oOsMCa
-uqvmaNFrfT1nX8LA/Iy8ddUGW7EcKbwM2nGk+H+/JKDYZfyewWL327sZK6wmeaBk
-4wAUET6Aworw0EoqQAyfJqgfmFhoUQ3OnG817BiP6mhZPM/0gYp7q5a2ZQUf436t
-NDp9V15xkiHicLw7wJB59yh+I0JBj+w2zX69O56812hjkMEjCaHvQZIuuHa2+VJL
-NZFRph1mF2PfPxMtbyZ3E3bQ02HOKWLattk/sJY2jaM4q3eA/TUaQX/destjHFOD
-WQK/dd49l24FPlBYxMjV3GJ7cda/M1At5IH6u9+83isOMvJKa10sGyglgJA7Fxxz
-zNh5cQA0F4akafW9QjV6pSPSbfhPv+YLFbQcsrbrMBO41t5hFW/PeQsbc4ku/ecz
-0TTTCO9FbRCMYIdn45TZ4rWcLCCTOCuhrLbbzns/6LicbZLLRzdqEKYTawUyTdbT
-yGRvszY=
------END ENCRYPTED PRIVATE KEY-----
diff --git a/tests/keys/ca2key.pem b/tests/keys/ca2key.pem
index 860840a..1b842b7 100644
--- a/tests/keys/ca2key.pem
+++ b/tests/keys/ca2key.pem
@@ -1,9 +1,9 @@
 -----BEGIN RSA PRIVATE KEY-----
-MIIBOgIBAAJBAMgu66ocCvJ/IdgFtoeny6MV+zKUGGBHVLnfjrPkOcz15n6LYHL1
-YZNXKBd+Jm4fC7etMWFxr07qxU85wG4VOucCAwEAAQJAUFe8j96HakIqFChe1N08
-dqz4z5jum52lXKBkBsEfjamhNPXIfGnhFyGuFCo04YDPM8sTnZhwz/Ft4HqU9FVz
-iQIhAPdsXg3fepNwu8/+TAKbqpJWD+dMra3D1ExE0r9yo+QTAiEAzx9YdCRx9oah
-32x+2lVEEQBrr/nsF1dEtH0yCLrzIF0CIFNfzQHXwLJWVrNr+akXU48kOQ+0IwJe
-7vcUaf/hXaDJAiBXIpXAzrBPCVbCOs+nJKXtDSNAtkC3lRQnZmANQjEUVQIhAIMT
-MN4dFa9QuXzwY1KLiBrfjwv7qGm8oDmG1anvJlTb
+MIIBPAIBAAJBALK68onYK5Q8PfeCE+3hDwyKV6wfFVtunIp+ZputhWkMZUOY4oqn
+ffuolRln3kp/CVdtHaPTPIpYma9HFTH4+xMCAwEAAQJBAKXFUUlar2jIyyyygCuF
+L8EQ2yowlk18dULa4+6GbZO0t7D+sPAjog7xxSG3ppM0jvh2QO0w0CHz4E+DD5l4
+v/kCIQDYd4Iy9gUBDxsL2bLnVr+HWqrmA8fmksd+x9Nr0f2dBwIhANNfI1VenWH6
+76PXxDFEHeexPXm8iEu5u4oq9i10rzqVAiABZNObzGW/2f8MlnxGbRKSpozPKlsR
+KwTJ1jOQUCvX5QIhALNaAcg5bT+rRlX3CmFnVBy5ttkqEVh389rsU1EEtn71AiEA
+zIAQsg4C691XNHCPRdrQFG+tKoeyyuwaBr1Xn4dGpTU=
 -----END RSA PRIVATE KEY-----
diff --git a/tests/keys/cacert.der b/tests/keys/cacert.der
index 7486b63..170a3f6 100644
Binary files a/tests/keys/cacert.der and b/tests/keys/cacert.der differ
diff --git a/tests/keys/cacert.pem b/tests/keys/cacert.pem
index 38144d6..a86c2e7 100644
--- a/tests/keys/cacert.pem
+++ b/tests/keys/cacert.pem
@@ -1,25 +1,72 @@
+Certificate:
+    Data:
+        Version: 3 (0x2)
+        Serial Number:
+            d6:8e:b8:e0:91:82:2c:f7
+        Signature Algorithm: sha1WithRSAEncryption
+        Issuer: C=US, ST=California, O=XML Security Library (http://www.aleksey.com/xmlsec), OU=Test Root Certificate, CN=Aleksey Sanin/emailAddress=xmlsec at aleksey.com
+        Validity
+            Not Before: Jul 10 02:29:01 2005 GMT
+            Not After : Jul  8 02:29:01 2015 GMT
+        Subject: C=US, ST=California, O=XML Security Library (http://www.aleksey.com/xmlsec), OU=Test Root Certificate, CN=Aleksey Sanin/emailAddress=xmlsec at aleksey.com
+        Subject Public Key Info:
+            Public Key Algorithm: rsaEncryption
+            RSA Public Key: (1024 bit)
+                Modulus (1024 bit):
+                    00:da:c9:a1:5a:8c:9c:4e:75:55:3e:f0:48:f0:3b:
+                    7d:52:d9:7a:8d:99:8c:71:6c:77:e2:50:93:b7:c3:
+                    68:79:ec:e3:d4:90:a0:1c:29:ee:46:be:df:61:25:
+                    b3:d3:6f:70:b8:6e:53:d2:70:e9:1e:d9:17:b1:2a:
+                    75:d2:ee:90:17:5d:bc:45:96:05:25:67:44:0a:d0:
+                    ad:a9:76:5e:79:f4:e4:a6:ae:d1:f7:98:f3:fd:04:
+                    9b:ef:0c:c9:71:91:c3:63:f7:f1:1e:0f:ec:86:77:
+                    c1:8d:ff:24:fa:3d:30:e1:f0:6f:f8:96:cc:ce:5c:
+                    bf:ad:c8:a2:24:0b:86:2c:ff
+                Exponent: 65537 (0x10001)
+        X509v3 extensions:
+            X509v3 Basic Constraints: 
+                CA:TRUE
+            Netscape Comment: 
+                OpenSSL Generated Certificate
+            X509v3 Subject Key Identifier: 
+                DA:46:E9:6B:E6:AF:D3:3D:AA:E5:21:4B:52:ED:CA:66:28:E0:FE:85
+            X509v3 Authority Key Identifier: 
+                keyid:DA:46:E9:6B:E6:AF:D3:3D:AA:E5:21:4B:52:ED:CA:66:28:E0:FE:85
+                DirName:/C=US/ST=California/O=XML Security Library (http://www.aleksey.com/xmlsec)/OU=Test Root Certificate/CN=Aleksey Sanin/emailAddress=xmlsec at aleksey.com
+                serial:D6:8E:B8:E0:91:82:2C:F7
+
+    Signature Algorithm: sha1WithRSAEncryption
+        54:5d:b7:4e:4d:0c:00:ad:c3:6b:6f:16:af:cc:04:69:d8:91:
+        8e:9f:3a:3a:5b:34:e6:f8:e1:52:5c:2d:05:d3:c6:30:4f:c8:
+        d6:6e:1b:7d:ed:ef:25:34:d5:4e:05:4e:18:ff:7f:11:79:9a:
+        98:0b:d3:aa:16:87:c6:d7:f3:bd:01:d4:39:f1:62:ff:15:68:
+        3c:0e:03:f9:30:93:d3:4f:d9:11:53:71:54:d3:58:d4:89:7d:
+        be:91:b7:67:82:16:40:38:99:b4:ce:24:4d:c5:f3:4f:c0:82:
+        16:3c:a6:17:c9:71:0a:41:0c:eb:9f:1c:85:7b:2d:61:3f:b7:
+        20:e8
 -----BEGIN CERTIFICATE-----
-MIIEPDCCA6WgAwIBAgIBADANBgkqhkiG9w0BAQQFADCByzELMAkGA1UEBhMCVVMx
-EzARBgNVBAgTCkNhbGlmb3JuaWExEjAQBgNVBAcTCVN1bm55dmFsZTE9MDsGA1UE
-ChM0WE1MIFNlY3VyaXR5IExpYnJhcnkgKGh0dHA6Ly93d3cuYWxla3NleS5jb20v
-eG1sc2VjKTEZMBcGA1UECxMQUm9vdCBDZXJ0aWZpY2F0ZTEWMBQGA1UEAxMNQWxl
-a3NleSBTYW5pbjEhMB8GCSqGSIb3DQEJARYSeG1sc2VjQGFsZWtzZXkuY29tMB4X
-DTAyMDIwMjA4MDAzOFoXDTEyMDEzMTA4MDAzOFowgcsxCzAJBgNVBAYTAlVTMRMw
-EQYDVQQIEwpDYWxpZm9ybmlhMRIwEAYDVQQHEwlTdW5ueXZhbGUxPTA7BgNVBAoT
-NFhNTCBTZWN1cml0eSBMaWJyYXJ5IChodHRwOi8vd3d3LmFsZWtzZXkuY29tL3ht
-bHNlYykxGTAXBgNVBAsTEFJvb3QgQ2VydGlmaWNhdGUxFjAUBgNVBAMTDUFsZWtz
-ZXkgU2FuaW4xITAfBgkqhkiG9w0BCQEWEnhtbHNlY0BhbGVrc2V5LmNvbTCBnzAN
-BgkqhkiG9w0BAQEFAAOBjQAwgYkCgYEAvSvv4RNOzsjL+FQEoMwkidOOjJQciB2x
-WxI1QPkwFVC5Z86BcQugOWVJ+4JVTtE2uDjFElNI9SMINhd+4GkxlK+TVHvSZfCT
-Ia/EichBfRfZcPjVnXH3pzFCC9JkbGOIFAzuhBcz+KvN8gntuumolN2/fBYCbFZX
-4otzgMd5Rm8CAwEAAaOCASwwggEoMB0GA1UdDgQWBBS0ue+a5pcOaGUemM76VQ2J
-BttMfDCB+AYDVR0jBIHwMIHtgBS0ue+a5pcOaGUemM76VQ2JBttMfKGB0aSBzjCB
-yzELMAkGA1UEBhMCVVMxEzARBgNVBAgTCkNhbGlmb3JuaWExEjAQBgNVBAcTCVN1
-bm55dmFsZTE9MDsGA1UEChM0WE1MIFNlY3VyaXR5IExpYnJhcnkgKGh0dHA6Ly93
-d3cuYWxla3NleS5jb20veG1sc2VjKTEZMBcGA1UECxMQUm9vdCBDZXJ0aWZpY2F0
-ZTEWMBQGA1UEAxMNQWxla3NleSBTYW5pbjEhMB8GCSqGSIb3DQEJARYSeG1sc2Vj
-QGFsZWtzZXkuY29tggEAMAwGA1UdEwQFMAMBAf8wDQYJKoZIhvcNAQEEBQADgYEA
-J/+WEipxRms7bdg0ORf+ipHNwgdvWDxaLeQqqKMSacHDFVZyKdurm4onypNI2w9K
-Gk6XKipJT67ew4QpVMgv5LAIoErMxIcVYu1tAfhjtNK5neF6X5v/r/cRQkdIYaaF
-BlnBUmHY6x83aiSMC2ASG2MKL8UDqF/y2/SlPuxmG50=
+MIIETTCCA7agAwIBAgIJANaOuOCRgiz3MA0GCSqGSIb3DQEBBQUAMIG8MQswCQYD
+VQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTE9MDsGA1UEChM0WE1MIFNlY3Vy
+aXR5IExpYnJhcnkgKGh0dHA6Ly93d3cuYWxla3NleS5jb20veG1sc2VjKTEeMBwG
+A1UECxMVVGVzdCBSb290IENlcnRpZmljYXRlMRYwFAYDVQQDEw1BbGVrc2V5IFNh
+bmluMSEwHwYJKoZIhvcNAQkBFhJ4bWxzZWNAYWxla3NleS5jb20wHhcNMDUwNzEw
+MDIyOTAxWhcNMTUwNzA4MDIyOTAxWjCBvDELMAkGA1UEBhMCVVMxEzARBgNVBAgT
+CkNhbGlmb3JuaWExPTA7BgNVBAoTNFhNTCBTZWN1cml0eSBMaWJyYXJ5IChodHRw
+Oi8vd3d3LmFsZWtzZXkuY29tL3htbHNlYykxHjAcBgNVBAsTFVRlc3QgUm9vdCBD
+ZXJ0aWZpY2F0ZTEWMBQGA1UEAxMNQWxla3NleSBTYW5pbjEhMB8GCSqGSIb3DQEJ
+ARYSeG1sc2VjQGFsZWtzZXkuY29tMIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKB
+gQDayaFajJxOdVU+8EjwO31S2XqNmYxxbHfiUJO3w2h57OPUkKAcKe5Gvt9hJbPT
+b3C4blPScOke2RexKnXS7pAXXbxFlgUlZ0QK0K2pdl559OSmrtH3mPP9BJvvDMlx
+kcNj9/EeD+yGd8GN/yT6PTDh8G/4lszOXL+tyKIkC4Ys/wIDAQABo4IBUzCCAU8w
+DAYDVR0TBAUwAwEB/zAsBglghkgBhvhCAQ0EHxYdT3BlblNTTCBHZW5lcmF0ZWQg
+Q2VydGlmaWNhdGUwHQYDVR0OBBYEFNpG6Wvmr9M9quUhS1LtymYo4P6FMIHxBgNV
+HSMEgekwgeaAFNpG6Wvmr9M9quUhS1LtymYo4P6FoYHCpIG/MIG8MQswCQYDVQQG
+EwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTE9MDsGA1UEChM0WE1MIFNlY3VyaXR5
+IExpYnJhcnkgKGh0dHA6Ly93d3cuYWxla3NleS5jb20veG1sc2VjKTEeMBwGA1UE
+CxMVVGVzdCBSb290IENlcnRpZmljYXRlMRYwFAYDVQQDEw1BbGVrc2V5IFNhbmlu
+MSEwHwYJKoZIhvcNAQkBFhJ4bWxzZWNAYWxla3NleS5jb22CCQDWjrjgkYIs9zAN
+BgkqhkiG9w0BAQUFAAOBgQBUXbdOTQwArcNrbxavzARp2JGOnzo6WzTm+OFSXC0F
+08YwT8jWbht97e8lNNVOBU4Y/38ReZqYC9OqFofG1/O9AdQ58WL/FWg8DgP5MJPT
+T9kRU3FU01jUiX2+kbdnghZAOJm0ziRNxfNPwIIWPKYXyXEKQQzrnxyFey1hP7cg
+6A==
 -----END CERTIFICATE-----
diff --git a/tests/keys/cakey.pem b/tests/keys/cakey.pem
index 81173c5..0270e59 100644
--- a/tests/keys/cakey.pem
+++ b/tests/keys/cakey.pem
@@ -1,18 +1,18 @@
 -----BEGIN RSA PRIVATE KEY-----
 Proc-Type: 4,ENCRYPTED
-DEK-Info: DES-EDE3-CBC,6628E8A8A763D969
+DEK-Info: DES-EDE3-CBC,77F426A47A174623
 
-oWRX6TTZcVmqCrFLcZI4cqRy9Hvz/LieALm9hh1K0o4Nzo2DESn5hum/yWYURHD5
-MmsenUhuCD25AyZrS+5owNg6LZnzqu27RQRxrEIQAFJHm92hpovM2KviTM60S43L
-AC8104kbjGirm/X1NjI2nrRiH5OdOwwz4lxDn6+9O3HFp+1d4HUv64n8oX39qxtH
-NK7z8u/iJB9v7E1YS0LMHvnnC5mItIxuV5W3F8SI9VX76oEt438+91dYKhzZG0fe
-AB1rT7jF+6lW1cn4JlkWjh+4dX8mChfDgG29EEOorAvGDTojJRvF1oWAtMr9PtH1
-kng1RfgZviGB+gek5KFir7VbXAbdaFgtwW3IhGXR01RTfdwfibeiDigpK3/o8XXk
-+1uM0kvSAUaPbD+Ru9MwBl3yyzWf2ZYU9MU3rT4aA+ON0vj54QBCxU+K4CAf9pEO
-6z4gjeXY57/dS98kX+weutvmxDnBu+sOhUbivpZLmSAkXWudsCMV1VuvED8QqUY1
-X7YO2rkpl4pHT0odeAL2fipN3ALXPMHlAbT+2nkwcIS4c9rWYbEHY47dggqGE7xA
-Fkh1foDEd8Ie5AT+1mqrfv1nbi7uULe+en5ZvGHcWYu9saP/9R2BHDclT9hLxMUa
-H6KlS32v/Qpmhf0xfpLMkF0ndFJwxrN2vaVPFq9+GjJqepl54Yt7rb5jcEEBHF4S
-J+k/9bmCZyAyOCeCC1/hqX3v7/7bBZcKvaP43JnjJrsabZ41rAQCq71360ZUEpFR
-X8/G0/4QbPL0su+lDxPwT6/M+2tFrJsrZXdQDLmMZJMnQr10Y536xQ==
+FH1NdgJgrX1OGKM0WfzwRUWmLTmfawdaUPeFNJbz1+40J5DEt1DmC6o0QkXoxIPC
+Te/+FS80gNruYgYIWu4WXftCSdvSfGI8LP1JZ7hmMCl055J2mLVKT4o6HqAQnHrb
+hTATVG6CB/GdHTFPG3J65qIyTlG50jyzfwZtliMCCAwi+AaAlo5xzUe0DgedytB2
+sFkLq5EiD6066P/LXPH/Z5SJKiMCFOl0Gjwd3M9ohZufnEJPJT5ap2fm7OSJSfa6
+jPREY+UwhPyKkYOc2c8gojj6HrsSQlXPl176b1+31c19hhhRAtDfJBIU2OrOFVk/
+V88/Dm0I+ROyLme0rYfFg8uHz2aIymzEMds5ZKEFTFbBhaWbVYKIX7+82tftnd+P
+2kT15JAK9V27F0p4SRiQ5RsDkT3rBWsZjtk9Rptkrgec9aKoTaO2fT8bPaWFR/M1
+6X7kjMqhLw1sHmsSeDKx0YCWfS+gWh7RPjGQ2EfH2pxoZkUAR5R3cZCEn3Ia1BeV
+UTFWy+DwjEeSrNkO96E0pH1r8204cJAKK8cWS4HSAPMsQPf5cZjIrrAak/9Wupkq
+fnrB0Ae6GFO2gHYQfbSL+KdEq6w5+S6XZyTauVyaJAjjIFDmegfaKWHzNvqCWJ4T
+YPsiptUrKz6DYyhiUrNJQKcyGWHWrwMNIbldqSBNCa8OIVoaZiRibgO1SIafAGAS
+9MDXXVaY6rqx1yfZYDc9VgKGXTJhBXALCeGMYF43bvAmPq3M13QJA0rlO7lAUUF2
+5INqBUeJxZrYxn6tRr9EMty/UcYnPR3YHgt0RDZycvbcqPsU5tHk9Q==
 -----END RSA PRIVATE KEY-----
diff --git a/tests/keys/demoCA/cacert.pem b/tests/keys/demoCA/cacert.pem
new file mode 100644
index 0000000..a86c2e7
--- /dev/null
+++ b/tests/keys/demoCA/cacert.pem
@@ -0,0 +1,72 @@
+Certificate:
+    Data:
+        Version: 3 (0x2)
+        Serial Number:
+            d6:8e:b8:e0:91:82:2c:f7
+        Signature Algorithm: sha1WithRSAEncryption
+        Issuer: C=US, ST=California, O=XML Security Library (http://www.aleksey.com/xmlsec), OU=Test Root Certificate, CN=Aleksey Sanin/emailAddress=xmlsec at aleksey.com
+        Validity
+            Not Before: Jul 10 02:29:01 2005 GMT
+            Not After : Jul  8 02:29:01 2015 GMT
+        Subject: C=US, ST=California, O=XML Security Library (http://www.aleksey.com/xmlsec), OU=Test Root Certificate, CN=Aleksey Sanin/emailAddress=xmlsec at aleksey.com
+        Subject Public Key Info:
+            Public Key Algorithm: rsaEncryption
+            RSA Public Key: (1024 bit)
+                Modulus (1024 bit):
+                    00:da:c9:a1:5a:8c:9c:4e:75:55:3e:f0:48:f0:3b:
+                    7d:52:d9:7a:8d:99:8c:71:6c:77:e2:50:93:b7:c3:
+                    68:79:ec:e3:d4:90:a0:1c:29:ee:46:be:df:61:25:
+                    b3:d3:6f:70:b8:6e:53:d2:70:e9:1e:d9:17:b1:2a:
+                    75:d2:ee:90:17:5d:bc:45:96:05:25:67:44:0a:d0:
+                    ad:a9:76:5e:79:f4:e4:a6:ae:d1:f7:98:f3:fd:04:
+                    9b:ef:0c:c9:71:91:c3:63:f7:f1:1e:0f:ec:86:77:
+                    c1:8d:ff:24:fa:3d:30:e1:f0:6f:f8:96:cc:ce:5c:
+                    bf:ad:c8:a2:24:0b:86:2c:ff
+                Exponent: 65537 (0x10001)
+        X509v3 extensions:
+            X509v3 Basic Constraints: 
+                CA:TRUE
+            Netscape Comment: 
+                OpenSSL Generated Certificate
+            X509v3 Subject Key Identifier: 
+                DA:46:E9:6B:E6:AF:D3:3D:AA:E5:21:4B:52:ED:CA:66:28:E0:FE:85
+            X509v3 Authority Key Identifier: 
+                keyid:DA:46:E9:6B:E6:AF:D3:3D:AA:E5:21:4B:52:ED:CA:66:28:E0:FE:85
+                DirName:/C=US/ST=California/O=XML Security Library (http://www.aleksey.com/xmlsec)/OU=Test Root Certificate/CN=Aleksey Sanin/emailAddress=xmlsec at aleksey.com
+                serial:D6:8E:B8:E0:91:82:2C:F7
+
+    Signature Algorithm: sha1WithRSAEncryption
+        54:5d:b7:4e:4d:0c:00:ad:c3:6b:6f:16:af:cc:04:69:d8:91:
+        8e:9f:3a:3a:5b:34:e6:f8:e1:52:5c:2d:05:d3:c6:30:4f:c8:
+        d6:6e:1b:7d:ed:ef:25:34:d5:4e:05:4e:18:ff:7f:11:79:9a:
+        98:0b:d3:aa:16:87:c6:d7:f3:bd:01:d4:39:f1:62:ff:15:68:
+        3c:0e:03:f9:30:93:d3:4f:d9:11:53:71:54:d3:58:d4:89:7d:
+        be:91:b7:67:82:16:40:38:99:b4:ce:24:4d:c5:f3:4f:c0:82:
+        16:3c:a6:17:c9:71:0a:41:0c:eb:9f:1c:85:7b:2d:61:3f:b7:
+        20:e8
+-----BEGIN CERTIFICATE-----
+MIIETTCCA7agAwIBAgIJANaOuOCRgiz3MA0GCSqGSIb3DQEBBQUAMIG8MQswCQYD
+VQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTE9MDsGA1UEChM0WE1MIFNlY3Vy
+aXR5IExpYnJhcnkgKGh0dHA6Ly93d3cuYWxla3NleS5jb20veG1sc2VjKTEeMBwG
+A1UECxMVVGVzdCBSb290IENlcnRpZmljYXRlMRYwFAYDVQQDEw1BbGVrc2V5IFNh
+bmluMSEwHwYJKoZIhvcNAQkBFhJ4bWxzZWNAYWxla3NleS5jb20wHhcNMDUwNzEw
+MDIyOTAxWhcNMTUwNzA4MDIyOTAxWjCBvDELMAkGA1UEBhMCVVMxEzARBgNVBAgT
+CkNhbGlmb3JuaWExPTA7BgNVBAoTNFhNTCBTZWN1cml0eSBMaWJyYXJ5IChodHRw
+Oi8vd3d3LmFsZWtzZXkuY29tL3htbHNlYykxHjAcBgNVBAsTFVRlc3QgUm9vdCBD
+ZXJ0aWZpY2F0ZTEWMBQGA1UEAxMNQWxla3NleSBTYW5pbjEhMB8GCSqGSIb3DQEJ
+ARYSeG1sc2VjQGFsZWtzZXkuY29tMIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKB
+gQDayaFajJxOdVU+8EjwO31S2XqNmYxxbHfiUJO3w2h57OPUkKAcKe5Gvt9hJbPT
+b3C4blPScOke2RexKnXS7pAXXbxFlgUlZ0QK0K2pdl559OSmrtH3mPP9BJvvDMlx
+kcNj9/EeD+yGd8GN/yT6PTDh8G/4lszOXL+tyKIkC4Ys/wIDAQABo4IBUzCCAU8w
+DAYDVR0TBAUwAwEB/zAsBglghkgBhvhCAQ0EHxYdT3BlblNTTCBHZW5lcmF0ZWQg
+Q2VydGlmaWNhdGUwHQYDVR0OBBYEFNpG6Wvmr9M9quUhS1LtymYo4P6FMIHxBgNV
+HSMEgekwgeaAFNpG6Wvmr9M9quUhS1LtymYo4P6FoYHCpIG/MIG8MQswCQYDVQQG
+EwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTE9MDsGA1UEChM0WE1MIFNlY3VyaXR5
+IExpYnJhcnkgKGh0dHA6Ly93d3cuYWxla3NleS5jb20veG1sc2VjKTEeMBwGA1UE
+CxMVVGVzdCBSb290IENlcnRpZmljYXRlMRYwFAYDVQQDEw1BbGVrc2V5IFNhbmlu
+MSEwHwYJKoZIhvcNAQkBFhJ4bWxzZWNAYWxla3NleS5jb22CCQDWjrjgkYIs9zAN
+BgkqhkiG9w0BAQUFAAOBgQBUXbdOTQwArcNrbxavzARp2JGOnzo6WzTm+OFSXC0F
+08YwT8jWbht97e8lNNVOBU4Y/38ReZqYC9OqFofG1/O9AdQ58WL/FWg8DgP5MJPT
+T9kRU3FU01jUiX2+kbdnghZAOJm0ziRNxfNPwIIWPKYXyXEKQQzrnxyFey1hP7cg
+6A==
+-----END CERTIFICATE-----
diff --git a/tests/keys/demoCA/careq.pem b/tests/keys/demoCA/careq.pem
new file mode 100644
index 0000000..751683c
--- /dev/null
+++ b/tests/keys/demoCA/careq.pem
@@ -0,0 +1,14 @@
+-----BEGIN CERTIFICATE REQUEST-----
+MIICETCCAXoCAQAwgdAxCzAJBgNVBAYTAlVTMRMwEQYDVQQIEwpDYWxpZm9ybmlh
+MRIwEAYDVQQHEwlTdW5ueXZhbGUxPTA7BgNVBAoTNFhNTCBTZWN1cml0eSBMaWJy
+YXJ5IChodHRwOi8vd3d3LmFsZWtzZXkuY29tL3htbHNlYykxHjAcBgNVBAsTFVRl
+c3QgUm9vdCBDZXJ0aWZpY2F0ZTEWMBQGA1UEAxMNQWxla3NleSBTYW5pbjEhMB8G
+CSqGSIb3DQEJARYSeG1sc2VjQGFsZWtzZXkuY29tMIGfMA0GCSqGSIb3DQEBAQUA
+A4GNADCBiQKBgQDayaFajJxOdVU+8EjwO31S2XqNmYxxbHfiUJO3w2h57OPUkKAc
+Ke5Gvt9hJbPTb3C4blPScOke2RexKnXS7pAXXbxFlgUlZ0QK0K2pdl559OSmrtH3
+mPP9BJvvDMlxkcNj9/EeD+yGd8GN/yT6PTDh8G/4lszOXL+tyKIkC4Ys/wIDAQAB
+oAAwDQYJKoZIhvcNAQEFBQADgYEAwvOxekaXG1dTb9oqedDGoI6iiej8rSySBFbG
+7JezbVlB3MuvbSn28YVDXW/R+TEgeumiT4LxcGWRWzB15uldsTuwb3Tr8a/VBb4g
+tssb19qToEo0qlhJwXyPbSnoytdkBnF0s7EVksSjNF77GJXKHkfq+nUcwB9djTa1
+IXqN41A=
+-----END CERTIFICATE REQUEST-----
diff --git a/tests/keys/demoCA/index.txt b/tests/keys/demoCA/index.txt
index 1fbe46d..fd1f674 100644
--- a/tests/keys/demoCA/index.txt
+++ b/tests/keys/demoCA/index.txt
@@ -1,5 +1,6 @@
-V	120131080059Z		01	unknown	/C=US/ST=California/O=XML Security Library (http://www.aleksey.com/xmlsec)/OU=Second Level Certificate/CN=Aleksey Sanin/emailAddress=xmlsec at aleksey.com
-V	120131080127Z		02	unknown	/C=US/ST=California/O=XML Security Library (http://www.aleksey.com/xmlsec)/OU=Third Level DSA Certificate/CN=Aleksey Sanin/emailAddress=xmlsec at aleksey.com
-V	120131080148Z		03	unknown	/C=US/ST=California/O=XML Security Library (http://www.aleksey.com/xmlsec)/OU=Third Level RSA Certificate/CN=Aleksey Sanin/emailAddress=xmlsec at aleksey.com
-V	020503080301Z		04	unknown	/C=US/ST=California/O=XML Security Library (http://www.aleksey.com/xmlsec)/OU=Expired Certificate/CN=Aleksey Sanin/emailAddress=xmlsec at aleksey.com
-V	130328040222Z		05	unknown	/C=US/ST=California/O=XML Security Library (http://www.aleksey.com/xmlsec)/OU=Examples RSA Certificate/CN=Aleksey Sanin/emailAddress=xmlsec at aleksey.com
+V	150708022901Z		D68EB8E091822CF7	unknown	/C=US/ST=California/O=XML Security Library (http://www.aleksey.com/xmlsec)/OU=Test Root Certificate/CN=Aleksey Sanin/emailAddress=xmlsec at aleksey.com
+V	150708022955Z		D68EB8E091822CF8	unknown	/C=US/ST=California/O=XML Security Library (http://www.aleksey.com/xmlsec)/OU=Test Second Level RSA Certificate/CN=Aleksey Sanin/emailAddress=xmlsec at aleksey.com
+V	150708023159Z		D68EB8E091822CF9	unknown	/C=US/ST=California/O=XML Security Library (http://www.aleksey.com/xmlsec)/OU=Test Third Level DSA Certificate/CN=Aleksey Sanin/emailAddress=xmlsec at aleksey.com
+V	150708023302Z		D68EB8E091822CFA	unknown	/C=US/ST=California/O=XML Security Library (http://www.aleksey.com/xmlsec)/OU=Test Third Level RSA Certificate/CN=Aleksey Sanin/emailAddress=xmlsec at aleksey.com
+V	050711035156Z		D68EB8E091822CFB	unknown	/C=US/ST=California/O=XML Security Library (http://www.aleksey.com/xmlsec)/OU=Test Expired RSA Certificate/CN=Aleksey Sanin/emailAddress=xmlsec at aleksey.com
+V	150709025011Z		D68EB8E091822CFC	unknown	/C=US/ST=California/O=XML Security Library (http://www.aleksey.com/xmlsec)/OU=Test Large RSA Key/CN=Aleksey Sanin/emailAddress=xmlsec at aleksey.com
diff --git a/tests/keys/demoCA/private/cakey.pem b/tests/keys/demoCA/private/cakey.pem
index 81173c5..0270e59 100644
--- a/tests/keys/demoCA/private/cakey.pem
+++ b/tests/keys/demoCA/private/cakey.pem
@@ -1,18 +1,18 @@
 -----BEGIN RSA PRIVATE KEY-----
 Proc-Type: 4,ENCRYPTED
-DEK-Info: DES-EDE3-CBC,6628E8A8A763D969
+DEK-Info: DES-EDE3-CBC,77F426A47A174623
 
-oWRX6TTZcVmqCrFLcZI4cqRy9Hvz/LieALm9hh1K0o4Nzo2DESn5hum/yWYURHD5
-MmsenUhuCD25AyZrS+5owNg6LZnzqu27RQRxrEIQAFJHm92hpovM2KviTM60S43L
-AC8104kbjGirm/X1NjI2nrRiH5OdOwwz4lxDn6+9O3HFp+1d4HUv64n8oX39qxtH
-NK7z8u/iJB9v7E1YS0LMHvnnC5mItIxuV5W3F8SI9VX76oEt438+91dYKhzZG0fe
-AB1rT7jF+6lW1cn4JlkWjh+4dX8mChfDgG29EEOorAvGDTojJRvF1oWAtMr9PtH1
-kng1RfgZviGB+gek5KFir7VbXAbdaFgtwW3IhGXR01RTfdwfibeiDigpK3/o8XXk
-+1uM0kvSAUaPbD+Ru9MwBl3yyzWf2ZYU9MU3rT4aA+ON0vj54QBCxU+K4CAf9pEO
-6z4gjeXY57/dS98kX+weutvmxDnBu+sOhUbivpZLmSAkXWudsCMV1VuvED8QqUY1
-X7YO2rkpl4pHT0odeAL2fipN3ALXPMHlAbT+2nkwcIS4c9rWYbEHY47dggqGE7xA
-Fkh1foDEd8Ie5AT+1mqrfv1nbi7uULe+en5ZvGHcWYu9saP/9R2BHDclT9hLxMUa
-H6KlS32v/Qpmhf0xfpLMkF0ndFJwxrN2vaVPFq9+GjJqepl54Yt7rb5jcEEBHF4S
-J+k/9bmCZyAyOCeCC1/hqX3v7/7bBZcKvaP43JnjJrsabZ41rAQCq71360ZUEpFR
-X8/G0/4QbPL0su+lDxPwT6/M+2tFrJsrZXdQDLmMZJMnQr10Y536xQ==
+FH1NdgJgrX1OGKM0WfzwRUWmLTmfawdaUPeFNJbz1+40J5DEt1DmC6o0QkXoxIPC
+Te/+FS80gNruYgYIWu4WXftCSdvSfGI8LP1JZ7hmMCl055J2mLVKT4o6HqAQnHrb
+hTATVG6CB/GdHTFPG3J65qIyTlG50jyzfwZtliMCCAwi+AaAlo5xzUe0DgedytB2
+sFkLq5EiD6066P/LXPH/Z5SJKiMCFOl0Gjwd3M9ohZufnEJPJT5ap2fm7OSJSfa6
+jPREY+UwhPyKkYOc2c8gojj6HrsSQlXPl176b1+31c19hhhRAtDfJBIU2OrOFVk/
+V88/Dm0I+ROyLme0rYfFg8uHz2aIymzEMds5ZKEFTFbBhaWbVYKIX7+82tftnd+P
+2kT15JAK9V27F0p4SRiQ5RsDkT3rBWsZjtk9Rptkrgec9aKoTaO2fT8bPaWFR/M1
+6X7kjMqhLw1sHmsSeDKx0YCWfS+gWh7RPjGQ2EfH2pxoZkUAR5R3cZCEn3Ia1BeV
+UTFWy+DwjEeSrNkO96E0pH1r8204cJAKK8cWS4HSAPMsQPf5cZjIrrAak/9Wupkq
+fnrB0Ae6GFO2gHYQfbSL+KdEq6w5+S6XZyTauVyaJAjjIFDmegfaKWHzNvqCWJ4T
+YPsiptUrKz6DYyhiUrNJQKcyGWHWrwMNIbldqSBNCa8OIVoaZiRibgO1SIafAGAS
+9MDXXVaY6rqx1yfZYDc9VgKGXTJhBXALCeGMYF43bvAmPq3M13QJA0rlO7lAUUF2
+5INqBUeJxZrYxn6tRr9EMty/UcYnPR3YHgt0RDZycvbcqPsU5tHk9Q==
 -----END RSA PRIVATE KEY-----
diff --git a/tests/keys/demoCA/serial b/tests/keys/demoCA/serial
index cd672a5..fcb2a00 100644
--- a/tests/keys/demoCA/serial
+++ b/tests/keys/demoCA/serial
@@ -1 +1 @@
-06
+D68EB8E091822CFD
diff --git a/tests/keys/dsacert.der b/tests/keys/dsacert.der
index 71298be..fb063be 100644
Binary files a/tests/keys/dsacert.der and b/tests/keys/dsacert.der differ
diff --git a/tests/keys/dsacert.pem b/tests/keys/dsacert.pem
index efd3696..0119b65 100644
--- a/tests/keys/dsacert.pem
+++ b/tests/keys/dsacert.pem
@@ -1,30 +1,78 @@
+Certificate:
+    Data:
+        Version: 3 (0x2)
+        Serial Number:
+            d6:8e:b8:e0:91:82:2c:f9
+        Signature Algorithm: sha1WithRSAEncryption
+        Issuer: C=US, ST=California, O=XML Security Library (http://www.aleksey.com/xmlsec), OU=Test Second Level RSA Certificate, CN=Aleksey Sanin/emailAddress=xmlsec at aleksey.com
+        Validity
+            Not Before: Jul 10 02:31:59 2005 GMT
+            Not After : Jul  8 02:31:59 2015 GMT
+        Subject: C=US, ST=California, O=XML Security Library (http://www.aleksey.com/xmlsec), OU=Test Third Level DSA Certificate, CN=Aleksey Sanin/emailAddress=xmlsec at aleksey.com
+        Subject Public Key Info:
+            Public Key Algorithm: dsaEncryption
+            DSA Public Key:
+                pub: 
+                    3a:27:48:30:c9:93:75:5a:21:f7:55:1c:f9:ce:8a:
+                    d4:6a:57:95:cf:15:f3:03:92:c3:5b:d1:67:a5:9d:
+                    97:65:fe:aa:24:97:d7:9a:53:ef:2e:88:7e:cb:b6:
+                    c5:34:41:85:fd:94:4f:24:4e:99:5c:51:d0:f4:6f:
+                    18:c3:60:9d
+                P:   
+                    00:c8:31:fc:3a:3f:bf:45:73:0d:21:af:16:0a:ab:
+                    77:8f:87:bc:26:7a:f7:3d:e5:48:df:17:62:47:40:
+                    90:57:25:bf:57:14:16:b9:2d:1c:bb:d6:5c:e1:fc:
+                    e6:0c:1f:8a:21:e2:08:a2:15:54:55:04:25:bd:1e:
+                    96:6a:39:33:49
+                Q:   
+                    00:94:43:ab:9a:a8:c9:1b:7b:5f:8d:4e:3d:5e:32:
+                    6e:33:70:17:36:c9
+                G:   
+                    05:33:c3:39:9b:a7:9d:db:67:e6:f3:0d:c3:94:e9:
+                    41:a1:dc:88:3f:4c:57:4b:19:76:1e:be:cd:ed:89:
+                    96:85:2d:af:ff:11:81:7e:97:94:dd:b2:bd:cd:42:
+                    91:91:45:fe:1a:ad:7b:d7:3d:9c:88:26:16:18:1c:
+                    95:64:ec:e3
+        X509v3 extensions:
+            X509v3 Basic Constraints: 
+                CA:TRUE
+            Netscape Comment: 
+                OpenSSL Generated Certificate
+            X509v3 Subject Key Identifier: 
+                A5:58:9F:29:70:2D:1A:42:47:44:03:DA:AE:67:A7:BA:F7:29:65:3E
+            X509v3 Authority Key Identifier: 
+                keyid:FE:E4:EC:53:24:F0:95:95:C7:10:B5:E1:44:B5:5D:39:65:5A:E3:7E
+                DirName:/C=US/ST=California/O=XML Security Library (http://www.aleksey.com/xmlsec)/OU=Test Root Certificate/CN=Aleksey Sanin/emailAddress=xmlsec at aleksey.com
+                serial:D6:8E:B8:E0:91:82:2C:F8
+
+    Signature Algorithm: sha1WithRSAEncryption
+        24:1f:4a:73:8f:d9:d2:14:f0:88:36:11:e5:f5:d5:3f:2c:c0:
+        8c:3f:81:78:28:51:17:5e:33:b5:69:75:3a:5e:91:11:61:51:
+        6c:81:9f:13:3d:d7:0e:00:87:0a:2a:1c:33:c1:31:5e:2e:f3:
+        9f:6e:91:d3:bd:9c:74:1c:fb:fb
 -----BEGIN CERTIFICATE-----
-MIIFKTCCBNOgAwIBAgIBAjANBgkqhkiG9w0BAQQFADCBvzELMAkGA1UEBhMCVVMx
-EzARBgNVBAgTCkNhbGlmb3JuaWExPTA7BgNVBAoTNFhNTCBTZWN1cml0eSBMaWJy
-YXJ5IChodHRwOi8vd3d3LmFsZWtzZXkuY29tL3htbHNlYykxITAfBgNVBAsTGFNl
-Y29uZCBMZXZlbCBDZXJ0aWZpY2F0ZTEWMBQGA1UEAxMNQWxla3NleSBTYW5pbjEh
-MB8GCSqGSIb3DQEJARYSeG1sc2VjQGFsZWtzZXkuY29tMB4XDTAyMDIwMjA4MDEy
-N1oXDTEyMDEzMTA4MDEyN1owgcIxCzAJBgNVBAYTAlVTMRMwEQYDVQQIEwpDYWxp
-Zm9ybmlhMT0wOwYDVQQKEzRYTUwgU2VjdXJpdHkgTGlicmFyeSAoaHR0cDovL3d3
-dy5hbGVrc2V5LmNvbS94bWxzZWMpMSQwIgYDVQQLExtUaGlyZCBMZXZlbCBEU0Eg
-Q2VydGlmaWNhdGUxFjAUBgNVBAMTDUFsZWtzZXkgU2FuaW4xITAfBgkqhkiG9w0B
-CQEWEnhtbHNlY0BhbGVrc2V5LmNvbTCCAbYwggErBgcqhkjOOAQBMIIBHgKBgQCK
-ZbopgE9hcB/qK1IC5izVos9+zz+8ESK6y/+mXVcyK4y8Hu/KImBKPz81ORFyL9Rf
-+tVe/ytsJGO9gVffHn/nd/iFzocrPslAjiqoHsWXk3zrOn4GxDE1Di3Oi6z1LYdN
-3b/N1PBWy874f2XcVqGZWn+bYgcThbbsligXj2o/XQIVAL/8c1qo0b4npJNqzFt8
-KWLKU/VLAoGAUIyzUDlLe6uCCgF4Rh98fiKZvg64UJ4FM5L+WbCSMmVsFN06fTwx
-y3naPPOCzzoufsHv/Bve2gvrDvd078oXWJJf9A44pIZnJkdjEhm2RsDFpXNq0tPK
-ZFcjVsdmqg4MX6YNuwpvZuTwSoDG5u1QMN0mmH9gmbIT3j9x4MO+7EYDgYQAAoGA
-On+KBJE3q1TRhG9RspNX01VI5C0VzSy4N/QyC4YzEENoq3GJkKHIYq+grq9ZqV9x
-g2Geo/3mqhdcENOtYRmWEfOZJj18oukD6TNceYRZ4HjHjK3WY3wK2OV6QOly+k3f
-xgEQpP/7IlCka5YICLuHXrbqjn5b0XcK9L2GDtWOyjujggFXMIIBUzAJBgNVHRME
-AjAAMCwGCWCGSAGG+EIBDQQfFh1PcGVuU1NMIEdlbmVyYXRlZCBDZXJ0aWZpY2F0
-ZTAdBgNVHQ4EFgQUR7VOGhej7APDOGwJ9bRy5E64hJYwgfgGA1UdIwSB8DCB7YAU
-eNctkWEvlSJKu+HVPcYmr6uX0gShgdGkgc4wgcsxCzAJBgNVBAYTAlVTMRMwEQYD
-VQQIEwpDYWxpZm9ybmlhMRIwEAYDVQQHEwlTdW5ueXZhbGUxPTA7BgNVBAoTNFhN
-TCBTZWN1cml0eSBMaWJyYXJ5IChodHRwOi8vd3d3LmFsZWtzZXkuY29tL3htbHNl
-YykxGTAXBgNVBAsTEFJvb3QgQ2VydGlmaWNhdGUxFjAUBgNVBAMTDUFsZWtzZXkg
-U2FuaW4xITAfBgkqhkiG9w0BCQEWEnhtbHNlY0BhbGVrc2V5LmNvbYIBATANBgkq
-hkiG9w0BAQQFAANBAHq6UzC5QtbSUWhx7K5cSNMQKaDLgkCv/Ak0rVhOEWNrPQ6s
-I1OWyk2BUi17BxfN2xGP3u6wArxFarKjupTvr0Q=
+MIIEdDCCBB6gAwIBAgIJANaOuOCRgiz5MA0GCSqGSIb3DQEBBQUAMIHIMQswCQYD
+VQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTE9MDsGA1UEChM0WE1MIFNlY3Vy
+aXR5IExpYnJhcnkgKGh0dHA6Ly93d3cuYWxla3NleS5jb20veG1sc2VjKTEqMCgG
+A1UECxMhVGVzdCBTZWNvbmQgTGV2ZWwgUlNBIENlcnRpZmljYXRlMRYwFAYDVQQD
+Ew1BbGVrc2V5IFNhbmluMSEwHwYJKoZIhvcNAQkBFhJ4bWxzZWNAYWxla3NleS5j
+b20wHhcNMDUwNzEwMDIzMTU5WhcNMTUwNzA4MDIzMTU5WjCBxzELMAkGA1UEBhMC
+VVMxEzARBgNVBAgTCkNhbGlmb3JuaWExPTA7BgNVBAoTNFhNTCBTZWN1cml0eSBM
+aWJyYXJ5IChodHRwOi8vd3d3LmFsZWtzZXkuY29tL3htbHNlYykxKTAnBgNVBAsT
+IFRlc3QgVGhpcmQgTGV2ZWwgRFNBIENlcnRpZmljYXRlMRYwFAYDVQQDEw1BbGVr
+c2V5IFNhbmluMSEwHwYJKoZIhvcNAQkBFhJ4bWxzZWNAYWxla3NleS5jb20wgfAw
+gagGByqGSM44BAEwgZwCQQDIMfw6P79Fcw0hrxYKq3ePh7wmevc95UjfF2JHQJBX
+Jb9XFBa5LRy71lzh/OYMH4oh4giiFVRVBCW9HpZqOTNJAhUAlEOrmqjJG3tfjU49
+XjJuM3AXNskCQAUzwzmbp53bZ+bzDcOU6UGh3Ig/TFdLGXYevs3tiZaFLa//EYF+
+l5Tdsr3NQpGRRf4arXvXPZyIJhYYHJVk7OMDQwACQDonSDDJk3VaIfdVHPnOitRq
+V5XPFfMDksNb0WelnZdl/qokl9eaU+8uiH7LtsU0QYX9lE8kTplcUdD0bxjDYJ2j
+ggFTMIIBTzAMBgNVHRMEBTADAQH/MCwGCWCGSAGG+EIBDQQfFh1PcGVuU1NMIEdl
+bmVyYXRlZCBDZXJ0aWZpY2F0ZTAdBgNVHQ4EFgQUpVifKXAtGkJHRAParmenuvcp
+ZT4wgfEGA1UdIwSB6TCB5oAU/uTsUyTwlZXHELXhRLVdOWVa436hgcKkgb8wgbwx
+CzAJBgNVBAYTAlVTMRMwEQYDVQQIEwpDYWxpZm9ybmlhMT0wOwYDVQQKEzRYTUwg
+U2VjdXJpdHkgTGlicmFyeSAoaHR0cDovL3d3dy5hbGVrc2V5LmNvbS94bWxzZWMp
+MR4wHAYDVQQLExVUZXN0IFJvb3QgQ2VydGlmaWNhdGUxFjAUBgNVBAMTDUFsZWtz
+ZXkgU2FuaW4xITAfBgkqhkiG9w0BCQEWEnhtbHNlY0BhbGVrc2V5LmNvbYIJANaO
+uOCRgiz4MA0GCSqGSIb3DQEBBQUAA0EAJB9Kc4/Z0hTwiDYR5fXVPyzAjD+BeChR
+F14ztWl1Ol6REWFRbIGfEz3XDgCHCiocM8ExXi7zn26R072cdBz7+w==
 -----END CERTIFICATE-----
diff --git a/tests/keys/dsakey.der b/tests/keys/dsakey.der
index d5e0a2e..a056304 100644
Binary files a/tests/keys/dsakey.der and b/tests/keys/dsakey.der differ
diff --git a/tests/keys/dsakey.p12 b/tests/keys/dsakey.p12
index 7be57c6..2ca3659 100644
Binary files a/tests/keys/dsakey.p12 and b/tests/keys/dsakey.p12 differ
diff --git a/tests/keys/dsakey.p8-der b/tests/keys/dsakey.p8-der
index 60fc05f..2a00d2a 100644
Binary files a/tests/keys/dsakey.p8-der and b/tests/keys/dsakey.p8-der differ
diff --git a/tests/keys/dsakey.p8-pem b/tests/keys/dsakey.p8-pem
index 1fbc3e4..cd0e5ec 100644
--- a/tests/keys/dsakey.p8-pem
+++ b/tests/keys/dsakey.p8-pem
@@ -1,10 +1,8 @@
 -----BEGIN ENCRYPTED PRIVATE KEY-----
-MIIBcTAbBgkqhkiG9w0BBQMwDgQI6nOGPxJTxWICAggABIIBUAufB1DbTPLTY6jd
-oHU6QaYeGYd7u6CIwAMnA5Hg3NjSfywWxriMtrtxynDADl6UvANkRGqcL8DwsrFb
-+8J4JMUBOUf2b3SscDksMuunh068xj7Iw5TxGU8QJ9WTB5TlTJ21Oc43xtp/Nzni
-TvkqD0Ci9/bh+EGqRxy3/8tXTrGNW6To7ICowwGm7R/zbLc76OneykgkPmegcoRw
-Gg6DwTADZsebS+kKz08axcFJqXMpxwQn7+xpDHnBQ2/fRFQDVV9DJgF3YfLWlMLQ
-WAbwDNJ0gzO5buJX1DFSneW9CbjH0riKWkRazwXmaVK+mOpp1cDX6ZXvgvRUChG9
-Z3NtRucZ44/05EaQtWMnyhwU1aQLSvga5pjXgvoIr1xRg2aiHQm3aT3O0RD2gHcH
-U1Hiq+cGKYuvxg5A3RrTir/lZzHDHWwknfx48B1O4M3x5LlGGA==
+MIHwMBsGCSqGSIb3DQEFAzAOBAgRtaP0qtejsQICCAAEgdBZeMkYVwHBSOuUj5p8
+hNEswZwOAT+yY063ziixN/rCwXJMvnmWRvHGXBoSJ2FNtXjhZrl8W3Vk7SZBCGyw
+Brez9jVTm9iZr9UcTP/e3RZo4yzLBy9iE+qJg86mGkJw+HSHaGReHtq2NV+CcnC9
+jWiBGb9WHTy/NJNpK/ne7UOamVVPYLDAoRIdZvSo8bV3NDp0Oui7flRxV+OJBsti
+NQZYJskY0O74jOjvvaBdih/NIWDHKED1EtnxuKrMSOQtq57zSwdVQ6nS1hedJzms
+AzZ1
 -----END ENCRYPTED PRIVATE KEY-----
diff --git a/tests/keys/dsakey.pem b/tests/keys/dsakey.pem
index f9f1598..8fdd52a 100644
--- a/tests/keys/dsakey.pem
+++ b/tests/keys/dsakey.pem
@@ -1,12 +1,14 @@
+-----BEGIN DSA PARAMETERS-----
+MIGcAkEAyDH8Oj+/RXMNIa8WCqt3j4e8Jnr3PeVI3xdiR0CQVyW/VxQWuS0cu9Zc
+4fzmDB+KIeIIohVUVQQlvR6WajkzSQIVAJRDq5qoyRt7X41OPV4ybjNwFzbJAkAF
+M8M5m6ed22fm8w3DlOlBodyIP0xXSxl2Hr7N7YmWhS2v/xGBfpeU3bK9zUKRkUX+
+Gq171z2ciCYWGByVZOzj
+-----END DSA PARAMETERS-----
 -----BEGIN DSA PRIVATE KEY-----
-MIIBugIBAAKBgQCKZbopgE9hcB/qK1IC5izVos9+zz+8ESK6y/+mXVcyK4y8Hu/K
-ImBKPz81ORFyL9Rf+tVe/ytsJGO9gVffHn/nd/iFzocrPslAjiqoHsWXk3zrOn4G
-xDE1Di3Oi6z1LYdN3b/N1PBWy874f2XcVqGZWn+bYgcThbbsligXj2o/XQIVAL/8
-c1qo0b4npJNqzFt8KWLKU/VLAoGAUIyzUDlLe6uCCgF4Rh98fiKZvg64UJ4FM5L+
-WbCSMmVsFN06fTwxy3naPPOCzzoufsHv/Bve2gvrDvd078oXWJJf9A44pIZnJkdj
-Ehm2RsDFpXNq0tPKZFcjVsdmqg4MX6YNuwpvZuTwSoDG5u1QMN0mmH9gmbIT3j9x
-4MO+7EYCgYA6f4oEkTerVNGEb1Gyk1fTVUjkLRXNLLg39DILhjMQQ2ircYmQochi
-r6Cur1mpX3GDYZ6j/eaqF1wQ061hGZYR85kmPXyi6QPpM1x5hFngeMeMrdZjfArY
-5XpA6XL6Td/GARCk//siUKRrlggIu4detuqOflvRdwr0vYYO1Y7KOwIUJdfeUuE2
-MNbOaPQRkcR1InJmiq4=
+MIH3AgEAAkEAyDH8Oj+/RXMNIa8WCqt3j4e8Jnr3PeVI3xdiR0CQVyW/VxQWuS0c
+u9Zc4fzmDB+KIeIIohVUVQQlvR6WajkzSQIVAJRDq5qoyRt7X41OPV4ybjNwFzbJ
+AkAFM8M5m6ed22fm8w3DlOlBodyIP0xXSxl2Hr7N7YmWhS2v/xGBfpeU3bK9zUKR
+kUX+Gq171z2ciCYWGByVZOzjAkA6J0gwyZN1WiH3VRz5zorUaleVzxXzA5LDW9Fn
+pZ2XZf6qJJfXmlPvLoh+y7bFNEGF/ZRPJE6ZXFHQ9G8Yw2CdAhQDAKSQn+F+aV8C
+BUJ9PVUDOVc8rw==
 -----END DSA PRIVATE KEY-----
diff --git a/tests/keys/dsaparam.txt b/tests/keys/dsaparam.txt
deleted file mode 100644
index e5fe94f..0000000
--- a/tests/keys/dsaparam.txt
+++ /dev/null
@@ -1,21 +0,0 @@
------BEGIN DSA PARAMETERS-----
-MIIBHgKBgQCKZbopgE9hcB/qK1IC5izVos9+zz+8ESK6y/+mXVcyK4y8Hu/KImBK
-Pz81ORFyL9Rf+tVe/ytsJGO9gVffHn/nd/iFzocrPslAjiqoHsWXk3zrOn4GxDE1
-Di3Oi6z1LYdN3b/N1PBWy874f2XcVqGZWn+bYgcThbbsligXj2o/XQIVAL/8c1qo
-0b4npJNqzFt8KWLKU/VLAoGAUIyzUDlLe6uCCgF4Rh98fiKZvg64UJ4FM5L+WbCS
-MmVsFN06fTwxy3naPPOCzzoufsHv/Bve2gvrDvd078oXWJJf9A44pIZnJkdjEhm2
-RsDFpXNq0tPKZFcjVsdmqg4MX6YNuwpvZuTwSoDG5u1QMN0mmH9gmbIT3j9x4MO+
-7EY=
------END DSA PARAMETERS-----
------BEGIN DSA PRIVATE KEY-----
-MIIBugIBAAKBgQCKZbopgE9hcB/qK1IC5izVos9+zz+8ESK6y/+mXVcyK4y8Hu/K
-ImBKPz81ORFyL9Rf+tVe/ytsJGO9gVffHn/nd/iFzocrPslAjiqoHsWXk3zrOn4G
-xDE1Di3Oi6z1LYdN3b/N1PBWy874f2XcVqGZWn+bYgcThbbsligXj2o/XQIVAL/8
-c1qo0b4npJNqzFt8KWLKU/VLAoGAUIyzUDlLe6uCCgF4Rh98fiKZvg64UJ4FM5L+
-WbCSMmVsFN06fTwxy3naPPOCzzoufsHv/Bve2gvrDvd078oXWJJf9A44pIZnJkdj
-Ehm2RsDFpXNq0tPKZFcjVsdmqg4MX6YNuwpvZuTwSoDG5u1QMN0mmH9gmbIT3j9x
-4MO+7EYCgYA6f4oEkTerVNGEb1Gyk1fTVUjkLRXNLLg39DILhjMQQ2ircYmQochi
-r6Cur1mpX3GDYZ6j/eaqF1wQ061hGZYR85kmPXyi6QPpM1x5hFngeMeMrdZjfArY
-5XpA6XL6Td/GARCk//siUKRrlggIu4detuqOflvRdwr0vYYO1Y7KOwIUJdfeUuE2
-MNbOaPQRkcR1InJmiq4=
------END DSA PRIVATE KEY-----
diff --git a/tests/keys/expired.key b/tests/keys/expired.key
deleted file mode 100644
index 801eaea..0000000
--- a/tests/keys/expired.key
+++ /dev/null
@@ -1,12 +0,0 @@
------BEGIN RSA PRIVATE KEY-----
-Proc-Type: 4,ENCRYPTED
-DEK-Info: DES-EDE3-CBC,735E6A426DCDDF55
-
-DeNNeT8RSSdjqzf89j1V7mGzgZtOvaU03V3zryClv21EbZw18M3IsgysHvF8ohg7
-1YD5Ov96gI7VJIvOCsxwjjK4KarRKfUqGurXoMqo1pYrBB8vI99GCBMyNBC8r+Ji
-ELzaN2fiQqPLXKVH3edHIiqVxfrhktRPXr6xD1kLiAlzlMCatVy//gR4A0+zRV6q
-2XW82ldb/K1gn4oeXrCq46IFi+q5xidIV5BzQdJato5JtTkx5ynoPq9RNkIrodpj
-8DCrIqaz8Kq+wdXzw+tfVMFKvz6q1QE/oB0EQeGpZNiz+oZJPCcPWqWZhcpqQILp
-+sKigJssDV8LhEnTTGKWHaZmU4poBQQbYCuBAiVCnFhdBYY6VINCkOd9icc5SC/M
-YSzeI7NNQIQlTGtEkvVKbInjNzx7m2l9t1/hd2uowqc=
------END RSA PRIVATE KEY-----
diff --git a/tests/keys/expired.pem b/tests/keys/expired.pem
deleted file mode 100644
index 9bc0f28..0000000
--- a/tests/keys/expired.pem
+++ /dev/null
@@ -1,23 +0,0 @@
------BEGIN CERTIFICATE-----
-MIIDxTCCA2+gAwIBAgIBBDANBgkqhkiG9w0BAQQFADCBvzELMAkGA1UEBhMCVVMx
-EzARBgNVBAgTCkNhbGlmb3JuaWExPTA7BgNVBAoTNFhNTCBTZWN1cml0eSBMaWJy
-YXJ5IChodHRwOi8vd3d3LmFsZWtzZXkuY29tL3htbHNlYykxITAfBgNVBAsTGFNl
-Y29uZCBMZXZlbCBDZXJ0aWZpY2F0ZTEWMBQGA1UEAxMNQWxla3NleSBTYW5pbjEh
-MB8GCSqGSIb3DQEJARYSeG1sc2VjQGFsZWtzZXkuY29tMB4XDTAyMDIwMjA4MDMw
-MVoXDTAyMDUwMzA4MDMwMVowgboxCzAJBgNVBAYTAlVTMRMwEQYDVQQIEwpDYWxp
-Zm9ybmlhMT0wOwYDVQQKEzRYTUwgU2VjdXJpdHkgTGlicmFyeSAoaHR0cDovL3d3
-dy5hbGVrc2V5LmNvbS94bWxzZWMpMRwwGgYDVQQLExNFeHBpcmVkIENlcnRpZmlj
-YXRlMRYwFAYDVQQDEw1BbGVrc2V5IFNhbmluMSEwHwYJKoZIhvcNAQkBFhJ4bWxz
-ZWNAYWxla3NleS5jb20wXDANBgkqhkiG9w0BAQEFAANLADBIAkEAwCDjK5s0Hhx4
-zKarIKVsS48FYD0euQC7iifYRtWet8GrsvjmUmQZVDZESz1oCH59L2+ITEFQL5CM
-NX8l2OdHoQIDAQABo4IBVzCCAVMwCQYDVR0TBAIwADAsBglghkgBhvhCAQ0EHxYd
-T3BlblNTTCBHZW5lcmF0ZWQgQ2VydGlmaWNhdGUwHQYDVR0OBBYEFK+3plhzHaoU
-Mzd9OM7XqgBoJjlhMIH4BgNVHSMEgfAwge2AFHjXLZFhL5UiSrvh1T3GJq+rl9IE
-oYHRpIHOMIHLMQswCQYDVQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTESMBAG
-A1UEBxMJU3Vubnl2YWxlMT0wOwYDVQQKEzRYTUwgU2VjdXJpdHkgTGlicmFyeSAo
-aHR0cDovL3d3dy5hbGVrc2V5LmNvbS94bWxzZWMpMRkwFwYDVQQLExBSb290IENl
-cnRpZmljYXRlMRYwFAYDVQQDEw1BbGVrc2V5IFNhbmluMSEwHwYJKoZIhvcNAQkB
-FhJ4bWxzZWNAYWxla3NleS5jb22CAQEwDQYJKoZIhvcNAQEEBQADQQAXQgfwjZAU
-wygZ7AdM4DNUacBsB4TDL8sKH0S2FYoTjDv0PdPcqtIUtZwEdVepfkajcAA97kYf
-EXnaNAgAaL8x
------END CERTIFICATE-----
diff --git a/tests/keys/expiredcert.der b/tests/keys/expiredcert.der
new file mode 100644
index 0000000..aefc5ea
Binary files /dev/null and b/tests/keys/expiredcert.der differ
diff --git a/tests/keys/expiredcert.pem b/tests/keys/expiredcert.pem
new file mode 100644
index 0000000..f5581ca
--- /dev/null
+++ b/tests/keys/expiredcert.pem
@@ -0,0 +1,61 @@
+Certificate:
+    Data:
+        Version: 3 (0x2)
+        Serial Number:
+            d6:8e:b8:e0:91:82:2c:fb
+        Signature Algorithm: sha1WithRSAEncryption
+        Issuer: C=US, ST=California, O=XML Security Library (http://www.aleksey.com/xmlsec), OU=Test Second Level RSA Certificate, CN=Aleksey Sanin/emailAddress=xmlsec at aleksey.com
+        Validity
+            Not Before: Jul 10 03:51:56 2005 GMT
+            Not After : Jul 11 03:51:56 2005 GMT
+        Subject: C=US, ST=California, O=XML Security Library (http://www.aleksey.com/xmlsec), OU=Test Expired RSA Certificate, CN=Aleksey Sanin/emailAddress=xmlsec at aleksey.com
+        Subject Public Key Info:
+            Public Key Algorithm: rsaEncryption
+            RSA Public Key: (512 bit)
+                Modulus (512 bit):
+                    00:c9:52:65:60:40:40:66:30:bf:34:3e:f4:7c:cc:
+                    8c:06:93:20:e2:13:96:e8:11:64:78:a4:69:9a:19:
+                    43:87:6d:19:c5:42:4b:76:9a:df:b8:fd:07:98:b6:
+                    6e:c6:45:54:54:7b:a6:09:8a:05:28:bd:4d:6e:dc:
+                    34:03:88:e8:f3
+                Exponent: 65537 (0x10001)
+        X509v3 extensions:
+            X509v3 Basic Constraints: 
+            CA:TRUE
+            Netscape Comment: 
+            OpenSSL Generated Certificate
+            X509v3 Subject Key Identifier: 
+            F9:FA:89:12:34:4A:3B:59:06:DF:2E:17:F2:C0:8F:B2:26:07:78:C9
+            X509v3 Authority Key Identifier: 
+            keyid:FE:E4:EC:53:24:F0:95:95:C7:10:B5:E1:44:B5:5D:39:65:5A:E3:7E
+            DirName:/C=US/ST=California/O=XML Security Library (http://www.aleksey.com/xmlsec)/OU=Test Root Certificate/CN=Aleksey Sanin/emailAddress=xmlsec at aleksey.com
+            serial:D6:8E:B8:E0:91:82:2C:F8
+
+    Signature Algorithm: sha1WithRSAEncryption
+        98:b4:e9:2f:8a:2a:8b:e5:63:ac:b2:12:61:8c:58:e4:57:c0:
+        a8:00:98:00:ea:48:6c:87:56:33:64:2d:8e:8c:c1:75:0c:45:
+        55:22:b6:44:79:f6:cf:55:b6:81:6c:bb:37:c5:50:99:fa:e0:
+        80:de:f7:2c:82:8e:5e:ea:15:e4
+-----BEGIN CERTIFICATE-----
+MIID2zCCA4WgAwIBAgIJANaOuOCRgiz7MA0GCSqGSIb3DQEBBQUAMIHIMQswCQYD
+VQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTE9MDsGA1UEChM0WE1MIFNlY3Vy
+aXR5IExpYnJhcnkgKGh0dHA6Ly93d3cuYWxla3NleS5jb20veG1sc2VjKTEqMCgG
+A1UECxMhVGVzdCBTZWNvbmQgTGV2ZWwgUlNBIENlcnRpZmljYXRlMRYwFAYDVQQD
+Ew1BbGVrc2V5IFNhbmluMSEwHwYJKoZIhvcNAQkBFhJ4bWxzZWNAYWxla3NleS5j
+b20wHhcNMDUwNzEwMDM1MTU2WhcNMDUwNzExMDM1MTU2WjCBwzELMAkGA1UEBhMC
+VVMxEzARBgNVBAgTCkNhbGlmb3JuaWExPTA7BgNVBAoTNFhNTCBTZWN1cml0eSBM
+aWJyYXJ5IChodHRwOi8vd3d3LmFsZWtzZXkuY29tL3htbHNlYykxJTAjBgNVBAsT
+HFRlc3QgRXhwaXJlZCBSU0EgQ2VydGlmaWNhdGUxFjAUBgNVBAMTDUFsZWtzZXkg
+U2FuaW4xITAfBgkqhkiG9w0BCQEWEnhtbHNlY0BhbGVrc2V5LmNvbTBcMA0GCSqG
+SIb3DQEBAQUAA0sAMEgCQQDJUmVgQEBmML80PvR8zIwGkyDiE5boEWR4pGmaGUOH
+bRnFQkt2mt+4/QeYtm7GRVRUe6YJigUovU1u3DQDiOjzAgMBAAGjggFTMIIBTzAM
+BgNVHRMEBTADAQH/MCwGCWCGSAGG+EIBDQQfFh1PcGVuU1NMIEdlbmVyYXRlZCBD
+ZXJ0aWZpY2F0ZTAdBgNVHQ4EFgQU+fqJEjRKO1kG3y4X8sCPsiYHeMkwgfEGA1Ud
+IwSB6TCB5oAU/uTsUyTwlZXHELXhRLVdOWVa436hgcKkgb8wgbwxCzAJBgNVBAYT
+AlVTMRMwEQYDVQQIEwpDYWxpZm9ybmlhMT0wOwYDVQQKEzRYTUwgU2VjdXJpdHkg
+TGlicmFyeSAoaHR0cDovL3d3dy5hbGVrc2V5LmNvbS94bWxzZWMpMR4wHAYDVQQL
+ExVUZXN0IFJvb3QgQ2VydGlmaWNhdGUxFjAUBgNVBAMTDUFsZWtzZXkgU2FuaW4x
+ITAfBgkqhkiG9w0BCQEWEnhtbHNlY0BhbGVrc2V5LmNvbYIJANaOuOCRgiz4MA0G
+CSqGSIb3DQEBBQUAA0EAmLTpL4oqi+VjrLISYYxY5FfAqACYAOpIbIdWM2QtjozB
+dQxFVSK2RHn2z1W2gWy7N8VQmfrggN73LIKOXuoV5A==
+-----END CERTIFICATE-----
diff --git a/tests/keys/expiredkey.der b/tests/keys/expiredkey.der
new file mode 100644
index 0000000..316e41b
Binary files /dev/null and b/tests/keys/expiredkey.der differ
diff --git a/tests/keys/expiredkey.p12 b/tests/keys/expiredkey.p12
new file mode 100644
index 0000000..4604e11
Binary files /dev/null and b/tests/keys/expiredkey.p12 differ
diff --git a/tests/keys/expiredkey.pem b/tests/keys/expiredkey.pem
new file mode 100644
index 0000000..1334454
--- /dev/null
+++ b/tests/keys/expiredkey.pem
@@ -0,0 +1,9 @@
+-----BEGIN RSA PRIVATE KEY-----
+MIIBOQIBAAJBAMlSZWBAQGYwvzQ+9HzMjAaTIOITlugRZHikaZoZQ4dtGcVCS3aa
+37j9B5i2bsZFVFR7pgmKBSi9TW7cNAOI6PMCAwEAAQJALeTWr2Z2R9V9ARAI9Bo9
+IZKQwHjuweCVItt4J2Ty+///KhuEnHhYJC40sH4QrpufuATLXJCzUaFHNPIAAY2G
+wQIhAPc3NqqCKzaTakzy9OZWW1d2ZZpiy6OMG1NBOGXrNq6bAiEA0Hm2HJpJ4l6P
+FN6ZAVTnV+VXt98DvyFRSlU8XFMr6IkCIDn/Mwz3csnf9a1NxlSPZ+hx904r5Vhe
+Ez8J6wBGGVMHAiAGtXP71ac9Bqf6FvO7jDzpojLBcwbO1saj6rxHiFGoaQIgFxuV
+W/NisfilEN3POFcTeuWob3qf4CSl/3/bQH6tUFU=
+-----END RSA PRIVATE KEY-----
diff --git a/tests/keys/expiredreq.pem b/tests/keys/expiredreq.pem
new file mode 100644
index 0000000..3fcfbd2
--- /dev/null
+++ b/tests/keys/expiredreq.pem
@@ -0,0 +1,11 @@
+-----BEGIN CERTIFICATE REQUEST-----
+MIIBkzCCAT0CAQAwgdcxCzAJBgNVBAYTAlVTMRMwEQYDVQQIEwpDYWxpZm9ybmlh
+MRIwEAYDVQQHEwlTdW5ueXZhbGUxPTA7BgNVBAoTNFhNTCBTZWN1cml0eSBMaWJy
+YXJ5IChodHRwOi8vd3d3LmFsZWtzZXkuY29tL3htbHNlYykxJTAjBgNVBAsTHFRl
+c3QgRXhwaXJlZCBSU0EgQ2VydGlmaWNhdGUxFjAUBgNVBAMTDUFsZWtzZXkgU2Fu
+aW4xITAfBgkqhkiG9w0BCQEWEnhtbHNlY0BhbGVrc2V5LmNvbTBcMA0GCSqGSIb3
+DQEBAQUAA0sAMEgCQQDJUmVgQEBmML80PvR8zIwGkyDiE5boEWR4pGmaGUOHbRnF
+Qkt2mt+4/QeYtm7GRVRUe6YJigUovU1u3DQDiOjzAgMBAAGgADANBgkqhkiG9w0B
+AQQFAANBAMQmO+O1QV1h3x/NcwY9v9xSp1xmhnbdTYQXl2jRa75epxxSKwT8rzj5
+zlopg6hyt8mBTiMlXfUGfUDzccdfYG0=
+-----END CERTIFICATE REQUEST-----
diff --git a/tests/keys/largersacert.der b/tests/keys/largersacert.der
new file mode 100644
index 0000000..9346452
Binary files /dev/null and b/tests/keys/largersacert.der differ
diff --git a/tests/keys/largersacert.pem b/tests/keys/largersacert.pem
new file mode 100644
index 0000000..7c1a4e0
--- /dev/null
+++ b/tests/keys/largersacert.pem
@@ -0,0 +1,100 @@
+Certificate:
+    Data:
+        Version: 3 (0x2)
+        Serial Number:
+            d6:8e:b8:e0:91:82:2c:fc
+        Signature Algorithm: sha1WithRSAEncryption
+        Issuer: C=US, ST=California, O=XML Security Library (http://www.aleksey.com/xmlsec), OU=Test Second Level RSA Certificate, CN=Aleksey Sanin/emailAddress=xmlsec at aleksey.com
+        Validity
+            Not Before: Jul 11 02:50:11 2005 GMT
+            Not After : Jul  9 02:50:11 2015 GMT
+        Subject: C=US, ST=California, O=XML Security Library (http://www.aleksey.com/xmlsec), OU=Test Large RSA Key, CN=Aleksey Sanin/emailAddress=xmlsec at aleksey.com
+        Subject Public Key Info:
+            Public Key Algorithm: rsaEncryption
+            RSA Public Key: (4096 bit)
+                Modulus (4096 bit):
+                    00:f3:61:f9:36:54:ae:5d:17:68:1b:18:28:24:72:
+                    4e:39:5d:bf:20:17:c8:7c:20:59:fb:a3:42:e4:2c:
+                    b7:0d:6d:97:7e:e1:9b:ba:59:c3:e7:e8:64:ff:76:
+                    35:58:e0:90:fa:2b:13:92:5f:ba:b7:7f:54:25:6e:
+                    ce:cd:1b:a3:78:92:34:31:7f:9d:dc:80:61:3c:72:
+                    69:6d:b8:35:a8:f8:1f:03:6c:e5:d7:41:53:24:84:
+                    8a:72:70:3c:e2:39:8b:ec:70:9d:d3:cf:2e:08:f6:
+                    05:80:af:36:8f:ed:8e:ef:df:50:33:94:58:15:8f:
+                    87:c4:b4:65:3d:a1:d1:23:00:6a:67:35:60:06:58:
+                    bd:43:8a:86:52:29:f4:a1:e1:5f:7f:59:6e:ca:4a:
+                    78:16:9d:da:04:d9:61:d4:a3:ea:69:72:7f:1b:aa:
+                    ff:c8:07:51:13:50:c1:3e:7d:9b:f7:70:dc:ba:5d:
+                    94:a9:2b:ac:ea:56:e0:3c:7f:5d:91:ef:bd:82:25:
+                    f2:37:eb:2c:d9:ad:b7:dd:3e:bc:86:7a:af:89:8f:
+                    f9:32:5e:9c:d0:41:0c:8c:b7:84:5e:29:e9:4f:fc:
+                    b5:5c:f4:f9:82:32:b9:35:ed:84:0a:32:23:32:b5:
+                    a4:b1:c8:c5:a0:16:b5:77:8d:21:8f:53:80:c4:a1:
+                    a4:65:ee:af:0a:84:1d:34:30:e3:07:35:ce:16:8e:
+                    69:7b:b7:21:91:56:26:c2:d7:3f:79:0e:e0:b2:77:
+                    a5:ca:60:88:15:30:8f:65:aa:8f:9d:9f:d0:50:3d:
+                    2a:9b:4f:61:ca:43:19:b9:69:58:1b:98:77:43:42:
+                    1e:08:7c:30:58:52:d4:b3:eb:d1:a2:9e:28:dd:1b:
+                    96:fd:f9:28:fd:76:d8:ec:91:21:d1:8d:42:4c:f5:
+                    05:70:2e:d2:bb:9a:c5:c8:e1:77:5d:4e:5f:c2:ab:
+                    9f:c0:75:51:11:6e:ea:6b:0e:d4:bc:93:de:a4:95:
+                    e3:d2:52:57:ac:74:c5:a6:e5:a2:94:3f:d8:43:0e:
+                    42:8c:75:ad:0c:69:d1:a8:8e:e7:49:77:2b:38:af:
+                    c9:ac:43:77:27:90:82:1d:62:e6:31:a0:1b:17:be:
+                    7e:63:2c:29:ec:1b:3d:4b:52:39:ec:7a:2a:fc:48:
+                    2f:bd:ce:d9:1f:21:02:fb:2c:6e:d9:40:14:c5:6a:
+                    ce:20:bc:0c:e4:ae:87:35:d2:da:5f:db:95:50:f3:
+                    e3:ed:2c:93:ad:42:5b:af:65:fe:f8:4b:0a:dc:60:
+                    7f:dd:48:38:88:d0:fc:a4:aa:fc:5f:07:97:cf:ae:
+                    b7:43:3d:87:eb:be:51:e3:f1:8c:1f:63:43:29:24:
+                    8c:94:23
+                Exponent: 65537 (0x10001)
+        X509v3 extensions:
+            X509v3 Basic Constraints: 
+            CA:TRUE
+            Netscape Comment: 
+            OpenSSL Generated Certificate
+            X509v3 Subject Key Identifier: 
+            90:35:36:11:52:F9:00:65:FC:71:E7:73:B0:91:ED:0B:19:84:C6:28
+            X509v3 Authority Key Identifier: 
+            keyid:FE:E4:EC:53:24:F0:95:95:C7:10:B5:E1:44:B5:5D:39:65:5A:E3:7E
+            DirName:/C=US/ST=California/O=XML Security Library (http://www.aleksey.com/xmlsec)/OU=Test Root Certificate/CN=Aleksey Sanin/emailAddress=xmlsec at aleksey.com
+            serial:D6:8E:B8:E0:91:82:2C:F8
+
+    Signature Algorithm: sha1WithRSAEncryption
+        79:cd:41:fc:f0:66:13:f1:76:bd:22:51:dd:91:2f:7a:46:fd:
+        b0:ea:44:e6:73:5d:ac:00:2d:6e:0c:90:a5:e1:3b:f2:4c:75:
+        79:12:08:eb:7f:fa:82:7d:e0:f7:76:db:63:6c:07:e9:65:0a:
+        98:88:4e:b1:0f:d2:57:3d:df:4f
+-----BEGIN CERTIFICATE-----
+MIIFmTCCBUOgAwIBAgIJANaOuOCRgiz8MA0GCSqGSIb3DQEBBQUAMIHIMQswCQYD
+VQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTE9MDsGA1UEChM0WE1MIFNlY3Vy
+aXR5IExpYnJhcnkgKGh0dHA6Ly93d3cuYWxla3NleS5jb20veG1sc2VjKTEqMCgG
+A1UECxMhVGVzdCBTZWNvbmQgTGV2ZWwgUlNBIENlcnRpZmljYXRlMRYwFAYDVQQD
+Ew1BbGVrc2V5IFNhbmluMSEwHwYJKoZIhvcNAQkBFhJ4bWxzZWNAYWxla3NleS5j
+b20wHhcNMDUwNzExMDI1MDExWhcNMTUwNzA5MDI1MDExWjCBuTELMAkGA1UEBhMC
+VVMxEzARBgNVBAgTCkNhbGlmb3JuaWExPTA7BgNVBAoTNFhNTCBTZWN1cml0eSBM
+aWJyYXJ5IChodHRwOi8vd3d3LmFsZWtzZXkuY29tL3htbHNlYykxGzAZBgNVBAsT
+ElRlc3QgTGFyZ2UgUlNBIEtleTEWMBQGA1UEAxMNQWxla3NleSBTYW5pbjEhMB8G
+CSqGSIb3DQEJARYSeG1sc2VjQGFsZWtzZXkuY29tMIICIjANBgkqhkiG9w0BAQEF
+AAOCAg8AMIICCgKCAgEA82H5NlSuXRdoGxgoJHJOOV2/IBfIfCBZ+6NC5Cy3DW2X
+fuGbulnD5+hk/3Y1WOCQ+isTkl+6t39UJW7OzRujeJI0MX+d3IBhPHJpbbg1qPgf
+A2zl10FTJISKcnA84jmL7HCd088uCPYFgK82j+2O799QM5RYFY+HxLRlPaHRIwBq
+ZzVgBli9Q4qGUin0oeFff1luykp4Fp3aBNlh1KPqaXJ/G6r/yAdRE1DBPn2b93Dc
+ul2UqSus6lbgPH9dke+9giXyN+ss2a233T68hnqviY/5Ml6c0EEMjLeEXinpT/y1
+XPT5gjK5Ne2ECjIjMrWkscjFoBa1d40hj1OAxKGkZe6vCoQdNDDjBzXOFo5pe7ch
+kVYmwtc/eQ7gsnelymCIFTCPZaqPnZ/QUD0qm09hykMZuWlYG5h3Q0IeCHwwWFLU
+s+vRop4o3RuW/fko/XbY7JEh0Y1CTPUFcC7Su5rFyOF3XU5fwqufwHVREW7qaw7U
+vJPepJXj0lJXrHTFpuWilD/YQw5CjHWtDGnRqI7nSXcrOK/JrEN3J5CCHWLmMaAb
+F75+Yywp7Bs9S1I57Hoq/Egvvc7ZHyEC+yxu2UAUxWrOILwM5K6HNdLaX9uVUPPj
+7SyTrUJbr2X++EsK3GB/3Ug4iND8pKr8XweXz663Qz2H675R4/GMH2NDKSSMlCMC
+AwEAAaOCAVMwggFPMAwGA1UdEwQFMAMBAf8wLAYJYIZIAYb4QgENBB8WHU9wZW5T
+U0wgR2VuZXJhdGVkIENlcnRpZmljYXRlMB0GA1UdDgQWBBSQNTYRUvkAZfxx53Ow
+ke0LGYTGKDCB8QYDVR0jBIHpMIHmgBT+5OxTJPCVlccQteFEtV05ZVrjfqGBwqSB
+vzCBvDELMAkGA1UEBhMCVVMxEzARBgNVBAgTCkNhbGlmb3JuaWExPTA7BgNVBAoT
+NFhNTCBTZWN1cml0eSBMaWJyYXJ5IChodHRwOi8vd3d3LmFsZWtzZXkuY29tL3ht
+bHNlYykxHjAcBgNVBAsTFVRlc3QgUm9vdCBDZXJ0aWZpY2F0ZTEWMBQGA1UEAxMN
+QWxla3NleSBTYW5pbjEhMB8GCSqGSIb3DQEJARYSeG1sc2VjQGFsZWtzZXkuY29t
+ggkA1o644JGCLPgwDQYJKoZIhvcNAQEFBQADQQB5zUH88GYT8Xa9IlHdkS96Rv2w
+6kTmc12sAC1uDJCl4TvyTHV5Egjrf/qCfeD3dttjbAfpZQqYiE6xD9JXPd9P
+-----END CERTIFICATE-----
diff --git a/tests/keys/largersakey.der b/tests/keys/largersakey.der
new file mode 100644
index 0000000..c76b59f
Binary files /dev/null and b/tests/keys/largersakey.der differ
diff --git a/tests/keys/largersakey.p12 b/tests/keys/largersakey.p12
new file mode 100644
index 0000000..613fc7c
Binary files /dev/null and b/tests/keys/largersakey.p12 differ
diff --git a/tests/keys/largersakey.p8-der b/tests/keys/largersakey.p8-der
new file mode 100644
index 0000000..1c75f06
Binary files /dev/null and b/tests/keys/largersakey.p8-der differ
diff --git a/tests/keys/largersakey.p8-pem b/tests/keys/largersakey.p8-pem
new file mode 100644
index 0000000..7991d7a
--- /dev/null
+++ b/tests/keys/largersakey.p8-pem
@@ -0,0 +1,53 @@
+-----BEGIN ENCRYPTED PRIVATE KEY-----
+MIIJaTAbBgkqhkiG9w0BBQMwDgQII/X7tBz2lDgCAggABIIJSIFZASAVzO/ZwE3K
+ldJI6KQ8KJSH2b8iP5VLqAYKn7GlrAOioT9XBBF1QgE5r8B9qAxp/if8fC7CF0Wo
+iruZI1hJpBjuSFgNSgomHr2jXxPVX59YxmBkM3KQ5FC4gL70+LDqzhhozIaAyrbe
+c+w94NjCq3cR9w3S6lnjpc/JZaTNz9Yb/Psl6PfCdEdnGpyxiGLpKZDCnVvBgPXU
+7C9yJ9/GDUQynBl1xiEWR89jVpatZjOJgz8NJU3upE5SWVVYIThXGgrm6Xolyh3M
+L9qZksyKQg1r48Bd9w9kxRUOhgJzQ5ovFDHoftRmc7RMxLvorsI7SYYbSTNAz2JF
+q/H7yakrPD5TYMzt8ctFp6Jh9yq98pobyzLbugSxP1QrapfJe1LWQm4qKV6tZcqw
+T/mHbS1+7a1EtCFi7l4rlTT/Xu2gGAdiroT+cfNWJlwo63kCaiVpYzmEhBJVJOtS
+YVRTRjf8UofWhkEXNSrn07xeFS7bIzG5icdvjvRKaRwHhXgSyVIp9eFumX8oW0ZG
+nrEVqc8mjzEP2tBkytgfPmEiOnBizX9Bg6RLjL8Kzfev3Sj/eeizrCRA4qPPlzRN
+uF5hdi+yFakPQN6XKQd9PuCksY7w0Vb+x51baF96LYO82Q9pThYk8AUPMek1nB1w
+BTWTphukTJfwmBzAZCKm1VrMjIFgN1gRK6jO/FYtveJ5yGNx9vi6Y3Bs1heOJdVn
+Hjnq0rXWzDvHR8pzlDo85R/WNqjmkH9qQ/Tnsixm7J4IguXjE6znrC+4bcfJsWRc
+01a+15WgSvATGYNAa0zgUgv7JGvHsxHu+OCYnpNQnxGVYpyK0p7Kzm/DEM7mr49Z
+jHm+nuZ2n/sLVoyn5OI7JeCWuHWCdHWGz8P90jOdhdFadg2RPS0OdO9JAnL9mznD
+AmnI35zq02FP3lHxE/4/deAhDYVUGQzVKnAsLaXoRVZ77O5UjUMuDZN6E59EAR3w
+y32IXuoUphR3ID6tW3e4nCYWEmjExxNn1ZFU/ImIlIbYZp6ym+ulZhA4ZcFafBoA
+kdpcULakqCEHFW2coSeB+NtQvU2DEw9T+Vnnl2WUD8Gb1Y1G1Z8iB1gNg2Zjn2rL
+tY/ZBM4IQR2uXzyus6o/poF0qpPC37DI1YTlOBMyg1oOA2fc2l4wULx+u7jMtNEL
+eG//swW4F8Od5j3Hs0kJpJ00O98dqcXpYy/UaGQNdWzIUIg8AjScMdt/aFg6vluR
+JmS3mmZr5GY6GG0+n4xTzDCFDHwPO+dkx2z0qry8qWUUz5cL2Ym6KS+MGqKNz4vO
+kScYfg51gikT+kT6xshO62alqZwsmZB3YCp/7dD9s2LcWFaKQvVFoi+EXum/sBBL
+7/fbh30Cx1eSpYN/Jb1FRwlcg/e4lcpp4et8LL2oLCghPbBfw5qYnQLN/oA2LJnB
+TTVGc0lA6ZSkI1UrqfDLQvBCrLKXhO2hp3KvRoJlLc1dXXyHh40c7/8Aw+BUqkrO
+/sv52jTkwttPc9RnUhR1F9LVyMrOhYD9BlgZGqzMLzi58+WHigcgtfNColps6ATi
+GaMmBfCl0VSw3u686RyXOjpTwGHVgwCp0hLuHbg8USBaqqnt4PpVG5zAU95KQ6t4
+Nr7CZBJQWlGotu2orgyV2JfcvNWtZjr5usbxnA5mSLEWI09rpnQRP+JGFGCQQr00
+6PAaWnyYCs4ZFYkWWkzuAVMSE0Xvbll2+bwnprA39AfPl/2UCBzwxS2bdbvDdLgX
+wh+plYaRWnUhZwbK8XIH6Gc+zfAc6glJobkP3gV2hbNXo/1yHuuPrjz5AZ1J7B05
+hnN53NoUncnrCcNc79jkTzuprJ3UkIBc7ibUXjf3vdzfsbA+9GVxKWdY1jmNU3si
+yDJlywhNaMf1LwJsnq1tn4B37NrZEjtTejnk9HkLYu89q1f+t45PkSrnuf1J75ej
+jXCzRQGMVkLh+vB8mCYPbraMciOPaLBNM5mQpNCITZVJ6xq7JfRqnKYK1U9LhzB+
+4r19bvri2gBuXCBM71LN6UWRSLYCRbKWDs1OJKBB4T6BtMU4FwHUGspF9Ch5Cmqw
+fRzJsVI+/sFlgxN7Y++qmH5hH7LoWsQAthGmhxdXjIXGek+hTYToTnS+vu4Eyz2/
+VzMS4oPAsBVlRWkzcfE6vA2tdPMt0+pmLoow+shuskrciFCJtQl6WiOA/ei+XoTG
+Amzy5cILYqJ6BW+IxcoIp4OH3KdzJPz+AccQZkBPxkYbwkw7+6wLk+RXirwyXGaz
+x+s+MSUloio2IGXi8nUdeaBbEt7X32H9TB2QXIOyVPaUSKCMcozzfxGLt+NEL/+C
+tUjsVUvRsPw1qW7kT2cVsmJUclg+R/6dozkXlCrEa0Er/6TmD+n3BTehUBFwO/r3
+vOOKyNUfofAC2fI7koOP/W08WBnJdDqd6RrYdyD09nKzkXcmPfq9i6pCnLe4rwZc
+YA8KDMBxBRho4DA0Av4JcbMlZu872xAdk7RJMcaugIOQ8uJshNK8+KpLmy9KDkDC
+nZLTunTO97KmRUqrhYC9rqPqioYZG09uWWZWjpvexoOa9zZoIY1f601tLBEg/m/7
+4AO3L7TlPG1jZZgI0rbMb7er4AajAfNEwthwJ8K4GqWLi87GijppfAsComHfhPwg
+AOOQtZ5kRztEeJXXEi6LGNvyhZF8v5zvHgk4jGoF+PMg2idL/V59VOPbuFtLFkMw
+QtaZ50jcqDBLeBPWfmbgdo7bHx0fVlcAdQVvUerqm218fXCDaraOQLNekqjpFwib
+A1/c4+UhcVqFrFldsZYSy/c9kH1LWt/7tbL50rLKNUkGPqlqeEsgbKlVFI+PvTNZ
+iMJ03tZ2Z6OL5KgHr8iVZbvK4b/JQRLy2mhkuR3UB0bSSSDzYy+6Is0Ejs4V2nYv
+TK0zBETlmPqTtyK9Gsj22kSgXuE9PIrG8dfN2y7mEYsva6p5e4t/afbZBMbnK8xy
+8S/QXVuQ1GlBLZNeUqUyMkBwtUq213irEbj0dA1SlaZ3DEO9Y92JOkze+swNXGQf
+F+V1/Md3R3OfgGKYz6CiKZzYpdRubpxdtHq3X9bs6ESLss91lHsdTRYw5Cli+AZc
+0T6x10xq/vPerq3Z3uVgdF1GREnVoZ07nZAJJJZWnyZugvM1/w1ZFSYv8xqKjl/G
+n6hCl1lFtfyHieoKYA==
+-----END ENCRYPTED PRIVATE KEY-----
diff --git a/tests/keys/largersakey.pem b/tests/keys/largersakey.pem
new file mode 100644
index 0000000..d25dbbd
--- /dev/null
+++ b/tests/keys/largersakey.pem
@@ -0,0 +1,51 @@
+-----BEGIN RSA PRIVATE KEY-----
+MIIJKAIBAAKCAgEA82H5NlSuXRdoGxgoJHJOOV2/IBfIfCBZ+6NC5Cy3DW2XfuGb
+ulnD5+hk/3Y1WOCQ+isTkl+6t39UJW7OzRujeJI0MX+d3IBhPHJpbbg1qPgfA2zl
+10FTJISKcnA84jmL7HCd088uCPYFgK82j+2O799QM5RYFY+HxLRlPaHRIwBqZzVg
+Bli9Q4qGUin0oeFff1luykp4Fp3aBNlh1KPqaXJ/G6r/yAdRE1DBPn2b93Dcul2U
+qSus6lbgPH9dke+9giXyN+ss2a233T68hnqviY/5Ml6c0EEMjLeEXinpT/y1XPT5
+gjK5Ne2ECjIjMrWkscjFoBa1d40hj1OAxKGkZe6vCoQdNDDjBzXOFo5pe7chkVYm
+wtc/eQ7gsnelymCIFTCPZaqPnZ/QUD0qm09hykMZuWlYG5h3Q0IeCHwwWFLUs+vR
+op4o3RuW/fko/XbY7JEh0Y1CTPUFcC7Su5rFyOF3XU5fwqufwHVREW7qaw7UvJPe
+pJXj0lJXrHTFpuWilD/YQw5CjHWtDGnRqI7nSXcrOK/JrEN3J5CCHWLmMaAbF75+
+Yywp7Bs9S1I57Hoq/Egvvc7ZHyEC+yxu2UAUxWrOILwM5K6HNdLaX9uVUPPj7SyT
+rUJbr2X++EsK3GB/3Ug4iND8pKr8XweXz663Qz2H675R4/GMH2NDKSSMlCMCAwEA
+AQKCAgBHktNgJ+0TEVQbS7JabYcVlb0kKfpajoUH3I5KXeADQexgcuaCGe3j4FL7
+UX8EwR3BhDOAQ0i8t+Q+EeUdKnibd5uDxvzcoKB3z0mz641UQIuWTUsWT26s+ZFh
+cCJngPbmNIQlivMFzZv2qRBJqVn0rt5+HKz+wjPyI/717gV73p5r9aVkmGooV6+C
+sDXx+T5FTD6pnNbOB+Paszby+rVwByzcLSCFaaltHb2GrBfW38j5wZV7Xo2+aIgP
+IoGY7kDz6kbeLPoGlfDRTqbQgXnn4YAuUOaa09Zl934k1vx2+mE3kg9iO5p+Anhn
+KzFwszxY0CtWFfeNzeJFrQ/cQ5D9micMaTVB9zyizarkXGgHOoncuIVBVgV8i7gA
+YxxcR2jsDhySoUXcIMFWxxMVR66dx+gK4FUB/GOX26NMcvj0FgjQkUWCoDKivUSi
+9ClgH2/r8bFS+nNEoWuJ23LqUO2LtGDF1z2PXSs8SVUd2SPTHjlnJ6nSFbrtrfkw
+GMUov/QizIn7GH0IGUJCU5RZq3VUs5SdJqr7Glz8yjnbFacTfSrXdbLjD7toFOE8
+tNOJrAKI7mBhH9LsnQ4E0RRjpX/6GozVO6xfeNFWKsx4ocZ0T7wRjSwb6Pi/lVf5
+9VZwXgI67MJA8Px6MIGUDkPOOo63n1/Zs4YY3Pl7qKAOGr898QKCAQEA/1B8O+qi
+gXbTcXCAEkmQimhQDlrylBunucWTKPLNFLd1qiAwAlx9kDVHH0GV/lxqEKh9bm00
+6OOqHpEYwOoHFWfXr0hX4+FK86fI8SCZ8TPbMWYkx7567yAwl9p44mv3wHbwuVCs
+EoyQS5EKCfcOL/pLF7OyDMMWaHNLx24C+g7LRpim/NyUPQjTxmRBX4rd+4qFBIKH
+1Ksan+7rm/yzY3VZCtwLzqKQntsOPrdYO0vPYpq5lieIjSsz2v7uFa+QgHVaaupU
+UYEK3tpEKfLS+iLNA1aEmmlVfkFc3qWeR7y8SFN9TedBVLGg6gwjZ1kf5Yo4Zfgf
+FU/0XmuL0g/JmwKCAQEA9AlJKwUBtMEeauIY00gNCdQVN1oxsCrxa8knDMDWl9EO
+KEpoA6ilepROszlxj7ejdFBxHqnI0h4U6yLimsDB+LOA8ULvIhTYOWV2FIA/zpfw
+ej34dcnA4QiM7Cs63z6r84c3JS+EVL13zZoNBdmTzsLIEy47Sqv8XP1VzI24mZ+t
+LU6LXX50kj4iibPrFgfYkA1zsfh/amY1hBXktAj4tvOMI9sugy3py1iPlpu+UX3W
+7nbUzI66bZtDguLszQWkWfMwwkHABQcjO+e6fKKVe9P/KdCH3cXz3YTK3ZK9fIWJ
+jISFymS8wd9o70iI9HT+0/d4TEd8lmOpq1VCq2XsGQKCAQA0Fvyx0MZE+bRcEaLf
+mEi4JF4o/588XoQS39+NXDRBRMjp49VHtg0cLfKLyvrKQZqWOXoV3IwN890SjXHq
+chTt5hjYNz9PS/jZy2Kw54Dg+D6BTqC0bAVy4jNn1/gP4g1TJDEq7e2dfzY1ZKsS
+q2gmm79UX6I0/lyFBPjyAFz1Ha2VgrGXJ33LEhD7ChtYXeG6X2GSMPt7hUlSVhGV
+6rHC2f9HuuthxkMRVgoK+6cxud7e9Ehm/Tvb6XOT+60hmYc23jqLU7HOSzCnlQqR
+MGyhAhan1rAJPPJnZviGqG2pnzUe4IHRMhxfJjp5Ze6XOFTMpS2qiDv3Qi/OT8zg
+F75/AoIBAARbThUYh8lEUVizJKJQ/PqZ8K8GSzDL83drJelSYAJh1xDdEzJNhnbD
+wwvsEJzyOFbRQNO9UDqAEvuHqef9XPklqz2jZkWDfcC4kP0YtQrpJ3/nL1JbAbiC
+wJFOzERECCnW1iMxz/j7UPI4t9bM5ZihXZUKFEDnBSBb3XZDaXJEqYDPkClhIo+h
+0FgJAD9qcHFR7CjXON8baAUtpuGX72jEvFG/jfsFjND2icm0ihdGWdn0ASSNv8JJ
+LVFe379hRGfesZYmOllcoUJmhqvG80g8pqeGc4aADDR+NGj0P7HDaIs7qm/MkJod
+dPAgqWFD3XDHUDx8YjsFGHhYk1IgBbECggEBAOse/fI06KcoQ3ARHUV98UsTBf4C
+eLydlAkdoyJkJ+dIqFmqRLmNzOolfzfEJkp+YO9fU6KU5+mF2PUxGcU6QhUOk2Lz
+DF5ARFeZSNZ6UmrFdm3QGkBHE7u+iRBjHhrR80PjE0qYM7Vjqg9L1k4hr97ccrj9
+tNRSEqPtR7XA6QfAx3RBlJfQXAmwLeSuGC6Sh0Q55UYhHegN2IblFcYdoxYr68uD
+pMpypdcgbClKBaxCIvcKvbPiziHsAU2VZnLmCOA66Csqv0Tw/IjUops5EegIJ6LT
+29QsXgdv3E/Wb6yQF9vS0LRWBjEy3/FRwaxs6acqslfBT3QKQMSjDADTCKo=
+-----END RSA PRIVATE KEY-----
diff --git a/tests/keys/largersareq.pem b/tests/keys/largersareq.pem
new file mode 100644
index 0000000..c8da3dc
--- /dev/null
+++ b/tests/keys/largersareq.pem
@@ -0,0 +1,30 @@
+-----BEGIN CERTIFICATE REQUEST-----
+MIIFEzCCAvsCAQAwgc0xCzAJBgNVBAYTAlVTMRMwEQYDVQQIEwpDYWxpZm9ybmlh
+MRIwEAYDVQQHEwlTdW5ueXZhbGUxPTA7BgNVBAoTNFhNTCBTZWN1cml0eSBMaWJy
+YXJ5IChodHRwOi8vd3d3LmFsZWtzZXkuY29tL3htbHNlYykxGzAZBgNVBAsTElRl
+c3QgTGFyZ2UgUlNBIEtleTEWMBQGA1UEAxMNQWxla3NleSBTYW5pbjEhMB8GCSqG
+SIb3DQEJARYSeG1sc2VjQGFsZWtzZXkuY29tMIICIjANBgkqhkiG9w0BAQEFAAOC
+Ag8AMIICCgKCAgEA82H5NlSuXRdoGxgoJHJOOV2/IBfIfCBZ+6NC5Cy3DW2XfuGb
+ulnD5+hk/3Y1WOCQ+isTkl+6t39UJW7OzRujeJI0MX+d3IBhPHJpbbg1qPgfA2zl
+10FTJISKcnA84jmL7HCd088uCPYFgK82j+2O799QM5RYFY+HxLRlPaHRIwBqZzVg
+Bli9Q4qGUin0oeFff1luykp4Fp3aBNlh1KPqaXJ/G6r/yAdRE1DBPn2b93Dcul2U
+qSus6lbgPH9dke+9giXyN+ss2a233T68hnqviY/5Ml6c0EEMjLeEXinpT/y1XPT5
+gjK5Ne2ECjIjMrWkscjFoBa1d40hj1OAxKGkZe6vCoQdNDDjBzXOFo5pe7chkVYm
+wtc/eQ7gsnelymCIFTCPZaqPnZ/QUD0qm09hykMZuWlYG5h3Q0IeCHwwWFLUs+vR
+op4o3RuW/fko/XbY7JEh0Y1CTPUFcC7Su5rFyOF3XU5fwqufwHVREW7qaw7UvJPe
+pJXj0lJXrHTFpuWilD/YQw5CjHWtDGnRqI7nSXcrOK/JrEN3J5CCHWLmMaAbF75+
+Yywp7Bs9S1I57Hoq/Egvvc7ZHyEC+yxu2UAUxWrOILwM5K6HNdLaX9uVUPPj7SyT
+rUJbr2X++EsK3GB/3Ug4iND8pKr8XweXz663Qz2H675R4/GMH2NDKSSMlCMCAwEA
+AaAAMA0GCSqGSIb3DQEBBAUAA4ICAQDW+eyCOkDNCtpO8i8ThqBMA++0WmnY1T8Q
+3tSFxgne8ZVz+/2fERcB7ZuPLH7+Uu37cdsaBP0Qq5jRqe0WiMlrOiV7sdFPDPnV
+uuiOCbSrxSc1FfmuSmtx2XnKZHCGpyRmArASvlN15PG+e8t/rN3EeqlAMeDnHyng
+ODoWXY8WxwNC6Ft8H/1duVhM0yP0lvLSKwgrUx3jU+m9gmWZADnQN5DZo32MJr/8
+KEJrjRYJQQ1oZZ34VNLCrZgutyH5y/A8dSZRpy99RA8PJ3trd1HWN2VMQesIhuKs
+uS0rZLdFov0JbH1dGe1V3DM7Omt4jvhZQ4wje6JkIDKoguuZ8izX1iZ+hfNFSxUx
+vREmTvoEMmOagAbg1OGfexbTMhQE5YcoNK8YdJj9xKIcD2Oj6TnWHX6p9JclAlIV
+LFxnXDsXHIRb2weoPc942PXH3yavHRWaguYAhDHYxb3TSPm5JDHKr6i7YRKCueV/
+NB84mhAGd40SKUCFGoD6wSWhKWG1KrBUNY0X2Qp8M71ZfWN4SF0sjcwB2XQQp6yr
+0mvxXSbMhtr4bSGKB5RECJRM16DaJ2VapTJ3Pr3S4+bZVkxUq6KCJZY7rQeyk7RP
+6U7k0u5XKUOgEmH93DL7ac0FMy70hIyaAiG4k3jE4P6ewqBmsWaW3OtT3RWtBCNd
+E8XvfdMyBg==
+-----END CERTIFICATE REQUEST-----
diff --git a/tests/keys/openssl.cnf b/tests/keys/openssl.cnf
new file mode 100644
index 0000000..ecd8b88
--- /dev/null
+++ b/tests/keys/openssl.cnf
@@ -0,0 +1,316 @@
+#
+# OpenSSL example configuration file.
+# This is mostly being used for generation of certificate requests.
+#
+
+# This definition stops the following lines choking if HOME isn't
+# defined.
+HOME			= .
+RANDFILE		= $ENV::HOME/.rnd
+
+# Extra OBJECT IDENTIFIER info:
+#oid_file		= $ENV::HOME/.oid
+oid_section		= new_oids
+
+# To use this configuration file with the "-extfile" option of the
+# "openssl x509" utility, name here the section containing the
+# X.509v3 extensions to use:
+# extensions		= 
+# (Alternatively, use a configuration file that has only
+# X.509v3 extensions in its main [= default] section.)
+
+[ new_oids ]
+
+# We can add new OIDs in here for use by 'ca' and 'req'.
+# Add a simple OID like this:
+# testoid1=1.2.3.4
+# Or use config file substitution like this:
+# testoid2=${testoid1}.5.6
+
+####################################################################
+[ ca ]
+default_ca	= CA_default		# The default ca section
+
+####################################################################
+[ CA_default ]
+
+dir		= ./demoCA		# Where everything is kept
+certs		= $dir/certs		# Where the issued certs are kept
+crl_dir		= $dir/crl		# Where the issued crl are kept
+database	= $dir/index.txt	# database index file.
+#unique_subject	= no			# Set to 'no' to allow creation of
+					# several ctificates with same subject.
+new_certs_dir	= $dir/newcerts		# default place for new certs.
+
+certificate	= $dir/cacert.pem 	# The CA certificate
+serial		= $dir/serial 		# The current serial number
+crlnumber	= $dir/crlnumber	# the current crl number
+					# must be commented out to leave a V1 CRL
+crl		= $dir/crl.pem 		# The current CRL
+private_key	= $dir/private/cakey.pem# The private key
+RANDFILE	= $dir/private/.rand	# private random number file
+
+x509_extensions	= usr_cert		# The extentions to add to the cert
+
+# Comment out the following two lines for the "traditional"
+# (and highly broken) format.
+name_opt 	= ca_default		# Subject Name options
+cert_opt 	= ca_default		# Certificate field options
+
+# Extension copying option: use with caution.
+# copy_extensions = copy
+
+# Extensions to add to a CRL. Note: Netscape communicator chokes on V2 CRLs
+# so this is commented out by default to leave a V1 CRL.
+# crlnumber must also be commented out to leave a V1 CRL.
+# crl_extensions	= crl_ext
+
+default_days	= 3650			# how long to certify for
+default_crl_days= 30			# how long before next CRL
+default_md	= sha1			# which md to use.
+preserve	= no			# keep passed DN ordering
+
+# A few difference way of specifying how similar the request should look
+# For type CA, the listed attributes must be the same, and the optional
+# and supplied fields are just that :-)
+policy		= policy_match
+
+# For the CA policy
+[ policy_match ]
+countryName		= match
+stateOrProvinceName	= match
+organizationName	= match
+organizationalUnitName	= optional
+commonName		= supplied
+emailAddress		= optional
+
+# For the 'anything' policy
+# At this point in time, you must list all acceptable 'object'
+# types.
+[ policy_anything ]
+countryName		= optional
+stateOrProvinceName	= optional
+localityName		= optional
+organizationName	= optional
+organizationalUnitName	= optional
+commonName		= supplied
+emailAddress		= optional
+
+####################################################################
+[ req ]
+default_bits		= 1024
+default_keyfile 	= privkey.pem
+distinguished_name	= req_distinguished_name
+attributes		= req_attributes
+x509_extensions	= v3_ca	# The extentions to add to the self signed cert
+
+# Passwords for private keys if not present they will be prompted for
+# input_password = secret
+# output_password = secret
+
+# This sets a mask for permitted string types. There are several options. 
+# default: PrintableString, T61String, BMPString.
+# pkix	 : PrintableString, BMPString.
+# utf8only: only UTF8Strings.
+# nombstr : PrintableString, T61String (no BMPStrings or UTF8Strings).
+# MASK:XXXX a literal mask value.
+# WARNING: current versions of Netscape crash on BMPStrings or UTF8Strings
+# so use this option with caution!
+string_mask = nombstr
+
+# req_extensions = v3_req # The extensions to add to a certificate request
+
+[ req_distinguished_name ]
+countryName			= Country Name (2 letter code)
+countryName_default		= US
+countryName_min			= 2
+countryName_max			= 2
+
+stateOrProvinceName		= State or Province Name (full name)
+stateOrProvinceName_default	= California
+
+localityName			= Locality Name (eg, city)
+localityName_default		= Sunnyvale
+
+0.organizationName		= Organization Name (eg, company)
+0.organizationName_default	= XML Security Library (http://www.aleksey.com/xmlsec)
+
+# we can do this but it is not needed normally :-)
+#1.organizationName		= Second Organization Name (eg, company)
+#1.organizationName_default	= World Wide Web Pty Ltd
+
+organizationalUnitName		= Organizational Unit Name (eg, section)
+#organizationalUnitName_default	=
+
+commonName			= Common Name (eg, YOUR name)
+commonName_max			= 64
+commonName_default		= Aleksey Sanin
+
+emailAddress			= Email Address
+emailAddress_max		= 64
+emailAddress_default		= xmlsec at aleksey.com
+
+# SET-ex3			= SET extension number 3
+
+[ req_attributes ]
+challengePassword		= A challenge password
+challengePassword_min		= 4
+challengePassword_max		= 20
+
+unstructuredName		= An optional company name
+
+[ usr_cert ]
+
+# These extensions are added when 'ca' signs a request.
+
+# This goes against PKIX guidelines but some CAs do it and some software
+# requires this to avoid interpreting an end user certificate as a CA.
+
+basicConstraints=CA:TRUE
+
+# Here are some examples of the usage of nsCertType. If it is omitted
+# the certificate can be used for anything *except* object signing.
+
+# This is OK for an SSL server.
+# nsCertType			= server
+
+# For an object signing certificate this would be used.
+# nsCertType = objsign
+
+# For normal client use this is typical
+# nsCertType = client, email
+
+# and for everything including object signing:
+# nsCertType = client, email, objsign
+
+# This is typical in keyUsage for a client certificate.
+# keyUsage = nonRepudiation, digitalSignature, keyEncipherment
+
+# This will be displayed in Netscape's comment listbox.
+nsComment			= "OpenSSL Generated Certificate"
+
+# PKIX recommendations harmless if included in all certificates.
+subjectKeyIdentifier=hash
+authorityKeyIdentifier=keyid,issuer:always
+
+# This stuff is for subjectAltName and issuerAltname.
+# Import the email address.
+# subjectAltName=email:copy
+# An alternative to produce certificates that aren't
+# deprecated according to PKIX.
+# subjectAltName=email:move
+
+# Copy subject details
+# issuerAltName=issuer:copy
+
+#nsCaRevocationUrl		= http://www.domain.dom/ca-crl.pem
+#nsBaseUrl
+#nsRevocationUrl
+#nsRenewalUrl
+#nsCaPolicyUrl
+#nsSslServerName
+
+[ v3_req ]
+
+# Extensions to add to a certificate request
+
+basicConstraints = CA:FALSE
+keyUsage = nonRepudiation, digitalSignature, keyEncipherment
+
+[ v3_ca ]
+
+
+# Extensions for a typical CA
+
+
+# PKIX recommendation.
+
+subjectKeyIdentifier=hash
+
+authorityKeyIdentifier=keyid:always,issuer:always
+
+# This is what PKIX recommends but some broken software chokes on critical
+# extensions.
+#basicConstraints = critical,CA:true
+# So we do this instead.
+basicConstraints = CA:true
+
+# Key usage: this is typical for a CA certificate. However since it will
+# prevent it being used as an test self-signed certificate it is best
+# left out by default.
+# keyUsage = cRLSign, keyCertSign
+
+# Some might want this also
+# nsCertType = sslCA, emailCA
+
+# Include email address in subject alt name: another PKIX recommendation
+# subjectAltName=email:copy
+# Copy issuer details
+# issuerAltName=issuer:copy
+
+# DER hex encoding of an extension: beware experts only!
+# obj=DER:02:03
+# Where 'obj' is a standard or added object
+# You can even override a supported extension:
+# basicConstraints= critical, DER:30:03:01:01:FF
+
+[ crl_ext ]
+
+# CRL extensions.
+# Only issuerAltName and authorityKeyIdentifier make any sense in a CRL.
+
+# issuerAltName=issuer:copy
+authorityKeyIdentifier=keyid:always,issuer:always
+
+[ proxy_cert_ext ]
+# These extensions should be added when creating a proxy certificate
+
+# This goes against PKIX guidelines but some CAs do it and some software
+# requires this to avoid interpreting an end user certificate as a CA.
+
+basicConstraints=CA:FALSE
+
+# Here are some examples of the usage of nsCertType. If it is omitted
+# the certificate can be used for anything *except* object signing.
+
+# This is OK for an SSL server.
+# nsCertType			= server
+
+# For an object signing certificate this would be used.
+# nsCertType = objsign
+
+# For normal client use this is typical
+# nsCertType = client, email
+
+# and for everything including object signing:
+# nsCertType = client, email, objsign
+
+# This is typical in keyUsage for a client certificate.
+# keyUsage = nonRepudiation, digitalSignature, keyEncipherment
+
+# This will be displayed in Netscape's comment listbox.
+nsComment			= "OpenSSL Generated Certificate"
+
+# PKIX recommendations harmless if included in all certificates.
+subjectKeyIdentifier=hash
+authorityKeyIdentifier=keyid,issuer:always
+
+# This stuff is for subjectAltName and issuerAltname.
+# Import the email address.
+# subjectAltName=email:copy
+# An alternative to produce certificates that aren't
+# deprecated according to PKIX.
+# subjectAltName=email:move
+
+# Copy subject details
+# issuerAltName=issuer:copy
+
+#nsCaRevocationUrl		= http://www.domain.dom/ca-crl.pem
+#nsBaseUrl
+#nsRevocationUrl
+#nsRenewalUrl
+#nsCaPolicyUrl
+#nsSslServerName
+
+# This really needs to be in place for it to be a proxy certificate.
+proxyCertInfo=critical,language:id-ppl-anyLanguage,pathlen:3,policy:foo
diff --git a/tests/keys/rsacert.der b/tests/keys/rsacert.der
index 5a097b6..a480d64 100644
Binary files a/tests/keys/rsacert.der and b/tests/keys/rsacert.der differ
diff --git a/tests/keys/rsacert.pem b/tests/keys/rsacert.pem
index ece1ea2..89c58f0 100644
--- a/tests/keys/rsacert.pem
+++ b/tests/keys/rsacert.pem
@@ -1,23 +1,61 @@
+Certificate:
+    Data:
+        Version: 3 (0x2)
+        Serial Number:
+            d6:8e:b8:e0:91:82:2c:fa
+        Signature Algorithm: sha1WithRSAEncryption
+        Issuer: C=US, ST=California, O=XML Security Library (http://www.aleksey.com/xmlsec), OU=Test Second Level RSA Certificate, CN=Aleksey Sanin/emailAddress=xmlsec at aleksey.com
+        Validity
+            Not Before: Jul 10 02:33:02 2005 GMT
+            Not After : Jul  8 02:33:02 2015 GMT
+        Subject: C=US, ST=California, O=XML Security Library (http://www.aleksey.com/xmlsec), OU=Test Third Level RSA Certificate, CN=Aleksey Sanin/emailAddress=xmlsec at aleksey.com
+        Subject Public Key Info:
+            Public Key Algorithm: rsaEncryption
+            RSA Public Key: (512 bit)
+                Modulus (512 bit):
+                    00:d3:d0:6d:0f:76:9e:56:de:83:54:39:24:d1:d2:
+                    3b:56:1e:cb:8e:a7:67:b1:89:96:d2:d6:c3:57:1c:
+                    4a:fa:7b:a6:7b:e6:7d:49:be:33:9d:b5:0a:91:69:
+                    7e:be:04:00:4d:d4:54:13:28:53:d8:ff:86:aa:b7:
+                    74:50:1c:d8:7d
+                Exponent: 65537 (0x10001)
+        X509v3 extensions:
+            X509v3 Basic Constraints: 
+                CA:TRUE
+            Netscape Comment: 
+                OpenSSL Generated Certificate
+            X509v3 Subject Key Identifier: 
+                D7:F4:C6:46:77:CE:37:04:23:AD:29:54:FB:B0:0E:A4:CC:43:28:19
+            X509v3 Authority Key Identifier: 
+                keyid:FE:E4:EC:53:24:F0:95:95:C7:10:B5:E1:44:B5:5D:39:65:5A:E3:7E
+                DirName:/C=US/ST=California/O=XML Security Library (http://www.aleksey.com/xmlsec)/OU=Test Root Certificate/CN=Aleksey Sanin/emailAddress=xmlsec at aleksey.com
+                serial:D6:8E:B8:E0:91:82:2C:F8
+
+    Signature Algorithm: sha1WithRSAEncryption
+        47:e3:be:65:b0:8b:68:01:a5:8b:7b:6f:01:7a:a0:78:85:2e:
+        82:21:e6:48:8b:00:fa:e5:38:50:1b:3d:99:4b:0e:aa:f9:f9:
+        e0:dc:af:57:1f:d2:99:2c:81:6e:df:54:4f:4d:cd:34:a6:c2:
+        30:c5:b8:47:0f:a8:95:7a:d8:49
 -----BEGIN CERTIFICATE-----
-MIIDzTCCA3egAwIBAgIBAzANBgkqhkiG9w0BAQQFADCBvzELMAkGA1UEBhMCVVMx
-EzARBgNVBAgTCkNhbGlmb3JuaWExPTA7BgNVBAoTNFhNTCBTZWN1cml0eSBMaWJy
-YXJ5IChodHRwOi8vd3d3LmFsZWtzZXkuY29tL3htbHNlYykxITAfBgNVBAsTGFNl
-Y29uZCBMZXZlbCBDZXJ0aWZpY2F0ZTEWMBQGA1UEAxMNQWxla3NleSBTYW5pbjEh
-MB8GCSqGSIb3DQEJARYSeG1sc2VjQGFsZWtzZXkuY29tMB4XDTAyMDIwMjA4MDE0
-OFoXDTEyMDEzMTA4MDE0OFowgcIxCzAJBgNVBAYTAlVTMRMwEQYDVQQIEwpDYWxp
-Zm9ybmlhMT0wOwYDVQQKEzRYTUwgU2VjdXJpdHkgTGlicmFyeSAoaHR0cDovL3d3
-dy5hbGVrc2V5LmNvbS94bWxzZWMpMSQwIgYDVQQLExtUaGlyZCBMZXZlbCBSU0Eg
-Q2VydGlmaWNhdGUxFjAUBgNVBAMTDUFsZWtzZXkgU2FuaW4xITAfBgkqhkiG9w0B
-CQEWEnhtbHNlY0BhbGVrc2V5LmNvbTBcMA0GCSqGSIb3DQEBAQUAA0sAMEgCQQDQ
-p6WLdrHhNMYcqSJd27S9wW6xHRwEUJKSCYQ56aug0n+4sa492l8lWj1rYvrmsdtV
-37UCtJWqOSwobj9npysXAgMBAAGjggFXMIIBUzAJBgNVHRMEAjAAMCwGCWCGSAGG
-+EIBDQQfFh1PcGVuU1NMIEdlbmVyYXRlZCBDZXJ0aWZpY2F0ZTAdBgNVHQ4EFgQU
-pBgdE9WMMoQMndG4iDT9XDfZ+kgwgfgGA1UdIwSB8DCB7YAUeNctkWEvlSJKu+HV
-PcYmr6uX0gShgdGkgc4wgcsxCzAJBgNVBAYTAlVTMRMwEQYDVQQIEwpDYWxpZm9y
-bmlhMRIwEAYDVQQHEwlTdW5ueXZhbGUxPTA7BgNVBAoTNFhNTCBTZWN1cml0eSBM
-aWJyYXJ5IChodHRwOi8vd3d3LmFsZWtzZXkuY29tL3htbHNlYykxGTAXBgNVBAsT
-EFJvb3QgQ2VydGlmaWNhdGUxFjAUBgNVBAMTDUFsZWtzZXkgU2FuaW4xITAfBgkq
-hkiG9w0BCQEWEnhtbHNlY0BhbGVrc2V5LmNvbYIBATANBgkqhkiG9w0BAQQFAANB
-AC8/OGwrGhhATlRLCmOLHHl8o+J2UAPnpnmc8+tc7GGjuy1L+HQzx3f242DgudEH
-1i71E0auLg1+ikczHPbdj08=
+MIID3zCCA4mgAwIBAgIJANaOuOCRgiz6MA0GCSqGSIb3DQEBBQUAMIHIMQswCQYD
+VQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTE9MDsGA1UEChM0WE1MIFNlY3Vy
+aXR5IExpYnJhcnkgKGh0dHA6Ly93d3cuYWxla3NleS5jb20veG1sc2VjKTEqMCgG
+A1UECxMhVGVzdCBTZWNvbmQgTGV2ZWwgUlNBIENlcnRpZmljYXRlMRYwFAYDVQQD
+Ew1BbGVrc2V5IFNhbmluMSEwHwYJKoZIhvcNAQkBFhJ4bWxzZWNAYWxla3NleS5j
+b20wHhcNMDUwNzEwMDIzMzAyWhcNMTUwNzA4MDIzMzAyWjCBxzELMAkGA1UEBhMC
+VVMxEzARBgNVBAgTCkNhbGlmb3JuaWExPTA7BgNVBAoTNFhNTCBTZWN1cml0eSBM
+aWJyYXJ5IChodHRwOi8vd3d3LmFsZWtzZXkuY29tL3htbHNlYykxKTAnBgNVBAsT
+IFRlc3QgVGhpcmQgTGV2ZWwgUlNBIENlcnRpZmljYXRlMRYwFAYDVQQDEw1BbGVr
+c2V5IFNhbmluMSEwHwYJKoZIhvcNAQkBFhJ4bWxzZWNAYWxla3NleS5jb20wXDAN
+BgkqhkiG9w0BAQEFAANLADBIAkEA09BtD3aeVt6DVDkk0dI7Vh7LjqdnsYmW0tbD
+VxxK+nume+Z9Sb4znbUKkWl+vgQATdRUEyhT2P+Gqrd0UBzYfQIDAQABo4IBUzCC
+AU8wDAYDVR0TBAUwAwEB/zAsBglghkgBhvhCAQ0EHxYdT3BlblNTTCBHZW5lcmF0
+ZWQgQ2VydGlmaWNhdGUwHQYDVR0OBBYEFNf0xkZ3zjcEI60pVPuwDqTMQygZMIHx
+BgNVHSMEgekwgeaAFP7k7FMk8JWVxxC14US1XTllWuN+oYHCpIG/MIG8MQswCQYD
+VQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTE9MDsGA1UEChM0WE1MIFNlY3Vy
+aXR5IExpYnJhcnkgKGh0dHA6Ly93d3cuYWxla3NleS5jb20veG1sc2VjKTEeMBwG
+A1UECxMVVGVzdCBSb290IENlcnRpZmljYXRlMRYwFAYDVQQDEw1BbGVrc2V5IFNh
+bmluMSEwHwYJKoZIhvcNAQkBFhJ4bWxzZWNAYWxla3NleS5jb22CCQDWjrjgkYIs
++DANBgkqhkiG9w0BAQUFAANBAEfjvmWwi2gBpYt7bwF6oHiFLoIh5kiLAPrlOFAb
+PZlLDqr5+eDcr1cf0pksgW7fVE9NzTSmwjDFuEcPqJV62Ek=
 -----END CERTIFICATE-----
diff --git a/tests/keys/rsakey.der b/tests/keys/rsakey.der
index f407a94..6a844db 100644
Binary files a/tests/keys/rsakey.der and b/tests/keys/rsakey.der differ
diff --git a/tests/keys/rsakey.p12 b/tests/keys/rsakey.p12
index 73024c9..2c6be5e 100644
Binary files a/tests/keys/rsakey.p12 and b/tests/keys/rsakey.p12 differ
diff --git a/tests/keys/rsakey.p8-der b/tests/keys/rsakey.p8-der
index 8014305..fed75a6 100644
Binary files a/tests/keys/rsakey.p8-der and b/tests/keys/rsakey.p8-der differ
diff --git a/tests/keys/rsakey.p8-pem b/tests/keys/rsakey.p8-pem
index 8efd6e5..f31b10f 100644
--- a/tests/keys/rsakey.p8-pem
+++ b/tests/keys/rsakey.p8-pem
@@ -1,11 +1,11 @@
 -----BEGIN ENCRYPTED PRIVATE KEY-----
-MIIBgTAbBgkqhkiG9w0BBQMwDgQIUPXP/CEtYcsCAggABIIBYKJcE3nnvECE0e4D
-CBcP0fyxzeUXmmwmVwRVjxeYcEQt8v8l+3fnIRncutsUVFKVg1cwJs8FJ2ypWNaq
-XnuRftS83880VT6MTK5KqVbwpUEf3FfomBrs+f6SFEO2wQqGBtSv6tDvr9bLAA6l
-pEifIY2VblQcNnr8ialD0gJ27DMd1f0Cl6YJNUL2F6J0hyCsO5BtuqjtSPm59mAD
-zHVSM8z5WsKRl4m9MiqALyKWeGhRuafSu/Af3A7necVNiz5LraXX60RcePRvyKvz
-PfSOcD5iqveZRGpG384zx60oXIVuk3fT1m7m5J9R91bLI58mKJY4tfVXPTiTvidl
-/E0c+GnwbwNDVkgP3rAvWUCWpjM6LyUksRm8ruZAeV2NJ/XrKmuXO7YrLOw8PBly
-gt2myEvpoW2ytPMzTOydiILS/TXBT4R8I/+XO+SIQaZFhwGOjKRbRjjfPtHJw4zW
-TXerZTk=
+MIIBgTAbBgkqhkiG9w0BBQMwDgQIEZ3kmUDSHvUCAggABIIBYPVfp9uKbSZ7fhvF
+8g5KVcikiKq1cVPUTg+9579/peIQtowRFAosI+MIAB+eTAyLSCtl7SetsuD/oykW
+nONRnjzKeuF2PgQj3AwtBVQtMD6z9hZoc+uTrp7t1J53SFhKpS2NCwzEb4VyE+Fy
+NpD2g30ccYmWkwWNOd9Z1kACnxRtaoGa5jj2Tim/Xz+okDeAR+TWt5vAh6K34Tfm
+ndmcWHbEEh7QTEXvzzgU0WMx1CA8hbMaRRBBoGbRecCLnQ0hBBeShP5cPkM6P0mY
+5ZIRBk68duKgZLchL3z9Mzy+faRKqusNod37L88PGDSkqjMIEbyQP33TwH5zCg4x
+Iu5H8TmPpWLefQi54XUH/xkdW0oX648hFflLDNrP9USeSVB0l4A+xEX2qL94Q6Ed
+SGFFLk+Fvwo+oPYPCJvYceHCBeuKatRX8CdsPTnkalnWMM5og4re6SyH96EAGVcK
+9Gr5OGI=
 -----END ENCRYPTED PRIVATE KEY-----
diff --git a/tests/keys/rsakey.pem b/tests/keys/rsakey.pem
index f6fee76..8ea653f 100644
--- a/tests/keys/rsakey.pem
+++ b/tests/keys/rsakey.pem
@@ -1,9 +1,9 @@
 -----BEGIN RSA PRIVATE KEY-----
-MIIBOgIBAAJBANCnpYt2seE0xhypIl3btL3BbrEdHARQkpIJhDnpq6DSf7ixrj3a
-XyVaPWti+uax21XftQK0lao5LChuP2enKxcCAwEAAQJAVm7b+KW2kd/WoVC+17qH
-aIOUYvH4BSGLVctzZroRSpComzTdwf0ZfLew1tfHPE3k6Xk+km87sJW8vMHwiqMd
-QQIhAO6/mIRfNkho7JM0/e266i+dq7nWwM8lsfsH1qc4J+BfAiEA37tgN6XiZ+P8
-E+pY2Tse+qv2MlucvMAJFZGcfFfl0EkCIDyoq0x+kGEnX2wrW5TqF5QPgFEQMh6v
-WiAIps4Ho4ILAiEAunryks+Ia7GibXMaRU463xMv7P9hIA4sRDcPKLEW00kCIEhU
-gT45Jsa6t6wr4V2NFDleaulwM1ZvKqixax26DRdt
+MIIBPAIBAAJBANPQbQ92nlbeg1Q5JNHSO1Yey46nZ7GJltLWw1ccSvp7pnvmfUm+
+M521CpFpfr4EAE3UVBMoU9j/hqq3dFAc2H0CAwEAAQJBALFVCjmsAZyQ5jqZLO5N
+qEfNuHZSSUol+xPBogFIOq3BWa269eNNcAK5or5g0XWWon7EPdyGT4qyDVH9KzXK
+RLECIQDzm/Nj0epUGN51/rKJgRXWkXW/nfSCMO9fvQR6Ujoq3wIhAN6WeHK9vgWg
+wBWqMdq5sR211+LlDH7rOUQ6rBpbsoQjAiEA7jzpfglgPPZFOOfo+oh/LuP6X3a+
+FER/FQXpRyb7M8kCIETUrwZ8WkiPPxbz/Fqw1W5kjw/g2I5e2uSYaCP2eyuVAiEA
+mOI6RhRyMqgxQyy0plJVjG1s4fdu92AWYy9AwYeyd/8=
 -----END RSA PRIVATE KEY-----
diff --git a/tests/merlin-xmldsig-twenty-three/signature.tmpl b/tests/merlin-xmldsig-twenty-three/signature.tmpl
index 80ec67d..ebd2bc2 100644
--- a/tests/merlin-xmldsig-twenty-three/signature.tmpl
+++ b/tests/merlin-xmldsig-twenty-three/signature.tmpl
@@ -205,43 +205,31 @@
       </Object>
       <Object Id="object-4">
         <X509Data>
-          <X509IssuerSerial>
-            <X509IssuerName>
-    	    C=US, ST=California, L=Sunnyvale, 
-	    O=XML Security Library (http://www.aleksey.com/xmlsec), 
-	    OU=Root Certificate, CN=Aleksey Sanin/emailAddress=xmlsec at aleksey.com
-            </X509IssuerName>
-            <X509SerialNumber>01</X509SerialNumber>
-          </X509IssuerSerial>
           <X509Certificate>
-MIIFKTCCBNOgAwIBAgIBAjANBgkqhkiG9w0BAQQFADCBvzELMAkGA1UEBhMCVVMx
-EzARBgNVBAgTCkNhbGlmb3JuaWExPTA7BgNVBAoTNFhNTCBTZWN1cml0eSBMaWJy
-YXJ5IChodHRwOi8vd3d3LmFsZWtzZXkuY29tL3htbHNlYykxITAfBgNVBAsTGFNl
-Y29uZCBMZXZlbCBDZXJ0aWZpY2F0ZTEWMBQGA1UEAxMNQWxla3NleSBTYW5pbjEh
-MB8GCSqGSIb3DQEJARYSeG1sc2VjQGFsZWtzZXkuY29tMB4XDTAyMDIwMjA4MDEy
-N1oXDTEyMDEzMTA4MDEyN1owgcIxCzAJBgNVBAYTAlVTMRMwEQYDVQQIEwpDYWxp
-Zm9ybmlhMT0wOwYDVQQKEzRYTUwgU2VjdXJpdHkgTGlicmFyeSAoaHR0cDovL3d3
-dy5hbGVrc2V5LmNvbS94bWxzZWMpMSQwIgYDVQQLExtUaGlyZCBMZXZlbCBEU0Eg
-Q2VydGlmaWNhdGUxFjAUBgNVBAMTDUFsZWtzZXkgU2FuaW4xITAfBgkqhkiG9w0B
-CQEWEnhtbHNlY0BhbGVrc2V5LmNvbTCCAbYwggErBgcqhkjOOAQBMIIBHgKBgQCK
-ZbopgE9hcB/qK1IC5izVos9+zz+8ESK6y/+mXVcyK4y8Hu/KImBKPz81ORFyL9Rf
-+tVe/ytsJGO9gVffHn/nd/iFzocrPslAjiqoHsWXk3zrOn4GxDE1Di3Oi6z1LYdN
-3b/N1PBWy874f2XcVqGZWn+bYgcThbbsligXj2o/XQIVAL/8c1qo0b4npJNqzFt8
-KWLKU/VLAoGAUIyzUDlLe6uCCgF4Rh98fiKZvg64UJ4FM5L+WbCSMmVsFN06fTwx
-y3naPPOCzzoufsHv/Bve2gvrDvd078oXWJJf9A44pIZnJkdjEhm2RsDFpXNq0tPK
-ZFcjVsdmqg4MX6YNuwpvZuTwSoDG5u1QMN0mmH9gmbIT3j9x4MO+7EYDgYQAAoGA
-On+KBJE3q1TRhG9RspNX01VI5C0VzSy4N/QyC4YzEENoq3GJkKHIYq+grq9ZqV9x
-g2Geo/3mqhdcENOtYRmWEfOZJj18oukD6TNceYRZ4HjHjK3WY3wK2OV6QOly+k3f
-xgEQpP/7IlCka5YICLuHXrbqjn5b0XcK9L2GDtWOyjujggFXMIIBUzAJBgNVHRME
-AjAAMCwGCWCGSAGG+EIBDQQfFh1PcGVuU1NMIEdlbmVyYXRlZCBDZXJ0aWZpY2F0
-ZTAdBgNVHQ4EFgQUR7VOGhej7APDOGwJ9bRy5E64hJYwgfgGA1UdIwSB8DCB7YAU
-eNctkWEvlSJKu+HVPcYmr6uX0gShgdGkgc4wgcsxCzAJBgNVBAYTAlVTMRMwEQYD
-VQQIEwpDYWxpZm9ybmlhMRIwEAYDVQQHEwlTdW5ueXZhbGUxPTA7BgNVBAoTNFhN
-TCBTZWN1cml0eSBMaWJyYXJ5IChodHRwOi8vd3d3LmFsZWtzZXkuY29tL3htbHNl
-YykxGTAXBgNVBAsTEFJvb3QgQ2VydGlmaWNhdGUxFjAUBgNVBAMTDUFsZWtzZXkg
-U2FuaW4xITAfBgkqhkiG9w0BCQEWEnhtbHNlY0BhbGVrc2V5LmNvbYIBATANBgkq
-hkiG9w0BAQQFAANBAHq6UzC5QtbSUWhx7K5cSNMQKaDLgkCv/Ak0rVhOEWNrPQ6s
-I1OWyk2BUi17BxfN2xGP3u6wArxFarKjupTvr0Q=
+MIIEdDCCBB6gAwIBAgIJANaOuOCRgiz5MA0GCSqGSIb3DQEBBQUAMIHIMQswCQYD
+VQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTE9MDsGA1UEChM0WE1MIFNlY3Vy
+aXR5IExpYnJhcnkgKGh0dHA6Ly93d3cuYWxla3NleS5jb20veG1sc2VjKTEqMCgG
+A1UECxMhVGVzdCBTZWNvbmQgTGV2ZWwgUlNBIENlcnRpZmljYXRlMRYwFAYDVQQD
+Ew1BbGVrc2V5IFNhbmluMSEwHwYJKoZIhvcNAQkBFhJ4bWxzZWNAYWxla3NleS5j
+b20wHhcNMDUwNzEwMDIzMTU5WhcNMTUwNzA4MDIzMTU5WjCBxzELMAkGA1UEBhMC
+VVMxEzARBgNVBAgTCkNhbGlmb3JuaWExPTA7BgNVBAoTNFhNTCBTZWN1cml0eSBM
+aWJyYXJ5IChodHRwOi8vd3d3LmFsZWtzZXkuY29tL3htbHNlYykxKTAnBgNVBAsT
+IFRlc3QgVGhpcmQgTGV2ZWwgRFNBIENlcnRpZmljYXRlMRYwFAYDVQQDEw1BbGVr
+c2V5IFNhbmluMSEwHwYJKoZIhvcNAQkBFhJ4bWxzZWNAYWxla3NleS5jb20wgfAw
+gagGByqGSM44BAEwgZwCQQDIMfw6P79Fcw0hrxYKq3ePh7wmevc95UjfF2JHQJBX
+Jb9XFBa5LRy71lzh/OYMH4oh4giiFVRVBCW9HpZqOTNJAhUAlEOrmqjJG3tfjU49
+XjJuM3AXNskCQAUzwzmbp53bZ+bzDcOU6UGh3Ig/TFdLGXYevs3tiZaFLa//EYF+
+l5Tdsr3NQpGRRf4arXvXPZyIJhYYHJVk7OMDQwACQDonSDDJk3VaIfdVHPnOitRq
+V5XPFfMDksNb0WelnZdl/qokl9eaU+8uiH7LtsU0QYX9lE8kTplcUdD0bxjDYJ2j
+ggFTMIIBTzAMBgNVHRMEBTADAQH/MCwGCWCGSAGG+EIBDQQfFh1PcGVuU1NMIEdl
+bmVyYXRlZCBDZXJ0aWZpY2F0ZTAdBgNVHQ4EFgQUpVifKXAtGkJHRAParmenuvcp
+ZT4wgfEGA1UdIwSB6TCB5oAU/uTsUyTwlZXHELXhRLVdOWVa436hgcKkgb8wgbwx
+CzAJBgNVBAYTAlVTMRMwEQYDVQQIEwpDYWxpZm9ybmlhMT0wOwYDVQQKEzRYTUwg
+U2VjdXJpdHkgTGlicmFyeSAoaHR0cDovL3d3dy5hbGVrc2V5LmNvbS94bWxzZWMp
+MR4wHAYDVQQLExVUZXN0IFJvb3QgQ2VydGlmaWNhdGUxFjAUBgNVBAMTDUFsZWtz
+ZXkgU2FuaW4xITAfBgkqhkiG9w0BCQEWEnhtbHNlY0BhbGVrc2V5LmNvbYIJANaO
+uOCRgiz4MA0GCSqGSIb3DQEBBQUAA0EAJB9Kc4/Z0hTwiDYR5fXVPyzAjD+BeChR
+F14ztWl1Ol6REWFRbIGfEz3XDgCHCiocM8ExXi7zn26R072cdBz7+w==
           </X509Certificate>
         </X509Data>
       </Object>
diff --git a/tests/testDSig.sh b/tests/testDSig.sh
index fe6a147..b66bf13 100755
--- a/tests/testDSig.sh
+++ b/tests/testDSig.sh
@@ -1,8 +1,15 @@
 #!/bin/sh 
 
+OS_ARCH=`uname -o`
+
+if [ "z$OS_ARCH" = "zCygwin" ] ; then
+	topfolder=`cygpath -wa $2`
+	xmlsec_app=`cygpath -a $3`
+else
+	topfolder=$2
+	xmlsec_app=$3
+fi
 crypto=$1
-topfolder=$2
-xmlsec_app=$3
 file_format=$4
 
 pub_key_format=$file_format
@@ -13,10 +20,15 @@ priv_key_format="p12"
 if [ "z$TMPFOLDER" = "z" ] ; then
     TMPFOLDER=/tmp
 fi
-
 timestamp=`date +%Y%m%d_%H%M%S` 
-tmpfile=$TMPFOLDER/testDSig.$timestamp-$$.tmp
-logfile=$TMPFOLDER/testDSig.$timestamp-$$.log
+if [ "z$OS_ARCH" = "zCygwin" ] ; then
+	tmpfile=`cygpath -wa $TMPFOLDER/testDSig.$timestamp-$$.tmp`
+	logfile=`cygpath -wa $TMPFOLDER/testDSig.$timestamp-$$.log`
+else
+	tmpfile=$TMPFOLDER/testDSig.$timestamp-$$.tmp
+	logfile=$TMPFOLDER/testDSig.$timestamp-$$.log
+fi
+
 script="$0"
 
 # prepate crypto config folder
@@ -105,6 +117,149 @@ echo "--- testDSig started for xmlsec-$crypto library ($timestamp)" >> $logfile
 echo "--- LD_LIBRARY_PATH=$LD_LIBRARY_PATH" >> $logfile
 
 
+execDSigTest "" "aleksey-xmldsig-01/enveloping-dsa-x509chain" \
+    "--trusted-$cert_format $topfolder/keys/cacert.$cert_format --enabled-key-data x509" \
+    "$priv_key_option $topfolder/keys/dsakey.$priv_key_format --pwd secret" \
+    "--trusted-$cert_format $topfolder/keys/cacert.$cert_format --enabled-key-data x509"
+
+execDSigTest "" "aleksey-xmldsig-01/enveloping-rsa-x509chain" \
+    "--trusted-$cert_format $topfolder/keys/cacert.$cert_format --enabled-key-data x509" \
+    "$priv_key_option $topfolder/keys/rsakey.$priv_key_format --pwd secret" \
+    "--trusted-$cert_format $topfolder/keys/cacert.$cert_format --enabled-key-data x509"
+
+execDSigTest "" "aleksey-xmldsig-01/enveloping-md5-hmac-md5" \
+    "--hmackey $topfolder/keys/hmackey.bin" \
+    "--hmackey $topfolder/keys/hmackey.bin" \
+    "--hmackey $topfolder/keys/hmackey.bin" 
+
+execDSigTest "" "aleksey-xmldsig-01/enveloping-md5-hmac-md5-64" \
+    "--hmackey $topfolder/keys/hmackey.bin" \
+    "--hmackey $topfolder/keys/hmackey.bin" \
+    "--hmackey $topfolder/keys/hmackey.bin" 
+
+execDSigTest "" "aleksey-xmldsig-01/enveloping-ripemd160-hmac-ripemd160" \
+    "--hmackey $topfolder/keys/hmackey.bin" \
+    "--hmackey $topfolder/keys/hmackey.bin" \
+    "--hmackey $topfolder/keys/hmackey.bin" 
+
+execDSigTest "" "aleksey-xmldsig-01/enveloping-ripemd160-hmac-ripemd160-64" \
+    "--hmackey $topfolder/keys/hmackey.bin" \
+    "--hmackey $topfolder/keys/hmackey.bin" \
+    "--hmackey $topfolder/keys/hmackey.bin" 
+
+execDSigTest "" "aleksey-xmldsig-01/xpointer-hmac" \
+    "--hmackey $topfolder/keys/hmackey.bin" \
+    "--hmackey $topfolder/keys/hmackey.bin" \
+    "--hmackey $topfolder/keys/hmackey.bin" 
+
+execDSigTest "" "aleksey-xmldsig-01/enveloping-sha1-hmac-sha1" \
+    "--hmackey $topfolder/keys/hmackey.bin" \
+    "--hmackey $topfolder/keys/hmackey.bin" \
+    "--hmackey $topfolder/keys/hmackey.bin" 
+
+execDSigTest "" "aleksey-xmldsig-01/enveloping-sha1-hmac-sha1-64" \
+    "--hmackey $topfolder/keys/hmackey.bin" \
+    "--hmackey $topfolder/keys/hmackey.bin" \
+    "--hmackey $topfolder/keys/hmackey.bin" 
+
+execDSigTest "" "aleksey-xmldsig-01/enveloping-sha224-hmac-sha224" \
+    "--hmackey $topfolder/keys/hmackey.bin" \
+    "--hmackey $topfolder/keys/hmackey.bin" \
+    "--hmackey $topfolder/keys/hmackey.bin" 
+
+execDSigTest "" "aleksey-xmldsig-01/enveloping-sha224-hmac-sha224-64" \
+    "--hmackey $topfolder/keys/hmackey.bin" \
+    "--hmackey $topfolder/keys/hmackey.bin" \
+    "--hmackey $topfolder/keys/hmackey.bin" 
+
+execDSigTest "" "aleksey-xmldsig-01/enveloping-sha256-hmac-sha256" \
+    "--hmackey $topfolder/keys/hmackey.bin" \
+    "--hmackey $topfolder/keys/hmackey.bin" \
+    "--hmackey $topfolder/keys/hmackey.bin" 
+
+execDSigTest "" "aleksey-xmldsig-01/enveloping-sha256-hmac-sha256-64" \
+    "--hmackey $topfolder/keys/hmackey.bin" \
+    "--hmackey $topfolder/keys/hmackey.bin" \
+    "--hmackey $topfolder/keys/hmackey.bin" 
+
+execDSigTest "" "aleksey-xmldsig-01/enveloping-sha384-hmac-sha384" \
+    "--hmackey $topfolder/keys/hmackey.bin" \
+    "--hmackey $topfolder/keys/hmackey.bin" \
+    "--hmackey $topfolder/keys/hmackey.bin" 
+
+execDSigTest "" "aleksey-xmldsig-01/enveloping-sha384-hmac-sha384-64" \
+    "--hmackey $topfolder/keys/hmackey.bin" \
+    "--hmackey $topfolder/keys/hmackey.bin" \
+    "--hmackey $topfolder/keys/hmackey.bin" 
+
+execDSigTest "" "aleksey-xmldsig-01/enveloping-sha512-hmac-sha512" \
+    "--hmackey $topfolder/keys/hmackey.bin" \
+    "--hmackey $topfolder/keys/hmackey.bin" \
+    "--hmackey $topfolder/keys/hmackey.bin" 
+
+execDSigTest "" "aleksey-xmldsig-01/enveloping-sha512-hmac-sha512-64" \
+    "--hmackey $topfolder/keys/hmackey.bin" \
+    "--hmackey $topfolder/keys/hmackey.bin" \
+    "--hmackey $topfolder/keys/hmackey.bin" 
+
+execDSigTest "" "aleksey-xmldsig-01/enveloping-md5-rsa-md5" \
+    "--trusted-$cert_format $topfolder/keys/cacert.$cert_format --enabled-key-data x509" \
+    "$priv_key_option $topfolder/keys/rsakey.$priv_key_format --pwd secret" \
+    "--trusted-$cert_format $topfolder/keys/cacert.$cert_format --enabled-key-data x509"
+
+execDSigTest "" "aleksey-xmldsig-01/enveloping-ripemd160-rsa-ripemd160" \
+    "--trusted-$cert_format $topfolder/keys/cacert.$cert_format --enabled-key-data x509" \
+    "$priv_key_option $topfolder/keys/rsakey.$priv_key_format --pwd secret" \
+    "--trusted-$cert_format $topfolder/keys/cacert.$cert_format --enabled-key-data x509"
+
+execDSigTest "" "aleksey-xmldsig-01/enveloping-sha1-rsa-sha1" \
+    "--trusted-$cert_format $topfolder/keys/cacert.$cert_format --enabled-key-data x509" \
+    "$priv_key_option $topfolder/keys/rsakey.$priv_key_format --pwd secret" \
+    "--trusted-$cert_format $topfolder/keys/cacert.$cert_format --enabled-key-data x509"
+
+execDSigTest "" "aleksey-xmldsig-01/enveloping-sha224-rsa-sha224" \
+    "--trusted-$cert_format $topfolder/keys/cacert.$cert_format --enabled-key-data x509" \
+    "$priv_key_option $topfolder/keys/rsakey.$priv_key_format --pwd secret" \
+    "--trusted-$cert_format $topfolder/keys/cacert.$cert_format --enabled-key-data x509"
+
+execDSigTest "" "aleksey-xmldsig-01/enveloping-sha256-rsa-sha256" \
+    "--trusted-$cert_format $topfolder/keys/cacert.$cert_format --enabled-key-data x509" \
+    "$priv_key_option $topfolder/keys/rsakey.$priv_key_format --pwd secret" \
+    "--trusted-$cert_format $topfolder/keys/cacert.$cert_format --enabled-key-data x509"
+
+execDSigTest "" "aleksey-xmldsig-01/enveloping-sha384-rsa-sha384" \
+    "--trusted-$cert_format $topfolder/keys/cacert.$cert_format --enabled-key-data x509" \
+    "$priv_key_option $topfolder/keys/largersakey.$priv_key_format --pwd secret" \
+    "--trusted-$cert_format $topfolder/keys/cacert.$cert_format --enabled-key-data x509"
+
+execDSigTest "" "aleksey-xmldsig-01/enveloping-sha512-rsa-sha512" \
+    "--trusted-$cert_format $topfolder/keys/cacert.$cert_format --enabled-key-data x509" \
+    "$priv_key_option $topfolder/keys/largersakey.$priv_key_format --pwd secret" \
+    "--trusted-$cert_format $topfolder/keys/cacert.$cert_format --enabled-key-data x509"
+
+#
+# To generate expired cert run the following command
+# > xmlsec1 sign --pkcs12 tests/keys/expiredkey.p12 --pwd secret --output out.xml ./tests/aleksey-xmldsig-01/enveloping-expired-cert.tmpl
+#
+execDSigTest "" "aleksey-xmldsig-01/enveloping-expired-cert" \
+    "--trusted-$cert_format $topfolder/keys/cacert.$cert_format --enabled-key-data x509 --verification-time 2005-07-10+10:00:00" 
+
+
+execDSigTest "" "aleksey-xmldsig-01/dtd-hmac-91" \
+    "--hmackey $topfolder/keys/hmackey.bin --dtd-file $topfolder/aleksey-xmldsig-01/dtd-hmac-91.dtd" \
+    "--hmackey $topfolder/keys/hmackey.bin --dtd-file $topfolder/aleksey-xmldsig-01/dtd-hmac-91.dtd" \
+    "--hmackey $topfolder/keys/hmackey.bin --dtd-file $topfolder/aleksey-xmldsig-01/dtd-hmac-91.dtd"
+
+execDSigTest "" "aleksey-xmldsig-01/x509data-test" \
+    "--trusted-$cert_format $topfolder/keys/cacert.$cert_format" \
+    "$priv_key_option tests/keys/rsakey.$priv_key_format --pwd secret" \
+    "--trusted-$cert_format $topfolder/keys/cacert.$cert_format"
+
+execDSigTest "" "aleksey-xmldsig-01/x509data-sn-test" \
+    "--trusted-$cert_format $topfolder/keys/cacert.$cert_format --untrusted-$cert_format $topfolder/keys/ca2cert.$cert_format  --untrusted-$cert_format $topfolder/keys/rsacert.$cert_format --enabled-key-data x509" \
+    "$priv_key_option tests/keys/rsakey.$priv_key_format --pwd secret" \
+    "--trusted-$cert_format $topfolder/keys/cacert.$cert_format --untrusted-$cert_format $topfolder/keys/ca2cert.$cert_format  --untrusted-$cert_format $topfolder/keys/rsacert.$cert_format --enabled-key-data x509"
+
 execDSigTest "" "merlin-xmldsig-twenty-three/signature-enveloped-dsa" \
     " " \
     "$priv_key_option $topfolder/keys/dsakey.$priv_key_format --pwd secret" \
@@ -184,60 +339,22 @@ execDSigTest "" "merlin-xmlenc-five/encsig-ripemd160-hmac-ripemd160-kw-tripledes
     "--keys-file $topfolder/merlin-xmlenc-five/keys.xml" \
     "--session-key hmac-192 --keys-file $topfolder/merlin-xmlenc-five/keys.xml" \
     "--keys-file $topfolder/merlin-xmlenc-five/keys.xml" 
+execDSigTest "" "merlin-xmlenc-five/encsig-sha256-hmac-sha256-kw-aes128" \
+    "--keys-file $topfolder/merlin-xmlenc-five/keys.xml" 
+execDSigTest "" "merlin-xmlenc-five/encsig-sha384-hmac-sha384-kw-aes192" \
+    "--keys-file $topfolder/merlin-xmlenc-five/keys.xml" 
+execDSigTest "" "merlin-xmlenc-five/encsig-sha512-hmac-sha512-kw-aes256" \
+    "--keys-file $topfolder/merlin-xmlenc-five/keys.xml" 
+
+#merlin-xmlenc-five/encsig-hmac-sha256-rsa-1_5.xml
+#merlin-xmlenc-five/encsig-hmac-sha256-rsa-oaep-mgf1p.xml
+
     
 execDSigTest "" "merlin-exc-c14n-one/exc-signature" \
     " " \
     "$priv_key_option $topfolder/keys/dsakey.$priv_key_format --pwd secret" \
     " " 
     
-execDSigTest "" "aleksey-xmldsig-01/enveloping-dsa-x509chain" \
-    "--trusted-$cert_format $topfolder/keys/cacert.$cert_format --enabled-key-data x509" \
-    "$priv_key_option $topfolder/keys/dsakey.$priv_key_format --pwd secret" \
-    "--trusted-$cert_format $topfolder/keys/cacert.$cert_format --enabled-key-data x509"
-
-execDSigTest "" "aleksey-xmldsig-01/enveloping-rsa-x509chain" \
-    "--trusted-$cert_format $topfolder/keys/cacert.$cert_format --enabled-key-data x509" \
-    "$priv_key_option $topfolder/keys/rsakey.$priv_key_format --pwd secret" \
-    "--trusted-$cert_format $topfolder/keys/cacert.$cert_format --enabled-key-data x509"
-
-execDSigTest "" "aleksey-xmldsig-01/enveloping-hmac-ripemd160" \
-    "--hmackey $topfolder/keys/hmackey.bin" \
-    "--hmackey $topfolder/keys/hmackey.bin" \
-    "--hmackey $topfolder/keys/hmackey.bin" 
-
-execDSigTest "" "aleksey-xmldsig-01/enveloping-hmac-ripemd160-64" \
-    "--hmackey $topfolder/keys/hmackey.bin" \
-    "--hmackey $topfolder/keys/hmackey.bin" \
-    "--hmackey $topfolder/keys/hmackey.bin" 
-
-execDSigTest "" "aleksey-xmldsig-01/enveloping-hmac-md5" \
-    "--hmackey $topfolder/keys/hmackey.bin" \
-    "--hmackey $topfolder/keys/hmackey.bin" \
-    "--hmackey $topfolder/keys/hmackey.bin" 
-
-execDSigTest "" "aleksey-xmldsig-01/enveloping-hmac-md5-64" \
-    "--hmackey $topfolder/keys/hmackey.bin" \
-    "--hmackey $topfolder/keys/hmackey.bin" \
-    "--hmackey $topfolder/keys/hmackey.bin" 
-
-execDSigTest "" "aleksey-xmldsig-01/xpointer-hmac" \
-    "--hmackey $topfolder/keys/hmackey.bin" \
-    "--hmackey $topfolder/keys/hmackey.bin" \
-    "--hmackey $topfolder/keys/hmackey.bin" 
-
-execDSigTest "" "aleksey-xmldsig-01/enveloping-expired-cert" \
-    "--trusted-$cert_format $topfolder/keys/cacert.$cert_format --enabled-key-data x509 --verification-time 2002-04-17+10:00:00" 
-
-execDSigTest "" "aleksey-xmldsig-01/dtd-hmac-91" \
-    "--hmackey $topfolder/keys/hmackey.bin --dtd-file $topfolder/aleksey-xmldsig-01/dtd-hmac-91.dtd" \
-    "--hmackey $topfolder/keys/hmackey.bin --dtd-file $topfolder/aleksey-xmldsig-01/dtd-hmac-91.dtd" \
-    "--hmackey $topfolder/keys/hmackey.bin --dtd-file $topfolder/aleksey-xmldsig-01/dtd-hmac-91.dtd"
-
-execDSigTest "" "aleksey-xmldsig-01/x509data-test" \
-    "--trusted-$cert_format $topfolder/keys/cacert.$cert_format" \
-    "$priv_key_option tests/keys/rsakey.$priv_key_format --pwd secret" \
-    "--trusted-$cert_format $topfolder/keys/cacert.$cert_format"
-
 execDSigTest "" "merlin-exc-c14n-one/exc-signature" \
     ""
     
@@ -249,6 +366,7 @@ execDSigTest "" "merlin-xpath-filter2-three/sign-xfdl" \
 
 execDSigTest "" "merlin-xpath-filter2-three/sign-spec" \
     ""
+
 execDSigTest "phaos-xmldsig-three" "signature-big" \
     "--pubkey-cert-$cert_format certs/rsa-cert.$cert_format" 
 
@@ -264,8 +382,8 @@ execDSigTest "phaos-xmldsig-three" "signature-dsa-enveloping" \
 execDSigTest "phaos-xmldsig-three" "signature-dsa-manifest" \
     "--trusted-$cert_format certs/dsa-ca-cert.$cert_format"
 
-# execDSigTest "phaos-xmldsig-three" "signature-hmac-md5-c14n-enveloping" \
-#    "--hmackey certs/hmackey.bin"
+execDSigTest "phaos-xmldsig-three" "signature-hmac-md5-c14n-enveloping" \
+    "--hmackey certs/hmackey.bin"
     
 execDSigTest "phaos-xmldsig-three" "signature-hmac-sha1-40-c14n-comments-detached" \
     "--hmackey certs/hmackey.bin"
diff --git a/tests/testEnc.sh b/tests/testEnc.sh
index 4c796b5..ba6f098 100755
--- a/tests/testEnc.sh
+++ b/tests/testEnc.sh
@@ -1,5 +1,7 @@
 #!/bin/sh 
 
+OS_ARCH=`uname -o`
+
 crypto=$1
 topfolder=$2
 xmlsec_app=$3
@@ -61,10 +63,16 @@ execEncTest() {
     printf "    Decrypt existing document                            "
     rm -f $tmpfile
 
+    if [ "z$OS_ARCH" = "zCygwin" ] ; then
+	diff_param=-uw
+    else
+	diff_param=-u
+    fi
+
     echo "$xmlsec_app decrypt $xmlsec_params $2 $file.xml" >>  $logfile 
     $VALGRIND $xmlsec_app decrypt $xmlsec_params $2 $file.xml > $tmpfile 2>> $logfile
     if [ $? = 0 ]; then
-	diff $file.data $tmpfile >> $logfile 2>> $logfile
+	diff $diff_param $file.data $tmpfile >> $logfile 2>> $logfile
 	printRes $?
     else 
 	echo " Error"
@@ -83,7 +91,7 @@ execEncTest() {
 		echo "$xmlsec_app decrypt $xmlsec_params $4 --output $tmpfile.2 $tmpfile" >>  $logfile 
 	        $VALGRIND $xmlsec_app decrypt $xmlsec_params $4 --output $tmpfile.2 $tmpfile >> $logfile 2>> $logfile
 		if [ $? = 0 ]; then
-		    diff $file.data $tmpfile.2 >> $logfile 2>> $logfile
+		    diff $diff_param $file.data $tmpfile.2 >> $logfile 2>> $logfile
 		    printRes $?
     		else 
 		    echo " Error"
@@ -204,11 +212,6 @@ execEncTest "merlin-xmlenc-five/encrypt-element-aes256-cbc-retrieved-kw-aes256"
 #merlin-xmlenc-five/encrypt-data-tripledes-cbc-rsa-oaep-mgf1p-sha256.xml
 #merlin-xmlenc-five/encsig-hmac-sha256-dh.xml
 #merlin-xmlenc-five/encsig-hmac-sha256-kw-tripledes-dh.xml
-#merlin-xmlenc-five/encsig-hmac-sha256-rsa-1_5.xml
-#merlin-xmlenc-five/encsig-hmac-sha256-rsa-oaep-mgf1p.xml
-#merlin-xmlenc-five/encsig-sha256-hmac-sha256-kw-aes128.xml
-#merlin-xmlenc-five/encsig-sha384-hmac-sha384-kw-aes192.xml
-#merlin-xmlenc-five/encsig-sha512-hmac-sha512-kw-aes256.xml
 
 execEncTest "01-phaos-xmlenc-3/enc-element-3des-kt-rsa1_5" \
     "$priv_key_option $topfolder/01-phaos-xmlenc-3/rsa-priv-key.$priv_key_format --pwd secret" \
diff --git a/win32/.cvsignore b/win32/.cvsignore
index b3461f5..2b7a2c9 100644
--- a/win32/.cvsignore
+++ b/win32/.cvsignore
@@ -2,3 +2,5 @@ Makefile
 configure.txt
 *.int
 binaries
+*.win32
+*.win32.zip
diff --git a/win32/Makefile.msvc b/win32/Makefile.msvc
index f6553dc..97120cf 100644
--- a/win32/Makefile.msvc
+++ b/win32/Makefile.msvc
@@ -35,7 +35,7 @@ AUTOCONF = .\configure.txt
 #WITH_CRYPTO=openssl
 #WITH_DEFAULT_CRYPTO=openssl
 #WITH_OPENSSL=1
-#WITH_OPENSSL_096=0
+#WITH_OPENSSL_VERSION=
 #WITH_NSS=0
 #WITH_MSCRYPTO=0
 #WITH_LIBXSLT=1
@@ -235,7 +235,7 @@ XMLSEC_NSS_OBJS = \
 	$(XMLSEC_NSS_INTDIR)\x509.obj\
 	$(XMLSEC_NSS_INTDIR)\x509vfy.obj\
 	$(XMLSEC_NSS_INTDIR)\keysstore.obj\
-	$(XMLSEC_NSS_INTDIR)\kt_rsa.obj\
+	$(XMLSEC_NSS_INTDIR)\keytrans.obj\
 	$(XMLSEC_NSS_INTDIR)\kw_des.obj\
 	$(XMLSEC_NSS_INTDIR)\kw_aes.obj\
 	$(XMLSEC_NSS_INTDIR)\strings.obj
@@ -316,6 +316,11 @@ CFLAGS 			= $(CFLAGS) /D "NDEBUG" /O2
 CFLAGS 			= $(CFLAGS) /DXMLSEC_NO_XSLT=1
 !endif
 
+!if "$(WITH_NT4)" == "1"
+CFLAGS 			= $(CFLAGS) /DXMLSEC_MSCRYPTO_NT4=1
+!else 
+!endif
+
 APP_CFLAGS		= /D "XMLSEC_CRYPTO=\"$(XMLSEC_CRYPTO)\""
 !if "$(WITH_DL)" == "1"
 CFLAGS 			= $(CFLAGS) /D LTDL_OBJDIR=\"\" /D LTDL_SHLIB_EXT=\".dll\"
@@ -327,10 +332,10 @@ APP_CFLAGS		= $(APP_CFLAGS) $(XMLSEC_CRYPTO_CFLAGS)
 APP_CFLAGS		= $(APP_CFLAGS) /D "XMLSEC_NO_TMPL_TEST"
 !endif
 
-!if "$(WITH_OPENSSL_096)" == "1"
-XMLSEC_OPENSSL_CFLAGS   = /D "XMLSEC_OPENSSL_096"  /D "XMLSEC_CRYPTO_OPENSSL" /D "XMLSEC_CRYPTO=\"openssl\""
-!else
+!if "$(WITH_OPENSSL_VERSION)" == ""
 XMLSEC_OPENSSL_CFLAGS   = /D "XMLSEC_CRYPTO_OPENSSL" /D "XMLSEC_CRYPTO=\"openssl\""
+!else
+XMLSEC_OPENSSL_CFLAGS   = /D "$(WITH_OPENSSL_VERSION)" /D "XMLSEC_CRYPTO_OPENSSL" /D "XMLSEC_CRYPTO=\"openssl\""
 !endif
 XMLSEC_NSS_CFLAGS   	= /D "XMLSEC_CRYPTO_NSS" /D "XMLSEC_CRYPTO=\"nss\""
 XMLSEC_MSCRYPTO_CFLAGS  = /D "XMLSEC_CRYPTO_MSCRYPTO" /D "XMLSEC_CRYPTO=\"mscrypto\""
@@ -401,16 +406,6 @@ XMLSEC_CRYPTO_IMP	= $(XMLSEC_OPENSSL_IMP)
 XMLSEC_CRYPTO_A		= $(XMLSEC_OPENSSL_A)
 !endif
 
-!if "$(WITH_DEFAULT_CRYPTO)" == "openssl_096"
-XMLSEC_CRYPTO          	= "openssl"
-XMLSEC_CRYPTO_CFLAGS   	= $(XMLSEC_OPENSSL_CFLAGS)
-XMLSEC_CRYPTO_SOLIBS  	= $(XMLSEC_OPENSSL_SOLIBS)
-XMLSEC_CRYPTO_ALIBS    	= $(XMLSEC_OPENSSL_ALIBS)
-XMLSEC_CRYPTO_SO        = $(XMLSEC_OPENSSL_SO)
-XMLSEC_CRYPTO_IMP	= $(XMLSEC_OPENSSL_IMP)
-XMLSEC_CRYPTO_A		= $(XMLSEC_OPENSSL_A)
-!endif
-
 !if "$(WITH_DEFAULT_CRYPTO)" == "nss"
 XMLSEC_CRYPTO          	= "nss"
 XMLSEC_CRYPTO_CFLAGS   	= $(XMLSEC_NSS_CFLAGS)
@@ -443,8 +438,6 @@ xmlseca :  $(XMLSEC_APPS_INTDIR_A) $(BINDIR)\$(XMLSEC_A) $(WITH_DEFAULT_CRYPTO)
 
 openssl: $(BINDIR)\$(XMLSEC_OPENSSL_SO) $(BINDIR)\$(XMLSEC_OPENSSL_A)
 
-openssl_096: $(BINDIR)\$(XMLSEC_OPENSSL_SO) $(BINDIR)\$(XMLSEC_OPENSSL_A)
-
 nss: $(BINDIR)\$(XMLSEC_NSS_SO) $(BINDIR)\$(XMLSEC_NSS_A)
 
 mscrypto: $(BINDIR)\$(XMLSEC_MSCRYPTO_SO) $(BINDIR)\$(XMLSEC_MSCRYPTO_A)
@@ -456,21 +449,21 @@ check : check-keys check-dsig check-enc
 check-keys : $(BINDIR)\$(APP_NAME)
 	cd ..
 	if not exist win32\tmp mkdir win32\tmp
-	set TMPFOLDER=win32\tmp
+	set TMPFOLDER=win32/tmp
 	sh ./tests/testKeys.sh default ./tests win32/$(BINDIR)/$(APP_NAME) der
 	cd win32
 
 check-dsig : $(BINDIR)\$(APP_NAME)	
 	cd ..
 	if not exist win32\tmp mkdir win32\tmp
-	set TMPFOLDER=win32\tmp
+	set TMPFOLDER=win32/tmp
 	sh ./tests/testDSig.sh default ./tests win32/$(BINDIR)/$(APP_NAME) der
 	cd win32
 
 check-enc : $(BINDIR)\$(APP_NAME)
 	cd ..
 	if not exist win32\tmp mkdir win32\tmp
-	set TMPFOLDER=win32\tmp
+	set TMPFOLDER=win32/tmp
 	sh ./tests/testEnc.sh default ./tests win32/$(BINDIR)/$(APP_NAME) der
 	cd win32
 
diff --git a/win32/configure.js b/win32/configure.js
index bb4e16f..02625b6 100644
--- a/win32/configure.js
+++ b/win32/configure.js
@@ -40,11 +40,12 @@ var verMicroXmlSec;
 var withCrypto = "openssl";
 var withDefaultCrypto = "openssl";
 var withOpenSSL = 0;
-var withOpenSSL096 = 0;
+var withOpenSSLVersion = "";
 var withNss = 0;
 var withMSCrypto = 0;
 var withLibXSLT = 1;
 var withIconv = 1;
+var withNT4 = 0;
 
 /* Win32 build options. */
 var buildDebug = 0;
@@ -95,9 +96,11 @@ function usage()
 	txt += "either 'yes' or 'no'.\n\n";
 	txt += "XmlSec Library options, default value given in parentheses:\n\n";
 	txt += "  crypto:     Crypto engines list, first is default: \"openssl\",\n";
-	txt += "              \"openssl_096\", \"nss\", \"mscrypto\" (\"" + withCrypto + "\");\n"
+	txt += "              \"openssl=096\", \"openssl=097\", \"openssl=098\", \n";
+	txt += "              \"nss\", \"mscrypto\" (\"" + withCrypto + "\");\n"
  	txt += "  xslt:       LibXSLT is used (" + (withLibXSLT? "yes" : "no")  + ")\n";	
  	txt += "  iconv:      Use the iconv library (" + (withIconv? "yes" : "no")  + ")\n";	
+ 	txt += "  nt4:        Enable NT 4.0 support (" + (withNT4? "yes" : "no")  + ")\n";	
 	txt += "\nWin32 build options, default value given in parentheses:\n\n";
 	txt += "  debug:      Build unoptimised debug executables (" + (buildDebug? "yes" : "no")  + ")\n";
 	txt += "  static:     Link libxmlsec statically to xmlsec (" + (buildStatic? "yes" : "no")  + ")\n";
@@ -154,11 +157,12 @@ function discoverVersion()
 	vf.WriteLine("WITH_CRYPTO=" + withCrypto);	
 	vf.WriteLine("WITH_DEFAULT_CRYPTO=" + withDefaultCrypto);	
 	vf.WriteLine("WITH_OPENSSL=" + withOpenSSL);	
-	vf.WriteLine("WITH_OPENSSL_096=" + withOpenSSL096);	
+	vf.WriteLine("WITH_OPENSSL_VERSION=" + withOpenSSLVersion);	
 	vf.WriteLine("WITH_NSS=" + withNss);	
 	vf.WriteLine("WITH_MSCRYPTO=" + withMSCrypto);	
 	vf.WriteLine("WITH_LIBXSLT=" + (withLibXSLT ? "1" : "0"));
 	vf.WriteLine("WITH_ICONV=" + (withIconv ? "1" : "0"));
+	vf.WriteLine("WITH_NT4=" + (withNT4 ? "1" : "0"));
 	vf.WriteLine("DEBUG=" + (buildDebug? "1" : "0"));
 	vf.WriteLine("STATIC=" + (buildStatic? "1" : "0"));
 	vf.WriteLine("WITH_DL=" + (buildWithDLSupport ? "1" : "0"));
@@ -248,6 +252,8 @@ for (i = 0; (i < WScript.Arguments.length) && (error == 0); i++) {
 			withLibXSLT = strToBool(arg.substring(opt.length + 1, arg.length));
 		else if (opt == "iconv")
 			withIconv = strToBool(arg.substring(opt.length + 1, arg.length));
+		else if (opt == "nt4")
+			withNT4 = strToBool(arg.substring(opt.length + 1, arg.length));
 		else if (opt == "debug")
 			buildDebug = strToBool(arg.substring(opt.length + 1, arg.length));
 		else if (opt == "static")
@@ -292,31 +298,44 @@ if (error != 0) {
 }
 
 // Discover crypto support
-var crlist, j;
+var crlist, j, curcrypto;
 crlist = withCrypto.split(",");			
 withCrypto = "";
+withDefaultCrypto = "";
 for (j = 0; j < crlist.length; j++) {		
-	if (crlist[j] == "openssl")
+	if (crlist[j] == "openssl") {
+		curcrypto="openssl";
 		withOpenSSL = 1;
-	else if (crlist[j] == "openssl_096")
-		withOpenSSL096 = 1;
-	else if (crlist[j] == "nss")
+		withOpenSSLVersion = "XMLSEC_OPENSSL_098"; /* default */
+	} else if (crlist[j] == "openssl=096") {
+		curcrypto="openssl";
+		withOpenSSL = 1;
+		withOpenSSLVersion = "XMLSEC_OPENSSL_096";
+	} else if (crlist[j] == "openssl=097") {
+		curcrypto="openssl";
+		withOpenSSL = 1;
+		withOpenSSLVersion = "XMLSEC_OPENSSL_097";
+	} else if (crlist[j] == "openssl=098") {
+		curcrypto="openssl";
+		withOpenSSL = 1;
+		withOpenSSLVersion = "XMLSEC_OPENSSL_098";
+	} else if (crlist[j] == "nss") {
+		curcrypto="nss";
 		withNss = 1;
-	else if (crlist[j] == "mscrypto")
+	} else if (crlist[j] == "mscrypto") {
+		curcrypto="mscrypto";
 		withMSCrypto = 1;
-	else {
+	} else {
 		WScript.Echo("Unknown crypto engine \"" + crlist[j] + "\" is found. Aborting.");
 		WScript.Quit(error);
 	}
-	withCrypto = withCrypto + " " + crlist[j];
-}
-if ((withOpenSSL == 1) && (withOpenSSL096 == 1)) {
-	WScript.Echo("Only one of \"openssl\" and \"openssl_096\" could be specified. Aborting.");
-	WScript.Quit(error);
+	if (j == 0) {
+		withDefaultCrypto = curcrypto;
+		withCrypto = curcrypto;
+	} else {
+		withCrypto = withCrypto + " " + curcrypto;
+	}
 }
-withDefaultCrypto = crlist[0];
-if (withDefaultCrypto == "openssl_096")
-	withDefaultCrypto = "openssl";
 
 // Discover the version.
 discoverVersion();
@@ -343,14 +362,15 @@ WScript.Echo("Created Makefile.");
 // Display the final configuration.
 var txtOut = "\nXMLSEC configuration\n";
 txtOut += "----------------------------\n";
-txtOut += "        Use Crypto: " + withCrypto + "\n";
-txtOut += "Use Default Crypto: " + withDefaultCrypto + "\n";
+txtOut += "         Use Crypto: " + withCrypto + "\n";
+txtOut += " Use Default Crypto: " + withDefaultCrypto + "\n";
 txtOut += "       Use OpenSSL: " + boolToStr(withOpenSSL) + "\n";
-txtOut += "   Use OpenSSL 096: " + boolToStr(withOpenSSL096) + "\n";
-txtOut += "           Use NSS: " + boolToStr(withNss) + "\n";
-txtOut += "      Use MSCrypto: " + boolToStr(withMSCrypto) + "\n";
-txtOut += "       Use LibXSLT: " + boolToStr(withLibXSLT) + "\n";
-txtOut += "         Use iconv: " + boolToStr(withIconv) + "\n";
+txtOut += "Use OpenSSL Version: " + boolToStr(withOpenSSLVersion) + "\n";
+txtOut += "            Use NSS: " + boolToStr(withNss) + "\n";
+txtOut += "       Use MSCrypto: " + boolToStr(withMSCrypto) + "\n";
+txtOut += "        Use LibXSLT: " + boolToStr(withLibXSLT) + "\n";
+txtOut += "          Use iconv: " + boolToStr(withIconv) + "\n";
+txtOut += "     NT 4.0 support: " + boolToStr(withNT4) + "\n";
 txtOut += "\n";
 txtOut += "Win32 build configuration\n";
 txtOut += "-------------------------\n";
diff --git a/win32/mycfg.bat b/win32/mycfg.bat
index 89bd598..6e43745 100644
--- a/win32/mycfg.bat
+++ b/win32/mycfg.bat
@@ -9,9 +9,11 @@ REM Aleksey Sanin <aleksey at aleksey.com>
 REM 
 
 SET XMLSEC_PREFIX=d:\sdk
-SET XMLSEC_INCLUDE=%XMLSEC_PREFIX%\include;%XMLSEC_PREFIX%\include\mozilla;%XMLSEC_PREFIX%\include\mozilla\nspr;%XMLSEC_PREFIX%\include\mozilla\public;%XMLSEC_PREFIX%\include\mozilla\public\nss;%MSSDK_INCLUDE%
+SET XMLSEC_INCLUDE=%XMLSEC_PREFIX%\include;%XMLSEC_PREFIX%\include\mozilla;%XMLSEC_PREFIX%\include\mozilla\nspr;%XMLSEC_PREFIX%\include\mozilla\nss;%MSSDK_INCLUDE%
 SET XMLSEC_LIB=%XMLSEC_PREFIX%\lib;%MSSDK_LIB%
-SET XMLSEC_OPTIONS=static=no debug=yes xslt=yes crypto=mscrypto,openssl,nss
+SET XMLSEC_OPTIONS=static=no iconv=no nt4=yes debug=yes xslt=yes crypto=openssl
+
+REM mscrypto,openssl
 
 del /F Makefile configure.txt
 cscript configure.js prefix=%XMLSEC_PREFIX% %XMLSEC_OPTIONS% include=%XMLSEC_INCLUDE% lib=%XMLSEC_LIB% 
diff --git a/xmlsec1-config b/xmlsec1-config
index 26d9824..e646501 100644
--- a/xmlsec1-config
+++ b/xmlsec1-config
@@ -78,7 +78,7 @@ do
 	;;
 
     --version)
-	echo 1.2.6
+	echo 1.2.9
 	exit 0
 	;;
     
@@ -139,14 +139,14 @@ none)
     ;;
 
 default) 
-    the_crypto_flags="-I/usr/kerberos/include   -DXMLSEC_CRYPTO_OPENSSL=1 -DXMLSEC_CRYPTO=\\\"openssl\\\""
+    the_crypto_flags="-I/usr/kerberos/include   -DXMLSEC_OPENSSL_097=1 -DXMLSEC_CRYPTO_OPENSSL=1 -DXMLSEC_CRYPTO=\\\"openssl\\\""
     the_crypto_libs="-L/usr/kerberos/lib -lssl -lcrypto -lgssapi_krb5 -lkrb5 -lcom_err -lk5crypto -lresolv -ldl -lz  "
     the_xmlsec_crypto_lib="-lxmlsec1-openssl"
     ;;
     
 openssl)
     if test "0" = "0"; then
-        the_crypto_flags="-I/usr/kerberos/include   -DXMLSEC_CRYPTO_OPENSSL=1 -DXMLSEC_CRYPTO=\\\"openssl\\\""
+        the_crypto_flags="-I/usr/kerberos/include   -DXMLSEC_OPENSSL_097=1 -DXMLSEC_CRYPTO_OPENSSL=1 -DXMLSEC_CRYPTO=\\\"openssl\\\""
 	the_crypto_libs="-L/usr/kerberos/lib -lssl -lcrypto -lgssapi_krb5 -lkrb5 -lcom_err -lk5crypto -lresolv -ldl -lz  "
         the_xmlsec_crypto_lib="-lxmlsec1-openssl"
     else
@@ -168,8 +168,8 @@ gnutls)
 
 nss)
     if test "0" = "0"; then
-        the_crypto_flags="-I/usr/include/mozilla-1.7.2/nspr -I/usr/include/mozilla-1.7.2/nss   -DXMLSEC_CRYPTO_NSS=1 -DXMLSEC_CRYPTO=\\\"nss\\\""
-	the_crypto_libs="-L/usr/lib/mozilla-1.7.2 -lnss3 -lsmime3 -lssl3 -lsoftokn3 -lplds4 -lplc4 -lnspr4 -lpthread -ldl  "
+        the_crypto_flags="-I/usr/include/mozilla-1.7.8/nspr -I/usr/include/mozilla-1.7.8/nss   -DXMLSEC_CRYPTO_NSS=1 -DXMLSEC_CRYPTO=\\\"nss\\\""
+	the_crypto_libs="-L/usr/lib/mozilla-1.7.8 -lnss3 -lsmime3 -lssl3 -lsoftokn3 -lplds4 -lplc4 -lnspr4 -lpthread -ldl  "
         the_xmlsec_crypto_lib="-lxmlsec1-nss"
     else
         echo "Error: the \"$crypto\" cryptographic library is not supported"
@@ -187,7 +187,7 @@ esac
 #
 # Assemble all the settings together
 #
-the_flags="$the_flags -DXMLSEC_LIBXML_260=1  -D__XMLSEC_FUNCTION__=__FUNCTION__ -DXMLSEC_NO_XKMS=1 -I${prefix}/include/xmlsec1   $the_xml_flags $the_xslt_flags $the_crypto_flags"
+the_flags="$the_flags  -D__XMLSEC_FUNCTION__=__FUNCTION__ -DXMLSEC_NO_XKMS=1 -I${prefix}/include/xmlsec1   $the_xml_flags $the_xslt_flags $the_crypto_flags"
 the_libs="$the_libs -L${exec_prefix}/lib -lxmlsec1  -ldl  $the_xmlsec_crypto_lib -lxmlsec1 $the_xml_libs $the_xslt_libs $the_crypto_libs"
 
 if $cflags; then
diff --git a/xmlsec1-nss.pc b/xmlsec1-nss.pc
index 0ce402e..f14e2db 100644
--- a/xmlsec1-nss.pc
+++ b/xmlsec1-nss.pc
@@ -4,8 +4,8 @@ libdir=${exec_prefix}/lib
 includedir=${prefix}/include
 
 Name: xmlsec1-nss
-Version: 1.2.6
+Version: 1.2.9
 Description: XML Security Library implements XML Signature and XML Encryption standards
-Requires: libxml-2.0 >= 2.4.2 libxslt >= 1.0.20 mozilla-nss >= 1.4
-Cflags: -DXMLSEC_CRYPTO=\\\"nss\\\" -DXMLSEC_CRYPTO_NSS=1 -DXMLSEC_LIBXML_260=1  -D__XMLSEC_FUNCTION__=__FUNCTION__ -DXMLSEC_NO_XKMS=1 -I${prefix}/include/xmlsec1  
+Requires: libxml-2.0 >= 2.6.12 libxslt >= 1.0.20 mozilla-nss >= 1.4
+Cflags: -DXMLSEC_CRYPTO=\\\"nss\\\" -DXMLSEC_CRYPTO_NSS=1  -D__XMLSEC_FUNCTION__=__FUNCTION__ -DXMLSEC_NO_XKMS=1 -I${prefix}/include/xmlsec1  
 Libs: -L${libdir} -lxmlsec1-nss -lxmlsec1  -ldl 
diff --git a/xmlsec1-openssl.pc b/xmlsec1-openssl.pc
index 03d4328..cb49595 100644
--- a/xmlsec1-openssl.pc
+++ b/xmlsec1-openssl.pc
@@ -4,8 +4,8 @@ libdir=${exec_prefix}/lib
 includedir=${prefix}/include
 
 Name: xmlsec1-openssl
-Version: 1.2.6
+Version: 1.2.9
 Description: XML Security Library implements XML Signature and XML Encryption standards
-Requires: libxml-2.0 >= 2.4.2 libxslt >= 1.0.20 
-Cflags: -DXMLSEC_CRYPTO=\\\"openssl\\\" -DXMLSEC_LIBXML_260=1  -D__XMLSEC_FUNCTION__=__FUNCTION__ -DXMLSEC_NO_XKMS=1 -I${prefix}/include/xmlsec1   -I/usr/kerberos/include   -DXMLSEC_CRYPTO_OPENSSL=1
+Requires: libxml-2.0 >= 2.6.12 libxslt >= 1.0.20 
+Cflags: -DXMLSEC_CRYPTO=\\\"openssl\\\"  -D__XMLSEC_FUNCTION__=__FUNCTION__ -DXMLSEC_NO_XKMS=1 -I${prefix}/include/xmlsec1   -I/usr/kerberos/include   -DXMLSEC_OPENSSL_097=1 -DXMLSEC_CRYPTO_OPENSSL=1
 Libs: -L${exec_prefix}/lib -lxmlsec1-openssl -lxmlsec1  -ldl  -L/usr/kerberos/lib -lssl -lcrypto -lgssapi_krb5 -lkrb5 -lcom_err -lk5crypto -lresolv -ldl -lz  
diff --git a/xmlsec1.pc b/xmlsec1.pc
index d6d19ac..75ec0bb 100644
--- a/xmlsec1.pc
+++ b/xmlsec1.pc
@@ -4,8 +4,8 @@ libdir=${exec_prefix}/lib
 includedir=${prefix}/include
 
 Name: xmlsec1
-Version: 1.2.6
+Version: 1.2.9
 Description: XML Security Library implements XML Signature and XML Encryption standards
-Requires: libxml-2.0 >= 2.4.2 libxslt >= 1.0.20 
-Cflags: -DXMLSEC_CRYPTO=\\\"openssl\\\" -DXMLSEC_CRYPTO_DYNAMIC_LOADING=1 -DXMLSEC_LIBXML_260=1  -D__XMLSEC_FUNCTION__=__FUNCTION__ -DXMLSEC_NO_XKMS=1 -I${prefix}/include/xmlsec1  
+Requires: libxml-2.0 >= 2.6.12 libxslt >= 1.0.20 
+Cflags: -DXMLSEC_CRYPTO=\\\"openssl\\\" -DXMLSEC_CRYPTO_DYNAMIC_LOADING=1  -D__XMLSEC_FUNCTION__=__FUNCTION__ -DXMLSEC_NO_XKMS=1 -I${prefix}/include/xmlsec1  
 Libs: -L${libdir} -lxmlsec1  -ldl  
diff --git a/xmlsec1.spec b/xmlsec1.spec
index b3c86ee..c1f9d18 100644
--- a/xmlsec1.spec
+++ b/xmlsec1.spec
@@ -1,6 +1,6 @@
 Summary: Library providing support for "XML Signature" and "XML Encryption" standards
 Name: xmlsec1
-Version: 1.2.6
+Version: 1.2.9
 Release: 1
 License: MIT
 Group: Development/Libraries
@@ -10,9 +10,9 @@ Packager: Aleksey Sanin <aleksey at aleksey.com>
 Source: ftp://ftp.aleksey.com/pub/xmlsec/releases/xmlsec1-%{version}.tar.gz
 BuildRoot: %{_tmppath}/xmlsec1-%{version}-root
 URL: http://www.aleksey.com/xmlsec
-Requires: libxml2 >= 2.4.2
+Requires: libxml2 >= 2.6.12
 Requires: libxslt >= 1.0.20
-BuildRequires: libxml2-devel >= 2.4.2
+BuildRequires: libxml2-devel >= 2.6.12
 BuildRequires: libxslt-devel >= 1.0.20
 Prefix: %{_prefix}
 Docdir: %{_docdir}
@@ -26,7 +26,7 @@ standards "XML Digital Signature" and "XML Encryption".
 Summary: Libraries, includes, etc. to develop applications with XML Digital Signatures and XML Encryption support.
 Group: Development/Libraries 
 Requires: xmlsec1 = %{version}
-Requires: libxml2-devel >= 2.4.2
+Requires: libxml2-devel >= 2.6.12
 Requires: libxslt-devel >= 1.0.20
 Requires: openssl-devel >= 0.9.6
 Requires: zlib-devel 
@@ -39,7 +39,7 @@ Signatures and XML Encryption support.
 Summary: OpenSSL crypto plugin for XML Security Library
 Group: Development/Libraries 
 Requires: xmlsec1 = %{version}
-Requires: libxml2 >= 2.4.2
+Requires: libxml2 >= 2.6.12
 Requires: libxslt >= 1.0.20
 Requires: openssl >= 0.9.6
 BuildRequires: openssl-devel >= 0.9.6
@@ -54,7 +54,7 @@ Group: Development/Libraries
 Requires: xmlsec1 = %{version}
 Requires: xmlsec1-devel = %{version}
 Requires: xmlsec1-openssl = %{version}
-Requires: libxml2-devel >= 2.4.2
+Requires: libxml2-devel >= 2.6.12
 Requires: libxslt-devel >= 1.0.20
 Requires: openssl >= 0.9.6
 Requires: openssl-devel >= 0.9.6
@@ -66,7 +66,7 @@ Libraries, includes, etc. for developing XML Security applications with OpenSSL
 Summary: NSS crypto plugin for XML Security Library
 Group: Development/Libraries 
 Requires: xmlsec1 = %{version}
-Requires: libxml2 >= 2.4.2
+Requires: libxml2 >= 2.6.12
 Requires: libxslt >= 1.0.20
 Requires: mozilla-nss >= 1.4
 BuildRequires: mozilla-nss-devel >= 1.4
@@ -81,7 +81,7 @@ Group: Development/Libraries
 Requires: xmlsec1 = %{version}
 Requires: xmlsec1-devel = %{version}
 Requires: xmlsec1-nss = %{version}
-Requires: libxml2-devel >= 2.4.2
+Requires: libxml2-devel >= 2.6.12
 Requires: libxslt-devel >= 1.0.20
 Requires: mozilla-nss-devel >= 1.4
 
diff --git a/xmlsec1Conf.sh b/xmlsec1Conf.sh
index 235d1ca..3fcb929 100644
--- a/xmlsec1Conf.sh
+++ b/xmlsec1Conf.sh
@@ -7,7 +7,7 @@ libdir="${exec_prefix}/lib"
 includedir="${prefix}/include"
 
 XMLSEC_LIBDIR="${exec_prefix}/lib"
-XMLSEC_INCLUDEDIR="-DXMLSEC_LIBXML_260=1  -D__XMLSEC_FUNCTION__=__FUNCTION__ -DXMLSEC_NO_XKMS=1 -I${prefix}/include/xmlsec1   -I/usr/include/libxml2   -I/usr/include/libxml2   -I/usr/kerberos/include   -DXMLSEC_CRYPTO_OPENSSL=1 -DXMLSEC_CRYPTO=\\\"openssl\\\""
+XMLSEC_INCLUDEDIR=" -D__XMLSEC_FUNCTION__=__FUNCTION__ -DXMLSEC_NO_XKMS=1 -I${prefix}/include/xmlsec1   -I/usr/include/libxml2   -I/usr/include/libxml2   -I/usr/kerberos/include   -DXMLSEC_OPENSSL_097=1 -DXMLSEC_CRYPTO_OPENSSL=1 -DXMLSEC_CRYPTO=\\\"openssl\\\""
 XMLSEC_LIBS="-L${exec_prefix}/lib -lxmlsec1-openssl -lxmlsec1  -ldl  -lxml2 -lpthread -lz -lm   -lxslt -lxml2 -lpthread -lz -lm   -L/usr/kerberos/lib -lssl -lcrypto -lgssapi_krb5 -lkrb5 -lcom_err -lk5crypto -lresolv -ldl -lz  "
-MODULE_VERSION="xmlsec-1.2.6-openssl"
+MODULE_VERSION="xmlsec-1.2.9-openssl"
 

-- 
Alioth's /usr/local/bin/git-commit-notice on /srv/git.debian.org/git/debian-xml-sgml/xmlsec1.git



More information about the debian-xml-sgml-commit mailing list