external/libxmlsec/UnpackedTarball_xmlsec.mk       |   11 
 external/libxmlsec/include/akmngr_mscrypto.h       |   72 
 external/libxmlsec/include/akmngr_nss.h            |   57 
 external/libxmlsec/include/ciphers.h               |   36 
 external/libxmlsec/include/tokens.h                |  183 
 external/libxmlsec/src/akmngr_mscrypto.c           |  237 
 external/libxmlsec/src/akmngr_nss.c                |  384 -
 external/libxmlsec/src/keywrapers.c                | 1213 ----
 external/libxmlsec/src/tokens.c                    |  548 -
 external/libxmlsec/xmlsec1-customkeymanage.patch   | 3308 -----------
 external/libxmlsec/xmlsec1-customkeymanage.patch.1 | 6149 +++++++++++++++++++++
 11 files changed, 6150 insertions(+), 6048 deletions(-)

New commits:
commit 9e3a15c728255a7874179c7104de366b0e056928
Author: Miklos Vajna <vmik...@collabora.co.uk>
Date:   Mon Mar 7 09:32:27 2016 +0100

    libxmlsec: move new files back to xmlsec1-customkeymanage.patch
    
    That was the situation before commit
    ec6af4194e80f5f0b2e46ca59802ff397a2a4a24 (convert libxmlsec to gbuild,
    2012-11-29), and if we ever manage to upstream this patch, then it'll
    just make the review process harder if half of the patch is in separate
    files.
    
    Change-Id: I0d12d72ea7a1a2591d1ef5232c006b6b7fea7aff
    Reviewed-on: https://gerrit.libreoffice.org/22973
    Reviewed-by: Miklos Vajna <vmik...@collabora.co.uk>
    Tested-by: Jenkins <c...@libreoffice.org>

diff --git a/external/libxmlsec/UnpackedTarball_xmlsec.mk 
b/external/libxmlsec/UnpackedTarball_xmlsec.mk
index a5a3d25..5915631 100644
--- a/external/libxmlsec/UnpackedTarball_xmlsec.mk
+++ b/external/libxmlsec/UnpackedTarball_xmlsec.mk
@@ -20,7 +20,7 @@ xmlsec_patches += xmlsec1-1.2.14_fix_extern_c.patch
 xmlsec_patches += xmlsec1-android.patch
 # Partial backport of 
<https://github.com/lsh123/xmlsec/commit/6a4968bc33f83aaf61efc0a80333350ce9c372f5>.
 xmlsec_patches += xmlsec1-1.2.14-ansi.patch
-xmlsec_patches += xmlsec1-customkeymanage.patch
+xmlsec_patches += xmlsec1-customkeymanage.patch.1
 xmlsec_patches += xmlsec1-update-config.guess.patch.1
 # Upstreamed as 
<https://github.com/lsh123/xmlsec/commit/7069e2b0ab49679008abedd6d223fb95538b0684>.
 xmlsec_patches += xmlsec1-ooxml.patch.1
@@ -36,15 +36,6 @@ $(eval $(call gb_UnpackedTarball_add_patches,xmlsec,\
        $(foreach patch,$(xmlsec_patches),external/libxmlsec/$(patch)) \
 ))
 
