2 * XML Security Library (http://www.aleksey.com/xmlsec).
5 * This is free software; see Copyright file in the source
6 * distribution for preciese wording.
8 * Copyright (C) 2002-2003 Aleksey Sanin <aleksey@aleksey.com>
12 #ifndef XMLSEC_NO_CRYPTO_DYNAMIC_LOADING
20 #include <libxml/tree.h>
22 #include <xmlsec/xmlsec.h>
23 #include <xmlsec/app.h>
24 #include <xmlsec/list.h>
25 #include <xmlsec/keysdata.h>
26 #include <xmlsec/keys.h>
27 #include <xmlsec/keysmngr.h>
28 #include <xmlsec/transforms.h>
29 #include <xmlsec/private.h>
30 #include <xmlsec/errors.h>
33 /******************************************************************************
35 * Crypto Init/shutdown
37 *****************************************************************************/
41 * XMLSec library specific crypto engine initialization.
43 * Returns: 0 on success or a negative value otherwise.
46 xmlSecCryptoInit(void) {
47 if((xmlSecCryptoDLGetFunctions() == NULL) || (xmlSecCryptoDLGetFunctions()->cryptoInit == NULL)) {
48 xmlSecError(XMLSEC_ERRORS_HERE,
51 XMLSEC_ERRORS_R_NOT_IMPLEMENTED,
52 XMLSEC_ERRORS_NO_MESSAGE);
56 return(xmlSecCryptoDLGetFunctions()->cryptoInit());
60 * xmlSecCryptoShutdown:
62 * XMLSec library specific crypto engine shutdown.
64 * Returns: 0 on success or a negative value otherwise.
67 xmlSecCryptoShutdown(void) {
68 if((xmlSecCryptoDLGetFunctions() == NULL) || (xmlSecCryptoDLGetFunctions()->cryptoShutdown == NULL)) {
69 xmlSecError(XMLSEC_ERRORS_HERE,
72 XMLSEC_ERRORS_R_NOT_IMPLEMENTED,
73 XMLSEC_ERRORS_NO_MESSAGE);
77 return(xmlSecCryptoDLGetFunctions()->cryptoShutdown());
81 * xmlSecCryptoKeysMngrInit:
82 * @mngr: the pointer to keys manager.
84 * Adds crypto specific key data stores in keys manager.
86 * Returns: 0 on success or a negative value otherwise.
89 xmlSecCryptoKeysMngrInit(xmlSecKeysMngrPtr mngr) {
90 if((xmlSecCryptoDLGetFunctions() == NULL) || (xmlSecCryptoDLGetFunctions()->cryptoKeysMngrInit == NULL)) {
91 xmlSecError(XMLSEC_ERRORS_HERE,
94 XMLSEC_ERRORS_R_NOT_IMPLEMENTED,
95 XMLSEC_ERRORS_NO_MESSAGE);
99 return(xmlSecCryptoDLGetFunctions()->cryptoKeysMngrInit(mngr));
102 /******************************************************************************
106 *****************************************************************************/
108 * xmlSecKeyDataAesGetKlass:
110 * The AES key data klass.
112 * Returns: AES key data klass or NULL if an error occurs
113 * (xmlsec-crypto library is not loaded or the AES key data
114 * klass is not implemented).
117 xmlSecKeyDataAesGetKlass(void) {
118 if((xmlSecCryptoDLGetFunctions() == NULL) || (xmlSecCryptoDLGetFunctions()->keyDataAesGetKlass == NULL)) {
119 xmlSecError(XMLSEC_ERRORS_HERE,
122 XMLSEC_ERRORS_R_NOT_IMPLEMENTED,
123 XMLSEC_ERRORS_NO_MESSAGE);
124 return(xmlSecKeyDataIdUnknown);
127 return(xmlSecCryptoDLGetFunctions()->keyDataAesGetKlass());
131 * xmlSecKeyDataDesGetKlass:
133 * The DES key data klass.
135 * Returns: DES key data klass or NULL if an error occurs
136 * (xmlsec-crypto library is not loaded or the DES key data
137 * klass is not implemented).
140 xmlSecKeyDataDesGetKlass(void) {
141 if((xmlSecCryptoDLGetFunctions() == NULL) || (xmlSecCryptoDLGetFunctions()->keyDataDesGetKlass == NULL)) {
142 xmlSecError(XMLSEC_ERRORS_HERE,
145 XMLSEC_ERRORS_R_NOT_IMPLEMENTED,
146 XMLSEC_ERRORS_NO_MESSAGE);
147 return(xmlSecKeyDataIdUnknown);
150 return(xmlSecCryptoDLGetFunctions()->keyDataDesGetKlass());
154 * xmlSecKeyDataDsaGetKlass:
156 * The DSA key data klass.
158 * Returns: DSA key data klass or NULL if an error occurs
159 * (xmlsec-crypto library is not loaded or the DSA key data
160 * klass is not implemented).
163 xmlSecKeyDataDsaGetKlass(void) {
164 if((xmlSecCryptoDLGetFunctions() == NULL) || (xmlSecCryptoDLGetFunctions()->keyDataDsaGetKlass == NULL)) {
165 xmlSecError(XMLSEC_ERRORS_HERE,
168 XMLSEC_ERRORS_R_NOT_IMPLEMENTED,
169 XMLSEC_ERRORS_NO_MESSAGE);
170 return(xmlSecKeyDataIdUnknown);
173 return(xmlSecCryptoDLGetFunctions()->keyDataDsaGetKlass());
177 * xmlSecKeyDataGost2001GetKlass:
179 * The GOST2001 key data klass.
181 * Returns: GOST2001 key data klass or NULL if an error occurs
182 * (xmlsec-crypto library is not loaded or the GOST2001 key data
183 * klass is not implemented).
186 xmlSecKeyDataGost2001GetKlass(void) {
187 if((xmlSecCryptoDLGetFunctions() == NULL) || (xmlSecCryptoDLGetFunctions()->keyDataGost2001GetKlass == NULL)) {
188 xmlSecError(XMLSEC_ERRORS_HERE,
191 XMLSEC_ERRORS_R_NOT_IMPLEMENTED,
192 XMLSEC_ERRORS_NO_MESSAGE);
193 return(xmlSecKeyDataIdUnknown);
196 return(xmlSecCryptoDLGetFunctions()->keyDataGost2001GetKlass());
200 * xmlSecKeyDataHmacGetKlass:
202 * The HMAC key data klass.
204 * Returns: HMAC key data klass or NULL if an error occurs
205 * (xmlsec-crypto library is not loaded or the HMAC key data
206 * klass is not implemented).
209 xmlSecKeyDataHmacGetKlass(void) {
210 if((xmlSecCryptoDLGetFunctions() == NULL) || (xmlSecCryptoDLGetFunctions()->keyDataHmacGetKlass == NULL)) {
211 xmlSecError(XMLSEC_ERRORS_HERE,
214 XMLSEC_ERRORS_R_NOT_IMPLEMENTED,
215 XMLSEC_ERRORS_NO_MESSAGE);
216 return(xmlSecKeyDataIdUnknown);
219 return(xmlSecCryptoDLGetFunctions()->keyDataHmacGetKlass());
223 * xmlSecKeyDataRsaGetKlass:
225 * The RSA key data klass.
227 * Returns: RSA key data klass or NULL if an error occurs
228 * (xmlsec-crypto library is not loaded or the RSA key data
229 * klass is not implemented).
232 xmlSecKeyDataRsaGetKlass(void) {
233 if((xmlSecCryptoDLGetFunctions() == NULL) || (xmlSecCryptoDLGetFunctions()->keyDataRsaGetKlass == NULL)) {
234 xmlSecError(XMLSEC_ERRORS_HERE,
237 XMLSEC_ERRORS_R_NOT_IMPLEMENTED,
238 XMLSEC_ERRORS_NO_MESSAGE);
239 return(xmlSecKeyDataIdUnknown);
242 return(xmlSecCryptoDLGetFunctions()->keyDataRsaGetKlass());
246 * xmlSecKeyDataX509GetKlass:
248 * The X509 key data klass.
250 * Returns: X509 key data klass or NULL if an error occurs
251 * (xmlsec-crypto library is not loaded or the X509 key data
252 * klass is not implemented).
255 xmlSecKeyDataX509GetKlass(void) {
256 if((xmlSecCryptoDLGetFunctions() == NULL) || (xmlSecCryptoDLGetFunctions()->keyDataX509GetKlass == NULL)) {
257 xmlSecError(XMLSEC_ERRORS_HERE,
260 XMLSEC_ERRORS_R_NOT_IMPLEMENTED,
261 XMLSEC_ERRORS_NO_MESSAGE);
262 return(xmlSecKeyDataIdUnknown);
265 return(xmlSecCryptoDLGetFunctions()->keyDataX509GetKlass());
269 * xmlSecKeyDataRawX509CertGetKlass:
271 * The raw X509 cert key data klass.
273 * Returns: raw x509 cert key data klass or NULL if an error occurs
274 * (xmlsec-crypto library is not loaded or the raw X509 cert key data
275 * klass is not implemented).
278 xmlSecKeyDataRawX509CertGetKlass(void) {
279 if((xmlSecCryptoDLGetFunctions() == NULL) || (xmlSecCryptoDLGetFunctions()->keyDataRawX509CertGetKlass == NULL)) {
280 xmlSecError(XMLSEC_ERRORS_HERE,
282 "keyDataRawX509CertId",
283 XMLSEC_ERRORS_R_NOT_IMPLEMENTED,
284 XMLSEC_ERRORS_NO_MESSAGE);
285 return(xmlSecKeyDataIdUnknown);
288 return(xmlSecCryptoDLGetFunctions()->keyDataRawX509CertGetKlass());
291 /******************************************************************************
295 *****************************************************************************/
297 * xmlSecX509StoreGetKlass:
299 * The X509 certificates key data store klass.
301 * Returns: pointer to X509 certificates key data store klass or NULL if
302 * an error occurs (xmlsec-crypto library is not loaded or the raw X509
303 * cert key data klass is not implemented).
306 xmlSecX509StoreGetKlass(void) {
307 if((xmlSecCryptoDLGetFunctions() == NULL) || (xmlSecCryptoDLGetFunctions()->x509StoreGetKlass == NULL)) {
308 xmlSecError(XMLSEC_ERRORS_HERE,
311 XMLSEC_ERRORS_R_NOT_IMPLEMENTED,
312 XMLSEC_ERRORS_NO_MESSAGE);
313 return(xmlSecKeyStoreIdUnknown);
316 return(xmlSecCryptoDLGetFunctions()->x509StoreGetKlass());
319 /******************************************************************************
321 * Crypto transforms ids
323 *****************************************************************************/
325 * xmlSecTransformAes128CbcGetKlass:
327 * AES 128 CBC encryption transform klass.
329 * Returns: pointer to AES 128 CBC encryption transform or NULL if an error
330 * occurs (the xmlsec-crypto library is not loaded or this transform is not
334 xmlSecTransformAes128CbcGetKlass(void) {
335 if((xmlSecCryptoDLGetFunctions() == NULL) || (xmlSecCryptoDLGetFunctions()->transformAes128CbcGetKlass == NULL)) {
336 xmlSecError(XMLSEC_ERRORS_HERE,
338 "transformAes128CbcId",
339 XMLSEC_ERRORS_R_NOT_IMPLEMENTED,
340 XMLSEC_ERRORS_NO_MESSAGE);
341 return(xmlSecTransformIdUnknown);
344 return(xmlSecCryptoDLGetFunctions()->transformAes128CbcGetKlass());
348 * xmlSecTransformAes192CbcGetKlass:
350 * AES 192 CBC encryption transform klass.
352 * Returns: pointer to AES 192 CBC encryption transform or NULL if an error
353 * occurs (the xmlsec-crypto library is not loaded or this transform is not
357 xmlSecTransformAes192CbcGetKlass(void) {
358 if((xmlSecCryptoDLGetFunctions() == NULL) || (xmlSecCryptoDLGetFunctions()->transformAes192CbcGetKlass == NULL)) {
359 xmlSecError(XMLSEC_ERRORS_HERE,
361 "transformAes192CbcId",
362 XMLSEC_ERRORS_R_NOT_IMPLEMENTED,
363 XMLSEC_ERRORS_NO_MESSAGE);
364 return(xmlSecTransformIdUnknown);
367 return(xmlSecCryptoDLGetFunctions()->transformAes192CbcGetKlass());
371 * xmlSecTransformAes256CbcGetKlass:
373 * AES 256 CBC encryption transform klass.
375 * Returns: pointer to AES 256 CBC encryption transform or NULL if an error
376 * occurs (the xmlsec-crypto library is not loaded or this transform is not
380 xmlSecTransformAes256CbcGetKlass(void) {
381 if((xmlSecCryptoDLGetFunctions() == NULL) || (xmlSecCryptoDLGetFunctions()->transformAes256CbcGetKlass == NULL)) {
382 xmlSecError(XMLSEC_ERRORS_HERE,
384 "transformAes256CbcId",
385 XMLSEC_ERRORS_R_NOT_IMPLEMENTED,
386 XMLSEC_ERRORS_NO_MESSAGE);
387 return(xmlSecTransformIdUnknown);
390 return(xmlSecCryptoDLGetFunctions()->transformAes256CbcGetKlass());
394 * xmlSecTransformKWAes128GetKlass:
396 * The AES-128 kew wrapper transform klass.
398 * Returns: AES-128 kew wrapper transform klass or NULL if an error
399 * occurs (the xmlsec-crypto library is not loaded or this transform is not
403 xmlSecTransformKWAes128GetKlass(void) {
404 if((xmlSecCryptoDLGetFunctions() == NULL) || (xmlSecCryptoDLGetFunctions()->transformKWAes128GetKlass == NULL)) {
405 xmlSecError(XMLSEC_ERRORS_HERE,
407 "transformKWAes128Id",
408 XMLSEC_ERRORS_R_NOT_IMPLEMENTED,
409 XMLSEC_ERRORS_NO_MESSAGE);
410 return(xmlSecTransformIdUnknown);
413 return(xmlSecCryptoDLGetFunctions()->transformKWAes128GetKlass());
417 * xmlSecTransformKWAes192GetKlass:
419 * The AES-192 kew wrapper transform klass.
421 * Returns: AES-192 kew wrapper transform klass or NULL if an error
422 * occurs (the xmlsec-crypto library is not loaded or this transform is not
426 xmlSecTransformKWAes192GetKlass(void) {
427 if((xmlSecCryptoDLGetFunctions() == NULL) || (xmlSecCryptoDLGetFunctions()->transformKWAes192GetKlass == NULL)) {
428 xmlSecError(XMLSEC_ERRORS_HERE,
430 "transformKWAes192Id",
431 XMLSEC_ERRORS_R_NOT_IMPLEMENTED,
432 XMLSEC_ERRORS_NO_MESSAGE);
433 return(xmlSecTransformIdUnknown);
436 return(xmlSecCryptoDLGetFunctions()->transformKWAes192GetKlass());
440 * xmlSecTransformKWAes256GetKlass:
442 * The AES-256 kew wrapper transform klass.
444 * Returns: AES-256 kew wrapper transform klass or NULL if an error
445 * occurs (the xmlsec-crypto library is not loaded or this transform is not
449 xmlSecTransformKWAes256GetKlass(void) {
450 if((xmlSecCryptoDLGetFunctions() == NULL) || (xmlSecCryptoDLGetFunctions()->transformKWAes256GetKlass == NULL)) {
451 xmlSecError(XMLSEC_ERRORS_HERE,
453 "transformKWAes256Id",
454 XMLSEC_ERRORS_R_NOT_IMPLEMENTED,
455 XMLSEC_ERRORS_NO_MESSAGE);
456 return(xmlSecTransformIdUnknown);
459 return(xmlSecCryptoDLGetFunctions()->transformKWAes256GetKlass());
463 * xmlSecTransformDes3CbcGetKlass:
465 * Triple DES CBC encryption transform klass.
467 * Returns: pointer to Triple DES encryption transform or NULL if an error
468 * occurs (the xmlsec-crypto library is not loaded or this transform is not
472 xmlSecTransformDes3CbcGetKlass(void) {
473 if((xmlSecCryptoDLGetFunctions() == NULL) || (xmlSecCryptoDLGetFunctions()->transformDes3CbcGetKlass == NULL)) {
474 xmlSecError(XMLSEC_ERRORS_HERE,
476 "transformDes3CbcId",
477 XMLSEC_ERRORS_R_NOT_IMPLEMENTED,
478 XMLSEC_ERRORS_NO_MESSAGE);
479 return(xmlSecTransformIdUnknown);
482 return(xmlSecCryptoDLGetFunctions()->transformDes3CbcGetKlass());
486 * xmlSecTransformKWDes3GetKlass:
488 * The Triple DES key wrapper transform klass.
490 * Returns: Triple DES key wrapper transform klass or NULL if an error
491 * occurs (the xmlsec-crypto library is not loaded or this transform is not
495 xmlSecTransformKWDes3GetKlass(void) {
496 if((xmlSecCryptoDLGetFunctions() == NULL) || (xmlSecCryptoDLGetFunctions()->transformKWDes3GetKlass == NULL)) {
497 xmlSecError(XMLSEC_ERRORS_HERE,
500 XMLSEC_ERRORS_R_NOT_IMPLEMENTED,
501 XMLSEC_ERRORS_NO_MESSAGE);
502 return(xmlSecTransformIdUnknown);
505 return(xmlSecCryptoDLGetFunctions()->transformKWDes3GetKlass());
509 * xmlSecTransformDsaSha1GetKlass:
511 * The DSA-SHA1 signature transform klass.
513 * Returns: DSA-SHA1 signature transform klass or NULL if an error
514 * occurs (the xmlsec-crypto library is not loaded or this transform is not
518 xmlSecTransformDsaSha1GetKlass(void) {
519 if((xmlSecCryptoDLGetFunctions() == NULL) || (xmlSecCryptoDLGetFunctions()->transformDsaSha1GetKlass == NULL)) {
520 xmlSecError(XMLSEC_ERRORS_HERE,
522 "transformDsaSha1Id",
523 XMLSEC_ERRORS_R_NOT_IMPLEMENTED,
524 XMLSEC_ERRORS_NO_MESSAGE);
525 return(xmlSecTransformIdUnknown);
528 return(xmlSecCryptoDLGetFunctions()->transformDsaSha1GetKlass());
532 * xmlSecTransformGost2001GostR3411_94GetKlass:
534 * The GOST2001-GOSTR3411_94 signature transform klass.
536 * Returns: GOST2001-GOSTR3411_94 signature transform klass or NULL if an error
537 * occurs (the xmlsec-crypto library is not loaded or this transform is not
541 xmlSecTransformGost2001GostR3411_94GetKlass(void) {
542 if((xmlSecCryptoDLGetFunctions() == NULL) || (xmlSecCryptoDLGetFunctions()->transformGost2001GostR3411_94GetKlass == NULL)) {
543 xmlSecError(XMLSEC_ERRORS_HERE,
545 "transformGost2001GostR3411_94Id",
546 XMLSEC_ERRORS_R_NOT_IMPLEMENTED,
547 XMLSEC_ERRORS_NO_MESSAGE);
548 return(xmlSecTransformIdUnknown);
551 return(xmlSecCryptoDLGetFunctions()->transformGost2001GostR3411_94GetKlass());
555 * xmlSecTransformHmacMd5GetKlass:
557 * The HMAC-MD5 transform klass.
559 * Returns: the HMAC-MD5 transform klass or NULL if an error
560 * occurs (the xmlsec-crypto library is not loaded or this transform is not
564 xmlSecTransformHmacMd5GetKlass(void) {
565 if((xmlSecCryptoDLGetFunctions() == NULL) || (xmlSecCryptoDLGetFunctions()->transformHmacMd5GetKlass == NULL)) {
566 xmlSecError(XMLSEC_ERRORS_HERE,
568 "transformHmacMd5Id",
569 XMLSEC_ERRORS_R_NOT_IMPLEMENTED,
570 XMLSEC_ERRORS_NO_MESSAGE);
571 return(xmlSecTransformIdUnknown);
574 return(xmlSecCryptoDLGetFunctions()->transformHmacMd5GetKlass());
578 * xmlSecTransformHmacRipemd160GetKlass:
580 * The HMAC-RIPEMD160 transform klass.
582 * Returns: the HMAC-RIPEMD160 transform klass or NULL if an error
583 * occurs (the xmlsec-crypto library is not loaded or this transform is not
587 xmlSecTransformHmacRipemd160GetKlass(void) {
588 if((xmlSecCryptoDLGetFunctions() == NULL) || (xmlSecCryptoDLGetFunctions()->transformHmacRipemd160GetKlass == NULL)) {
589 xmlSecError(XMLSEC_ERRORS_HERE,
591 "transformHmacRipemd160Id",
592 XMLSEC_ERRORS_R_NOT_IMPLEMENTED,
593 XMLSEC_ERRORS_NO_MESSAGE);
594 return(xmlSecTransformIdUnknown);
597 return(xmlSecCryptoDLGetFunctions()->transformHmacRipemd160GetKlass());
601 * xmlSecTransformHmacSha1GetKlass:
603 * The HMAC-SHA1 transform klass.
605 * Returns: the HMAC-SHA1 transform klass or NULL if an error
606 * occurs (the xmlsec-crypto library is not loaded or this transform is not
610 xmlSecTransformHmacSha1GetKlass(void) {
611 if((xmlSecCryptoDLGetFunctions() == NULL) || (xmlSecCryptoDLGetFunctions()->transformHmacSha1GetKlass == NULL)) {
612 xmlSecError(XMLSEC_ERRORS_HERE,
614 "transformHmacSha1Id",
615 XMLSEC_ERRORS_R_NOT_IMPLEMENTED,
616 XMLSEC_ERRORS_NO_MESSAGE);
617 return(xmlSecTransformIdUnknown);
620 return(xmlSecCryptoDLGetFunctions()->transformHmacSha1GetKlass());
624 * xmlSecTransformHmacSha224GetKlass:
626 * The HMAC-SHA224 transform klass.
628 * Returns: the HMAC-SHA224 transform klass or NULL if an error
629 * occurs (the xmlsec-crypto library is not loaded or this transform is not
633 xmlSecTransformHmacSha224GetKlass(void) {
634 if((xmlSecCryptoDLGetFunctions() == NULL) || (xmlSecCryptoDLGetFunctions()->transformHmacSha224GetKlass == NULL)) {
635 xmlSecError(XMLSEC_ERRORS_HERE,
637 "transformHmacSha224Id",
638 XMLSEC_ERRORS_R_NOT_IMPLEMENTED,
639 XMLSEC_ERRORS_NO_MESSAGE);
640 return(xmlSecTransformIdUnknown);
643 return(xmlSecCryptoDLGetFunctions()->transformHmacSha224GetKlass());
647 * xmlSecTransformHmacSha256GetKlass:
649 * The HMAC-SHA256 transform klass.
651 * Returns: the HMAC-SHA256 transform klass or NULL if an error
652 * occurs (the xmlsec-crypto library is not loaded or this transform is not
656 xmlSecTransformHmacSha256GetKlass(void) {
657 if((xmlSecCryptoDLGetFunctions() == NULL) || (xmlSecCryptoDLGetFunctions()->transformHmacSha256GetKlass == NULL)) {
658 xmlSecError(XMLSEC_ERRORS_HERE,
660 "transformHmacSha256Id",
661 XMLSEC_ERRORS_R_NOT_IMPLEMENTED,
662 XMLSEC_ERRORS_NO_MESSAGE);
663 return(xmlSecTransformIdUnknown);
666 return(xmlSecCryptoDLGetFunctions()->transformHmacSha256GetKlass());
670 * xmlSecTransformHmacSha384GetKlass:
672 * The HMAC-SHA384 transform klass.
674 * Returns: the HMAC-SHA384 transform klass or NULL if an error
675 * occurs (the xmlsec-crypto library is not loaded or this transform is not
679 xmlSecTransformHmacSha384GetKlass(void) {
680 if((xmlSecCryptoDLGetFunctions() == NULL) || (xmlSecCryptoDLGetFunctions()->transformHmacSha384GetKlass == NULL)) {
681 xmlSecError(XMLSEC_ERRORS_HERE,
683 "transformHmacSha384Id",
684 XMLSEC_ERRORS_R_NOT_IMPLEMENTED,
685 XMLSEC_ERRORS_NO_MESSAGE);
686 return(xmlSecTransformIdUnknown);
689 return(xmlSecCryptoDLGetFunctions()->transformHmacSha384GetKlass());
693 * xmlSecTransformHmacSha512GetKlass:
695 * The HMAC-SHA512 transform klass.
697 * Returns: the HMAC-SHA512 transform klass or NULL if an error
698 * occurs (the xmlsec-crypto library is not loaded or this transform is not
702 xmlSecTransformHmacSha512GetKlass(void) {
703 if((xmlSecCryptoDLGetFunctions() == NULL) || (xmlSecCryptoDLGetFunctions()->transformHmacSha512GetKlass == NULL)) {
704 xmlSecError(XMLSEC_ERRORS_HERE,
706 "transformHmacSha512Id",
707 XMLSEC_ERRORS_R_NOT_IMPLEMENTED,
708 XMLSEC_ERRORS_NO_MESSAGE);
709 return(xmlSecTransformIdUnknown);
712 return(xmlSecCryptoDLGetFunctions()->transformHmacSha512GetKlass());
716 * xmlSecTransformMd5GetKlass:
718 * MD5 digest transform klass.
720 * Returns: pointer to MD5 digest transform klass or NULL if an error
721 * occurs (the xmlsec-crypto library is not loaded or this transform is not
725 xmlSecTransformMd5GetKlass(void) {
726 if((xmlSecCryptoDLGetFunctions() == NULL) || (xmlSecCryptoDLGetFunctions()->transformMd5GetKlass == NULL)) {
727 xmlSecError(XMLSEC_ERRORS_HERE,
730 XMLSEC_ERRORS_R_NOT_IMPLEMENTED,
731 XMLSEC_ERRORS_NO_MESSAGE);
732 return(xmlSecTransformIdUnknown);
735 return(xmlSecCryptoDLGetFunctions()->transformMd5GetKlass());
739 * xmlSecTransformRipemd160GetKlass:
741 * RIPEMD-160 digest transform klass.
743 * Returns: pointer to RIPEMD-160 digest transform klass or NULL if an error
744 * occurs (the xmlsec-crypto library is not loaded or this transform is not
748 xmlSecTransformRipemd160GetKlass(void) {
749 if((xmlSecCryptoDLGetFunctions() == NULL) || (xmlSecCryptoDLGetFunctions()->transformRipemd160GetKlass == NULL)) {
750 xmlSecError(XMLSEC_ERRORS_HERE,
752 "transformRipemd160Id",
753 XMLSEC_ERRORS_R_NOT_IMPLEMENTED,
754 XMLSEC_ERRORS_NO_MESSAGE);
755 return(xmlSecTransformIdUnknown);
758 return(xmlSecCryptoDLGetFunctions()->transformRipemd160GetKlass());
762 * xmlSecTransformRsaMd5GetKlass:
764 * The RSA-MD5 signature transform klass.
766 * Returns: RSA-MD5 signature transform klass or NULL if an error
767 * occurs (the xmlsec-crypto library is not loaded or this transform is not
771 xmlSecTransformRsaMd5GetKlass(void) {
772 if((xmlSecCryptoDLGetFunctions() == NULL) || (xmlSecCryptoDLGetFunctions()->transformRsaMd5GetKlass == NULL)) {
773 xmlSecError(XMLSEC_ERRORS_HERE,
776 XMLSEC_ERRORS_R_NOT_IMPLEMENTED,
777 XMLSEC_ERRORS_NO_MESSAGE);
778 return(xmlSecTransformIdUnknown);
781 return(xmlSecCryptoDLGetFunctions()->transformRsaMd5GetKlass());
785 * xmlSecTransformRsaRipemd160GetKlass:
787 * The RSA-RIPEMD160 signature transform klass.
789 * Returns: RSA-RIPEMD160 signature transform klass or NULL if an error
790 * occurs (the xmlsec-crypto library is not loaded or this transform is not
794 xmlSecTransformRsaRipemd160GetKlass(void) {
795 if((xmlSecCryptoDLGetFunctions() == NULL) || (xmlSecCryptoDLGetFunctions()->transformRsaRipemd160GetKlass == NULL)) {
796 xmlSecError(XMLSEC_ERRORS_HERE,
798 "transformRsaRipemd160Id",
799 XMLSEC_ERRORS_R_NOT_IMPLEMENTED,
800 XMLSEC_ERRORS_NO_MESSAGE);
801 return(xmlSecTransformIdUnknown);
804 return(xmlSecCryptoDLGetFunctions()->transformRsaRipemd160GetKlass());
808 * xmlSecTransformRsaSha1GetKlass:
810 * The RSA-SHA1 signature transform klass.
812 * Returns: RSA-SHA1 signature transform klass or NULL if an error
813 * occurs (the xmlsec-crypto library is not loaded or this transform is not
817 xmlSecTransformRsaSha1GetKlass(void) {
818 if((xmlSecCryptoDLGetFunctions() == NULL) || (xmlSecCryptoDLGetFunctions()->transformRsaSha1GetKlass == NULL)) {
819 xmlSecError(XMLSEC_ERRORS_HERE,
821 "transformRsaSha1Id",
822 XMLSEC_ERRORS_R_NOT_IMPLEMENTED,
823 XMLSEC_ERRORS_NO_MESSAGE);
824 return(xmlSecTransformIdUnknown);
827 return(xmlSecCryptoDLGetFunctions()->transformRsaSha1GetKlass());
831 * xmlSecTransformRsaSha224GetKlass:
833 * The RSA-SHA224 signature transform klass.
835 * Returns: RSA-SHA224 signature transform klass or NULL if an error
836 * occurs (the xmlsec-crypto library is not loaded or this transform is not
840 xmlSecTransformRsaSha224GetKlass(void) {
841 if((xmlSecCryptoDLGetFunctions() == NULL) || (xmlSecCryptoDLGetFunctions()->transformRsaSha224GetKlass == NULL)) {
842 xmlSecError(XMLSEC_ERRORS_HERE,
844 "transformRsaSha224Id",
845 XMLSEC_ERRORS_R_NOT_IMPLEMENTED,
846 XMLSEC_ERRORS_NO_MESSAGE);
847 return(xmlSecTransformIdUnknown);
850 return(xmlSecCryptoDLGetFunctions()->transformRsaSha224GetKlass());
854 * xmlSecTransformRsaSha256GetKlass:
856 * The RSA-SHA256 signature transform klass.
858 * Returns: RSA-SHA256 signature transform klass or NULL if an error
859 * occurs (the xmlsec-crypto library is not loaded or this transform is not
863 xmlSecTransformRsaSha256GetKlass(void) {
864 if((xmlSecCryptoDLGetFunctions() == NULL) || (xmlSecCryptoDLGetFunctions()->transformRsaSha256GetKlass == NULL)) {
865 xmlSecError(XMLSEC_ERRORS_HERE,
867 "transformRsaSha256Id",
868 XMLSEC_ERRORS_R_NOT_IMPLEMENTED,
869 XMLSEC_ERRORS_NO_MESSAGE);
870 return(xmlSecTransformIdUnknown);
873 return(xmlSecCryptoDLGetFunctions()->transformRsaSha256GetKlass());
877 * xmlSecTransformRsaSha384GetKlass:
879 * The RSA-SHA384 signature transform klass.
881 * Returns: RSA-SHA384 signature transform klass or NULL if an error
882 * occurs (the xmlsec-crypto library is not loaded or this transform is not
886 xmlSecTransformRsaSha384GetKlass(void) {
887 if((xmlSecCryptoDLGetFunctions() == NULL) || (xmlSecCryptoDLGetFunctions()->transformRsaSha384GetKlass == NULL)) {
888 xmlSecError(XMLSEC_ERRORS_HERE,
890 "transformRsaSha384Id",
891 XMLSEC_ERRORS_R_NOT_IMPLEMENTED,
892 XMLSEC_ERRORS_NO_MESSAGE);
893 return(xmlSecTransformIdUnknown);
896 return(xmlSecCryptoDLGetFunctions()->transformRsaSha384GetKlass());
900 * xmlSecTransformRsaSha512GetKlass:
902 * The RSA-SHA512 signature transform klass.
904 * Returns: RSA-SHA512 signature transform klass or NULL if an error
905 * occurs (the xmlsec-crypto library is not loaded or this transform is not
909 xmlSecTransformRsaSha512GetKlass(void) {
910 if((xmlSecCryptoDLGetFunctions() == NULL) || (xmlSecCryptoDLGetFunctions()->transformRsaSha512GetKlass == NULL)) {
911 xmlSecError(XMLSEC_ERRORS_HERE,
913 "transformRsaSha512Id",
914 XMLSEC_ERRORS_R_NOT_IMPLEMENTED,
915 XMLSEC_ERRORS_NO_MESSAGE);
916 return(xmlSecTransformIdUnknown);
919 return(xmlSecCryptoDLGetFunctions()->transformRsaSha512GetKlass());
923 * xmlSecTransformRsaPkcs1GetKlass:
925 * The RSA-PKCS1 key transport transform klass.
927 * Returns: RSA-PKCS1 key transport transform klass or NULL if an error
928 * occurs (the xmlsec-crypto library is not loaded or this transform is not
932 xmlSecTransformRsaPkcs1GetKlass(void) {
933 if((xmlSecCryptoDLGetFunctions() == NULL) || (xmlSecCryptoDLGetFunctions()->transformRsaPkcs1GetKlass == NULL)) {
934 xmlSecError(XMLSEC_ERRORS_HERE,
936 "transformRsaPkcs1Id",
937 XMLSEC_ERRORS_R_NOT_IMPLEMENTED,
938 XMLSEC_ERRORS_NO_MESSAGE);
939 return(xmlSecTransformIdUnknown);
942 return(xmlSecCryptoDLGetFunctions()->transformRsaPkcs1GetKlass());
946 * xmlSecTransformRsaOaepGetKlass:
948 * The RSA-OAEP key transport transform klass.
950 * Returns: RSA-OAEP key transport transform klass or NULL if an error
951 * occurs (the xmlsec-crypto library is not loaded or this transform is not
955 xmlSecTransformRsaOaepGetKlass(void) {
956 if((xmlSecCryptoDLGetFunctions() == NULL) || (xmlSecCryptoDLGetFunctions()->transformRsaOaepGetKlass == NULL)) {
957 xmlSecError(XMLSEC_ERRORS_HERE,
959 "transformRsaOaepId",
960 XMLSEC_ERRORS_R_NOT_IMPLEMENTED,
961 XMLSEC_ERRORS_NO_MESSAGE);
962 return(xmlSecTransformIdUnknown);
965 return(xmlSecCryptoDLGetFunctions()->transformRsaOaepGetKlass());
969 * xmlSecTransformGostR3411_94GetKlass:
971 * GOSTR3411_94 digest transform klass.
973 * Returns: pointer to GOSTR3411_94 digest transform klass or NULL if an error
974 * occurs (the xmlsec-crypto library is not loaded or this transform is not
978 xmlSecTransformGostR3411_94GetKlass(void) {
979 if((xmlSecCryptoDLGetFunctions() == NULL) || (xmlSecCryptoDLGetFunctions()->transformGostR3411_94GetKlass == NULL)) {
980 xmlSecError(XMLSEC_ERRORS_HERE,
982 "transformGostR3411_94Id",
983 XMLSEC_ERRORS_R_NOT_IMPLEMENTED,
984 XMLSEC_ERRORS_NO_MESSAGE);
985 return(xmlSecTransformIdUnknown);
988 return(xmlSecCryptoDLGetFunctions()->transformGostR3411_94GetKlass());
993 * xmlSecTransformSha1GetKlass:
995 * SHA-1 digest transform klass.
997 * Returns: pointer to SHA-1 digest transform klass or NULL if an error
998 * occurs (the xmlsec-crypto library is not loaded or this transform is not
1002 xmlSecTransformSha1GetKlass(void) {
1003 if((xmlSecCryptoDLGetFunctions() == NULL) || (xmlSecCryptoDLGetFunctions()->transformSha1GetKlass == NULL)) {
1004 xmlSecError(XMLSEC_ERRORS_HERE,
1007 XMLSEC_ERRORS_R_NOT_IMPLEMENTED,
1008 XMLSEC_ERRORS_NO_MESSAGE);
1009 return(xmlSecTransformIdUnknown);
1012 return(xmlSecCryptoDLGetFunctions()->transformSha1GetKlass());
1016 * xmlSecTransformSha224GetKlass:
1018 * SHA224 digest transform klass.
1020 * Returns: pointer to SHA224 digest transform klass or NULL if an error
1021 * occurs (the xmlsec-crypto library is not loaded or this transform is not
1025 xmlSecTransformSha224GetKlass(void) {
1026 if((xmlSecCryptoDLGetFunctions() == NULL) || (xmlSecCryptoDLGetFunctions()->transformSha224GetKlass == NULL)) {
1027 xmlSecError(XMLSEC_ERRORS_HERE,
1029 "transformSha224Id",
1030 XMLSEC_ERRORS_R_NOT_IMPLEMENTED,
1031 XMLSEC_ERRORS_NO_MESSAGE);
1032 return(xmlSecTransformIdUnknown);
1035 return(xmlSecCryptoDLGetFunctions()->transformSha224GetKlass());
1039 * xmlSecTransformSha256GetKlass:
1041 * SHA256 digest transform klass.
1043 * Returns: pointer to SHA256 digest transform klass or NULL if an error
1044 * occurs (the xmlsec-crypto library is not loaded or this transform is not
1048 xmlSecTransformSha256GetKlass(void) {
1049 if((xmlSecCryptoDLGetFunctions() == NULL) || (xmlSecCryptoDLGetFunctions()->transformSha256GetKlass == NULL)) {
1050 xmlSecError(XMLSEC_ERRORS_HERE,
1052 "transformSha256Id",
1053 XMLSEC_ERRORS_R_NOT_IMPLEMENTED,
1054 XMLSEC_ERRORS_NO_MESSAGE);
1055 return(xmlSecTransformIdUnknown);
1058 return(xmlSecCryptoDLGetFunctions()->transformSha256GetKlass());
1062 * xmlSecTransformSha384GetKlass:
1064 * SHA384 digest transform klass.
1066 * Returns: pointer to SHA384 digest transform klass or NULL if an error
1067 * occurs (the xmlsec-crypto library is not loaded or this transform is not
1071 xmlSecTransformSha384GetKlass(void) {
1072 if((xmlSecCryptoDLGetFunctions() == NULL) || (xmlSecCryptoDLGetFunctions()->transformSha384GetKlass == NULL)) {
1073 xmlSecError(XMLSEC_ERRORS_HERE,
1075 "transformSha384Id",
1076 XMLSEC_ERRORS_R_NOT_IMPLEMENTED,
1077 XMLSEC_ERRORS_NO_MESSAGE);
1078 return(xmlSecTransformIdUnknown);
1081 return(xmlSecCryptoDLGetFunctions()->transformSha384GetKlass());
1085 * xmlSecTransformSha512GetKlass:
1087 * SHA512 digest transform klass.
1089 * Returns: pointer to SHA512 digest transform klass or NULL if an error
1090 * occurs (the xmlsec-crypto library is not loaded or this transform is not
1094 xmlSecTransformSha512GetKlass(void) {
1095 if((xmlSecCryptoDLGetFunctions() == NULL) || (xmlSecCryptoDLGetFunctions()->transformSha512GetKlass == NULL)) {
1096 xmlSecError(XMLSEC_ERRORS_HERE,
1098 "transformSha512Id",
1099 XMLSEC_ERRORS_R_NOT_IMPLEMENTED,
1100 XMLSEC_ERRORS_NO_MESSAGE);
1101 return(xmlSecTransformIdUnknown);
1104 return(xmlSecCryptoDLGetFunctions()->transformSha512GetKlass());
1107 /******************************************************************************
1109 * High level routines form xmlsec command line utility
1111 *****************************************************************************/
1113 * xmlSecCryptoAppInit:
1114 * @config: the path to crypto library configuration.
1116 * General crypto engine initialization. This function is used
1117 * by XMLSec command line utility and called before
1118 * @xmlSecInit function.
1120 * Returns: 0 on success or a negative value otherwise.
1123 xmlSecCryptoAppInit(const char* config) {
1124 if((xmlSecCryptoDLGetFunctions() == NULL) || (xmlSecCryptoDLGetFunctions()->cryptoAppInit == NULL)) {
1125 xmlSecError(XMLSEC_ERRORS_HERE,
1128 XMLSEC_ERRORS_R_NOT_IMPLEMENTED,
1129 XMLSEC_ERRORS_NO_MESSAGE);
1133 return(xmlSecCryptoDLGetFunctions()->cryptoAppInit(config));
1138 * xmlSecCryptoAppShutdown:
1140 * General crypto engine shutdown. This function is used
1141 * by XMLSec command line utility and called after
1142 * @xmlSecShutdown function.
1144 * Returns: 0 on success or a negative value otherwise.
1147 xmlSecCryptoAppShutdown(void) {
1148 if((xmlSecCryptoDLGetFunctions() == NULL) || (xmlSecCryptoDLGetFunctions()->cryptoAppShutdown == NULL)) {
1149 xmlSecError(XMLSEC_ERRORS_HERE,
1151 "cryptoAppShutdown",
1152 XMLSEC_ERRORS_R_NOT_IMPLEMENTED,
1153 XMLSEC_ERRORS_NO_MESSAGE);
1157 return(xmlSecCryptoDLGetFunctions()->cryptoAppShutdown());
1161 * xmlSecCryptoAppDefaultKeysMngrInit:
1162 * @mngr: the pointer to keys manager.
1164 * Initializes @mngr with simple keys store #xmlSecSimpleKeysStoreId
1165 * and a default crypto key data stores.
1167 * Returns: 0 on success or a negative value otherwise.
1170 xmlSecCryptoAppDefaultKeysMngrInit(xmlSecKeysMngrPtr mngr) {
1171 if((xmlSecCryptoDLGetFunctions() == NULL) || (xmlSecCryptoDLGetFunctions()->cryptoAppDefaultKeysMngrInit == NULL)) {
1172 xmlSecError(XMLSEC_ERRORS_HERE,
1174 "cryptoAppDefaultKeysMngrInit",
1175 XMLSEC_ERRORS_R_NOT_IMPLEMENTED,
1176 XMLSEC_ERRORS_NO_MESSAGE);
1180 return(xmlSecCryptoDLGetFunctions()->cryptoAppDefaultKeysMngrInit(mngr));
1184 * xmlSecCryptoAppDefaultKeysMngrAdoptKey:
1185 * @mngr: the pointer to keys manager.
1186 * @key: the pointer to key.
1188 * Adds @key to the keys manager @mngr created with #xmlSecCryptoAppDefaultKeysMngrInit
1191 * Returns: 0 on success or a negative value otherwise.
1194 xmlSecCryptoAppDefaultKeysMngrAdoptKey(xmlSecKeysMngrPtr mngr, xmlSecKeyPtr key) {
1195 if((xmlSecCryptoDLGetFunctions() == NULL) || (xmlSecCryptoDLGetFunctions()->cryptoAppDefaultKeysMngrAdoptKey == NULL)) {
1196 xmlSecError(XMLSEC_ERRORS_HERE,
1198 "cryptoAppDefaultKeysMngrAdoptKey",
1199 XMLSEC_ERRORS_R_NOT_IMPLEMENTED,
1200 XMLSEC_ERRORS_NO_MESSAGE);
1204 return(xmlSecCryptoDLGetFunctions()->cryptoAppDefaultKeysMngrAdoptKey(mngr, key));
1208 * xmlSecCryptoAppDefaultKeysMngrLoad:
1209 * @mngr: the pointer to keys manager.
1212 * Loads XML keys file from @uri to the keys manager @mngr created
1213 * with #xmlSecCryptoAppDefaultKeysMngrInit function.
1215 * Returns: 0 on success or a negative value otherwise.
1218 xmlSecCryptoAppDefaultKeysMngrLoad(xmlSecKeysMngrPtr mngr, const char* uri) {
1219 if((xmlSecCryptoDLGetFunctions() == NULL) || (xmlSecCryptoDLGetFunctions()->cryptoAppDefaultKeysMngrLoad == NULL)) {
1220 xmlSecError(XMLSEC_ERRORS_HERE,
1222 "cryptoAppDefaultKeysMngrLoad",
1223 XMLSEC_ERRORS_R_NOT_IMPLEMENTED,
1224 XMLSEC_ERRORS_NO_MESSAGE);
1228 return(xmlSecCryptoDLGetFunctions()->cryptoAppDefaultKeysMngrLoad(mngr, uri));
1232 * xmlSecCryptoAppDefaultKeysMngrSave:
1233 * @mngr: the pointer to keys manager.
1234 * @filename: the destination filename.
1235 * @type: the type of keys to save (public/private/symmetric).
1237 * Saves keys from @mngr to XML keys file.
1239 * Returns: 0 on success or a negative value otherwise.
1242 xmlSecCryptoAppDefaultKeysMngrSave(xmlSecKeysMngrPtr mngr, const char* filename,
1243 xmlSecKeyDataType type) {
1244 if((xmlSecCryptoDLGetFunctions() == NULL) || (xmlSecCryptoDLGetFunctions()->cryptoAppDefaultKeysMngrSave == NULL)) {
1245 xmlSecError(XMLSEC_ERRORS_HERE,
1247 "cryptoAppDefaultKeysMngrSave",
1248 XMLSEC_ERRORS_R_NOT_IMPLEMENTED,
1249 XMLSEC_ERRORS_NO_MESSAGE);
1253 return(xmlSecCryptoDLGetFunctions()->cryptoAppDefaultKeysMngrSave(mngr, filename, type));
1257 * xmlSecCryptoAppKeysMngrCertLoad:
1258 * @mngr: the keys manager.
1259 * @filename: the certificate file.
1260 * @format: the certificate file format.
1261 * @type: the flag that indicates is the certificate in @filename
1264 * Reads cert from @filename and adds to the list of trusted or known
1265 * untrusted certs in @store.
1267 * Returns: 0 on success or a negative value otherwise.
1270 xmlSecCryptoAppKeysMngrCertLoad(xmlSecKeysMngrPtr mngr, const char *filename,
1271 xmlSecKeyDataFormat format, xmlSecKeyDataType type) {
1272 if((xmlSecCryptoDLGetFunctions() == NULL) || (xmlSecCryptoDLGetFunctions()->cryptoAppKeysMngrCertLoad == NULL)) {
1273 xmlSecError(XMLSEC_ERRORS_HERE,
1275 "cryptoAppKeysMngrCertLoad",
1276 XMLSEC_ERRORS_R_NOT_IMPLEMENTED,
1277 XMLSEC_ERRORS_NO_MESSAGE);
1281 return(xmlSecCryptoDLGetFunctions()->cryptoAppKeysMngrCertLoad(mngr, filename, format, type));
1285 * xmlSecCryptoAppKeysMngrCertLoadMemory:
1286 * @mngr: the keys manager.
1287 * @data: the certificate binary data.
1288 * @dataSize: the certificate binary data size.
1289 * @format: the certificate file format.
1290 * @type: the flag that indicates is the certificate trusted or not.
1292 * Reads cert from binary buffer @data and adds to the list of trusted or known
1293 * untrusted certs in @store.
1295 * Returns: 0 on success or a negative value otherwise.
1298 xmlSecCryptoAppKeysMngrCertLoadMemory(xmlSecKeysMngrPtr mngr, const xmlSecByte* data,
1299 xmlSecSize dataSize, xmlSecKeyDataFormat format,
1300 xmlSecKeyDataType type) {
1301 if((xmlSecCryptoDLGetFunctions() == NULL) || (xmlSecCryptoDLGetFunctions()->cryptoAppKeysMngrCertLoadMemory == NULL)) {
1302 xmlSecError(XMLSEC_ERRORS_HERE,
1304 "cryptoAppKeysMngrCertLoadMemory",
1305 XMLSEC_ERRORS_R_NOT_IMPLEMENTED,
1306 XMLSEC_ERRORS_NO_MESSAGE);
1310 return(xmlSecCryptoDLGetFunctions()->cryptoAppKeysMngrCertLoadMemory(mngr, data, dataSize, format, type));
1314 * xmlSecCryptoAppKeyLoad:
1315 * @filename: the key filename.
1316 * @format: the key file format.
1317 * @pwd: the key file password.
1318 * @pwdCallback: the key password callback.
1319 * @pwdCallbackCtx: the user context for password callback.
1321 * Reads key from the a file.
1323 * Returns: pointer to the key or NULL if an error occurs.
1326 xmlSecCryptoAppKeyLoad(const char *filename, xmlSecKeyDataFormat format,
1327 const char *pwd, void* pwdCallback, void* pwdCallbackCtx) {
1328 if((xmlSecCryptoDLGetFunctions() == NULL) || (xmlSecCryptoDLGetFunctions()->cryptoAppKeyLoad == NULL)) {
1329 xmlSecError(XMLSEC_ERRORS_HERE,
1332 XMLSEC_ERRORS_R_NOT_IMPLEMENTED,
1333 XMLSEC_ERRORS_NO_MESSAGE);
1337 return(xmlSecCryptoDLGetFunctions()->cryptoAppKeyLoad(filename, format, pwd, pwdCallback, pwdCallbackCtx));
1341 * xmlSecCryptoAppKeyLoadMemory:
1342 * @data: the binary key data.
1343 * @dataSize: the size of binary key.
1344 * @format: the key file format.
1345 * @pwd: the key file password.
1346 * @pwdCallback: the key password callback.
1347 * @pwdCallbackCtx: the user context for password callback.
1349 * Reads key from the memory buffer.
1351 * Returns: pointer to the key or NULL if an error occurs.
1354 xmlSecCryptoAppKeyLoadMemory(const xmlSecByte* data, xmlSecSize dataSize, xmlSecKeyDataFormat format,
1355 const char *pwd, void* pwdCallback, void* pwdCallbackCtx) {
1356 if((xmlSecCryptoDLGetFunctions() == NULL) || (xmlSecCryptoDLGetFunctions()->cryptoAppKeyLoadMemory == NULL)) {
1357 xmlSecError(XMLSEC_ERRORS_HERE,
1359 "cryptoAppKeyLoadMemory",
1360 XMLSEC_ERRORS_R_NOT_IMPLEMENTED,
1361 XMLSEC_ERRORS_NO_MESSAGE);
1365 return(xmlSecCryptoDLGetFunctions()->cryptoAppKeyLoadMemory(data, dataSize, format, pwd, pwdCallback, pwdCallbackCtx));
1369 * xmlSecCryptoAppPkcs12Load:
1370 * @filename: the PKCS12 key filename.
1371 * @pwd: the PKCS12 file password.
1372 * @pwdCallback: the password callback.
1373 * @pwdCallbackCtx: the user context for password callback.
1375 * Reads key and all associated certificates from the PKCS12 file.
1376 * For uniformity, call xmlSecCryptoAppKeyLoad instead of this function. Pass
1377 * in format=xmlSecKeyDataFormatPkcs12.
1379 * Returns: pointer to the key or NULL if an error occurs.
1382 xmlSecCryptoAppPkcs12Load(const char* filename, const char* pwd, void* pwdCallback,
1383 void* pwdCallbackCtx) {
1384 if((xmlSecCryptoDLGetFunctions() == NULL) || (xmlSecCryptoDLGetFunctions()->cryptoAppPkcs12Load == NULL)) {
1385 xmlSecError(XMLSEC_ERRORS_HERE,
1387 "cryptoAppPkcs12Load",
1388 XMLSEC_ERRORS_R_NOT_IMPLEMENTED,
1389 XMLSEC_ERRORS_NO_MESSAGE);
1393 return(xmlSecCryptoDLGetFunctions()->cryptoAppPkcs12Load(filename, pwd, pwdCallback, pwdCallbackCtx));
1397 * xmlSecCryptoAppPkcs12LoadMemory:
1398 * @data: the PKCS12 binary data.
1399 * @dataSize: the PKCS12 binary data size.
1400 * @pwd: the PKCS12 file password.
1401 * @pwdCallback: the password callback.
1402 * @pwdCallbackCtx: the user context for password callback.
1404 * Reads key and all associated certificates from the PKCS12 data in memory buffer.
1405 * For uniformity, call xmlSecCryptoAppKeyLoadMemory instead of this function. Pass
1406 * in format=xmlSecKeyDataFormatPkcs12.
1408 * Returns: pointer to the key or NULL if an error occurs.
1411 xmlSecCryptoAppPkcs12LoadMemory(const xmlSecByte* data, xmlSecSize dataSize,
1412 const char *pwd, void* pwdCallback,
1413 void* pwdCallbackCtx) {
1414 if((xmlSecCryptoDLGetFunctions() == NULL) || (xmlSecCryptoDLGetFunctions()->cryptoAppPkcs12LoadMemory == NULL)) {
1415 xmlSecError(XMLSEC_ERRORS_HERE,
1417 "cryptoAppPkcs12LoadMemory",
1418 XMLSEC_ERRORS_R_NOT_IMPLEMENTED,
1419 XMLSEC_ERRORS_NO_MESSAGE);
1423 return(xmlSecCryptoDLGetFunctions()->cryptoAppPkcs12LoadMemory(data, dataSize, pwd, pwdCallback, pwdCallbackCtx));
1427 * xmlSecCryptoAppKeyCertLoad:
1428 * @key: the pointer to key.
1429 * @filename: the certificate filename.
1430 * @format: the certificate file format.
1432 * Reads the certificate from $@filename and adds it to key.
1434 * Returns: 0 on success or a negative value otherwise.
1437 xmlSecCryptoAppKeyCertLoad(xmlSecKeyPtr key, const char* filename, xmlSecKeyDataFormat format) {
1438 if((xmlSecCryptoDLGetFunctions() == NULL) || (xmlSecCryptoDLGetFunctions()->cryptoAppKeyCertLoad == NULL)) {
1439 xmlSecError(XMLSEC_ERRORS_HERE,
1441 "cryptoAppKeyCertLoad",
1442 XMLSEC_ERRORS_R_NOT_IMPLEMENTED,
1443 XMLSEC_ERRORS_NO_MESSAGE);
1447 return(xmlSecCryptoDLGetFunctions()->cryptoAppKeyCertLoad(key, filename, format));
1451 * xmlSecCryptoAppKeyCertLoadMemory:
1452 * @key: the pointer to key.
1453 * @data: the certificate binary data.
1454 * @dataSize: the certificate binary data size.
1455 * @format: the certificate file format.
1457 * Reads the certificate from memory buffer and adds it to key.
1459 * Returns: 0 on success or a negative value otherwise.
1462 xmlSecCryptoAppKeyCertLoadMemory(xmlSecKeyPtr key, const xmlSecByte* data, xmlSecSize dataSize,
1463 xmlSecKeyDataFormat format) {
1464 if((xmlSecCryptoDLGetFunctions() == NULL) || (xmlSecCryptoDLGetFunctions()->cryptoAppKeyCertLoadMemory == NULL)) {
1465 xmlSecError(XMLSEC_ERRORS_HERE,
1467 "cryptoAppKeyCertLoadMemory",
1468 XMLSEC_ERRORS_R_NOT_IMPLEMENTED,
1469 XMLSEC_ERRORS_NO_MESSAGE);
1473 return(xmlSecCryptoDLGetFunctions()->cryptoAppKeyCertLoadMemory(key, data, dataSize, format));
1477 * xmlSecCryptoAppGetDefaultPwdCallback:
1479 * Gets default password callback.
1481 * Returns: default password callback.
1484 xmlSecCryptoAppGetDefaultPwdCallback(void) {
1485 if(xmlSecCryptoDLGetFunctions() == NULL) {
1486 xmlSecError(XMLSEC_ERRORS_HERE,
1489 XMLSEC_ERRORS_R_NOT_IMPLEMENTED,
1490 XMLSEC_ERRORS_NO_MESSAGE);
1494 return(xmlSecCryptoDLGetFunctions()->cryptoAppDefaultPwdCallback);
1497 #endif /* XMLSEC_NO_CRYPTO_DYNAMIC_LOADING */