xmlsecurityengine/xmlsec/inc/xmlsec_private.h
changeset 0 e35f40988205
child 24 74f0b3eb154c
equal deleted inserted replaced
-1:000000000000 0:e35f40988205
       
     1 /** 
       
     2  * XML Security Library (http://www.aleksey.com/xmlsec).
       
     3  *
       
     4  * These are internal private declarations. You don't want to use this file
       
     5  * unless you are building xmlsec or xmlsec-<crypto> library
       
     6  *
       
     7  * This is free software; see Copyright file in the source
       
     8  * distribution for preciese wording.
       
     9  * 
       
    10  * Copyright (C) 2002-2003 Aleksey Sanin <aleksey@aleksey.com>
       
    11  * Portion Copyright © 2009 Nokia Corporation and/or its subsidiary(-ies). All rights reserved. 
       
    12  */
       
    13 #ifndef __XMLSEC_PRIVATE_H__
       
    14 #define __XMLSEC_PRIVATE_H__    
       
    15 #include "xmlsec_config.h"
       
    16 #ifndef XMLSEC_PRIVATE
       
    17 #error "xmlsec/private.h file contains private xmlsec definitions and should not be used outside xmlsec or xmlsec-<crypto> libraries"
       
    18 #endif /* XMLSEC_PRIVATE */
       
    19 
       
    20 #ifdef __cplusplus
       
    21 extern "C" {
       
    22 #endif /* __cplusplus */ 
       
    23 
       
    24 #include <libxml2_tree.h>
       
    25 #include <libxml2_xmlio.h>
       
    26 
       
    27 #include "xmlsec_xmlsec.h"
       
    28 #include "xmlsec_keysdata.h"
       
    29 #include "xmlsec_keys.h"
       
    30 #include "xmlsec_keysmngr.h"
       
    31 #include "xmlsec_transforms.h"
       
    32 
       
    33 
       
    34 /*****************************************************************************
       
    35  *
       
    36  * Crypto Init/shutdown
       
    37  *
       
    38  ****************************************************************************/
       
    39 /**
       
    40  * xmlSecCryptoInitMethod:
       
    41  *
       
    42  * xmlsec-crypto libraryinitialization method. 
       
    43  *
       
    44  * Returns 0 on success or a negative value otherwise.
       
    45  */
       
    46 typedef int 			(*xmlSecCryptoInitMethod)		(void);
       
    47 /**
       
    48  * xmlSecCryptoShutdownMethod:
       
    49  * 
       
    50  * xmlsec-crypto library shutdown method. 
       
    51  *
       
    52  * Returns 0 on success or a negative value otherwise.
       
    53  */
       
    54 typedef int 			(*xmlSecCryptoShutdownMethod)		(void);
       
    55 /**
       
    56  * xmlSecCryptoKeysMngrInitMethod:
       
    57  * @mngr: 		the pointer to keys manager.
       
    58  *
       
    59  * Initializes @mngr with xmlsec-crypto library specific data.
       
    60  *
       
    61  * Returns 0 on success or a negative value otherwise.
       
    62  */ 
       
    63 typedef int			(*xmlSecCryptoKeysMngrInitMethod)	(xmlSecKeysMngrPtr mngr);
       
    64 
       
    65 /*****************************************************************************
       
    66  *
       
    67  * Key data ids
       
    68  *
       
    69  ****************************************************************************/
       
    70 /**
       
    71  * xmlSecCryptoKeyDataGetKlassMethod:
       
    72  *
       
    73  * Gets the key data klass.
       
    74  *
       
    75  * Returns pointer to key data klass or NULL if an error occurs 
       
    76  * (the xmlsec-crypto library is not loaded or this key data klass is not
       
    77  * implemented).
       
    78  */ 
       
    79 typedef xmlSecKeyDataId		(*xmlSecCryptoKeyDataGetKlassMethod)	(void);	
       
    80 
       
    81 /*****************************************************************************
       
    82  *
       
    83  * Key data store ids
       
    84  *
       
    85  ****************************************************************************/
       
    86 /**
       
    87  * xmlSecCryptoKeyDataStoreGetKlassMethod:
       
    88  *
       
    89  * Gets the key data store klass.
       
    90  *
       
    91  * Returns pointer to key data store klass or NULL if an error occurs 
       
    92  * (the xmlsec-crypto library is not loaded or this key data store klass is not
       
    93  * implemented).
       
    94  */ 
       
    95 typedef xmlSecKeyDataStoreId	(*xmlSecCryptoKeyDataStoreGetKlassMethod)(void);	
       
    96 
       
    97 /*****************************************************************************
       
    98  *
       
    99  * Crypto transforms ids
       
   100  *
       
   101  ****************************************************************************/
       
   102 /**
       
   103  * xmlSecCryptoTransformGetKlassMethod:
       
   104  *
       
   105  * Gets the transform klass.
       
   106  *
       
   107  * Returns pointer to transform klass or NULL if an error occurs 
       
   108  * (the xmlsec-crypto library is not loaded or this transform is not
       
   109  * implemented).
       
   110  */ 
       
   111 typedef xmlSecTransformId	(*xmlSecCryptoTransformGetKlassMethod)	(void);
       
   112     
       
   113 /*****************************************************************************
       
   114  *
       
   115  * High level routines form xmlsec command line utility
       
   116  *
       
   117  ****************************************************************************/ 
       
   118 /**
       
   119  * xmlSecCryptoAppInitMethod:
       
   120  * @config:		the path to crypto library configuration.
       
   121  *
       
   122  * General crypto engine initialization. This function is used
       
   123  * by XMLSec command line utility and called before 
       
   124  * @xmlSecInit function.
       
   125  *
       
   126  * Returns 0 on success or a negative value otherwise.
       
   127  */
       
   128 typedef int			(*xmlSecCryptoAppInitMethod)		(const char* config);
       
   129 /**
       
   130  * xmlSecCryptoAppShutdownMethod:
       
   131  * 
       
   132  * General crypto engine shutdown. This function is used
       
   133  * by XMLSec command line utility and called after 
       
   134  * @xmlSecShutdown function.
       
   135  *
       
   136  * Returns 0 on success or a negative value otherwise.
       
   137  */
       
   138 typedef int			(*xmlSecCryptoAppShutdownMethod)	(void);
       
   139 /**
       
   140  * xmlSecCryptoAppDefaultKeysMngrInitMethod:
       
   141  * @mngr: 		the pointer to keys manager.
       
   142  *
       
   143  * Initializes @mngr with simple keys store #xmlSecSimpleKeysStoreId
       
   144  * and a default crypto key data stores.
       
   145  *
       
   146  * Returns 0 on success or a negative value otherwise.
       
   147  */ 
       
   148 typedef int			(*xmlSecCryptoAppDefaultKeysMngrInitMethod)	
       
   149 									(xmlSecKeysMngrPtr mngr);
       
   150 /**
       
   151  * xmlSecCryptoAppDefaultKeysMngrAdoptKeyMethod:
       
   152  * @mngr: 		the pointer to keys manager.
       
   153  * @key:		the pointer to key.
       
   154  *
       
   155  * Adds @key to the keys manager @mngr created with #xmlSecCryptoAppDefaultKeysMngrInit
       
   156  * function.
       
   157  *  
       
   158  * Returns 0 on success or a negative value otherwise.
       
   159  */ 
       
   160 typedef int			(*xmlSecCryptoAppDefaultKeysMngrAdoptKeyMethod)	
       
   161 									(xmlSecKeysMngrPtr mngr,
       
   162 									 xmlSecKeyPtr key);
       
   163 /**
       
   164  * xmlSecCryptoAppDefaultKeysMngrLoadMethod:
       
   165  * @mngr: 		the pointer to keys manager.
       
   166  * @uri:		the uri.
       
   167  *
       
   168  * Loads XML keys file from @uri to the keys manager @mngr created 
       
   169  * with #xmlSecCryptoAppDefaultKeysMngrInit function.
       
   170  *  
       
   171  * Returns 0 on success or a negative value otherwise.
       
   172  */ 
       
   173 typedef int			(*xmlSecCryptoAppDefaultKeysMngrLoadMethod)
       
   174 									(xmlSecKeysMngrPtr mngr,
       
   175     									 const char* uri);
       
   176 /**
       
   177  * xmlSecCryptoAppDefaultKeysMngrSaveMethod:
       
   178  * @mngr: 		the pointer to keys manager.
       
   179  * @filename:		the destination filename.
       
   180  * @type:		the type of keys to save (public/private/symmetric).
       
   181  *
       
   182  * Saves keys from @mngr to  XML keys file.
       
   183  *  
       
   184  * Returns 0 on success or a negative value otherwise.
       
   185  */ 
       
   186 typedef int			(*xmlSecCryptoAppDefaultKeysMngrSaveMethod)
       
   187 									(xmlSecKeysMngrPtr mngr,
       
   188     									 const char* filename,
       
   189     									 xmlSecKeyDataType type);
       
   190 /**
       
   191  * xmlSecCryptoAppKeysMngrCertLoadMethod:
       
   192  * @mngr: 		the keys manager.
       
   193  * @filename: 		the certificate file.
       
   194  * @format:		the certificate file format.
       
   195  * @type: 		the flag that indicates is the certificate in @filename
       
   196  *    			trusted or not.
       
   197  * 
       
   198  * Reads cert from @filename and adds to the list of trusted or known
       
   199  * untrusted certs in @store.
       
   200  *
       
   201  * Returns 0 on success or a negative value otherwise.
       
   202  */
       
   203 typedef int			(*xmlSecCryptoAppKeysMngrCertLoadMethod)(xmlSecKeysMngrPtr mngr,
       
   204     									 const char *filename, 
       
   205     									 xmlSecKeyDataFormat format,
       
   206     									 xmlSecKeyDataType type);
       
   207 /**
       
   208  * xmlSecCryptoAppKeysMngrCertLoadMemoryMethod:
       
   209  * @mngr: 		the keys manager.
       
   210  * @data:		the key data.
       
   211  * @dataSize:		the key data size.
       
   212  * @format:		the certificate format.
       
   213  * @type: 		the flag that indicates is the certificate in @data
       
   214  *    			trusted or not.
       
   215  * 
       
   216  * Reads cert from @data and adds to the list of trusted or known
       
   217  * untrusted certs in @store.
       
   218  *
       
   219  * Returns 0 on success or a negative value otherwise.
       
   220  */
       
   221 typedef int			(*xmlSecCryptoAppKeysMngrCertLoadMemoryMethod)(xmlSecKeysMngrPtr mngr,
       
   222 									 const xmlSecByte* data,
       
   223 									 xmlSecSize dataSize, 
       
   224 									 xmlSecKeyDataFormat format,
       
   225     									 xmlSecKeyDataType type);
       
   226 /**
       
   227  * xmlSecCryptoAppKeyLoadMethod:
       
   228  * @filename:		the key filename.
       
   229  * @format:		the key file format.
       
   230  * @pwd:		the key file password.
       
   231  * @pwdCallback:	the key password callback.
       
   232  * @pwdCallbackCtx:	the user context for password callback.
       
   233  *
       
   234  * Reads key from the a file.
       
   235  *
       
   236  * Returns pointer to the key or NULL if an error occurs.
       
   237  */
       
   238 typedef xmlSecKeyPtr		(*xmlSecCryptoAppKeyLoadMethod)		(const char *filename, 
       
   239 									 xmlSecKeyDataFormat format,
       
   240 									 const char *pwd,
       
   241 									 void* pwdCallback,
       
   242 									 void* pwdCallbackCtx);
       
   243 
       
   244 
       
   245 /**
       
   246  * xmlSecCryptoAppKeyLoadMethod:
       
   247  * @filename:		the key filename.
       
   248  * @format:		the key file format.
       
   249  * @pwd:		the key file password.
       
   250  * @pwdCallback:	the key password callback.
       
   251  * @pwdCallbackCtx:	the user context for password callback.
       
   252  *
       
   253  * Reads key from the a file.
       
   254  *
       
   255  * Returns pointer to the key or NULL if an error occurs.
       
   256  */
       
   257 typedef xmlSecKeyPtr		(*xmlSecCryptoAppKeyLoadWithNameMethod)		(const char *filename, 
       
   258 									 xmlSecKeyDataFormat format,
       
   259 									 const char *keyname,
       
   260 									 const char *pwd,
       
   261 									 void* pwdCallback,
       
   262 									 void* pwdCallbackCtx);
       
   263 
       
   264 
       
   265 /**
       
   266  * xmlSecCryptoAppKeyLoadMemoryMethod:
       
   267  * @data:		the key data.
       
   268  * @dataSize:		the key data size.
       
   269  * @format:		the key data format.
       
   270  * @pwd:		the key data password.
       
   271  * @pwdCallback:	the key password callback.
       
   272  * @pwdCallbackCtx:	the user context for password callback.
       
   273  *
       
   274  * Reads key from the binary data buffer.
       
   275  *
       
   276  * Returns pointer to the key or NULL if an error occurs.
       
   277  */
       
   278 typedef xmlSecKeyPtr		(*xmlSecCryptoAppKeyLoadMemoryMethod)	(const xmlSecByte* data,
       
   279 									 xmlSecSize dataSize, 
       
   280 									 xmlSecKeyDataFormat format,
       
   281 									 const char *pwd,
       
   282 									 void* pwdCallback,
       
   283 									 void* pwdCallbackCtx);
       
   284 
       
   285 
       
   286 /**
       
   287  * xmlSecCryptoAppPkcs12LoadMethod:
       
   288  * @filename:		the PKCS12 key filename.
       
   289  * @pwd:		the PKCS12 file password.
       
   290  * @pwdCallback:	the password callback.
       
   291  * @pwdCallbackCtx:	the user context for password callback.
       
   292  *
       
   293  * Reads key and all associated certificates from the PKCS12 file.
       
   294  * For uniformity, call xmlSecCryptoAppKeyLoad instead of this function. Pass
       
   295  * in format=xmlSecKeyDataFormatPkcs12.
       
   296  *
       
   297  * Returns pointer to the key or NULL if an error occurs.
       
   298  */
       
   299 typedef xmlSecKeyPtr		(*xmlSecCryptoAppPkcs12LoadMethod)	(const char* filename, 
       
   300 									 const char* pwd,
       
   301 									 void* pwdCallback, 
       
   302 									 void* pwdCallbackCtx);	
       
   303 /**
       
   304  * xmlSecCryptoAppPkcs12LoadMemoryMethod:
       
   305  * @data:		the pkcs12 data.
       
   306  * @dataSize:		the pkcs12 data size.
       
   307  * @pwd:		the PKCS12 data password.
       
   308  * @pwdCallback:	the password callback.
       
   309  * @pwdCallbackCtx:	the user context for password callback.
       
   310  *
       
   311  * Reads key and all associated certificates from the PKCS12 binary data.
       
   312  * For uniformity, call xmlSecCryptoAppKeyLoad instead of this function. Pass
       
   313  * in format=xmlSecKeyDataFormatPkcs12.
       
   314  *
       
   315  * Returns pointer to the key or NULL if an error occurs.
       
   316  */
       
   317 typedef xmlSecKeyPtr		(*xmlSecCryptoAppPkcs12LoadMemoryMethod)(const xmlSecByte* data,
       
   318 									 xmlSecSize dataSize, 
       
   319 									 const char* pwd,
       
   320 									 void* pwdCallback, 
       
   321 									 void* pwdCallbackCtx);
       
   322 /**
       
   323  * xmlSecCryptoAppKeyCertLoadMethod:
       
   324  * @key:		the pointer to key.
       
   325  * @filename:		the certificate filename.
       
   326  * @format:		the certificate file format.
       
   327  *
       
   328  * Reads the certificate from $@filename and adds it to key.
       
   329  * 
       
   330  * Returns 0 on success or a negative value otherwise.
       
   331  */
       
   332 typedef int			(*xmlSecCryptoAppKeyCertLoadMethod)	(xmlSecKeyPtr key,
       
   333 									 const char* filename,
       
   334 									 xmlSecKeyDataFormat format);
       
   335 
       
   336 /**
       
   337  * xmlSecCryptoAppKeyCertLoadMemoryMethod:
       
   338  * @key:		the pointer to key.
       
   339  * @data:		the cert data.
       
   340  * @dataSize:		the cert data size.
       
   341  * @format:		the certificate data format.
       
   342  *
       
   343  * Reads the certificate from binary @data buffer and adds it to key.
       
   344  * 
       
   345  * Returns 0 on success or a negative value otherwise.
       
   346  */
       
   347 typedef int			(*xmlSecCryptoAppKeyCertLoadMemoryMethod)(xmlSecKeyPtr key,
       
   348 									 const xmlSecByte* data,
       
   349 									 xmlSecSize dataSize, 
       
   350 									 xmlSecKeyDataFormat format);
       
   351 /** 
       
   352  * xmlSecCryptoDLFunctions:
       
   353  * @cryptoInit:			the xmlsec-crypto library initialization method.
       
   354  * @cryptoShutdown:		the xmlsec-crypto library shutdown method.
       
   355  * @cryptoKeysMngrInit:		the xmlsec-crypto library keys manager init method.
       
   356  * @keyDataAesGetKlass:		the method to get pointer to AES key data klass.
       
   357  * @keyDataDesGetKlass:		the method to get pointer to DES key data klass.
       
   358  * @keyDataDsaGetKlass:		the method to get pointer to DSA key data klass.
       
   359  * @keyDataHmacGetKlass:	the method to get pointer to HMAC key data klass.
       
   360  * @keyDataRsaGetKlass:		the method to get pointer to RSA key data klass.
       
   361  * @keyDataX509GetKlass:	the method to get pointer to X509 key data klass.
       
   362  * @keyDataRawX509CertGetKlass:	the method to get pointer to raw X509 cert key data klass.
       
   363  * @x509StoreGetKlass:		the method to get pointer to X509 key data store.
       
   364  * @transformAes128CbcGetKlass:	the method to get pointer to AES 128 encryption transform.
       
   365  * @transformAes192CbcGetKlass:	the method to get pointer to AES 192 encryption transform.
       
   366  * @transformAes256CbcGetKlass:	the method to get pointer to AES 256 encryption transform.
       
   367  * @transformKWAes128GetKlass:	the method to get pointer to AES 128 key wrapper transform.
       
   368  * @transformKWAes192GetKlass:	the method to get pointer to AES 192 key wrapper transform.
       
   369  * @transformKWAes256GetKlass:	the method to get pointer to AES 256 key wrapper transform.
       
   370  * @transformDes3CbcGetKlass:	the method to get pointer to Triple DES encryption transform.
       
   371  * @transformKWDes3GetKlass:	the method to get pointer to Triple DES key wrapper transform.
       
   372  * @transformDsaSha1GetKlass:	the method to get pointer to DSA-SHA1 signature transform.
       
   373  * @transformHmacMd5GetKlass:	the method to get pointer to HMAC-MD5 transform.
       
   374  * @transformHmacRipemd160GetKlass: the method to get pointer to HMAC-RIPEMD160 transform.
       
   375  * @transformHmacSha1GetKlass:	the method to get pointer to HMAC-SHA1 transform.
       
   376  * @transformHmacSha224GetKlass: the method to get pointer to HMAC-SHA224 transform.
       
   377  * @transformHmacSha256GetKlass: the method to get pointer to HMAC-SHA256 transform.
       
   378  * @transformHmacSha384GetKlass: the method to get pointer to HMAC-SHA384 transform.
       
   379  * @transformHmacSha512GetKlass: the method to get pointer to HMAC-SHA512 transform.
       
   380  * @transformMd5GetKlass:	the method to get pointer to MD5 digest transform.
       
   381  * @transformRipemd160GetKlass:	the method to get pointer to RIPEMD160 digest transform.
       
   382  * @transformRsaMd5GetKlass:	the method to get pointer to RSA-MD5 signature transform.
       
   383  * @transformRsaRipemd160GetKlass: the method to get pointer to RSA-RIPEMD160 signature transform.
       
   384  * @transformRsaSha1GetKlass:	the method to get pointer to RSA-SHA1 signature transform.
       
   385  * @transformRsaSha224GetKlass:	the method to get pointer to RSA-SHA224 signature transform.
       
   386  * @transformRsaSha256GetKlass:	the method to get pointer to RSA-SHA256 signature transform.
       
   387  * @transformRsaSha384GetKlass:	the method to get pointer to RSA-SHA384 signature transform.
       
   388  * @transformRsaSha512GetKlass:	the method to get pointer to RSA-SHA512 signature transform.
       
   389  * @transformRsaPkcs1GetKlass:	the method to get pointer to RSA-PKCS1_5 key transport transform.
       
   390  * @transformRsaOaepGetKlass:	the method to get pointer to RSA-OAEP key transport transform.
       
   391  * @transformSha1GetKlass:	the method to get pointer to SHA1 digest transform.
       
   392  * @transformSha224GetKlass:	the method to get pointer to SHA224 digest transform.
       
   393  * @transformSha256GetKlass:	the method to get pointer to SHA256 digest transform.
       
   394  * @transformSha384GetKlass:	the method to get pointer to SHA384 digest transform.
       
   395  * @transformSha512GetKlass:	the method to get pointer to SHA512 digest transform.
       
   396  * @cryptoAppInit:		the default crypto engine initialization method.
       
   397  * @cryptoAppShutdown:		the default crypto engine shutdown method.
       
   398  * @cryptoAppDefaultKeysMngrInit: 	the default keys manager init method.
       
   399  * @cryptoAppDefaultKeysMngrAdoptKey:	the default keys manager adopt key method.
       
   400  * @cryptoAppDefaultKeysMngrLoad:	the default keys manager load method.
       
   401  * @cryptoAppDefaultKeysMngrSave:	the default keys manager save method.
       
   402  * @cryptoAppKeysMngrCertLoad:		the default keys manager file cert load method.
       
   403  * @cryptoAppKeysMngrCertLoadMemory:	the default keys manager memory cert load method.
       
   404  * @cryptoAppKeyLoad:		the key file load method.
       
   405  * @cryptoAppKeyLoadMemory:	the meory key load method.
       
   406  * @cryptoAppPkcs12Load:	the pkcs12 file load method.
       
   407  * @cryptoAppPkcs12LoadMemory:	the memory pkcs12 load method.
       
   408  * @cryptoAppKeyCertLoad:	the cert file load method.
       
   409  * @cryptoAppKeyCertLoadMemory:	the memory cert load method.
       
   410  * @cryptoAppDefaultPwdCallback:the default password callback.
       
   411  * 
       
   412  * The list of crypto engine functions, key data and transform classes.
       
   413  */
       
   414 struct _xmlSecCryptoDLFunctions {
       
   415     /**  
       
   416      * Crypto Init/shutdown
       
   417      */
       
   418     xmlSecCryptoInitMethod			 cryptoInit;
       
   419     xmlSecCryptoShutdownMethod			 cryptoShutdown;
       
   420     xmlSecCryptoKeysMngrInitMethod		 cryptoKeysMngrInit;
       
   421 
       
   422     /**
       
   423      * Key data ids
       
   424      */
       
   425     xmlSecCryptoKeyDataGetKlassMethod		 keyDataAesGetKlass;
       
   426     xmlSecCryptoKeyDataGetKlassMethod		 keyDataDesGetKlass;
       
   427     xmlSecCryptoKeyDataGetKlassMethod		 keyDataDsaGetKlass;
       
   428     xmlSecCryptoKeyDataGetKlassMethod		 keyDataHmacGetKlass;
       
   429     xmlSecCryptoKeyDataGetKlassMethod		 keyDataRsaGetKlass;
       
   430     xmlSecCryptoKeyDataGetKlassMethod		 keyDataX509GetKlass;
       
   431     xmlSecCryptoKeyDataGetKlassMethod		 keyDataRawX509CertGetKlass;
       
   432 
       
   433     /**
       
   434      * Key data store ids
       
   435      */
       
   436     xmlSecCryptoKeyDataStoreGetKlassMethod	 x509StoreGetKlass;
       
   437 
       
   438     /**
       
   439      * Crypto transforms ids
       
   440      */
       
   441     xmlSecCryptoTransformGetKlassMethod		 transformAes128CbcGetKlass;
       
   442     xmlSecCryptoTransformGetKlassMethod		 transformAes192CbcGetKlass;
       
   443     xmlSecCryptoTransformGetKlassMethod		 transformAes256CbcGetKlass;
       
   444     xmlSecCryptoTransformGetKlassMethod		 transformKWAes128GetKlass;
       
   445     xmlSecCryptoTransformGetKlassMethod		 transformKWAes192GetKlass;
       
   446     xmlSecCryptoTransformGetKlassMethod		 transformKWAes256GetKlass;
       
   447     xmlSecCryptoTransformGetKlassMethod		 transformDes3CbcGetKlass;
       
   448     xmlSecCryptoTransformGetKlassMethod		 transformKWDes3GetKlass;
       
   449     xmlSecCryptoTransformGetKlassMethod		 transformDsaSha1GetKlass;
       
   450     xmlSecCryptoTransformGetKlassMethod		 transformHmacMd5GetKlass;
       
   451     xmlSecCryptoTransformGetKlassMethod		 transformHmacRipemd160GetKlass;
       
   452     xmlSecCryptoTransformGetKlassMethod		 transformHmacSha1GetKlass;
       
   453     xmlSecCryptoTransformGetKlassMethod		 transformHmacSha224GetKlass;
       
   454     xmlSecCryptoTransformGetKlassMethod		 transformHmacSha256GetKlass;
       
   455     xmlSecCryptoTransformGetKlassMethod		 transformHmacSha384GetKlass;
       
   456     xmlSecCryptoTransformGetKlassMethod		 transformHmacSha512GetKlass;
       
   457     xmlSecCryptoTransformGetKlassMethod		 transformMd5GetKlass;
       
   458     xmlSecCryptoTransformGetKlassMethod		 transformRipemd160GetKlass;
       
   459     xmlSecCryptoTransformGetKlassMethod		 transformRsaMd5GetKlass;
       
   460     xmlSecCryptoTransformGetKlassMethod		 transformRsaRipemd160GetKlass;
       
   461     xmlSecCryptoTransformGetKlassMethod		 transformRsaSha1GetKlass;
       
   462     xmlSecCryptoTransformGetKlassMethod		 transformRsaSha224GetKlass;
       
   463     xmlSecCryptoTransformGetKlassMethod		 transformRsaSha256GetKlass;
       
   464     xmlSecCryptoTransformGetKlassMethod		 transformRsaSha384GetKlass;
       
   465     xmlSecCryptoTransformGetKlassMethod		 transformRsaSha512GetKlass;
       
   466     xmlSecCryptoTransformGetKlassMethod		 transformRsaPkcs1GetKlass;
       
   467     xmlSecCryptoTransformGetKlassMethod		 transformRsaOaepGetKlass;
       
   468     xmlSecCryptoTransformGetKlassMethod		 transformSha1GetKlass;
       
   469     xmlSecCryptoTransformGetKlassMethod		 transformSha224GetKlass;
       
   470     xmlSecCryptoTransformGetKlassMethod		 transformSha256GetKlass;
       
   471     xmlSecCryptoTransformGetKlassMethod		 transformSha384GetKlass;
       
   472     xmlSecCryptoTransformGetKlassMethod		 transformSha512GetKlass;
       
   473     
       
   474     /**
       
   475      * High level routines form xmlsec command line utility
       
   476      */ 
       
   477     xmlSecCryptoAppInitMethod			 cryptoAppInit;
       
   478     xmlSecCryptoAppShutdownMethod		 cryptoAppShutdown;
       
   479     xmlSecCryptoAppDefaultKeysMngrInitMethod	 cryptoAppDefaultKeysMngrInit;
       
   480     xmlSecCryptoAppDefaultKeysMngrAdoptKeyMethod cryptoAppDefaultKeysMngrAdoptKey;
       
   481     xmlSecCryptoAppDefaultKeysMngrLoadMethod	 cryptoAppDefaultKeysMngrLoad;
       
   482     xmlSecCryptoAppDefaultKeysMngrSaveMethod	 cryptoAppDefaultKeysMngrSave;
       
   483     xmlSecCryptoAppKeysMngrCertLoadMethod	 cryptoAppKeysMngrCertLoad;
       
   484     xmlSecCryptoAppKeysMngrCertLoadMemoryMethod	 cryptoAppKeysMngrCertLoadMemory;
       
   485     xmlSecCryptoAppKeyLoadMethod		 cryptoAppKeyLoad;
       
   486     xmlSecCryptoAppKeyLoadWithNameMethod	 cryptoAppKeyLoadWithName;	//Venus: add for Symbian
       
   487     xmlSecCryptoAppKeyLoadMemoryMethod		 cryptoAppKeyLoadMemory;
       
   488     xmlSecCryptoAppPkcs12LoadMethod		 cryptoAppPkcs12Load;
       
   489     xmlSecCryptoAppPkcs12LoadMemoryMethod	 cryptoAppPkcs12LoadMemory;
       
   490     xmlSecCryptoAppKeyCertLoadMethod		 cryptoAppKeyCertLoad;
       
   491     xmlSecCryptoAppKeyCertLoadMemoryMethod	 cryptoAppKeyCertLoadMemory;
       
   492     void*					 cryptoAppDefaultPwdCallback;
       
   493 };
       
   494 
       
   495 #include <libxml2_xmlstring.h>
       
   496 #define xmlSecStrPrintf 	xmlStrPrintf
       
   497 #define xmlSecStrVPrintf 	xmlStrVPrintf
       
   498 
       
   499 #ifdef __cplusplus
       
   500 }
       
   501 #endif /* __cplusplus */
       
   502 
       
   503 #endif /* __XMLSEC_PRIVATE_H__ */
       
   504