4 * This is free software; see Copyright file in the source
5 * distribution for preciese wording.
7 * Copyright (C) 2002-2003 Aleksey Sanin <aleksey@aleksey.com>
13 /* TODO: add Skeleton include files */
15 #include <xmlsec/xmlsec.h>
16 #include <xmlsec/keys.h>
17 #include <xmlsec/transforms.h>
18 #include <xmlsec/errors.h>
19 #include <xmlsec/dl.h>
20 #include <xmlsec/private.h>
22 #include <xmlsec/skeleton/app.h>
23 #include <xmlsec/skeleton/crypto.h>
25 static xmlSecCryptoDLFunctionsPtr gXmlSecSkeletonFunctions = NULL;
28 * xmlSecCryptoGetFunctions_skeleton:
30 * Gets the pointer to xmlsec-skeleton functions table.
32 * Returns: the xmlsec-skeleton functions table or NULL if an error occurs.
34 xmlSecCryptoDLFunctionsPtr
35 xmlSecCryptoGetFunctions_skeleton(void) {
36 static xmlSecCryptoDLFunctions functions;
38 if(gXmlSecSkeletonFunctions != NULL) {
39 return(gXmlSecSkeletonFunctions);
42 memset(&functions, 0, sizeof(functions));
43 gXmlSecSkeletonFunctions = &functions;
46 * Crypto Init/shutdown
48 gXmlSecSkeletonFunctions->cryptoInit = xmlSecSkeletonInit;
49 gXmlSecSkeletonFunctions->cryptoShutdown = xmlSecSkeletonShutdown;
50 gXmlSecSkeletonFunctions->cryptoKeysMngrInit = xmlSecSkeletonKeysMngrInit;
56 gXmlSecSkeletonFunctions->keyDataAesGetKlass = xmlSecSkeletonKeyDataAesGetKlass;
57 #endif /* XMLSEC_NO_AES */
60 gXmlSecSkeletonFunctions->keyDataDesGetKlass = xmlSecSkeletonKeyDataDesGetKlass;
61 #endif /* XMLSEC_NO_DES */
64 gXmlSecSkeletonFunctions->keyDataDsaGetKlass = xmlSecSkeletonKeyDataDsaGetKlass;
65 #endif /* XMLSEC_NO_DSA */
67 #ifndef XMLSEC_NO_GOST
68 gXmlSecSkeletonFunctions->keyDataGost2001GetKlass = xmlSecSkeletonKeyDataGost2001GetKlass;
69 #endif /* XMLSEC_NO_GOST */
71 #ifndef XMLSEC_NO_HMAC
72 gXmlSecSkeletonFunctions->keyDataHmacGetKlass = xmlSecSkeletonKeyDataHmacGetKlass;
73 #endif /* XMLSEC_NO_HMAC */
76 gXmlSecSkeletonFunctions->keyDataRsaGetKlass = xmlSecSkeletonKeyDataRsaGetKlass;
77 #endif /* XMLSEC_NO_RSA */
79 #ifndef XMLSEC_NO_X509
80 gXmlSecSkeletonFunctions->keyDataX509GetKlass = xmlSecSkeletonKeyDataX509GetKlass;
81 gXmlSecSkeletonFunctions->keyDataRawX509CertGetKlass = xmlSecSkeletonKeyDataRawX509CertGetKlass;
82 #endif /* XMLSEC_NO_X509 */
87 #ifndef XMLSEC_NO_X509
88 gXmlSecSkeletonFunctions->x509StoreGetKlass = xmlSecSkeletonX509StoreGetKlass;
89 #endif /* XMLSEC_NO_X509 */
92 * Crypto transforms ids
95 gXmlSecSkeletonFunctions->transformAes128CbcGetKlass = xmlSecSkeletonTransformAes128CbcGetKlass;
96 gXmlSecSkeletonFunctions->transformAes192CbcGetKlass = xmlSecSkeletonTransformAes192CbcGetKlass;
97 gXmlSecSkeletonFunctions->transformAes256CbcGetKlass = xmlSecSkeletonTransformAes256CbcGetKlass;
98 gXmlSecSkeletonFunctions->transformKWAes128GetKlass = xmlSecSkeletonTransformKWAes128GetKlass;
99 gXmlSecSkeletonFunctions->transformKWAes192GetKlass = xmlSecSkeletonTransformKWAes192GetKlass;
100 gXmlSecSkeletonFunctions->transformKWAes256GetKlass = xmlSecSkeletonTransformKWAes256GetKlass;
101 #endif /* XMLSEC_NO_AES */
103 #ifndef XMLSEC_NO_DES
104 gXmlSecSkeletonFunctions->transformDes3CbcGetKlass = xmlSecSkeletonTransformDes3CbcGetKlass;
105 gXmlSecSkeletonFunctions->transformKWDes3GetKlass = xmlSecSkeletonTransformKWDes3GetKlass;
106 #endif /* XMLSEC_NO_DES */
108 #ifndef XMLSEC_NO_DSA
109 gXmlSecSkeletonFunctions->transformDsaSha1GetKlass = xmlSecSkeletonTransformDsaSha1GetKlass;
110 #endif /* XMLSEC_NO_DSA */
112 #ifndef XMLSEC_NO_GOST
113 gXmlSecSkeletonFunctions->transformGost2001GostR3411_94GetKlass = xmlSecSkeletonTransformGost2001GostR3411_94GetKlass;
114 #endif /* XMLSEC_GOST */
116 #ifndef XMLSEC_NO_HMAC
117 gXmlSecSkeletonFunctions->transformHmacSha1GetKlass = xmlSecSkeletonTransformHmacSha1GetKlass;
118 gXmlSecSkeletonFunctions->transformHmacRipemd160GetKlass = xmlSecSkeletonTransformHmacRipemd160GetKlass;
119 gXmlSecSkeletonFunctions->transformHmacMd5GetKlass = xmlSecSkeletonTransformHmacMd5GetKlass;
120 #endif /* XMLSEC_NO_HMAC */
122 #ifndef XMLSEC_NO_RIPEMD160
123 gXmlSecSkeletonFunctions->transformRipemd160GetKlass = xmlSecSkeletonTransformRipemd160GetKlass;
124 #endif /* XMLSEC_NO_RIPEMD160 */
126 #ifndef XMLSEC_NO_RSA
127 gXmlSecSkeletonFunctions->transformRsaSha1GetKlass = xmlSecSkeletonTransformRsaSha1GetKlass;
128 gXmlSecSkeletonFunctions->transformRsaPkcs1GetKlass = xmlSecSkeletonTransformRsaPkcs1GetKlass;
129 gXmlSecSkeletonFunctions->transformRsaOaepGetKlass = xmlSecSkeletonTransformRsaOaepGetKlass;
130 #endif /* XMLSEC_NO_RSA */
132 #ifndef XMLSEC_NO_SHA1
133 gXmlSecSkeletonFunctions->transformSha1GetKlass = xmlSecSkeletonTransformSha1GetKlass;
134 #endif /* XMLSEC_NO_SHA1 */
136 #ifndef XMLSEC_NO_GOST
137 gXmlSecSkeletonFunctions->transformGostR3411_94GetKlass = xmlSecSkeletonTransformGostR3411_94GetKlass;
138 #endif /* XMLSEC_NO_GOST */
141 * High level routines form xmlsec command line utility
143 gXmlSecSkeletonFunctions->cryptoAppInit = xmlSecSkeletonAppInit;
144 gXmlSecSkeletonFunctions->cryptoAppShutdown = xmlSecSkeletonAppShutdown;
145 gXmlSecSkeletonFunctions->cryptoAppDefaultKeysMngrInit = xmlSecSkeletonAppDefaultKeysMngrInit;
146 gXmlSecSkeletonFunctions->cryptoAppDefaultKeysMngrAdoptKey = xmlSecSkeletonAppDefaultKeysMngrAdoptKey;
147 gXmlSecSkeletonFunctions->cryptoAppDefaultKeysMngrLoad = xmlSecSkeletonAppDefaultKeysMngrLoad;
148 gXmlSecSkeletonFunctions->cryptoAppDefaultKeysMngrSave = xmlSecSkeletonAppDefaultKeysMngrSave;
149 #ifndef XMLSEC_NO_X509
150 gXmlSecSkeletonFunctions->cryptoAppKeysMngrCertLoad = xmlSecSkeletonAppKeysMngrCertLoad;
151 gXmlSecSkeletonFunctions->cryptoAppKeysMngrCertLoadMemory = xmlSecSkeletonAppKeysMngrCertLoadMemory;
152 gXmlSecSkeletonFunctions->cryptoAppPkcs12Load = xmlSecSkeletonAppPkcs12Load;
153 gXmlSecSkeletonFunctions->cryptoAppPkcs12LoadMemory = xmlSecSkeletonAppPkcs12LoadMemory;
154 gXmlSecSkeletonFunctions->cryptoAppKeyCertLoad = xmlSecSkeletonAppKeyCertLoad;
155 gXmlSecSkeletonFunctions->cryptoAppKeyCertLoadMemory = xmlSecSkeletonAppKeyCertLoadMemory;
156 #endif /* XMLSEC_NO_X509 */
157 gXmlSecSkeletonFunctions->cryptoAppKeyLoad = xmlSecSkeletonAppKeyLoad;
158 gXmlSecSkeletonFunctions->cryptoAppKeyLoadMemory = xmlSecSkeletonAppKeyLoadMemory;
159 gXmlSecSkeletonFunctions->cryptoAppDefaultPwdCallback = (void*)xmlSecSkeletonAppGetDefaultPwdCallback();
161 return(gXmlSecSkeletonFunctions);
166 * xmlSecSkeletonInit:
168 * XMLSec library specific crypto engine initialization.
170 * Returns: 0 on success or a negative value otherwise.
173 xmlSecSkeletonInit (void) {
174 /* Check loaded xmlsec library version */
175 if(xmlSecCheckVersionExact() != 1) {
176 xmlSecError(XMLSEC_ERRORS_HERE,
178 "xmlSecCheckVersionExact",
179 XMLSEC_ERRORS_R_XMLSEC_FAILED,
180 XMLSEC_ERRORS_NO_MESSAGE);
184 /* register our klasses */
185 if(xmlSecCryptoDLFunctionsRegisterKeyDataAndTransforms(xmlSecCryptoGetFunctions_skeleton()) < 0) {
186 xmlSecError(XMLSEC_ERRORS_HERE,
188 "xmlSecCryptoDLFunctionsRegisterKeyDataAndTransforms",
189 XMLSEC_ERRORS_R_XMLSEC_FAILED,
190 XMLSEC_ERRORS_NO_MESSAGE);
195 /* TODO: if necessary do, additional initialization here */
199 * xmlSecSkeletonShutdown:
201 * XMLSec library specific crypto engine shutdown.
203 * Returns: 0 on success or a negative value otherwise.
206 xmlSecSkeletonShutdown(void) {
207 /* TODO: if necessary, do additional shutdown here */
212 * xmlSecSkeletonKeysMngrInit:
213 * @mngr: the pointer to keys manager.
215 * Adds Skeleton specific key data stores in keys manager.
217 * Returns: 0 on success or a negative value otherwise.
220 xmlSecSkeletonKeysMngrInit(xmlSecKeysMngrPtr mngr) {
221 xmlSecAssert2(mngr != NULL, -1);
223 /* TODO: add key data stores */