-$(eval $(call 
gb_UnpackedTarball_add_file,xmlsec,include/xmlsec/mscrypto/akmngr.h,external/libxmlsec/include/akmngr_mscrypto.h))
-$(eval $(call 
gb_UnpackedTarball_add_file,xmlsec,src/mscrypto/akmngr.c,external/libxmlsec/src/akmngr_mscrypto.c))
-$(eval $(call 
gb_UnpackedTarball_add_file,xmlsec,include/xmlsec/nss/akmngr.h,external/libxmlsec/include/akmngr_nss.h))
-$(eval $(call 
gb_UnpackedTarball_add_file,xmlsec,include/xmlsec/nss/ciphers.h,external/libxmlsec/include/ciphers.h))
-$(eval $(call 
gb_UnpackedTarball_add_file,xmlsec,include/xmlsec/nss/tokens.h,external/libxmlsec/include/tokens.h))
-$(eval $(call 
gb_UnpackedTarball_add_file,xmlsec,src/nss/akmngr.c,external/libxmlsec/src/akmngr_nss.c))
-$(eval $(call 
gb_UnpackedTarball_add_file,xmlsec,src/nss/keywrapers.c,external/libxmlsec/src/keywrapers.c))
-$(eval $(call 
gb_UnpackedTarball_add_file,xmlsec,src/nss/tokens.c,external/libxmlsec/src/tokens.c))
-
 ifeq ($(OS)$(COM),WNTGCC)
 $(eval $(call gb_UnpackedTarball_add_patches,xmlsec,\
        external/libxmlsec/xmlsec1-mingw32.patch \
diff --git a/external/libxmlsec/include/akmngr_mscrypto.h 
b/external/libxmlsec/include/akmngr_mscrypto.h
deleted file mode 100644
index 57ba811..0000000
--- a/external/libxmlsec/include/akmngr_mscrypto.h
+++ /dev/null
@@ -1,72 +0,0 @@
-/**
- * XMLSec library
- *
- * This is free software; see Copyright file in the source
- * distribution for preciese wording.
- *
- * Copyright ..........................
- */
-#ifndef __XMLSEC_MSCRYPTO_AKMNGR_H__
-#define __XMLSEC_MSCRYPTO_AKMNGR_H__
-
-#include <windows.h>
-#include <wincrypt.h>
-
-#include <xmlsec/xmlsec.h>
-#include <xmlsec/keys.h>
-#include <xmlsec/transforms.h>
-
-#ifdef __cplusplus
-extern "C" {
-#endif /* __cplusplus */
-
-XMLSEC_CRYPTO_EXPORT xmlSecKeysMngrPtr
-xmlSecMSCryptoAppliedKeysMngrCreate(
-    HCERTSTORE keyStore ,
-    HCERTSTORE certStore
-) ;
-
-XMLSEC_CRYPTO_EXPORT int
-xmlSecMSCryptoAppliedKeysMngrSymKeyLoad(
-    xmlSecKeysMngrPtr   mngr ,
-    HCRYPTKEY   symKey
-) ;
-
-XMLSEC_CRYPTO_EXPORT int
-xmlSecMSCryptoAppliedKeysMngrPubKeyLoad(
-    xmlSecKeysMngrPtr   mngr ,
-    HCRYPTKEY   pubKey
-) ;
-
-XMLSEC_CRYPTO_EXPORT int
-xmlSecMSCryptoAppliedKeysMngrPriKeyLoad(
-    xmlSecKeysMngrPtr   mngr ,
-    HCRYPTKEY   priKey
-) ;
-
-XMLSEC_CRYPTO_EXPORT int
-xmlSecMSCryptoAppliedKeysMngrAdoptKeyStore (
-    xmlSecKeysMngrPtr   mngr ,
-    HCERTSTORE keyStore
-) ;
-
-XMLSEC_CRYPTO_EXPORT int
-xmlSecMSCryptoAppliedKeysMngrAdoptTrustedStore (
-    xmlSecKeysMngrPtr   mngr ,
-    HCERTSTORE trustedStore
-) ;
-
-XMLSEC_CRYPTO_EXPORT int
-xmlSecMSCryptoAppliedKeysMngrAdoptUntrustedStore (
-    xmlSecKeysMngrPtr   mngr ,
-    HCERTSTORE untrustedStore
-) ;
-
-#ifdef __cplusplus
-}
-#endif /* __cplusplus */
-
-#endif /* __XMLSEC_MSCRYPTO_AKMNGR_H__ */
-
-
-
diff --git a/external/libxmlsec/include/akmngr_nss.h 
b/external/libxmlsec/include/akmngr_nss.h
deleted file mode 100644
index a6b8830..0000000
--- a/external/libxmlsec/include/akmngr_nss.h
+++ /dev/null
@@ -1,57 +0,0 @@
-/**
- * XMLSec library
- *
- * This is free software; see Copyright file in the source
- * distribution for preciese wording.
- *
- * Copyright ..........................
- */
-#ifndef __XMLSEC_NSS_AKMNGR_H__
-#define __XMLSEC_NSS_AKMNGR_H__
-
-#include <nss.h>
-#include <nspr.h>
-#include <pk11func.h>
-#include <cert.h>
-
-#include <xmlsec/xmlsec.h>
-#include <xmlsec/keys.h>
-#include <xmlsec/transforms.h>
-
-#ifdef __cplusplus
-extern "C" {
-#endif /* __cplusplus */
-
-XMLSEC_CRYPTO_EXPORT xmlSecKeysMngrPtr
-xmlSecNssAppliedKeysMngrCreate(
-    PK11SlotInfo** slots,
-    int cSlots,
-    CERTCertDBHandle* handler
-) ;
-
-XMLSEC_CRYPTO_EXPORT int
-xmlSecNssAppliedKeysMngrSymKeyLoad(
-    xmlSecKeysMngrPtr   mngr ,
-    PK11SymKey*         symKey
-) ;
-
-XMLSEC_CRYPTO_EXPORT int
-xmlSecNssAppliedKeysMngrPubKeyLoad(
-    xmlSecKeysMngrPtr   mngr ,
-    SECKEYPublicKey*    pubKey
-) ;
-
-XMLSEC_CRYPTO_EXPORT int
-xmlSecNssAppliedKeysMngrPriKeyLoad(
-    xmlSecKeysMngrPtr   mngr ,
-    SECKEYPrivateKey*   priKey
-) ;
-
-#ifdef __cplusplus
-}
-#endif /* __cplusplus */
-
-#endif /* __XMLSEC_NSS_AKMNGR_H__ */
-
-
-
diff --git a/external/libxmlsec/include/ciphers.h 
b/external/libxmlsec/include/ciphers.h
deleted file mode 100644
index 8088614..0000000
--- a/external/libxmlsec/include/ciphers.h
+++ /dev/null
@@ -1,36 +0,0 @@
-/**
- * XMLSec library
- *
- * This is free software; see Copyright file in the source
- * distribution for preciese wording.
- *
- * Copyright ..........................
- */
-#ifndef __XMLSEC_NSS_CIPHERS_H__
-#define __XMLSEC_NSS_CIPHERS_H__
-
-#ifdef __cplusplus
-extern "C" {
-#endif /* __cplusplus */
-
-#include <xmlsec/xmlsec.h>
-#include <xmlsec/keys.h>
-#include <xmlsec/transforms.h>
-
-
-XMLSEC_CRYPTO_EXPORT int xmlSecNssSymKeyDataAdoptKey( xmlSecKeyDataPtr data,
-                                    PK11SymKey* symkey ) ;
-
-XMLSEC_CRYPTO_EXPORT xmlSecKeyDataPtr xmlSecNssSymKeyDataKeyAdopt( PK11SymKey* 
symKey ) ;
-
-XMLSEC_CRYPTO_EXPORT PK11SymKey*   xmlSecNssSymKeyDataGetKey(xmlSecKeyDataPtr 
data);
-
-
-#ifdef __cplusplus
-}
-#endif /* __cplusplus */
-
-#endif /* __XMLSEC_NSS_CIPHERS_H__ */
-
-
-
diff --git a/external/libxmlsec/include/tokens.h 
b/external/libxmlsec/include/tokens.h
deleted file mode 100644
index c7c0fa1..0000000
--- a/external/libxmlsec/include/tokens.h
+++ /dev/null
@@ -1,183 +0,0 @@
-/**
- * XMLSec library
- *
- * This is free software; see Copyright file in the source
- * distribution for preciese wording.
- *
- * Copyright (c) 2003 Sun Microsystems, Inc.  All rights reserved.
- *
- * Contributor(s): _____________________________
- *
- */
-#ifndef __XMLSEC_NSS_TOKENS_H__
-#define __XMLSEC_NSS_TOKENS_H__
-
-#include <string.h>
-
-#include <nss.h>
-#include <pk11func.h>
-
-#include <xmlsec/xmlsec.h>
-#include <xmlsec/list.h>
-
-#ifdef __cplusplus
-extern "C" {
-#endif /* __cplusplus */
-
-/**
- * xmlSecNssKeySlotListId
- *
- * The crypto mechanism list klass
- */
-#define xmlSecNssKeySlotListId xmlSecNssKeySlotListGetKlass()
-XMLSEC_CRYPTO_EXPORT xmlSecPtrListId xmlSecNssKeySlotListGetKlass( void ) ;
-
-/*******************************************
- * KeySlot interfaces
- *******************************************/
-/**
- * Internal NSS key slot data
- * @mechanismList:      the mechanisms that the slot bound with.
- * @slot:               the pkcs slot
- *
- * This context is located after xmlSecPtrList
- */
-typedef struct _xmlSecNssKeySlot    xmlSecNssKeySlot ;
-typedef struct _xmlSecNssKeySlot*   xmlSecNssKeySlotPtr ;
-
-struct _xmlSecNssKeySlot {
-    CK_MECHANISM_TYPE_PTR   mechanismList ; /* mech. array, NULL ternimated */
-    PK11SlotInfo*           slot ;
-} ;
-
-XMLSEC_CRYPTO_EXPORT int
-xmlSecNssKeySlotSetMechList(
-    xmlSecNssKeySlotPtr keySlot ,
-    CK_MECHANISM_TYPE_PTR mechanismList
-) ;
-
-XMLSEC_CRYPTO_EXPORT int
-xmlSecNssKeySlotEnableMech(
-    xmlSecNssKeySlotPtr keySlot ,
-    CK_MECHANISM_TYPE mechanism
-) ;
-
-XMLSEC_CRYPTO_EXPORT int
-xmlSecNssKeySlotDisableMech(
-    xmlSecNssKeySlotPtr keySlot ,
-    CK_MECHANISM_TYPE mechanism
-) ;
-
-XMLSEC_CRYPTO_EXPORT CK_MECHANISM_TYPE_PTR
-xmlSecNssKeySlotGetMechList(
-    xmlSecNssKeySlotPtr keySlot
-) ;
-
-XMLSEC_CRYPTO_EXPORT int
-xmlSecNssKeySlotSetSlot(
-    xmlSecNssKeySlotPtr keySlot ,
-    PK11SlotInfo* slot
-) ;
-
-XMLSEC_CRYPTO_EXPORT int
-xmlSecNssKeySlotInitialize(
-    xmlSecNssKeySlotPtr keySlot ,
-    PK11SlotInfo* slot
-) ;
-
-XMLSEC_CRYPTO_EXPORT void
-xmlSecNssKeySlotFinalize(
-    xmlSecNssKeySlotPtr keySlot
-) ;
-
-XMLSEC_CRYPTO_EXPORT PK11SlotInfo*
-xmlSecNssKeySlotGetSlot(
-    xmlSecNssKeySlotPtr keySlot
-) ;
-
-XMLSEC_CRYPTO_EXPORT xmlSecNssKeySlotPtr
-xmlSecNssKeySlotCreate() ;
-
-XMLSEC_CRYPTO_EXPORT int
-xmlSecNssKeySlotCopy(
-    xmlSecNssKeySlotPtr newKeySlot ,
-    xmlSecNssKeySlotPtr keySlot
-) ;
-
-XMLSEC_CRYPTO_EXPORT xmlSecNssKeySlotPtr
-xmlSecNssKeySlotDuplicate(
-    xmlSecNssKeySlotPtr keySlot
-) ;
-
-XMLSEC_CRYPTO_EXPORT void
-xmlSecNssKeySlotDestroy(
-        xmlSecNssKeySlotPtr keySlot
-) ;
-
-XMLSEC_CRYPTO_EXPORT int
-xmlSecNssKeySlotBindMech(
-    xmlSecNssKeySlotPtr keySlot ,
-    CK_MECHANISM_TYPE type
-) ;
-
-XMLSEC_CRYPTO_EXPORT int
-xmlSecNssKeySlotSupportMech(
-    xmlSecNssKeySlotPtr keySlot ,
-    CK_MECHANISM_TYPE type
-) ;
-
-
-/************************************************************************
- * PKCS#11 crypto token interfaces
- *
- * A PKCS#11 slot repository will be defined internally. From the
- * repository, a user can specify a particular slot for a certain crypto
- * mechanism.
- *
- * In some situation, some cryptographic operation should act in a user
- * designated devices. The interfaces defined here provide the way. If
- * the user do not initialize the repository distinctly, the interfaces
- * use the default functions provided by NSS itself.
- *
- ************************************************************************/
-/**
- * Initialize NSS pkcs#11 slot repository
- *
- * Returns 0 if success or -1 if an error occurs.
- */
-XMLSEC_CRYPTO_EXPORT int xmlSecNssSlotInitialize( void ) ;
-
-/**
- * Shutdown and destroy NSS pkcs#11 slot repository
- */
-XMLSEC_CRYPTO_EXPORT void xmlSecNssSlotShutdown() ;
-
-/**
- * Get PKCS#11 slot handler
- * @type    the mechanism that the slot must support.
- *
- * Returns a pointer to PKCS#11 slot or NULL if an error occurs.
- *
- * Notes: The returned handler must be destroied distinctly.
- */
-XMLSEC_CRYPTO_EXPORT PK11SlotInfo* xmlSecNssSlotGet( CK_MECHANISM_TYPE type ) ;
-
-/**
- * Adopt a pkcs#11 slot with a mechanism into the repository
- * @slot:   the pkcs#11 slot.
- * @mech:   the mechanism.
- *
- * If @mech is available( @mech != CKM_INVALID_MECHANISM ), every operation 
with
- * this mechanism only can perform on the @slot.
- *
- * Returns 0 if success or -1 if an error occurs.
- */
-XMLSEC_CRYPTO_EXPORT int xmlSecNssSlotAdopt( PK11SlotInfo* slot, 
CK_MECHANISM_TYPE mech ) ;
-
-#ifdef __cplusplus
-}
-#endif /* __cplusplus */
-
-#endif  /* __XMLSEC_NSS_TOKENS_H__ */
-
-
diff --git a/external/libxmlsec/src/akmngr_mscrypto.c 
b/external/libxmlsec/src/akmngr_mscrypto.c
deleted file mode 100644
index af9eef4..0000000
--- a/external/libxmlsec/src/akmngr_mscrypto.c
+++ /dev/null
@@ -1,237 +0,0 @@
-/**
- * XMLSec library
- *
- * This is free software; see Copyright file in the source
- * distribution for preciese wording.
- *
- * Copyright.........................
- */
-#include "globals.h"
-
-#include <xmlsec/xmlsec.h>
-#include <xmlsec/keys.h>
-#include <xmlsec/keysmngr.h>
-#include <xmlsec/transforms.h>
-#include <xmlsec/errors.h>
-
-#include <xmlsec/mscrypto/crypto.h>
-#include <xmlsec/mscrypto/keysstore.h>
-#include <xmlsec/mscrypto/akmngr.h>
-#include <xmlsec/mscrypto/x509.h>
-
-/**
- * xmlSecMSCryptoAppliedKeysMngrCreate:
- * @hKeyStore:      the pointer to key store.
- * @hCertStore:     the pointer to certificate database.
- *
- * Create and load key store and certificate database into keys manager
- *
- * Returns keys manager pointer on success or NULL otherwise.
- */
-xmlSecKeysMngrPtr
-xmlSecMSCryptoAppliedKeysMngrCreate(
-    HCERTSTORE hKeyStore ,
-    HCERTSTORE hCertStore
-) {
-    xmlSecKeyDataStorePtr   certStore = NULL ;
-    xmlSecKeysMngrPtr       keyMngr = NULL ;
-    xmlSecKeyStorePtr       keyStore = NULL ;
-
-    keyStore = xmlSecKeyStoreCreate( xmlSecMSCryptoKeysStoreId ) ;
-    if( keyStore == NULL ) {
-        xmlSecError( XMLSEC_ERRORS_HERE ,
-            NULL ,
-            "xmlSecKeyStoreCreate" ,
-            XMLSEC_ERRORS_R_XMLSEC_FAILED ,
-            XMLSEC_ERRORS_NO_MESSAGE ) ;
-        return NULL ;
-    }
-
-    /*-
-     * At present, MS Crypto engine do not provide a way to setup a key store.
-     */
-    if( keyStore != NULL ) {
-        /*TODO: binding key store.*/
-    }
-
-    keyMngr = xmlSecKeysMngrCreate() ;
-    if( keyMngr == NULL ) {
-        xmlSecError( XMLSEC_ERRORS_HERE ,
-            NULL ,
-            "xmlSecKeysMngrCreate" ,
-            XMLSEC_ERRORS_R_XMLSEC_FAILED ,
-            XMLSEC_ERRORS_NO_MESSAGE ) ;
-
-        xmlSecKeyStoreDestroy( keyStore ) ;
-        return NULL ;
-    }
-
-    /*-
-     * Add key store to manager, from now on keys manager destroys the store if
-     * needed
-     */
-    if( xmlSecKeysMngrAdoptKeysStore( keyMngr, keyStore ) < 0 ) {
-        xmlSecError( XMLSEC_ERRORS_HERE ,
-            xmlSecErrorsSafeString( xmlSecKeyStoreGetName( keyStore ) ) ,
-            "xmlSecKeysMngrAdoptKeyStore" ,
-            XMLSEC_ERRORS_R_XMLSEC_FAILED ,
-            XMLSEC_ERRORS_NO_MESSAGE ) ;
-
-        xmlSecKeyStoreDestroy( keyStore ) ;
-        xmlSecKeysMngrDestroy( keyMngr ) ;
-        return NULL ;
-    }
-
-    /*-
-     * Initialize crypto library specific data in keys manager
-     */
-    if( xmlSecMSCryptoKeysMngrInit( keyMngr ) < 0 ) {
-        xmlSecError( XMLSEC_ERRORS_HERE ,
-            NULL ,
-            "xmlSecMSCryptoKeysMngrInit" ,
-            XMLSEC_ERRORS_R_XMLSEC_FAILED ,
-            XMLSEC_ERRORS_NO_MESSAGE ) ;
-
-        xmlSecKeysMngrDestroy( keyMngr ) ;
-        return NULL ;
-    }
-
-    /*-
-     * Set certificate databse to X509 key data store
-     */
-    /*-
-     * At present, MS Crypto engine do not provide a way to setup a cert store.
-     */
-
-    /*-
-     * Set the getKey callback
-     */
-    keyMngr->getKey = xmlSecKeysMngrGetKey ;
-
-    return keyMngr ;
-}
-
-int
-xmlSecMSCryptoAppliedKeysMngrSymKeyLoad(
-    xmlSecKeysMngrPtr   mngr ,
-    HCRYPTKEY           symKey
-) {
-    /*TODO: import the key into keys manager.*/
-    return(0) ;
-}
-
-int
-xmlSecMSCryptoAppliedKeysMngrPubKeyLoad(
-    xmlSecKeysMngrPtr   mngr ,
-    HCRYPTKEY   pubKey
-) {
-    /*TODO: import the key into keys manager.*/
-    return(0) ;
-}
-
-int
-xmlSecMSCryptoAppliedKeysMngrPriKeyLoad(
-    xmlSecKeysMngrPtr   mngr ,
-    HCRYPTKEY   priKey
-) {
-    /*TODO: import the key into keys manager.*/
-    return(0) ;
-}
-
-int
-xmlSecMSCryptoAppliedKeysMngrAdoptKeyStore (
-    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 ) ;
-}
-
-int
-xmlSecMSCryptoAppliedKeysMngrAdoptTrustedStore (
-    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 ) ;
-}
-
-int
-xmlSecMSCryptoAppliedKeysMngrAdoptUntrustedStore (
-    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 ) ;
-}
-
-
diff --git a/external/libxmlsec/src/akmngr_nss.c 
b/external/libxmlsec/src/akmngr_nss.c
deleted file mode 100644
index 0eddf86..0000000
--- a/external/libxmlsec/src/akmngr_nss.c
+++ /dev/null
@@ -1,384 +0,0 @@
-/**
- * XMLSec library
- *
- * This is free software; see Copyright file in the source
- * distribution for preciese wording.
- *
- * Copyright.........................
- */
-#include "globals.h"
-
-#include <nspr.h>
-#include <nss.h>
-#include <pk11func.h>
-#include <cert.h>
-#include <keyhi.h>
-
-#include <xmlsec/xmlsec.h>
-#include <xmlsec/keys.h>
-#include <xmlsec/transforms.h>
-#include <xmlsec/errors.h>
-
-#include <xmlsec/nss/crypto.h>
-#include <xmlsec/nss/tokens.h>
-#include <xmlsec/nss/akmngr.h>
-#include <xmlsec/nss/pkikeys.h>
-#include <xmlsec/nss/ciphers.h>
-#include <xmlsec/nss/keysstore.h>
-
-/**
- * xmlSecNssAppliedKeysMngrCreate:
- * @slot:           array of pointers to NSS PKCS#11 slot information.
- * @cSlots:         number of slots in the array
- * @handler:        the pointer to NSS certificate database.
- *
- * Create and load NSS crypto slot and certificate database into keys manager
- *
- * Returns keys manager pointer on success or NULL otherwise.
- */
-xmlSecKeysMngrPtr
-xmlSecNssAppliedKeysMngrCreate(
-    PK11SlotInfo** slots,
-    int cSlots,
-    CERTCertDBHandle* handler
-) {
-    xmlSecKeyDataStorePtr   certStore = NULL ;
-    xmlSecKeysMngrPtr       keyMngr = NULL ;
-    xmlSecKeyStorePtr       keyStore = NULL ;
-    int islot = 0;
-    keyStore = xmlSecKeyStoreCreate( xmlSecNssKeysStoreId ) ;
-    if( keyStore == NULL ) {
-        xmlSecError( XMLSEC_ERRORS_HERE ,
-            NULL ,
-            "xmlSecKeyStoreCreate" ,
-            XMLSEC_ERRORS_R_XMLSEC_FAILED ,
-            XMLSEC_ERRORS_NO_MESSAGE ) ;
-        return NULL ;
-    }
-
-    for (islot = 0; islot < cSlots; islot++)
-    {
-        xmlSecNssKeySlotPtr     keySlot ;
-
-        /* Create a key slot */
-        keySlot = xmlSecNssKeySlotCreate() ;
-        if( keySlot == NULL ) {
-            xmlSecError( XMLSEC_ERRORS_HERE ,
-                xmlSecErrorsSafeString( xmlSecKeyStoreGetName( keyStore ) ) ,
-                "xmlSecNssKeySlotCreate" ,
-                XMLSEC_ERRORS_R_XMLSEC_FAILED ,
-                XMLSEC_ERRORS_NO_MESSAGE ) ;
-
-            xmlSecKeyStoreDestroy( keyStore ) ;
-            return NULL ;
-        }
-
-        /* Set slot */
-        if( xmlSecNssKeySlotSetSlot( keySlot , slots[islot] ) < 0 ) {
-            xmlSecError( XMLSEC_ERRORS_HERE ,
-                xmlSecErrorsSafeString( xmlSecKeyStoreGetName( keyStore ) ) ,
-                "xmlSecNssKeySlotSetSlot" ,
-                XMLSEC_ERRORS_R_XMLSEC_FAILED ,
-                XMLSEC_ERRORS_NO_MESSAGE ) ;
-
-            xmlSecKeyStoreDestroy( keyStore ) ;
-            xmlSecNssKeySlotDestroy( keySlot ) ;
-            return NULL ;
-        }
-
-        /* Adopt keySlot */
-        if( xmlSecNssKeysStoreAdoptKeySlot( keyStore , keySlot ) < 0 ) {
-            xmlSecError( XMLSEC_ERRORS_HERE ,
-                xmlSecErrorsSafeString( xmlSecKeyStoreGetName( keyStore ) ) ,
-                "xmlSecNssKeysStoreAdoptKeySlot" ,
-                XMLSEC_ERRORS_R_XMLSEC_FAILED ,
-                XMLSEC_ERRORS_NO_MESSAGE ) ;
-
-            xmlSecKeyStoreDestroy( keyStore ) ;
-            xmlSecNssKeySlotDestroy( keySlot ) ;
-            return NULL ;
-        }
-    }
-
-    keyMngr = xmlSecKeysMngrCreate() ;
-    if( keyMngr == NULL ) {
-        xmlSecError( XMLSEC_ERRORS_HERE ,
-            NULL ,
-            "xmlSecKeysMngrCreate" ,
-            XMLSEC_ERRORS_R_XMLSEC_FAILED ,
-            XMLSEC_ERRORS_NO_MESSAGE ) ;
-
-        xmlSecKeyStoreDestroy( keyStore ) ;
-        return NULL ;
-    }
-
-    /*-
-     * Add key store to manager, from now on keys manager destroys the store if
-     * needed
-     */
-    if( xmlSecKeysMngrAdoptKeysStore( keyMngr, keyStore ) < 0 ) {
-        xmlSecError( XMLSEC_ERRORS_HERE ,
-            xmlSecErrorsSafeString( xmlSecKeyStoreGetName( keyStore ) ) ,
-            "xmlSecKeysMngrAdoptKeyStore" ,
-            XMLSEC_ERRORS_R_XMLSEC_FAILED ,
-            XMLSEC_ERRORS_NO_MESSAGE ) ;
-
-        xmlSecKeyStoreDestroy( keyStore ) ;
-        xmlSecKeysMngrDestroy( keyMngr ) ;
-        return NULL ;
-    }
-
-    /*-
-     * Initialize crypto library specific data in keys manager
-     */
-    if( xmlSecNssKeysMngrInit( keyMngr ) < 0 ) {
-        xmlSecError( XMLSEC_ERRORS_HERE ,
-            NULL ,
-            "xmlSecKeysMngrCreate" ,
-            XMLSEC_ERRORS_R_XMLSEC_FAILED ,
-            XMLSEC_ERRORS_NO_MESSAGE ) ;
-
-        xmlSecKeysMngrDestroy( keyMngr ) ;
-        return NULL ;
-    }
-
-    /*-
-     * Set certificate databse to X509 key data store
-     */
-    /**
-     * Because Tej's implementation of certDB use the default DB, so I ignore
-     * the certDB handler at present. I'll modify the cert store sources to
-     * accept particular certDB instead of default ones.
-    certStore = xmlSecKeysMngrGetDataStore( keyMngr , 
xmlSecNssKeyDataStoreX509Id ) ;
-    if( certStore == NULL ) {
-        xmlSecError( XMLSEC_ERRORS_HERE ,
-            xmlSecErrorsSafeString( xmlSecKeyStoreGetName( keyStore ) ) ,
-            "xmlSecKeysMngrGetDataStore" ,
-            XMLSEC_ERRORS_R_XMLSEC_FAILED ,
-            XMLSEC_ERRORS_NO_MESSAGE ) ;
-
-        xmlSecKeysMngrDestroy( keyMngr ) ;
-        return NULL ;
-    }
-
-    if( xmlSecNssKeyDataStoreX509SetCertDb( certStore , handler ) < 0 ) {
-        xmlSecError( XMLSEC_ERRORS_HERE ,
-            xmlSecErrorsSafeString( xmlSecKeyStoreGetName( keyStore ) ) ,
-            "xmlSecNssKeyDataStoreX509SetCertDb" ,
-            XMLSEC_ERRORS_R_XMLSEC_FAILED ,
-            XMLSEC_ERRORS_NO_MESSAGE ) ;
-
-        xmlSecKeysMngrDestroy( keyMngr ) ;
-        return NULL ;
-    }
-    */
-
-    /*-
-     * Set the getKey callback
-     */
-    keyMngr->getKey = xmlSecKeysMngrGetKey ;
-
-    return keyMngr ;
-}
-
-int
-xmlSecNssAppliedKeysMngrSymKeyLoad(
-    xmlSecKeysMngrPtr   mngr ,
-    PK11SymKey*         symKey
-) {
-    xmlSecKeyPtr        key ;
-    xmlSecKeyDataPtr    data ;
-    xmlSecKeyStorePtr   keyStore ;
-
-    xmlSecAssert2( mngr != NULL , -1 ) ;
-    xmlSecAssert2( symKey != NULL , -1 ) ;
-
-    keyStore = xmlSecKeysMngrGetKeysStore( mngr ) ;
-    if( keyStore == NULL ) {
-        xmlSecError( XMLSEC_ERRORS_HERE ,
-            NULL ,
-            "xmlSecKeysMngrGetKeysStore" ,
-            XMLSEC_ERRORS_R_XMLSEC_FAILED ,
-            XMLSEC_ERRORS_NO_MESSAGE ) ;
-        return(-1) ;
-    }
-    xmlSecAssert2( xmlSecKeyStoreCheckId( keyStore , xmlSecNssKeysStoreId ) , 
-1 ) ;
-
-    data = xmlSecNssSymKeyDataKeyAdopt( symKey ) ;
-    if( data == NULL ) {
-        xmlSecError( XMLSEC_ERRORS_HERE ,
-            NULL ,
-            "xmlSecNssSymKeyDataKeyAdopt" ,
-            XMLSEC_ERRORS_R_XMLSEC_FAILED ,
-            XMLSEC_ERRORS_NO_MESSAGE ) ;
-        return(-1) ;
-    }
-
-    key = xmlSecKeyCreate() ;
-    if( key == NULL ) {
-        xmlSecError( XMLSEC_ERRORS_HERE ,
-            NULL ,
-            "xmlSecNssSymKeyDataKeyAdopt" ,
-            XMLSEC_ERRORS_R_XMLSEC_FAILED ,
-            XMLSEC_ERRORS_NO_MESSAGE ) ;
-        xmlSecKeyDataDestroy( data ) ;
-        return(-1) ;
-    }
-
-    if( xmlSecKeySetValue( key , data ) < 0 ) {
-        xmlSecError( XMLSEC_ERRORS_HERE ,
-            NULL ,
-            "xmlSecNssSymKeyDataKeyAdopt" ,
-            XMLSEC_ERRORS_R_XMLSEC_FAILED ,
-            XMLSEC_ERRORS_NO_MESSAGE ) ;
-        xmlSecKeyDataDestroy( data ) ;
-        return(-1) ;
-    }
-
-    if( xmlSecNssKeysStoreAdoptKey( keyStore, key ) < 0 ) {
-        xmlSecError( XMLSEC_ERRORS_HERE ,
-            NULL ,
-            "xmlSecNssSymKeyDataKeyAdopt" ,
-            XMLSEC_ERRORS_R_XMLSEC_FAILED ,
-            XMLSEC_ERRORS_NO_MESSAGE ) ;
-        xmlSecKeyDestroy( key ) ;
-        return(-1) ;
-    }
-
-    return(0) ;
-}
-
-int
-xmlSecNssAppliedKeysMngrPubKeyLoad(
-    xmlSecKeysMngrPtr   mngr ,
-    SECKEYPublicKey*    pubKey
-) {
-    xmlSecKeyPtr        key ;
-    xmlSecKeyDataPtr    data ;
-    xmlSecKeyStorePtr   keyStore ;
-
-    xmlSecAssert2( mngr != NULL , -1 ) ;
-    xmlSecAssert2( pubKey != NULL , -1 ) ;
-
-    keyStore = xmlSecKeysMngrGetKeysStore( mngr ) ;
-    if( keyStore == NULL ) {
-        xmlSecError( XMLSEC_ERRORS_HERE ,
-            NULL ,
-            "xmlSecKeysMngrGetKeysStore" ,
-            XMLSEC_ERRORS_R_XMLSEC_FAILED ,
-            XMLSEC_ERRORS_NO_MESSAGE ) ;
-        return(-1) ;
-    }
-    xmlSecAssert2( xmlSecKeyStoreCheckId( keyStore , xmlSecNssKeysStoreId ) , 
-1 ) ;
-
-    data = xmlSecNssPKIAdoptKey( NULL, pubKey ) ;
-    if( data == NULL ) {
-        xmlSecError( XMLSEC_ERRORS_HERE ,
-            NULL ,
-            "xmlSecNssPKIAdoptKey" ,
-            XMLSEC_ERRORS_R_XMLSEC_FAILED ,
-            XMLSEC_ERRORS_NO_MESSAGE ) ;
-        return(-1) ;
-    }
-
-    key = xmlSecKeyCreate() ;
-    if( key == NULL ) {
-        xmlSecError( XMLSEC_ERRORS_HERE ,
-            NULL ,
-            "xmlSecNssSymKeyDataKeyAdopt" ,
-            XMLSEC_ERRORS_R_XMLSEC_FAILED ,
-            XMLSEC_ERRORS_NO_MESSAGE ) ;
-        xmlSecKeyDataDestroy( data ) ;
-        return(-1) ;
-    }
-
-    if( xmlSecKeySetValue( key , data ) < 0 ) {
-        xmlSecError( XMLSEC_ERRORS_HERE ,
-            NULL ,
-            "xmlSecNssSymKeyDataKeyAdopt" ,
-            XMLSEC_ERRORS_R_XMLSEC_FAILED ,
-            XMLSEC_ERRORS_NO_MESSAGE ) ;
-        xmlSecKeyDataDestroy( data ) ;
-        return(-1) ;
-    }
-
-    if( xmlSecNssKeysStoreAdoptKey( keyStore, key ) < 0 ) {
-        xmlSecError( XMLSEC_ERRORS_HERE ,
-            NULL ,
-            "xmlSecNssSymKeyDataKeyAdopt" ,
-            XMLSEC_ERRORS_R_XMLSEC_FAILED ,
-            XMLSEC_ERRORS_NO_MESSAGE ) ;
-        xmlSecKeyDestroy( key ) ;
-        return(-1) ;
-    }
-
-    return(0) ;
-}
-
-int
-xmlSecNssAppliedKeysMngrPriKeyLoad(
-    xmlSecKeysMngrPtr   mngr ,
-    SECKEYPrivateKey*   priKey
-) {
-    xmlSecKeyPtr        key ;
-    xmlSecKeyDataPtr    data ;
-    xmlSecKeyStorePtr   keyStore ;
-
-    xmlSecAssert2( mngr != NULL , -1 ) ;
-    xmlSecAssert2( priKey != NULL , -1 ) ;
-
-    keyStore = xmlSecKeysMngrGetKeysStore( mngr ) ;
-    if( keyStore == NULL ) {
-        xmlSecError( XMLSEC_ERRORS_HERE ,
-            NULL ,
-            "xmlSecKeysMngrGetKeysStore" ,
-            XMLSEC_ERRORS_R_XMLSEC_FAILED ,
-            XMLSEC_ERRORS_NO_MESSAGE ) ;
-        return(-1) ;
-    }
-    xmlSecAssert2( xmlSecKeyStoreCheckId( keyStore , xmlSecNssKeysStoreId ) , 
-1 ) ;
-
-    data = xmlSecNssPKIAdoptKey( priKey, NULL ) ;
-    if( data == NULL ) {
-        xmlSecError( XMLSEC_ERRORS_HERE ,
-            NULL ,
-            "xmlSecNssPKIAdoptKey" ,
-            XMLSEC_ERRORS_R_XMLSEC_FAILED ,
-            XMLSEC_ERRORS_NO_MESSAGE ) ;
-        return(-1) ;
-    }
-
-    key = xmlSecKeyCreate() ;
-    if( key == NULL ) {
-        xmlSecError( XMLSEC_ERRORS_HERE ,
-            NULL ,
-            "xmlSecNssSymKeyDataKeyAdopt" ,
-            XMLSEC_ERRORS_R_XMLSEC_FAILED ,
-            XMLSEC_ERRORS_NO_MESSAGE ) ;
-        xmlSecKeyDataDestroy( data ) ;
-        return(-1) ;
-    }
-
-    if( xmlSecKeySetValue( key , data ) < 0 ) {
-        xmlSecError( XMLSEC_ERRORS_HERE ,
-            NULL ,
-            "xmlSecNssSymKeyDataKeyAdopt" ,
-            XMLSEC_ERRORS_R_XMLSEC_FAILED ,
-            XMLSEC_ERRORS_NO_MESSAGE ) ;
-        xmlSecKeyDataDestroy( data ) ;
-        return(-1) ;
-    }
-
-    if( xmlSecNssKeysStoreAdoptKey( keyStore, key ) < 0 ) {
-        xmlSecError( XMLSEC_ERRORS_HERE ,
-            NULL ,
-            "xmlSecNssSymKeyDataKeyAdopt" ,
-            XMLSEC_ERRORS_R_XMLSEC_FAILED ,
-            XMLSEC_ERRORS_NO_MESSAGE ) ;
-        xmlSecKeyDestroy( key ) ;
-        return(-1) ;
-    }
-
-    return(0) ;
-}
-
diff --git a/external/libxmlsec/src/keywrapers.c 
b/external/libxmlsec/src/keywrapers.c
deleted file mode 100644
index 6066724..0000000
--- a/external/libxmlsec/src/keywrapers.c
+++ /dev/null
@@ -1,1213 +0,0 @@
-/**
- *
- * 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 <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/ciphers.h>
-
-#define XMLSEC_NSS_AES128_KEY_SIZE      16
-#define XMLSEC_NSS_AES192_KEY_SIZE      24
-#define XMLSEC_NSS_AES256_KEY_SIZE      32
-#define XMLSEC_NSS_DES3_KEY_SIZE        24
-#define XMLSEC_NSS_DES3_KEY_LENGTH      24
-#define XMLSEC_NSS_DES3_IV_LENGTH       8
-#define XMLSEC_NSS_DES3_BLOCK_LENGTH    8
-
-static xmlSecByte xmlSecNssKWDes3Iv[XMLSEC_NSS_DES3_IV_LENGTH] = {
-    0x4a, 0xdd, 0xa2, 0x2c, 0x79, 0xe8, 0x21, 0x05
-};
-
-/*********************************************************************
- *
- * key wrap transforms
- *
- ********************************************************************/
-typedef struct _xmlSecNssKeyWrapCtx         xmlSecNssKeyWrapCtx ;
-typedef struct _xmlSecNssKeyWrapCtx*        xmlSecNssKeyWrapCtxPtr ;
-
-#define xmlSecNssKeyWrapSize    \
-    ( sizeof( xmlSecTransform ) + sizeof( xmlSecNssKeyWrapCtx ) )
-
-#define xmlSecNssKeyWrapGetCtx( transform ) \
-    ( ( xmlSecNssKeyWrapCtxPtr )( ( ( xmlSecByte* )( transform ) ) + sizeof( 
xmlSecTransform ) ) )
-
-struct _xmlSecNssKeyWrapCtx {
-    CK_MECHANISM_TYPE       cipher ;
-    PK11SymKey*             symkey ;
-    xmlSecKeyDataId         keyId ;
-    xmlSecBufferPtr         material ; /* to be encrypted/decrypted key 
material */
-} ;
-
-static int      xmlSecNssKeyWrapInitialize(xmlSecTransformPtr transform);
-static void     xmlSecNssKeyWrapFinalize(xmlSecTransformPtr transform);
-static int      xmlSecNssKeyWrapSetKeyReq(xmlSecTransformPtr transform,
-                             xmlSecKeyReqPtr keyReq);
-static int      xmlSecNssKeyWrapSetKey(xmlSecTransformPtr transform,
-                             xmlSecKeyPtr key);
-static int      xmlSecNssKeyWrapExecute(xmlSecTransformPtr transform,
-                             int last,
-                             xmlSecTransformCtxPtr transformCtx);
-static xmlSecSize   xmlSecNssKeyWrapGetKeySize(xmlSecTransformPtr transform);
-
-static int
-xmlSecNssKeyWrapCheckId(
-    xmlSecTransformPtr transform
-) {
-    #ifndef XMLSEC_NO_DES
-    if( xmlSecTransformCheckId( transform, xmlSecNssTransformKWDes3Id ) ) {
-        return(1);
-    }
-    #endif /* XMLSEC_NO_DES */
-
-    #ifndef XMLSEC_NO_AES
-    if( xmlSecTransformCheckId( transform, xmlSecNssTransformKWAes128Id ) ||
-        xmlSecTransformCheckId( transform, xmlSecNssTransformKWAes192Id ) ||
-        xmlSecTransformCheckId( transform, xmlSecNssTransformKWAes256Id ) ) {
-
-        return(1);
-    }
-    #endif /* XMLSEC_NO_AES */
-
-    return(0);
-}
-
-static xmlSecSize
-xmlSecNssKeyWrapGetKeySize(xmlSecTransformPtr transform) {
-#ifndef XMLSEC_NO_DES
-    if( xmlSecTransformCheckId( transform, xmlSecNssTransformKWDes3Id ) ) {
-        return(XMLSEC_NSS_DES3_KEY_SIZE);
-    } else
-#endif /* XMLSEC_NO_DES */
-
-#ifndef XMLSEC_NO_AES
-    if(xmlSecTransformCheckId(transform, xmlSecNssTransformKWAes128Id)) {
-        return(XMLSEC_NSS_AES128_KEY_SIZE);
-    } else if(xmlSecTransformCheckId(transform, xmlSecNssTransformKWAes192Id)) 
{
-        return(XMLSEC_NSS_AES192_KEY_SIZE);
-    } else if(xmlSecTransformCheckId(transform, xmlSecNssTransformKWAes256Id)) 
{
-        return(XMLSEC_NSS_AES256_KEY_SIZE);
-    } else if(xmlSecTransformCheckId(transform, xmlSecNssTransformKWAes256Id)) 
{
-        return(XMLSEC_NSS_AES256_KEY_SIZE);
-    } else
-#endif /* XMLSEC_NO_AES */
-
-    if(1)
-        return(0);
-}
-
-
-static int
-xmlSecNssKeyWrapInitialize(xmlSecTransformPtr transform) {
-    xmlSecNssKeyWrapCtxPtr context ;
-    int ret;
-
-    xmlSecAssert2(xmlSecNssKeyWrapCheckId(transform), -1);
-    xmlSecAssert2(xmlSecTransformCheckSize(transform, xmlSecNssKeyWrapSize), 
-1);
-
-    context = xmlSecNssKeyWrapGetCtx( transform ) ;
-    xmlSecAssert2( context != NULL , -1 ) ;
-
-    #ifndef XMLSEC_NO_DES
-    if( transform->id == xmlSecNssTransformKWDes3Id ) {
-        context->cipher = CKM_DES3_CBC ;
-        context->keyId = xmlSecNssKeyDataDesId ;
-    } else
-    #endif      /* XMLSEC_NO_DES */
-
-    #ifndef XMLSEC_NO_AES
-    if( transform->id == xmlSecNssTransformKWAes128Id ) {
-    /*  context->cipher = CKM_NETSCAPE_AES_KEY_WRAP ;*/
-        context->cipher = CKM_AES_CBC ;
-        context->keyId = xmlSecNssKeyDataAesId ;
-    } else
-    if( transform->id == xmlSecNssTransformKWAes192Id ) {
-    /*  context->cipher = CKM_NETSCAPE_AES_KEY_WRAP ;*/
-        context->cipher = CKM_AES_CBC ;
-        context->keyId = xmlSecNssKeyDataAesId ;
-    } else
-    if( transform->id == xmlSecNssTransformKWAes256Id ) {
-    /*  context->cipher = CKM_NETSCAPE_AES_KEY_WRAP ;*/
-        context->cipher = CKM_AES_CBC ;
-        context->keyId = xmlSecNssKeyDataAesId ;
-    } else
-    #endif      /* XMLSEC_NO_AES */
-
-
-    if( 1 ) {
-        xmlSecError( XMLSEC_ERRORS_HERE ,
-            xmlSecErrorsSafeString(xmlSecTransformGetName(transform)),
-            NULL ,
-            XMLSEC_ERRORS_R_CRYPTO_FAILED ,
-            XMLSEC_ERRORS_NO_MESSAGE ) ;
-        return(-1);
-    }
-
-    context->symkey = NULL ;
-    context->material = NULL ;
-
-    return(0);
-}
-
-static void
-xmlSecNssKeyWrapFinalize(xmlSecTransformPtr transform) {
-    xmlSecNssKeyWrapCtxPtr context ;
-
-    xmlSecAssert(xmlSecNssKeyWrapCheckId(transform));
-    xmlSecAssert(xmlSecTransformCheckSize(transform, xmlSecNssKeyWrapSize));
-
-    context = xmlSecNssKeyWrapGetCtx( transform ) ;
-    xmlSecAssert( context != NULL ) ;
-
-    if( context->symkey != NULL ) {
-        PK11_FreeSymKey( context->symkey ) ;
-        context->symkey = NULL ;
-    }
-
-    if( context->material != NULL ) {
-        xmlSecBufferDestroy(context->material);
-        context->material = NULL ;
-    }
-}
-
-static int
-xmlSecNssKeyWrapSetKeyReq(xmlSecTransformPtr transform,  xmlSecKeyReqPtr 
keyReq) {
-    xmlSecNssKeyWrapCtxPtr context ;
-    xmlSecSize cipherSize = 0 ;
-
-
-    xmlSecAssert2(xmlSecNssKeyWrapCheckId(transform), -1);
-    xmlSecAssert2(xmlSecTransformCheckSize(transform, xmlSecNssKeyWrapSize), 
-1);
-    xmlSecAssert2((transform->operation == xmlSecTransformOperationEncrypt) || 
(transform->operation == xmlSecTransformOperationDecrypt), -1);
-    xmlSecAssert2(keyReq != NULL, -1);
-
-    context = xmlSecNssKeyWrapGetCtx( transform ) ;
-    xmlSecAssert2( context != NULL , -1 ) ;
-
-    keyReq->keyId    = context->keyId;
-    keyReq->keyType  = xmlSecKeyDataTypeSymmetric;
-    if(transform->operation == xmlSecTransformOperationEncrypt) {
-        keyReq->keyUsage = xmlSecKeyUsageEncrypt;
-    } else {
-        keyReq->keyUsage = xmlSecKeyUsageDecrypt;
-    }
-
-    keyReq->keyBitsSize = xmlSecNssKeyWrapGetKeySize( transform ) ;
-
-    return(0);
-}
-
-static int
-xmlSecNssKeyWrapSetKey(xmlSecTransformPtr transform, xmlSecKeyPtr key) {
-    xmlSecNssKeyWrapCtxPtr context = NULL ;
-    xmlSecKeyDataPtr    keyData = NULL ;
-    PK11SymKey*         symkey = NULL ;
-
-    xmlSecAssert2(xmlSecNssKeyWrapCheckId(transform), -1);
-    xmlSecAssert2(xmlSecTransformCheckSize(transform, xmlSecNssKeyWrapSize), 
-1);
-    xmlSecAssert2((transform->operation == xmlSecTransformOperationEncrypt) || 
(transform->operation == xmlSecTransformOperationDecrypt), -1);
-    xmlSecAssert2(key != NULL, -1);
-
-    context = xmlSecNssKeyWrapGetCtx( transform ) ;
-    if( context == NULL || context->keyId == NULL || context->symkey != NULL ) 
{
-        xmlSecError( XMLSEC_ERRORS_HERE ,
-            xmlSecErrorsSafeString( xmlSecTransformGetName( transform ) ) ,
-            "xmlSecNssKeyWrapGetCtx" ,
-            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( ( symkey = xmlSecNssSymKeyDataGetKey( keyData ) ) == NULL ) {
-        xmlSecError( XMLSEC_ERRORS_HERE ,
-            xmlSecErrorsSafeString( xmlSecKeyDataGetName( keyData ) ) ,
-            "xmlSecNssSymKeyDataGetKey" ,
-            XMLSEC_ERRORS_R_CRYPTO_FAILED ,
-            XMLSEC_ERRORS_NO_MESSAGE ) ;
-        return(-1);
-    }
-
-    context->symkey = symkey ;
-
-    return(0) ;
-}
-
-/**
- * key wrap transform
- */
-static int
-xmlSecNssKeyWrapCtxInit(
-    xmlSecNssKeyWrapCtxPtr      ctx ,
-    xmlSecBufferPtr             in ,
-    xmlSecBufferPtr             out ,
-    int                         encrypt ,
-    xmlSecTransformCtxPtr       transformCtx
-) {
-    xmlSecSize          blockSize ;
-
-    xmlSecAssert2( ctx != NULL , -1 ) ;
-    xmlSecAssert2( ctx->cipher != CKM_INVALID_MECHANISM , -1 ) ;
-    xmlSecAssert2( ctx->symkey != NULL , -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( ( blockSize = PK11_GetBlockSize( ctx->cipher , NULL ) ) < 0 ) {
-        xmlSecError( XMLSEC_ERRORS_HERE ,
-            NULL ,
-            "PK11_GetBlockSize" ,
-            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
-xmlSecNssKeyWrapCtxUpdate(
-    xmlSecNssKeyWrapCtxPtr      ctx ,
-    xmlSecBufferPtr             in ,
-    xmlSecBufferPtr             out ,
-    int                         encrypt ,
-    xmlSecTransformCtxPtr       transformCtx
-) {
-    xmlSecAssert2( ctx != NULL , -1 ) ;
-    xmlSecAssert2( ctx->cipher != CKM_INVALID_MECHANISM , -1 ) ;
-    xmlSecAssert2( ctx->symkey != NULL , -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);
-}
-
-static int
-xmlSecNssKWDes3BufferReverse(xmlSecByte *buf, xmlSecSize size) {
-    xmlSecSize s;
-    xmlSecSize i;
-    xmlSecByte c;
-
-    xmlSecAssert2(buf != NULL, -1);
-
-    s = size / 2;
-    --size;
-    for(i = 0; i < s; ++i) {
-    c = buf[i];
-    buf[i] = buf[size - i];
-    buf[size - i] = c;
-    }
-    return(0);
-}
-
-static xmlSecByte *
-xmlSecNssComputeSHA1(const xmlSecByte *in, xmlSecSize inSize,
-             xmlSecByte *out, xmlSecSize outSize)
-{
-    PK11Context *context = NULL;
-    SECStatus s;
-    xmlSecByte *digest = NULL;
-    unsigned int len;
-
-    xmlSecAssert2(in != NULL, NULL);
-    xmlSecAssert2(out != NULL, NULL);
-    xmlSecAssert2(outSize >= SHA1_LENGTH, NULL);
-
-    /* Create a context for hashing (digesting) */
-    context = PK11_CreateDigestContext(SEC_OID_SHA1);
-    if (context == NULL) {
-    xmlSecError(XMLSEC_ERRORS_HERE,
-            NULL,
-            "PK11_CreateDigestContext",
-            XMLSEC_ERRORS_R_CRYPTO_FAILED,
-            "error code = %d", PORT_GetError());
-    goto done;
-    }
-
-    s = PK11_DigestBegin(context);
-    if (s != SECSuccess) {
-    xmlSecError(XMLSEC_ERRORS_HERE,
-            NULL,
-            "PK11_DigestBegin",
-            XMLSEC_ERRORS_R_CRYPTO_FAILED,
-            "error code = %d", PORT_GetError());
-    goto done;
-    }
-
-    s = PK11_DigestOp(context, in, inSize);
-    if (s != SECSuccess) {
-    xmlSecError(XMLSEC_ERRORS_HERE,
-            NULL,
-            "PK11_DigestOp",
-            XMLSEC_ERRORS_R_CRYPTO_FAILED,
-            "error code = %d", PORT_GetError());
-    goto done;
-    }
-
-    s = PK11_DigestFinal(context, out, &len, outSize);
-    if (s != SECSuccess) {
-    xmlSecError(XMLSEC_ERRORS_HERE,
-            NULL,
-            "PK11_DigestFinal",
-            XMLSEC_ERRORS_R_CRYPTO_FAILED,
-            "error code = %d", PORT_GetError());
-    goto done;
-    }
-    xmlSecAssert2(len == SHA1_LENGTH, NULL);
-
-    digest = out;
-
-done:
-    if (context != NULL) {
-    PK11_DestroyContext(context, PR_TRUE);
-    }
-    return (digest);
-}
-
-static int
-xmlSecNssKWDes3Encrypt(
-    PK11SymKey*                 symKey ,
-    CK_MECHANISM_TYPE           cipherMech ,
-    const xmlSecByte*           iv ,
-    xmlSecSize                  ivSize ,
-    const xmlSecByte*           in ,
-    xmlSecSize                  inSize ,
-    xmlSecByte*                 out ,
-    xmlSecSize                  outSize ,
-    int                         enc
-) {
-    PK11Context*        EncContext = NULL;
-    SECItem             ivItem ;
-    SECItem*            secParam = NULL ;
-    int                 tmp1_outlen;
-    unsigned int        tmp2_outlen;
-    int                 result_len = -1;
-    SECStatus           rv;
-
-    xmlSecAssert2( cipherMech != CKM_INVALID_MECHANISM , -1 ) ;
-    xmlSecAssert2( symKey != NULL , -1 ) ;
-    xmlSecAssert2(iv != NULL, -1);
-    xmlSecAssert2(ivSize == XMLSEC_NSS_DES3_IV_LENGTH, -1);
-    xmlSecAssert2(in != NULL, -1);
-    xmlSecAssert2(inSize > 0, -1);
-    xmlSecAssert2(out != NULL, -1);
-    xmlSecAssert2(outSize >= inSize, -1);
-
-    /* Prepare IV */
-    ivItem.data = ( unsigned char* )iv ;
-    ivItem.len = ivSize ;
-
-    secParam = PK11_ParamFromIV(cipherMech, &ivItem);
-    if (secParam == NULL) {
-        xmlSecError(XMLSEC_ERRORS_HERE,
-            NULL,
-            "PK11_ParamFromIV",
-            XMLSEC_ERRORS_R_CRYPTO_FAILED,
-            "Error code = %d", PORT_GetError());
-        goto done;
-    }
-
-    EncContext = PK11_CreateContextBySymKey(cipherMech,
-                            enc ? CKA_ENCRYPT : CKA_DECRYPT,
-                        symKey, secParam);
-    if (EncContext == NULL) {
-        xmlSecError(XMLSEC_ERRORS_HERE,
-            NULL,
-            "PK11_CreateContextBySymKey",
-            XMLSEC_ERRORS_R_CRYPTO_FAILED,
-            "Error code = %d", PORT_GetError());
-        goto done;
-    }
-
-    tmp1_outlen = tmp2_outlen = 0;
-    rv = PK11_CipherOp(EncContext, out, &tmp1_outlen, outSize,
-               (unsigned char *)in, inSize);
-    if (rv != SECSuccess) {
-        xmlSecError(XMLSEC_ERRORS_HERE,
-            NULL,
-            "PK11_CipherOp",
-            XMLSEC_ERRORS_R_CRYPTO_FAILED,
-            "Error code = %d", PORT_GetError());
-        goto done;
-    }
-
-    rv = PK11_DigestFinal(EncContext, out+tmp1_outlen,
-                  &tmp2_outlen, outSize-tmp1_outlen);
-    if (rv != SECSuccess) {
-        xmlSecError(XMLSEC_ERRORS_HERE,
-            NULL,
-            "PK11_DigestFinal",
-            XMLSEC_ERRORS_R_CRYPTO_FAILED,
-            "Error code = %d", PORT_GetError());
-        goto done;
-    }
-
-    result_len = tmp1_outlen + tmp2_outlen;
-
-done:
-    if (secParam) {
-        SECITEM_FreeItem(secParam, PR_TRUE);
-    }
-    if (EncContext) {
-    PK11_DestroyContext(EncContext, PR_TRUE);
-    }
-
-    return(result_len);
-}
-
-static int
-xmlSecNssKeyWrapDesOp(
-    xmlSecNssKeyWrapCtxPtr      ctx ,
-    int                         encrypt ,
-    xmlSecBufferPtr             result
-) {
-    xmlSecByte sha1[SHA1_LENGTH];
-    xmlSecByte iv[XMLSEC_NSS_DES3_IV_LENGTH];
-    xmlSecByte* in;
-    xmlSecSize inSize;
-    xmlSecByte* out;
-    xmlSecSize outSize;
-    xmlSecSize s;
-    int ret;
-    SECStatus status;
-
-    xmlSecAssert2( ctx != NULL , -1 ) ;
-    xmlSecAssert2( ctx->cipher != CKM_INVALID_MECHANISM , -1 ) ;
-    xmlSecAssert2( ctx->symkey != NULL , -1 ) ;
-    xmlSecAssert2( ctx->keyId != NULL , -1 ) ;
-    xmlSecAssert2( ctx->material != NULL , -1 ) ;
-    xmlSecAssert2( result != NULL , -1 ) ;
-
-    in = xmlSecBufferGetData(ctx->material);
-    inSize = xmlSecBufferGetSize(ctx->material) ;
-    out = xmlSecBufferGetData(result);
-    outSize = xmlSecBufferGetMaxSize(result) ;
-    if( encrypt ) {
-        /* step 2: calculate sha1 and CMS */
-        if(xmlSecNssComputeSHA1(in, inSize, sha1, SHA1_LENGTH) == NULL) {
-            xmlSecError(XMLSEC_ERRORS_HERE,
-                NULL,
-                "xmlSecNssComputeSHA1",
-                XMLSEC_ERRORS_R_CRYPTO_FAILED,
-                XMLSEC_ERRORS_NO_MESSAGE);
-            return(-1);
-        }
-
-        /* step 3: construct WKCKS */
-        memcpy(out, in, inSize);
-        memcpy(out + inSize, sha1, XMLSEC_NSS_DES3_BLOCK_LENGTH);
-
-        /* step 4: generate random iv */
-        status = PK11_GenerateRandom(iv, XMLSEC_NSS_DES3_IV_LENGTH);
-        if(status != SECSuccess) {
-            xmlSecError(XMLSEC_ERRORS_HERE,
-                NULL,
-                "PK11_GenerateRandom",
-                XMLSEC_ERRORS_R_CRYPTO_FAILED,
-                "error code = %d", PORT_GetError());
-            return(-1);
-        }
-
-        /* step 5: first encryption, result is TEMP1 */
-        ret = xmlSecNssKWDes3Encrypt( ctx->symkey, ctx->cipher,
-                    iv, XMLSEC_NSS_DES3_IV_LENGTH,
-                    out, inSize + XMLSEC_NSS_DES3_IV_LENGTH,
-                    out, outSize, 1);
-        if(ret < 0) {
-            xmlSecError(XMLSEC_ERRORS_HERE,
-                NULL,
-                "xmlSecNssKWDes3Encrypt",
-                XMLSEC_ERRORS_R_XMLSEC_FAILED,
-                XMLSEC_ERRORS_NO_MESSAGE);
-            return(-1);
-        }
-
-        /* step 6: construct TEMP2=IV || TEMP1 */
-        memmove(out + XMLSEC_NSS_DES3_IV_LENGTH, out,
-            inSize + XMLSEC_NSS_DES3_IV_LENGTH);
-        memcpy(out, iv, XMLSEC_NSS_DES3_IV_LENGTH);
-            s = ret + XMLSEC_NSS_DES3_IV_LENGTH;
-
-        /* step 7: reverse octets order, result is TEMP3 */
-        ret = xmlSecNssKWDes3BufferReverse(out, s);
-        if(ret < 0) {
-            xmlSecError(XMLSEC_ERRORS_HERE,
-                NULL,
-                "xmlSecNssKWDes3BufferReverse",
-                XMLSEC_ERRORS_R_XMLSEC_FAILED,
-                XMLSEC_ERRORS_NO_MESSAGE);
-            return(-1);
-        }
-
-        /* step 8: second encryption with static IV */
-        ret = xmlSecNssKWDes3Encrypt( ctx->symkey, ctx->cipher,
-                    xmlSecNssKWDes3Iv, XMLSEC_NSS_DES3_IV_LENGTH,
-                    out, s,
-                    out, outSize, 1);
-        if(ret < 0) {
-            xmlSecError(XMLSEC_ERRORS_HERE,
-                NULL,
-                "xmlSecNssKWDes3Encrypt",
-                XMLSEC_ERRORS_R_XMLSEC_FAILED,
-                XMLSEC_ERRORS_NO_MESSAGE);
-            return(-1);
-        }
-        s = ret;
-
-        if( xmlSecBufferSetSize( result , s ) < 0 ) {
-            xmlSecError(XMLSEC_ERRORS_HERE,
-                NULL,
-                "xmlSecBufferSetSize",
-                XMLSEC_ERRORS_R_XMLSEC_FAILED,
-                XMLSEC_ERRORS_NO_MESSAGE);
-            return(-1);
-        }
-    } else {
-        /* step 2: first decryption with static IV, result is TEMP3 */
-        ret = xmlSecNssKWDes3Encrypt( ctx->symkey, ctx->cipher,
-                    xmlSecNssKWDes3Iv, XMLSEC_NSS_DES3_IV_LENGTH,
-                    in, inSize,
-                    out, outSize, 0);
-        if((ret < 0) || (ret < XMLSEC_NSS_DES3_IV_LENGTH)) {
-            xmlSecError(XMLSEC_ERRORS_HERE,
-                NULL,
-                "xmlSecNssKWDes3Encrypt",
-                XMLSEC_ERRORS_R_XMLSEC_FAILED,
-                XMLSEC_ERRORS_NO_MESSAGE);
-            return(-1);
-        }
-        s = ret;
-
-        /* step 3: reverse octets order in TEMP3, result is TEMP2 */
-        ret = xmlSecNssKWDes3BufferReverse(out, s);
-        if(ret < 0) {
-            xmlSecError(XMLSEC_ERRORS_HERE,
-                NULL,
-                "xmlSecNssKWDes3BufferReverse",
-                XMLSEC_ERRORS_R_XMLSEC_FAILED,
-                XMLSEC_ERRORS_NO_MESSAGE);
-            return(-1);
-        }
-
-        /* steps 4 and 5: get IV and decrypt second time, result is WKCKS */
-        ret = xmlSecNssKWDes3Encrypt( ctx->symkey, ctx->cipher,
-                    out, XMLSEC_NSS_DES3_IV_LENGTH,
-                    out+XMLSEC_NSS_DES3_IV_LENGTH, s-XMLSEC_NSS_DES3_IV_LENGTH,
-                    out, outSize, 0);
-        if((ret < 0) || (ret < XMLSEC_NSS_DES3_BLOCK_LENGTH)) {
-            xmlSecError(XMLSEC_ERRORS_HERE,
-                NULL,
-                "xmlSecNssKWDes3Encrypt",
-                XMLSEC_ERRORS_R_XMLSEC_FAILED,
-                XMLSEC_ERRORS_NO_MESSAGE);
-            return(-1);
-        }
-        s = ret - XMLSEC_NSS_DES3_IV_LENGTH;
-
-        /* steps 6 and 7: calculate SHA1 and validate it */
-        if(xmlSecNssComputeSHA1(out, s, sha1, SHA1_LENGTH) == NULL) {
-            xmlSecError(XMLSEC_ERRORS_HERE,
-                NULL,
-                "xmlSecNssComputeSHA1",
-                XMLSEC_ERRORS_R_CRYPTO_FAILED,
-                XMLSEC_ERRORS_NO_MESSAGE);
-            return(-1);
-         }
-
-        if(memcmp(sha1, out + s, XMLSEC_NSS_DES3_BLOCK_LENGTH) != 0) {
-            xmlSecError(XMLSEC_ERRORS_HERE,
-                NULL,
-                 NULL,
-                XMLSEC_ERRORS_R_INVALID_DATA,
-                "SHA1 does not match");
-            return(-1);
-        }
-
-        if( xmlSecBufferSetSize( result , s ) < 0 ) {
-            xmlSecError(XMLSEC_ERRORS_HERE,
-                NULL,
-                "xmlSecBufferSetSize",
-                XMLSEC_ERRORS_R_XMLSEC_FAILED,
-                XMLSEC_ERRORS_NO_MESSAGE);
-            return(-1);
-        }
-    }
-
-    return(0);
-}
-
-static int
-xmlSecNssKeyWrapAesOp(
-    xmlSecNssKeyWrapCtxPtr      ctx ,
-    int                         encrypt ,
-    xmlSecBufferPtr             result
-) {
-    PK11Context*        cipherCtx = NULL;
-    SECItem             ivItem ;
-    SECItem*            secParam = NULL ;
-    xmlSecSize          inSize ;
-    xmlSecSize          inBlocks ;
-    int                 blockSize ;
-    int                 midSize ;
-    int                 finSize ;
-    xmlSecByte*         out ;
-    xmlSecSize          outSize;
-
-    xmlSecAssert2( ctx != NULL , -1 ) ;
-    xmlSecAssert2( ctx->cipher != CKM_INVALID_MECHANISM , -1 ) ;
-    xmlSecAssert2( ctx->symkey != NULL , -1 ) ;
-    xmlSecAssert2( ctx->keyId != NULL , -1 ) ;
-    xmlSecAssert2( ctx->material != NULL , -1 ) ;
-    xmlSecAssert2( result != NULL , -1 ) ;
-
-    /* Do not set any IV */
-    memset(&ivItem, 0, sizeof(ivItem));
-
-    /* Get block size */
-    if( ( blockSize = PK11_GetBlockSize( ctx->cipher , NULL ) ) < 0 ) {
-        xmlSecError( XMLSEC_ERRORS_HERE ,
-            NULL ,
-            "PK11_GetBlockSize" ,
-            XMLSEC_ERRORS_R_CRYPTO_FAILED ,
-            XMLSEC_ERRORS_NO_MESSAGE ) ;
-        return(-1);
-    }
-
-    inSize = xmlSecBufferGetSize( ctx->material ) ;
-    if( xmlSecBufferSetMaxSize( result , inSize + blockSize ) < 0 ) {
-        xmlSecError( XMLSEC_ERRORS_HERE ,
-            NULL ,
-            "xmlSecBufferSetMaxSize" ,
-            XMLSEC_ERRORS_R_CRYPTO_FAILED ,
-            XMLSEC_ERRORS_NO_MESSAGE ) ;
-        return(-1);
-    }
-
-    /* Get Param for context initialization */
-    if( ( secParam = PK11_ParamFromIV( ctx->cipher , &ivItem ) ) == NULL ) {
-        xmlSecError( XMLSEC_ERRORS_HERE ,
-            NULL ,
-            "PK11_ParamFromIV" ,
-            XMLSEC_ERRORS_R_CRYPTO_FAILED ,
-            XMLSEC_ERRORS_NO_MESSAGE ) ;
-        return(-1);
-    }
-
-    cipherCtx = PK11_CreateContextBySymKey( ctx->cipher , encrypt ? 
CKA_ENCRYPT : CKA_DECRYPT , ctx->symkey , secParam ) ;
-    if( cipherCtx == NULL ) {
-        xmlSecError( XMLSEC_ERRORS_HERE ,
-            NULL ,
-            "PK11_CreateContextBySymKey" ,
-            XMLSEC_ERRORS_R_CRYPTO_FAILED ,
-            XMLSEC_ERRORS_NO_MESSAGE ) ;
-        SECITEM_FreeItem( secParam , PR_TRUE ) ;
-        return(-1);
-    }
-
-    out = xmlSecBufferGetData(result) ;
-    outSize = xmlSecBufferGetMaxSize(result) ;
-    if( PK11_CipherOp( cipherCtx , out, &midSize , outSize , 
xmlSecBufferGetData( ctx->material ) , inSize ) != SECSuccess ) {
-        xmlSecError( XMLSEC_ERRORS_HERE ,
-            NULL ,
-            "PK11_CipherOp" ,
-            XMLSEC_ERRORS_R_CRYPTO_FAILED ,
-            XMLSEC_ERRORS_NO_MESSAGE ) ;
-        return(-1);
-    }
-
-    if( PK11_DigestFinal( cipherCtx , out + midSize , &finSize , outSize - 
midSize ) != SECSuccess ) {
-        xmlSecError( XMLSEC_ERRORS_HERE ,
-            NULL ,
-            "PK11_DigestFinal" ,
-            XMLSEC_ERRORS_R_CRYPTO_FAILED ,
-            XMLSEC_ERRORS_NO_MESSAGE ) ;
-        return(-1);
-    }
-
-    if( xmlSecBufferSetSize( result , midSize + finSize ) < 0 ) {
-        xmlSecError( XMLSEC_ERRORS_HERE ,
-            NULL ,
-            "xmlSecBufferSetSize" ,
-            XMLSEC_ERRORS_R_CRYPTO_FAILED ,
-            XMLSEC_ERRORS_NO_MESSAGE ) ;
-        return(-1);
-    }
-
-    return 0 ;
-}
-
-/**
- * Block cipher transform final
- */
-static int
-xmlSecNssKeyWrapCtxFinal(
-    xmlSecNssKeyWrapCtxPtr      ctx ,
-    xmlSecBufferPtr             in ,
-    xmlSecBufferPtr             out ,
-    int                         encrypt ,
-    xmlSecTransformCtxPtr       transformCtx
-) {
-    PK11SymKey*         targetKey ;
-    xmlSecSize          blockSize ;
-    xmlSecBufferPtr     result ;
-
-    xmlSecAssert2( ctx != NULL , -1 ) ;
-    xmlSecAssert2( ctx->cipher != CKM_INVALID_MECHANISM , -1 ) ;
-    xmlSecAssert2( ctx->symkey != NULL , -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( ( blockSize = PK11_GetBlockSize( ctx->cipher , NULL ) ) < 0 ) {
-        xmlSecError( XMLSEC_ERRORS_HERE ,
-            NULL ,
-            "PK11_GetBlockSize" ,
-            XMLSEC_ERRORS_R_CRYPTO_FAILED ,
-            XMLSEC_ERRORS_NO_MESSAGE ) ;
-        return(-1);
-    }
-
-    result = xmlSecBufferCreate( blockSize ) ;
-    if( result == NULL ) {
-        xmlSecError( XMLSEC_ERRORS_HERE ,
-            NULL ,
-            "xmlSecBufferCreate" ,
-            XMLSEC_ERRORS_R_CRYPTO_FAILED ,
-            XMLSEC_ERRORS_NO_MESSAGE ) ;
-        return(-1);
-    }
-
-    switch( ctx->cipher ) {
-        case CKM_DES3_CBC :
-            if( xmlSecNssKeyWrapDesOp(ctx, encrypt, result) < 0 ) {
-                xmlSecError( XMLSEC_ERRORS_HERE ,
-                    NULL ,
-                    "xmlSecNssKeyWrapDesOp" ,
-                    XMLSEC_ERRORS_R_CRYPTO_FAILED ,
-                    XMLSEC_ERRORS_NO_MESSAGE ) ;
-                xmlSecBufferDestroy(result);
-                return(-1);
-            }
-            break ;
-    /*  case CKM_NETSCAPE_AES_KEY_WRAP :*/
-        case CKM_AES_CBC :
-            if( xmlSecNssKeyWrapAesOp(ctx, encrypt, result) < 0 ) {
-                xmlSecError( XMLSEC_ERRORS_HERE ,
-                    NULL ,
-                    "xmlSecNssKeyWrapAesOp" ,
-                    XMLSEC_ERRORS_R_CRYPTO_FAILED ,
-                    XMLSEC_ERRORS_NO_MESSAGE ) ;
-                xmlSecBufferDestroy(result);
-                return(-1);
-            }
-            break ;
-    }
-
-    /* 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
-xmlSecNssKeyWrapExecute(xmlSecTransformPtr transform, int last, 
xmlSecTransformCtxPtr transformCtx) {
-    xmlSecNssKeyWrapCtxPtr  context = NULL ;
-    xmlSecBufferPtr         inBuf, outBuf ;
-    int                     operation ;
-    int                     rtv ;
-
-    xmlSecAssert2( xmlSecNssKeyWrapCheckId( transform ), -1 ) ;
-    xmlSecAssert2( xmlSecTransformCheckSize( transform, xmlSecNssKeyWrapSize 
), -1 ) ;
-    xmlSecAssert2( ( transform->operation == xmlSecTransformOperationEncrypt ) 
|| ( transform->operation == xmlSecTransformOperationDecrypt ), -1 ) ;
-    xmlSecAssert2( transformCtx != NULL , -1 ) ;
-
-    context = xmlSecNssKeyWrapGetCtx( transform ) ;
-    if( context == NULL ) {
-        xmlSecError( XMLSEC_ERRORS_HERE ,
-            xmlSecErrorsSafeString( xmlSecTransformGetName( transform ) ) ,
-            "xmlSecNssKeyWrapGetCtx" ,
-            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 = xmlSecNssKeyWrapCtxInit( context, inBuf , outBuf , operation 
, transformCtx ) ;
-            if( rtv < 0 ) {
-                xmlSecError( XMLSEC_ERRORS_HERE ,
-                    xmlSecErrorsSafeString( xmlSecTransformGetName( transform 
) ) ,
-                    "xmlSecNssKeyWrapCtxInit" ,
-                    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 = xmlSecNssKeyWrapCtxUpdate( context, inBuf , outBuf , 
operation , transformCtx ) ;
-            if( rtv < 0 ) {
-                xmlSecError( XMLSEC_ERRORS_HERE ,
-                    xmlSecErrorsSafeString( xmlSecTransformGetName( transform 
) ) ,
-                    "xmlSecNssKeyWrapCtxUpdate" ,
-                    XMLSEC_ERRORS_R_INVALID_STATUS ,
-                    XMLSEC_ERRORS_NO_MESSAGE ) ;
-                return(-1);
-            }
-        }
-
-        if( last ) {
-            rtv = xmlSecNssKeyWrapCtxFinal( context, inBuf , outBuf , 
operation , transformCtx ) ;
-            if( rtv < 0 ) {
-                xmlSecError( XMLSEC_ERRORS_HERE ,
-                    xmlSecErrorsSafeString( xmlSecTransformGetName( transform 
) ) ,
-                    "xmlSecNssKeyWrapCtxFinal" ,
-                    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_AES
-
-
-#ifdef __MINGW32__ // for runtime-pseudo-reloc
-static struct _xmlSecTransformKlass xmlSecNssKWAes128Klass = {
-#else
-static xmlSecTransformKlass xmlSecNssKWAes128Klass = {
-#endif
-    /* klass/object sizes */
-    sizeof(xmlSecTransformKlass),       /* xmlSecSize klassSize */
-    xmlSecNssKeyWrapSize,               /* xmlSecSize objSize */
-
-    xmlSecNameKWAes128,             /* const xmlChar* name; */
-    xmlSecHrefKWAes128,             /* const xmlChar* href; */
-    xmlSecTransformUsageEncryptionMethod,   /* xmlSecAlgorithmUsage usage; */
-
-    xmlSecNssKeyWrapInitialize,             /* xmlSecTransformInitializeMethod 
initialize; */
-    xmlSecNssKeyWrapFinalize,           /* xmlSecTransformFinalizeMethod 
finalize; */
-    NULL,                   /* xmlSecTransformNodeReadMethod readNode; */
-    NULL,                   /* xmlSecTransformNodeWriteMethod writeNode; */
-    xmlSecNssKeyWrapSetKeyReq,          /* xmlSecTransformSetKeyMethod 
setKeyReq; */
-    xmlSecNssKeyWrapSetKey,         /* xmlSecTransformSetKeyMethod setKey; */
-    NULL,                   /* xmlSecTransformValidateMethod validate; */
-    xmlSecTransformDefaultGetDataType,      /* 
xmlSecTransformGetDataTypeMethod getDataType; */
-    xmlSecTransformDefaultPushBin,      /* xmlSecTransformPushBinMethod 
pushBin; */
-    xmlSecTransformDefaultPopBin,       /* xmlSecTransformPopBinMethod popBin; 
*/
-    NULL,                   /* xmlSecTransformPushXmlMethod pushXml; */
-    NULL,                   /* xmlSecTransformPopXmlMethod popXml; */
-    xmlSecNssKeyWrapExecute,            /* xmlSecTransformExecuteMethod 
execute; */
-
-    NULL,                   /* void* reserved0; */
-    NULL,                   /* void* reserved1; */
-};
-
-#ifdef __MINGW32__ // for runtime-pseudo-reloc
-static struct _xmlSecTransformKlass xmlSecNssKWAes192Klass = {
-#else
-static xmlSecTransformKlass xmlSecNssKWAes192Klass = {
-#endif
-    /* klass/object sizes */
-    sizeof(xmlSecTransformKlass),       /* xmlSecSize klassSize */
-    xmlSecNssKeyWrapSize,               /* xmlSecSize objSize */
-
-    xmlSecNameKWAes192,             /* const xmlChar* name; */
-    xmlSecHrefKWAes192,             /* const xmlChar* href; */
-    xmlSecTransformUsageEncryptionMethod,   /* xmlSecAlgorithmUsage usage; */
-
-    xmlSecNssKeyWrapInitialize,             /* xmlSecTransformInitializeMethod 
initialize; */
-    xmlSecNssKeyWrapFinalize,           /* xmlSecTransformFinalizeMethod 
finalize; */
-    NULL,                   /* xmlSecTransformNodeReadMethod readNode; */
-    NULL,                   /* xmlSecTransformNodeWriteMethod writeNode; */
-    xmlSecNssKeyWrapSetKeyReq,          /* xmlSecTransformSetKeyMethod 
setKeyReq; */
-    xmlSecNssKeyWrapSetKey,         /* xmlSecTransformSetKeyMethod setKey; */
-    NULL,                   /* xmlSecTransformValidateMethod validate; */
-    xmlSecTransformDefaultGetDataType,      /* 
xmlSecTransformGetDataTypeMethod getDataType; */
-    xmlSecTransformDefaultPushBin,      /* xmlSecTransformPushBinMethod 
pushBin; */
-    xmlSecTransformDefaultPopBin,       /* xmlSecTransformPopBinMethod popBin; 
*/
-    NULL,                   /* xmlSecTransformPushXmlMethod pushXml; */
-    NULL,                   /* xmlSecTransformPopXmlMethod popXml; */
-    xmlSecNssKeyWrapExecute,            /* xmlSecTransformExecuteMethod 
execute; */
-
-    NULL,                   /* void* reserved0; */
-    NULL,                   /* void* reserved1; */
-};
-
-#ifdef __MINGW32__ // for runtime-pseudo-reloc
-static struct _xmlSecTransformKlass xmlSecNssKWAes256Klass = {
-#else
-static xmlSecTransformKlass xmlSecNssKWAes256Klass = {
-#endif
-    /* klass/object sizes */
-    sizeof(xmlSecTransformKlass),       /* xmlSecSize klassSize */
-    xmlSecNssKeyWrapSize,               /* xmlSecSize objSize */
-
-    xmlSecNameKWAes256,             /* const xmlChar* name; */
-    xmlSecHrefKWAes256,             /* const xmlChar* href; */
-    xmlSecTransformUsageEncryptionMethod,   /* xmlSecAlgorithmUsage usage; */
-
-    xmlSecNssKeyWrapInitialize,             /* xmlSecTransformInitializeMethod 
initialize; */
-    xmlSecNssKeyWrapFinalize,           /* xmlSecTransformFinalizeMethod 
finalize; */
-    NULL,                   /* xmlSecTransformNodeReadMethod readNode; */
-    NULL,                   /* xmlSecTransformNodeWriteMethod writeNode; */
-    xmlSecNssKeyWrapSetKeyReq,          /* xmlSecTransformSetKeyMethod 
setKeyReq; */
-    xmlSecNssKeyWrapSetKey,         /* xmlSecTransformSetKeyMethod setKey; */
-    NULL,                   /* xmlSecTransformValidateMethod validate; */
-    xmlSecTransformDefaultGetDataType,      /* 
xmlSecTransformGetDataTypeMethod getDataType; */
-    xmlSecTransformDefaultPushBin,      /* xmlSecTransformPushBinMethod 
pushBin; */
-    xmlSecTransformDefaultPopBin,       /* xmlSecTransformPopBinMethod popBin; 
*/
-    NULL,                   /* xmlSecTransformPushXmlMethod pushXml; */
-    NULL,                   /* xmlSecTransformPopXmlMethod popXml; */
-    xmlSecNssKeyWrapExecute,            /* xmlSecTransformExecuteMethod 
execute; */
-
-    NULL,                   /* void* reserved0; */
-    NULL,                   /* void* reserved1; */
-};
-
-/**
- * xmlSecNssTransformKWAes128GetKlass:
- *
- * The AES-128 key wrapper transform klass.
- *
- * Returns AES-128 key wrapper transform klass.
- */
-xmlSecTransformId
-xmlSecNssTransformKWAes128GetKlass(void) {
-    return(&xmlSecNssKWAes128Klass);
-}
-
-/**
- * xmlSecNssTransformKWAes192GetKlass:
- *
- * The AES-192 key wrapper transform klass.
- *
- * Returns AES-192 key wrapper transform klass.
- */
-xmlSecTransformId
-xmlSecNssTransformKWAes192GetKlass(void) {
-    return(&xmlSecNssKWAes192Klass);
-}
-
-/**
- *
- * The AES-256 key wrapper transform klass.
- *
- * Returns AES-256 key wrapper transform klass.
- */
-xmlSecTransformId
-xmlSecNssTransformKWAes256GetKlass(void) {
-    return(&xmlSecNssKWAes256Klass);
-}
-
-#endif /* XMLSEC_NO_AES */
-
-
-#ifndef XMLSEC_NO_DES
-
-#ifdef __MINGW32__ // for runtime-pseudo-reloc
-static struct _xmlSecTransformKlass xmlSecNssKWDes3Klass = {
-#else
-static xmlSecTransformKlass xmlSecNssKWDes3Klass = {
-#endif
-    /* klass/object sizes */
-    sizeof(xmlSecTransformKlass),       /* xmlSecSize klassSize */
-    xmlSecNssKeyWrapSize,           /* xmlSecSize objSize */
-
-    xmlSecNameKWDes3,               /* const xmlChar* name; */
-    xmlSecHrefKWDes3,               /* const xmlChar* href; */
-    xmlSecTransformUsageEncryptionMethod,   /* xmlSecAlgorithmUsage usage; */
-
-    xmlSecNssKeyWrapInitialize,             /* xmlSecTransformInitializeMethod 
initialize; */
-    xmlSecNssKeyWrapFinalize,           /* xmlSecTransformFinalizeMethod 
finalize; */
-    NULL,                   /* xmlSecTransformNodeReadMethod readNode; */
-    NULL,                   /* xmlSecTransformNodeWriteMethod writeNode; */
-    xmlSecNssKeyWrapSetKeyReq,          /* xmlSecTransformSetKeyMethod 
setKeyReq; */
-    xmlSecNssKeyWrapSetKey,         /* xmlSecTransformSetKeyMethod setKey; */
-    NULL,                   /* xmlSecTransformValidateMethod validate; */
-    xmlSecTransformDefaultGetDataType,      /* 
xmlSecTransformGetDataTypeMethod getDataType; */
-    xmlSecTransformDefaultPushBin,      /* xmlSecTransformPushBinMethod 
pushBin; */
-    xmlSecTransformDefaultPopBin,       /* xmlSecTransformPopBinMethod popBin; 
*/
-    NULL,                   /* xmlSecTransformPushXmlMethod pushXml; */
-    NULL,                   /* xmlSecTransformPopXmlMethod popXml; */
-    xmlSecNssKeyWrapExecute,            /* xmlSecTransformExecuteMethod 
execute; */
-
-    NULL,                   /* void* reserved0; */
-    NULL,                   /* void* reserved1; */
-};
-
-/**
- * xmlSecNssTransformKWDes3GetKlass:
- *
- * The Triple DES key wrapper transform klass.
- *
- * Returns Triple DES key wrapper transform klass.
- */
-xmlSecTransformId
-xmlSecNssTransformKWDes3GetKlass(void) {
-    return(&xmlSecNssKWDes3Klass);
-}
-
-#endif /* XMLSEC_NO_DES */
-
diff --git a/external/libxmlsec/src/tokens.c b/external/libxmlsec/src/tokens.c
deleted file mode 100644
index 25c1fb0..0000000
--- a/external/libxmlsec/src/tokens.c
+++ /dev/null
@@ -1,548 +0,0 @@
-/**
- * XMLSec library
- *
- * This is free software; see Copyright file in the source
- * distribution for preciese wording.
- *
- * Copyright..................................
- *
- * Contributor(s): _____________________________
- *
- */
-
-/**
- * In order to ensure that particular crypto operation is performed on
- * particular crypto device, a subclass of xmlSecList is used to store slot and
- * mechanism information.
- *
- * In the list, a slot is bound with a mechanism. If the mechanism is 
available,
- * this mechanism only can perform on the slot; otherwise, it can perform on
- * every eligibl slot in the list.
- *
- * When try to find a slot for a particular mechanism, the slot bound with
- * available mechanism will be looked up firstly.
- */
-#include "globals.h"
-#include <string.h>
-
-#include <xmlsec/xmlsec.h>
-#include <xmlsec/errors.h>
-#include <xmlsec/list.h>
-
-#include <xmlsec/nss/tokens.h>
-
-int
-xmlSecNssKeySlotSetMechList(
-    xmlSecNssKeySlotPtr keySlot ,
-    CK_MECHANISM_TYPE_PTR mechanismList
-) {
-    int counter ;
-
-    xmlSecAssert2( keySlot != NULL , -1 ) ;
-
-    if( keySlot->mechanismList != CK_NULL_PTR ) {
-        xmlFree( keySlot->mechanismList ) ;
-
-        for( counter = 0 ; *( mechanismList + counter ) != 
CKM_INVALID_MECHANISM ; counter ++ ) ;
-        keySlot->mechanismList = ( CK_MECHANISM_TYPE_PTR )xmlMalloc( ( counter 
+ 1 ) * sizeof( CK_MECHANISM_TYPE ) ) ;
-        if( keySlot->mechanismList == NULL ) {
-            xmlSecError( XMLSEC_ERRORS_HERE ,
-                NULL ,
-                NULL ,
-                XMLSEC_ERRORS_R_XMLSEC_FAILED ,
-                XMLSEC_ERRORS_NO_MESSAGE ) ;
-            return( -1 );
-        }
-        for( ; counter >= 0 ; counter -- )
-            *( keySlot->mechanismList + counter ) = *(  mechanismList + 
counter ) ;
-    }
-
-    return( 0 );
-}
-
-int
-xmlSecNssKeySlotEnableMech(
-    xmlSecNssKeySlotPtr keySlot ,
-    CK_MECHANISM_TYPE mechanism
-) {
-    int counter ;
-    CK_MECHANISM_TYPE_PTR newList ;
-
-    xmlSecAssert2( keySlot != NULL , -1 ) ;
-
-    if( mechanism != CKM_INVALID_MECHANISM ) {
-        for( counter = 0 ; *( keySlot->mechanismList + counter ) != 
CKM_INVALID_MECHANISM ; counter ++ ) ;
-        newList = ( CK_MECHANISM_TYPE_PTR )xmlMalloc( ( counter + 1 + 1 ) * 
sizeof( CK_MECHANISM_TYPE ) ) ;
-        if( newList == NULL ) {
-            xmlSecError( XMLSEC_ERRORS_HERE ,
-                NULL ,
-                NULL ,
-                XMLSEC_ERRORS_R_XMLSEC_FAILED ,
-                XMLSEC_ERRORS_NO_MESSAGE ) ;
-            return( -1 );
-        }
-        *( newList + counter + 1 ) = CKM_INVALID_MECHANISM ;
-        *( newList + counter ) = mechanism ;
-        for( counter -= 1 ; counter >= 0 ; counter -- )
-            *( newList + counter ) = *(  keySlot->mechanismList + counter ) ;
-
-        xmlFree( keySlot->mechanismList ) ;
-        keySlot->mechanismList = newList ;
-    }
-
-    return(0);
-}
-
-int
-xmlSecNssKeySlotDisableMech(
-    xmlSecNssKeySlotPtr keySlot ,
-    CK_MECHANISM_TYPE mechanism
-) {
-    int counter ;
-
-    xmlSecAssert2( keySlot != NULL , -1 ) ;
-
-    for( counter = 0 ; *( keySlot->mechanismList + counter ) != 
CKM_INVALID_MECHANISM ; counter ++ ) {
-        if( *( keySlot->mechanismList + counter ) == mechanism ) {
-            for( ; *( keySlot->mechanismList + counter ) != 
CKM_INVALID_MECHANISM ; counter ++ ) {
-                *( keySlot->mechanismList + counter ) = *( 
keySlot->mechanismList + counter + 1 ) ;
-            }
-
-            break ;
-        }
-    }
-
-    return(0);
-}
-
-CK_MECHANISM_TYPE_PTR
-xmlSecNssKeySlotGetMechList(
-    xmlSecNssKeySlotPtr keySlot
-) {
-    if( keySlot != NULL )
-        return keySlot->mechanismList ;
-    else
-        return NULL ;
-}
-
-int
-xmlSecNssKeySlotSetSlot(
-    xmlSecNssKeySlotPtr keySlot ,
-    PK11SlotInfo* slot
-) {
-    xmlSecAssert2( keySlot != NULL , -1 ) ;
-
-    if( slot != NULL && keySlot->slot != slot ) {
-        if( keySlot->slot != NULL )
-            PK11_FreeSlot( keySlot->slot ) ;
-
-        if( keySlot->mechanismList != NULL ) {
-            xmlFree( keySlot->mechanismList ) ;
-            keySlot->mechanismList = NULL ;
-        }
-
-        keySlot->slot = PK11_ReferenceSlot( slot ) ;
-    }
-
-    return(0);
-}
-
-int
-xmlSecNssKeySlotInitialize(
-    xmlSecNssKeySlotPtr keySlot ,
-    PK11SlotInfo* slot
-) {
-    xmlSecAssert2( keySlot != NULL , -1 ) ;
-    xmlSecAssert2( keySlot->slot == NULL , -1 ) ;
-    xmlSecAssert2( keySlot->mechanismList == NULL , -1 ) ;
-
-    if( slot != NULL ) {
-        keySlot->slot = PK11_ReferenceSlot( slot ) ;
-    }
-
-    return(0);
-}
-
-void
-xmlSecNssKeySlotFinalize(
-    xmlSecNssKeySlotPtr keySlot
-) {
-    xmlSecAssert( keySlot != NULL ) ;
-
-    if( keySlot->mechanismList != NULL ) {
-        xmlFree( keySlot->mechanismList ) ;
-        keySlot->mechanismList = NULL ;
-    }
-
-    if( keySlot->slot != NULL ) {
-        PK11_FreeSlot( keySlot->slot ) ;
-        keySlot->slot = NULL ;
-    }
-
-}
-
-PK11SlotInfo*
-xmlSecNssKeySlotGetSlot(
-    xmlSecNssKeySlotPtr keySlot
-) {
-    if( keySlot != NULL )
-        return keySlot->slot ;
-    else
-        return NULL ;
-}
-
-xmlSecNssKeySlotPtr
-xmlSecNssKeySlotCreate() {
-    xmlSecNssKeySlotPtr keySlot ;
-
-    /* Allocates a new xmlSecNssKeySlot and fill the fields */
-    keySlot = ( xmlSecNssKeySlotPtr )xmlMalloc( sizeof( xmlSecNssKeySlot ) ) ;
-    if( keySlot == NULL ) {
-        xmlSecError( XMLSEC_ERRORS_HERE ,
-            NULL ,
-            NULL ,
-            XMLSEC_ERRORS_R_XMLSEC_FAILED ,
-            XMLSEC_ERRORS_NO_MESSAGE ) ;
-        return( NULL );
-    }
-    memset( keySlot, 0, sizeof( xmlSecNssKeySlot ) ) ;
-
-    return( keySlot ) ;
-}
-
-int
-xmlSecNssKeySlotCopy(
-    xmlSecNssKeySlotPtr newKeySlot ,
-    xmlSecNssKeySlotPtr keySlot
-) {
-    CK_MECHANISM_TYPE_PTR mech ;
-    int counter ;
-
-    xmlSecAssert2( newKeySlot != NULL , -1 ) ;
-    xmlSecAssert2( keySlot != NULL , -1 ) ;
-
-    if( keySlot->slot != NULL && newKeySlot->slot != keySlot->slot ) {
-        if( newKeySlot->slot != NULL )
-            PK11_FreeSlot( newKeySlot->slot ) ;
-
-        newKeySlot->slot = PK11_ReferenceSlot( keySlot->slot ) ;
-    }
-
-    if( keySlot->mechanismList != CK_NULL_PTR ) {
-        xmlFree( newKeySlot->mechanismList ) ;
-
-        for( counter = 0 ; *( keySlot->mechanismList + counter ) != 
CKM_INVALID_MECHANISM ; counter ++ ) ;
-        newKeySlot->mechanismList = ( CK_MECHANISM_TYPE_PTR )xmlMalloc( ( 
counter + 1 ) * sizeof( CK_MECHANISM_TYPE ) ) ;
-        if( newKeySlot->mechanismList == NULL ) {
-            xmlSecError( XMLSEC_ERRORS_HERE ,
-                NULL ,
-                NULL ,
-                XMLSEC_ERRORS_R_XMLSEC_FAILED ,
-                XMLSEC_ERRORS_NO_MESSAGE ) ;
-            return( -1 );
-        }
-        for( ; counter >= 0 ; counter -- )
-            *( newKeySlot->mechanismList + counter ) = *(  
keySlot->mechanismList + counter ) ;
-    }
-
-    return( 0 );
-}
-
-xmlSecNssKeySlotPtr
-xmlSecNssKeySlotDuplicate(
-    xmlSecNssKeySlotPtr keySlot
-) {
-    xmlSecNssKeySlotPtr newKeySlot ;
-    int ret ;
-
-    xmlSecAssert2( keySlot != NULL , NULL ) ;
-
-    newKeySlot = xmlSecNssKeySlotCreate() ;
-    if( newKeySlot == NULL ) {
-        xmlSecError( XMLSEC_ERRORS_HERE ,
-            NULL ,
-            NULL ,
-            XMLSEC_ERRORS_R_XMLSEC_FAILED ,
-            XMLSEC_ERRORS_NO_MESSAGE ) ;
-        return( NULL );
-    }
-
-    if( xmlSecNssKeySlotCopy( newKeySlot, keySlot ) < 0 ) {
-        xmlSecError( XMLSEC_ERRORS_HERE ,
-            NULL ,
-            NULL ,
-            XMLSEC_ERRORS_R_XMLSEC_FAILED ,
-            XMLSEC_ERRORS_NO_MESSAGE ) ;
-        return( NULL );
-    }
-
-    return( newKeySlot );
-}
-
-void
-xmlSecNssKeySlotDestroy(
-        xmlSecNssKeySlotPtr keySlot
-) {
-    xmlSecAssert( keySlot != NULL ) ;
-
-    if( keySlot->mechanismList != NULL )
-        xmlFree( keySlot->mechanismList ) ;
-
-    if( keySlot->slot != NULL )
-        PK11_FreeSlot( keySlot->slot ) ;
-
-    xmlFree( keySlot ) ;
-}
-
-int
-xmlSecNssKeySlotBindMech(
-    xmlSecNssKeySlotPtr keySlot ,
-    CK_MECHANISM_TYPE type
-) {
-    int counter ;
-
-    xmlSecAssert2( keySlot != NULL , 0 ) ;
-    xmlSecAssert2( keySlot->slot != NULL , 0 ) ;
-    xmlSecAssert2( type != CKM_INVALID_MECHANISM , 0 ) ;
-
-    for( counter = 0 ; *( keySlot->mechanismList + counter ) != 
CKM_INVALID_MECHANISM ; counter ++ ) {
-        if( *( keySlot->mechanismList + counter ) == type )
-            return(1) ;
-    }
-
-    return( 0 ) ;
-}
-
-int
-xmlSecNssKeySlotSupportMech(
-    xmlSecNssKeySlotPtr keySlot ,
-    CK_MECHANISM_TYPE type
-) {
-    xmlSecAssert2( keySlot != NULL , 0 ) ;
-    xmlSecAssert2( keySlot->slot != NULL , 0 ) ;
-    xmlSecAssert2( type != CKM_INVALID_MECHANISM , 0 ) ;
-
-    if( PK11_DoesMechanism( keySlot->slot , type ) == PR_TRUE ) {
-        return(1);
-    } else
-        return(0);
-}
-
-void
-xmlSecNssKeySlotDebugDump(
-    xmlSecNssKeySlotPtr keySlot ,
-    FILE* output
-) {
-    xmlSecAssert( keySlot != NULL ) ;
-    xmlSecAssert( output != NULL ) ;
-
-    fprintf( output, "== KEY SLOT\n" );
-}
-
-void
-xmlSecNssKeySlotDebugXmlDump(
-    xmlSecNssKeySlotPtr keySlot ,
-    FILE* output
-) {
-}
-
-/**
- * Key Slot List
- */
-#ifdef __MINGW32__ // for runtime-pseudo-reloc
-static struct _xmlSecPtrListKlass xmlSecNssKeySlotPtrListKlass = {
-#else
-static xmlSecPtrListKlass xmlSecNssKeySlotPtrListKlass = {
-#endif
-    BAD_CAST "mechanism-list",
-    (xmlSecPtrDuplicateItemMethod)xmlSecNssKeySlotDuplicate,
-    (xmlSecPtrDestroyItemMethod)xmlSecNssKeySlotDestroy,
-    (xmlSecPtrDebugDumpItemMethod)xmlSecNssKeySlotDebugDump,
-    (xmlSecPtrDebugDumpItemMethod)xmlSecNssKeySlotDebugXmlDump,
-};
-
-xmlSecPtrListId
-xmlSecNssKeySlotListGetKlass(void) {
-    return(&xmlSecNssKeySlotPtrListKlass);
-}
-
-
-/*-
- * Global PKCS#11 crypto token repository -- Key slot list
- */
-static xmlSecPtrListPtr _xmlSecNssKeySlotList = NULL ;
-
-PK11SlotInfo*
-xmlSecNssSlotGet(
-    CK_MECHANISM_TYPE type
-) {
-    PK11SlotInfo*           slot = NULL ;
-    xmlSecNssKeySlotPtr     keySlot ;
-    xmlSecSize              ksSize ;
-    xmlSecSize              ksPos ;
-    char                    flag ;
-
-    if( _xmlSecNssKeySlotList == NULL ) {
-        slot = PK11_GetBestSlot( type , NULL ) ;
-    } else {
-        ksSize = xmlSecPtrListGetSize( _xmlSecNssKeySlotList ) ;
-
-        /*-
-         * Firstly, checking whether the mechanism is bound with a special 
slot.
-         * If no bound slot, we try to find the first eligible slot in the 
list.
-         */
-        for( flag = 0, ksPos = 0 ; ksPos < ksSize ; ksPos ++ ) {
-            keySlot = ( xmlSecNssKeySlotPtr )xmlSecPtrListGetItem( 
_xmlSecNssKeySlotList, ksPos ) ;
-            if( keySlot != NULL && xmlSecNssKeySlotBindMech( keySlot, type ) ) 
{
-                slot = xmlSecNssKeySlotGetSlot( keySlot ) ;
-                flag = 2 ;
-            } else if( flag == 0 && xmlSecNssKeySlotSupportMech( keySlot, type 
) ) {
-                slot = xmlSecNssKeySlotGetSlot( keySlot ) ;
-                flag = 1 ;
-            }
-
-            if( flag == 2 )
-                break ;
-        }
-        if( slot != NULL )
-            slot = PK11_ReferenceSlot( slot ) ;
-    }
-
-    if( slot != NULL && PK11_NeedLogin( slot ) ) {
-        if( PK11_Authenticate( slot , PR_TRUE , NULL ) != SECSuccess ) {
-            xmlSecError( XMLSEC_ERRORS_HERE ,
-                NULL ,
-                NULL ,
-                XMLSEC_ERRORS_R_XMLSEC_FAILED ,
-                XMLSEC_ERRORS_NO_MESSAGE ) ;
-            PK11_FreeSlot( slot ) ;
-            return( NULL );
-        }
-    }
-
-    return slot ;
-}
-
-int
-xmlSecNssSlotInitialize(
-    void
-) {
-    if( _xmlSecNssKeySlotList != NULL ) {
-        xmlSecPtrListDestroy( _xmlSecNssKeySlotList ) ;
-        _xmlSecNssKeySlotList = NULL ;
-    }
-
-    _xmlSecNssKeySlotList = xmlSecPtrListCreate( xmlSecNssKeySlotListId ) ;
-    if( _xmlSecNssKeySlotList == NULL ) {
-        xmlSecError( XMLSEC_ERRORS_HERE ,
-            NULL ,
-            NULL ,
-            XMLSEC_ERRORS_R_XMLSEC_FAILED ,
-            XMLSEC_ERRORS_NO_MESSAGE ) ;
-        return( -1 );
-    }
-
-    return(0);
-}
-
-void
-xmlSecNssSlotShutdown(
-    void
-) {
-    if( _xmlSecNssKeySlotList != NULL ) {
-        xmlSecPtrListDestroy( _xmlSecNssKeySlotList ) ;
-        _xmlSecNssKeySlotList = NULL ;
-    }
-}
-
-int
-xmlSecNssSlotAdopt(
-    PK11SlotInfo* slot,
-    CK_MECHANISM_TYPE type
-) {
-    xmlSecNssKeySlotPtr     keySlot ;
-    xmlSecSize              ksSize ;
-    xmlSecSize              ksPos ;
-    char                    flag ;
-
-    xmlSecAssert2( _xmlSecNssKeySlotList != NULL, -1 ) ;
-    xmlSecAssert2( slot != NULL, -1 ) ;
-
-    ksSize = xmlSecPtrListGetSize( _xmlSecNssKeySlotList ) ;
-
-    /*-
-     * Firstly, checking whether the slot is in the repository already.
-     */
-    flag = 0 ;
-    for( ksPos = 0 ; ksPos < ksSize ; ksPos ++ ) {
-        keySlot = ( xmlSecNssKeySlotPtr )xmlSecPtrListGetItem( 
_xmlSecNssKeySlotList, ksPos ) ;
-        /* If find the slot in the list */
-        if( keySlot != NULL && xmlSecNssKeySlotGetSlot( keySlot ) == slot ) {
-            /* If mechnism type is valid, bind the slot with the mechanism */
-            if( type != CKM_INVALID_MECHANISM ) {
-                if( xmlSecNssKeySlotEnableMech( keySlot, type ) < 0 ) {
-                    xmlSecError( XMLSEC_ERRORS_HERE ,
-                        NULL ,
-                        NULL ,
-                        XMLSEC_ERRORS_R_XMLSEC_FAILED ,
-                        XMLSEC_ERRORS_NO_MESSAGE ) ;
-                    return(-1);
-                }
-            }
-
-            flag = 1 ;
-        }
-    }
-
-    /* If the slot do not in the list, add a new item to the list */
-    if( flag == 0 ) {
-        /* Create a new KeySlot */
-        keySlot = xmlSecNssKeySlotCreate() ;
-        if( keySlot == NULL ) {
-            xmlSecError( XMLSEC_ERRORS_HERE ,
-                NULL ,
-                NULL ,
-                XMLSEC_ERRORS_R_XMLSEC_FAILED ,
-                XMLSEC_ERRORS_NO_MESSAGE ) ;
-            return(-1);
-        }
-
-        /* Initialize the keySlot with a slot */
-        if( xmlSecNssKeySlotInitialize( keySlot, slot ) < 0 ) {
-            xmlSecError( XMLSEC_ERRORS_HERE ,
-                NULL ,
-                NULL ,
-                XMLSEC_ERRORS_R_XMLSEC_FAILED ,
-                XMLSEC_ERRORS_NO_MESSAGE ) ;
-            xmlSecNssKeySlotDestroy( keySlot ) ;
-            return(-1);
-        }
-
-        /* If mechnism type is valid, bind the slot with the mechanism */
-        if( type != CKM_INVALID_MECHANISM ) {
-            if( xmlSecNssKeySlotEnableMech( keySlot, type ) < 0 ) {
-                xmlSecError( XMLSEC_ERRORS_HERE ,
-                    NULL ,
-                    NULL ,
-                    XMLSEC_ERRORS_R_XMLSEC_FAILED ,
-                    XMLSEC_ERRORS_NO_MESSAGE ) ;
-                xmlSecNssKeySlotDestroy( keySlot ) ;
-                return(-1);
-            }
-        }
-
-        /* Add keySlot into the list */
-        if( xmlSecPtrListAdd( _xmlSecNssKeySlotList, keySlot ) < 0 ) {
-            xmlSecError( XMLSEC_ERRORS_HERE ,
-                NULL ,
-                NULL ,
-                XMLSEC_ERRORS_R_XMLSEC_FAILED ,
-                XMLSEC_ERRORS_NO_MESSAGE ) ;
-            xmlSecNssKeySlotDestroy( keySlot ) ;
-            return(-1);
-        }
-    }
-
-    return(0);
-}
-
diff --git a/external/libxmlsec/xmlsec1-customkeymanage.patch 
b/external/libxmlsec/xmlsec1-customkeymanage.patch.1
similarity index 56%
rename from external/libxmlsec/xmlsec1-customkeymanage.patch
rename to external/libxmlsec/xmlsec1-customkeymanage.patch.1
index 1881ea9..d261d73 100644
--- a/external/libxmlsec/xmlsec1-customkeymanage.patch
+++ b/external/libxmlsec/xmlsec1-customkeymanage.patch.1
@@ -1,6 +1,47 @@
---- misc/xmlsec1-1.2.14/include/xmlsec/mscrypto/Makefile.am    2009-06-25 
22:53:18.000000000 +0200
-+++ misc/build/xmlsec1-1.2.14/include/xmlsec/mscrypto/Makefile.am      
2009-09-21 14:02:48.563253008 +0200
-@@ -3,6 +3,7 @@
+From a74ad2cada3cd652f08679d65cb6e1ef3acad21c Mon Sep 17 00:00:00 2001
+From: Miklos Vajna <vmik...@collabora.co.uk>
+Date: Fri, 4 Mar 2016 16:19:12 +0100
+Subject: [PATCH] xmlsec1-customkeymanage.patch
+
+---
+ include/xmlsec/mscrypto/Makefile.am |    1 +
+ include/xmlsec/mscrypto/Makefile.in |    1 +
+ include/xmlsec/mscrypto/akmngr.h    |   71 ++
+ include/xmlsec/nss/Makefile.am      |    3 +
+ include/xmlsec/nss/Makefile.in      |    3 +
+ include/xmlsec/nss/akmngr.h         |   56 ++
+ include/xmlsec/nss/app.h            |    5 +
+ include/xmlsec/nss/ciphers.h        |   35 +
+ include/xmlsec/nss/keysstore.h      |    4 +
+ include/xmlsec/nss/tokens.h         |  182 ++++++
+ src/mscrypto/akmngr.c               |  236 +++++++
+ src/nss/Makefile.am                 |    3 +
+ src/nss/Makefile.in                 |   30 +-
+ src/nss/akmngr.c                    |  384 +++++++++++
+ src/nss/hmac.c                      |    8 +-
+ src/nss/keysstore.c                 |  830 ++++++++++++++++--------
+ src/nss/keywrapers.c                | 1213 +++++++++++++++++++++++++++++++++++
+ src/nss/pkikeys.c                   |   51 +-
+ src/nss/symkeys.c                   |  717 ++++++++++++++++++++-
+ src/nss/tokens.c                    |  548 ++++++++++++++++
+ src/nss/x509.c                      |  547 ++++------------
+ src/nss/x509vfy.c                   |  303 +++------
+ win32/Makefile.msvc                 |    4 +
+ 23 files changed, 4275 insertions(+), 960 deletions(-)
+ create mode 100644 include/xmlsec/mscrypto/akmngr.h
+ create mode 100644 include/xmlsec/nss/akmngr.h
+ create mode 100644 include/xmlsec/nss/ciphers.h
+ create mode 100644 include/xmlsec/nss/tokens.h
+ create mode 100644 src/mscrypto/akmngr.c
+ create mode 100644 src/nss/akmngr.c
+ create mode 100644 src/nss/keywrapers.c
+ create mode 100644 src/nss/tokens.c
+
+diff --git a/include/xmlsec/mscrypto/Makefile.am 
b/include/xmlsec/mscrypto/Makefile.am
+index 18dff94..44837b6 100644
+--- a/include/xmlsec/mscrypto/Makefile.am
++++ b/include/xmlsec/mscrypto/Makefile.am
+@@ -3,6 +3,7 @@ NULL =
  xmlsecmscryptoincdir = $(includedir)/xmlsec1/xmlsec/mscrypto
  
  xmlsecmscryptoinc_HEADERS = \
@@ -8,9 +49,11 @@
  app.h \
  certkeys.h \
  crypto.h \
---- misc/xmlsec1-1.2.14/include/xmlsec/mscrypto/Makefile.in    2009-06-25 
22:53:30.000000000 +0200
-+++ misc/build/xmlsec1-1.2.14/include/xmlsec/mscrypto/Makefile.in      
2009-09-21 14:02:48.571021349 +0200
-@@ -281,6 +281,7 @@
+diff --git a/include/xmlsec/mscrypto/Makefile.in 
b/include/xmlsec/mscrypto/Makefile.in
+index 1570c0f..1d02a06 100644
+--- a/include/xmlsec/mscrypto/Makefile.in
++++ b/include/xmlsec/mscrypto/Makefile.in
+@@ -281,6 +281,7 @@ top_srcdir = @top_srcdir@
  NULL = 
  xmlsecmscryptoincdir = $(includedir)/xmlsec1/xmlsec/mscrypto
  xmlsecmscryptoinc_HEADERS = \
@@ -18,9 +61,88 @@
  app.h \
  certkeys.h \
  crypto.h \
---- misc/xmlsec1-1.2.14/include/xmlsec/nss/Makefile.am 2009-06-25 
22:53:18.000000000 +0200
-+++ misc/build/xmlsec1-1.2.14/include/xmlsec/nss/Makefile.am   2009-09-21 
14:02:48.577933031 +0200
-@@ -10,6 +10,9 @@
+diff --git a/include/xmlsec/mscrypto/akmngr.h 
b/include/xmlsec/mscrypto/akmngr.h
+new file mode 100644
+index 0000000..4858192
+--- /dev/null
++++ b/include/xmlsec/mscrypto/akmngr.h
+@@ -0,0 +1,71 @@
++/** 
++ * XMLSec library
++ *
++ * This is free software; see Copyright file in the source
++ * distribution for preciese wording.
++ * 
++ * Copyright ..........................
++ */
++#ifndef __XMLSEC_MSCRYPTO_AKMNGR_H__
++#define __XMLSEC_MSCRYPTO_AKMNGR_H__    
++
++#include <windows.h>
++#include <wincrypt.h>
++
++#include <xmlsec/xmlsec.h>
++#include <xmlsec/keys.h>
++#include <xmlsec/transforms.h>
++
++#ifdef __cplusplus
++extern "C" {
++#endif /* __cplusplus */ 
++
++XMLSEC_CRYPTO_EXPORT xmlSecKeysMngrPtr
++xmlSecMSCryptoAppliedKeysMngrCreate(
++    HCERTSTORE keyStore ,
++    HCERTSTORE certStore
++) ;
++
++XMLSEC_CRYPTO_EXPORT int
++xmlSecMSCryptoAppliedKeysMngrSymKeyLoad(
++      xmlSecKeysMngrPtr       mngr ,
++      HCRYPTKEY       symKey
++) ;
++
++XMLSEC_CRYPTO_EXPORT int
++xmlSecMSCryptoAppliedKeysMngrPubKeyLoad(
++      xmlSecKeysMngrPtr       mngr ,
++      HCRYPTKEY       pubKey
++) ;
++
++XMLSEC_CRYPTO_EXPORT int
++xmlSecMSCryptoAppliedKeysMngrPriKeyLoad(
++      xmlSecKeysMngrPtr       mngr ,
++      HCRYPTKEY       priKey
++) ;
++
++XMLSEC_CRYPTO_EXPORT int
++xmlSecMSCryptoAppliedKeysMngrAdoptKeyStore (
++      xmlSecKeysMngrPtr       mngr ,
++      HCERTSTORE keyStore
++) ;
++
++XMLSEC_CRYPTO_EXPORT int
++xmlSecMSCryptoAppliedKeysMngrAdoptTrustedStore (
++      xmlSecKeysMngrPtr       mngr ,
++      HCERTSTORE trustedStore
++) ;
++
++XMLSEC_CRYPTO_EXPORT int
++xmlSecMSCryptoAppliedKeysMngrAdoptUntrustedStore (
++      xmlSecKeysMngrPtr       mngr ,
++      HCERTSTORE untrustedStore
++) ;
++
++#ifdef __cplusplus
++}
++#endif /* __cplusplus */
++
++#endif /* __XMLSEC_MSCRYPTO_AKMNGR_H__ */
++
++
+diff --git a/include/xmlsec/nss/Makefile.am b/include/xmlsec/nss/Makefile.am
+index e352162..997ca7f 100644
+--- a/include/xmlsec/nss/Makefile.am
++++ b/include/xmlsec/nss/Makefile.am
+@@ -10,6 +10,9 @@ bignum.h \
  keysstore.h \
  pkikeys.h \
  x509.h \
@@ -30,9 +152,11 @@
  $(NULL)
  
  install-exec-hook:
---- misc/xmlsec1-1.2.14/include/xmlsec/nss/Makefile.in 2009-06-25 
22:53:31.000000000 +0200
-+++ misc/build/xmlsec1-1.2.14/include/xmlsec/nss/Makefile.in   2009-09-21 
14:02:48.585376325 +0200
-@@ -288,6 +288,9 @@
+diff --git a/include/xmlsec/nss/Makefile.in b/include/xmlsec/nss/Makefile.in
+index cd99f9d..3fb47cf 100644
+--- a/include/xmlsec/nss/Makefile.in
++++ b/include/xmlsec/nss/Makefile.in
+@@ -288,6 +288,9 @@ bignum.h \
  keysstore.h \
  pkikeys.h \
  x509.h \
@@ -42,9 +166,73 @@
  $(NULL)
  
  all: all-am
---- misc/xmlsec1-1.2.14/include/xmlsec/nss/app.h       2009-06-25 
22:53:18.000000000 +0200
-+++ misc/build/xmlsec1-1.2.14/include/xmlsec/nss/app.h 2009-09-21 
14:02:48.612847068 +0200
-@@ -22,6 +22,9 @@
+diff --git a/include/xmlsec/nss/akmngr.h b/include/xmlsec/nss/akmngr.h
+new file mode 100644
+index 0000000..8053511
+--- /dev/null
++++ b/include/xmlsec/nss/akmngr.h
+@@ -0,0 +1,56 @@
++/** 
++ * XMLSec library
++ *
++ * This is free software; see Copyright file in the source
++ * distribution for preciese wording.
++ * 
++ * Copyright ..........................
++ */
++#ifndef __XMLSEC_NSS_AKMNGR_H__
++#define __XMLSEC_NSS_AKMNGR_H__    
++
++#include <nss.h>
++#include <nspr.h>
++#include <pk11func.h>
++#include <cert.h>
++
++#include <xmlsec/xmlsec.h>
++#include <xmlsec/keys.h>
++#include <xmlsec/transforms.h>
++
++#ifdef __cplusplus
++extern "C" {
++#endif /* __cplusplus */ 
++
++XMLSEC_CRYPTO_EXPORT xmlSecKeysMngrPtr
++xmlSecNssAppliedKeysMngrCreate(
++    PK11SlotInfo** slots,
++      int cSlots,
++    CERTCertDBHandle* handler
++) ;
++
++XMLSEC_CRYPTO_EXPORT int
++xmlSecNssAppliedKeysMngrSymKeyLoad(
++      xmlSecKeysMngrPtr       mngr ,
++      PK11SymKey*                     symKey
++) ;
++
++XMLSEC_CRYPTO_EXPORT int
++xmlSecNssAppliedKeysMngrPubKeyLoad(
++      xmlSecKeysMngrPtr       mngr ,
++      SECKEYPublicKey*        pubKey
++) ;
++
++XMLSEC_CRYPTO_EXPORT int
++xmlSecNssAppliedKeysMngrPriKeyLoad(
++      xmlSecKeysMngrPtr       mngr ,
++      SECKEYPrivateKey*       priKey
++) ;
++
++#ifdef __cplusplus
++}
++#endif /* __cplusplus */
++
++#endif /* __XMLSEC_NSS_AKMNGR_H__ */
++
++
+diff --git a/include/xmlsec/nss/app.h b/include/xmlsec/nss/app.h
+index b78492f..1d85eae 100644
+--- a/include/xmlsec/nss/app.h
++++ b/include/xmlsec/nss/app.h
+@@ -22,6 +22,9 @@ extern "C" {
  #include <xmlsec/keysmngr.h>
  #include <xmlsec/transforms.h>
  
@@ -54,7 +242,7 @@
  /**
   * Init/shutdown
   */
-@@ -36,6 +39,8 @@
+@@ -36,6 +39,8 @@ XMLSEC_CRYPTO_EXPORT int             
xmlSecNssAppDefaultKeysMngrAdoptKey(xmlSecKeysMngrPtr
                                                                            
xmlSecKeyPtr key);
  XMLSEC_CRYPTO_EXPORT int              xmlSecNssAppDefaultKeysMngrLoad 
(xmlSecKeysMngrPtr mngr,
                                                                         const 
char* uri);
@@ -63,9 +251,52 @@
  XMLSEC_CRYPTO_EXPORT int              xmlSecNssAppDefaultKeysMngrSave 
(xmlSecKeysMngrPtr mngr,
                                                                         const 
char* filename,
                                                                         
xmlSecKeyDataType type);
---- misc/xmlsec1-1.2.14/include/xmlsec/nss/keysstore.h 2009-06-25 
22:53:18.000000000 +0200
-+++ misc/build/xmlsec1-1.2.14/include/xmlsec/nss/keysstore.h   2009-09-21 
14:02:48.626261748 +0200
-@@ -16,6 +16,8 @@
+diff --git a/include/xmlsec/nss/ciphers.h b/include/xmlsec/nss/ciphers.h
+new file mode 100644
+index 0000000..607eb1e
+--- /dev/null
++++ b/include/xmlsec/nss/ciphers.h
+@@ -0,0 +1,35 @@
++/** 
++ * XMLSec library
++ *
++ * This is free software; see Copyright file in the source
++ * distribution for preciese wording.
++ * 
++ * Copyright ..........................
++ */
++#ifndef __XMLSEC_NSS_CIPHERS_H__
++#define __XMLSEC_NSS_CIPHERS_H__    
++
++#ifdef __cplusplus
++extern "C" {
++#endif /* __cplusplus */ 
++
++#include <xmlsec/xmlsec.h>
++#include <xmlsec/keys.h>
++#include <xmlsec/transforms.h>
++
++
++XMLSEC_CRYPTO_EXPORT int xmlSecNssSymKeyDataAdoptKey( xmlSecKeyDataPtr data,
++                                                                      
PK11SymKey* symkey ) ;
++
++XMLSEC_CRYPTO_EXPORT xmlSecKeyDataPtr xmlSecNssSymKeyDataKeyAdopt( 
PK11SymKey* symKey ) ;
++
++XMLSEC_CRYPTO_EXPORT PK11SymKey*   xmlSecNssSymKeyDataGetKey(xmlSecKeyDataPtr 
data);
++
++
++#ifdef __cplusplus
++}
++#endif /* __cplusplus */
++
++#endif /* __XMLSEC_NSS_CIPHERS_H__ */
++
++
+diff --git a/include/xmlsec/nss/keysstore.h b/include/xmlsec/nss/keysstore.h
+index 10e6bb3..126f2fb 100644
+--- a/include/xmlsec/nss/keysstore.h
++++ b/include/xmlsec/nss/keysstore.h
+@@ -16,6 +16,8 @@ extern "C" {
  #endif /* __cplusplus */ 
  
  #include <xmlsec/xmlsec.h>
@@ -74,7 +305,7 @@
  
  /****************************************************************************
   *
-@@ -31,6 +33,8 @@
+@@ -31,6 +33,8 @@ extern "C" {
  XMLSEC_CRYPTO_EXPORT xmlSecKeyStoreId xmlSecNssKeysStoreGetKlass      (void);
  XMLSEC_CRYPTO_EXPORT int              xmlSecNssKeysStoreAdoptKey      
(xmlSecKeyStorePtr store,
                                                                         
xmlSecKeyPtr key);
@@ -83,9 +314,441 @@
  XMLSEC_CRYPTO_EXPORT int              xmlSecNssKeysStoreLoad  
(xmlSecKeyStorePtr store,
                                                                 const char 
*uri,
                                                                 
xmlSecKeysMngrPtr keysMngr);
---- misc/xmlsec1-1.2.14/src/nss/Makefile.am    2009-06-25 22:53:18.000000000 
+0200
-+++ misc/build/xmlsec1-1.2.14/src/nss/Makefile.am      2009-09-21 
14:02:48.591560472 +0200

... etc. - the rest is truncated
_______________________________________________
Libreoffice-commits mailing list
libreoffice-comm...@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/libreoffice-commits

Reply via email to