2 * XML Security Library (http://www.aleksey.com/xmlsec).
4 * Error codes and error reporting functions.
6 * This is free software; see Copyright file in the source
7 * distribution for preciese wording.
9 * Copyright (C) 2002-2003 Aleksey Sanin <aleksey@aleksey.com>
11 #ifndef __XMLSEC_ERRORS_H__
12 #define __XMLSEC_ERRORS_H__
16 #endif /* __cplusplus */
18 /***************************************************************
22 **************************************************************/
24 * XMLSEC_ERRORS_R_XMLSEC_FAILED:
26 * An XMLSec function failed (error subject is the failed function).
28 #define XMLSEC_ERRORS_R_XMLSEC_FAILED 1
31 * XMLSEC_ERRORS_R_MALLOC_FAILED:
33 * Failed to allocate memory error.
35 #define XMLSEC_ERRORS_R_MALLOC_FAILED 2
38 * XMLSEC_ERRORS_R_STRDUP_FAILED:
40 * Failed to duplicate string error.
42 #define XMLSEC_ERRORS_R_STRDUP_FAILED 3
45 * XMLSEC_ERRORS_R_CRYPTO_FAILED:
47 * Crypto (OpenSSL) function failed (error subject is the failed function).
49 #define XMLSEC_ERRORS_R_CRYPTO_FAILED 4
52 * XMLSEC_ERRORS_R_XML_FAILED:
54 * LibXML function failed (error subject is the failed function).
56 #define XMLSEC_ERRORS_R_XML_FAILED 5
59 * XMLSEC_ERRORS_R_XSLT_FAILED:
61 * LibXSLT function failed (error subject is the failed function).
63 #define XMLSEC_ERRORS_R_XSLT_FAILED 6
66 * XMLSEC_ERRORS_R_IO_FAILED:
68 * IO operation failed.
70 #define XMLSEC_ERRORS_R_IO_FAILED 7
73 * XMLSEC_ERRORS_R_DISABLED:
75 * The feature is disabled during compilation.
76 * Check './configure --help' for details on how to
79 #define XMLSEC_ERRORS_R_DISABLED 8
82 * XMLSEC_ERRORS_R_NOT_IMPLEMENTED:
84 * Feature is not implemented.
86 #define XMLSEC_ERRORS_R_NOT_IMPLEMENTED 9
89 * XMLSEC_ERRORS_R_INVALID_SIZE:
93 #define XMLSEC_ERRORS_R_INVALID_SIZE 11
96 * XMLSEC_ERRORS_R_INVALID_DATA:
100 #define XMLSEC_ERRORS_R_INVALID_DATA 12
103 * XMLSEC_ERRORS_R_INVALID_RESULT:
107 #define XMLSEC_ERRORS_R_INVALID_RESULT 13
110 * XMLSEC_ERRORS_R_INVALID_TYPE:
114 #define XMLSEC_ERRORS_R_INVALID_TYPE 14
117 * XMLSEC_ERRORS_R_INVALID_OPERATION:
121 #define XMLSEC_ERRORS_R_INVALID_OPERATION 15
124 * XMLSEC_ERRORS_R_INVALID_STATUS:
128 #define XMLSEC_ERRORS_R_INVALID_STATUS 16
131 * XMLSEC_ERRORS_R_INVALID_FORMAT:
135 #define XMLSEC_ERRORS_R_INVALID_FORMAT 17
138 * XMLSEC_ERRORS_R_DATA_NOT_MATCH:
140 * The data do not match our expectation.
142 #define XMLSEC_ERRORS_R_DATA_NOT_MATCH 18
145 * XMLSEC_ERRORS_R_INVALID_NODE:
147 * Invalid node (error subject is the node name).
149 #define XMLSEC_ERRORS_R_INVALID_NODE 21
152 * XMLSEC_ERRORS_R_INVALID_NODE_CONTENT:
154 * Invalid node content (error subject is the node name).
156 #define XMLSEC_ERRORS_R_INVALID_NODE_CONTENT 22
159 * XMLSEC_ERRORS_R_INVALID_NODE_ATTRIBUTE:
161 * Invalid node attribute (error subject is the node name).
163 #define XMLSEC_ERRORS_R_INVALID_NODE_ATTRIBUTE 23
166 * XMLSEC_ERRORS_R_MISSING_NODE_ATTRIBUTE:
168 * Missing node attribute (error subject is the node name).
170 #define XMLSEC_ERRORS_R_MISSING_NODE_ATTRIBUTE 25
173 * XMLSEC_ERRORS_R_NODE_ALREADY_PRESENT:
175 * Node already present,
177 #define XMLSEC_ERRORS_R_NODE_ALREADY_PRESENT 26
180 * XMLSEC_ERRORS_R_UNEXPECTED_NODE:
182 * Unexpected node (error subject is the node name).
184 #define XMLSEC_ERRORS_R_UNEXPECTED_NODE 27
187 * XMLSEC_ERRORS_R_NODE_NOT_FOUND:
189 * Node not found (error subject is the required node name).
191 #define XMLSEC_ERRORS_R_NODE_NOT_FOUND 28
194 * XMLSEC_ERRORS_R_INVALID_TRANSFORM:
196 * This transform is invlaid here.
198 #define XMLSEC_ERRORS_R_INVALID_TRANSFORM 31
201 * XMLSEC_ERRORS_R_INVALID_TRANSFORM_KEY:
203 * Key is invalid for this transform.
205 #define XMLSEC_ERRORS_R_INVALID_TRANSFORM_KEY 32
208 * XMLSEC_ERRORS_R_INVALID_URI_TYPE:
212 #define XMLSEC_ERRORS_R_INVALID_URI_TYPE 33
215 * XMLSEC_ERRORS_R_TRANSFORM_SAME_DOCUMENT_REQUIRED:
217 * The transform requires the input document to be the same as context.
219 #define XMLSEC_ERRORS_R_TRANSFORM_SAME_DOCUMENT_REQUIRED 34
222 * XMLSEC_ERRORS_R_TRANSFORM_DISABLED:
224 * The transform is disabled.
226 #define XMLSEC_ERRORS_R_TRANSFORM_DISABLED 35
229 * XMLSEC_ERRORS_R_INVALID_KEY_DATA:
231 * Key data is invalid.
233 #define XMLSEC_ERRORS_R_INVALID_KEY_DATA 41
236 * XMLSEC_ERRORS_R_KEY_DATA_NOT_FOUND:
238 * Data is not found (error subject is the data name).
240 #define XMLSEC_ERRORS_R_KEY_DATA_NOT_FOUND 42
243 * XMLSEC_ERRORS_R_KEY_DATA_ALREADY_EXIST:
245 * The key data is already exist.
247 #define XMLSEC_ERRORS_R_KEY_DATA_ALREADY_EXIST 43
250 * XMLSEC_ERRORS_R_INVALID_KEY_DATA_SIZE:
254 #define XMLSEC_ERRORS_R_INVALID_KEY_DATA_SIZE 44
257 * XMLSEC_ERRORS_R_KEY_NOT_FOUND:
261 #define XMLSEC_ERRORS_R_KEY_NOT_FOUND 45
264 * XMLSEC_ERRORS_R_KEYDATA_DISABLED:
266 * The key data type disabled.
268 #define XMLSEC_ERRORS_R_KEYDATA_DISABLED 46
271 * XMLSEC_ERRORS_R_MAX_RETRIEVALS_LEVEL:
273 * Max allowed retrievals level reached.
275 #define XMLSEC_ERRORS_R_MAX_RETRIEVALS_LEVEL 51
278 * XMLSEC_ERRORS_R_MAX_RETRIEVAL_TYPE_MISMATCH:
280 * The retrieved key data type does not match the one specified
281 * in the <dsig:RetrievalMethod/> node.
283 #define XMLSEC_ERRORS_R_MAX_RETRIEVAL_TYPE_MISMATCH 52
286 * XMLSEC_ERRORS_R_MAX_ENCKEY_LEVEL:
288 * Max EncryptedKey level reached.
290 #define XMLSEC_ERRORS_R_MAX_ENCKEY_LEVEL 61
293 * XMLSEC_ERRORS_R_CERT_VERIFY_FAILED:
295 * Certificate verification failed.
297 #define XMLSEC_ERRORS_R_CERT_VERIFY_FAILED 71
300 * XMLSEC_ERRORS_R_CERT_NOT_FOUND:
302 * Requested certificate is not found.
304 #define XMLSEC_ERRORS_R_CERT_NOT_FOUND 72
307 * XMLSEC_ERRORS_R_CERT_REVOKED:
309 * The certificate is revoked.
311 #define XMLSEC_ERRORS_R_CERT_REVOKED 73
314 * XMLSEC_ERRORS_R_CERT_ISSUER_FAILED:
316 * Failed to get certificate issuer.
318 #define XMLSEC_ERRORS_R_CERT_ISSUER_FAILED 74
321 * XMLSEC_ERRORS_R_CERT_NOT_YET_VALID:
323 * "Not valid before" verification failed.
325 #define XMLSEC_ERRORS_R_CERT_NOT_YET_VALID 75
328 * XMLSEC_ERRORS_R_CERT_HAS_EXPIRED:
330 * "Not valid after" verification failed.
332 #define XMLSEC_ERRORS_R_CERT_HAS_EXPIRED 76
335 * XMLSEC_ERRORS_R_DSIG_NO_REFERENCES:
337 * The <dsig:Reference> nodes not found.
339 #define XMLSEC_ERRORS_R_DSIG_NO_REFERENCES 81
342 * XMLSEC_ERRORS_R_DSIG_INVALID_REFERENCE:
344 * The <dsig:Reference> validation failed.
346 #define XMLSEC_ERRORS_R_DSIG_INVALID_REFERENCE 82
349 * XMLSEC_ERRORS_R_ASSERTION:
353 #define XMLSEC_ERRORS_R_ASSERTION 100
356 * XMLSEC_ERRORS_MAX_NUMBER:
358 * The maximum xmlsec errors number.
360 #define XMLSEC_ERRORS_MAX_NUMBER 256
364 /*******************************************************************
368 *******************************************************************/
370 * xmlSecErrorsCallback:
371 * @file: the error location file name (__FILE__ macro).
372 * @line: the error location line number (__LINE__ macro).
373 * @func: the error location function name (__FUNCTION__ macro).
374 * @errorObject: the error specific error object
375 * @errorSubject: the error specific error subject.
376 * @reason: the error code.
377 * @msg: the additional error message.
379 * The errors reporting callback function.
381 typedef void (*xmlSecErrorsCallback) (const char* file,
384 const char* errorObject,
385 const char* errorSubject,
390 XMLSEC_EXPORT void xmlSecErrorsInit (void);
391 XMLSEC_EXPORT void xmlSecErrorsShutdown (void);
392 XMLSEC_EXPORT void xmlSecErrorsSetCallback (xmlSecErrorsCallback callback);
393 XMLSEC_EXPORT void xmlSecErrorsDefaultCallback (const char* file,
396 const char* errorObject,
397 const char* errorSubject,
400 XMLSEC_EXPORT void xmlSecErrorsDefaultCallbackEnableOutput
403 XMLSEC_EXPORT int xmlSecErrorsGetCode (xmlSecSize pos);
404 XMLSEC_EXPORT const char* xmlSecErrorsGetMsg (xmlSecSize pos);
408 /* __FUNCTION__ is defined for MSC compiler < MS VS .NET 2003 */
409 #if defined(_MSC_VER) && (_MSC_VER >= 1300)
410 #define __XMLSEC_FUNCTION__ __FUNCTION__
411 #endif /* _MSC_VER */
413 /* fallback for __FUNCTION__ */
414 #if !defined(__XMLSEC_FUNCTION__)
415 #define __XMLSEC_FUNCTION__ ""
416 #endif /*!defined(__XMLSEC_FUNCTION__) */
419 * XMLSEC_ERRORS_HERE:
421 * The macro that specifies the location (file, line and function)
422 * for the xmlSecError() function.
424 #define XMLSEC_ERRORS_HERE __FILE__,__LINE__,__XMLSEC_FUNCTION__
426 #define XMLSEC_ERRORS_PRINTF_ATTRIBUTE __attribute__ ((format (printf, 7, 8)))
428 #define XMLSEC_ERRORS_PRINTF_ATTRIBUTE
429 #endif /* __GNUC__ */
432 * xmlSecErrorsSafeString:
435 * Macro. Returns @str if it is not NULL or pointer to "NULL" otherwise.
437 #define xmlSecErrorsSafeString(str) \
438 (((str) != NULL) ? ((char*)(str)) : (char*)"NULL")
441 * XMLSEC_ERRORS_NO_MESSAGE:
443 * Empty error message " ".
445 #define XMLSEC_ERRORS_NO_MESSAGE " "
448 XMLSEC_EXPORT void xmlSecError (const char* file,
451 const char* errorObject,
452 const char* errorSubject,
454 const char* msg, ...) XMLSEC_ERRORS_PRINTF_ATTRIBUTE;
458 /**********************************************************************
462 **********************************************************************/
465 * @p: the expression.
467 * Macro. Verifies that @p is true and calls return() otherwise.
469 #define xmlSecAssert( p ) \
471 xmlSecError(XMLSEC_ERRORS_HERE, \
474 XMLSEC_ERRORS_R_ASSERTION, \
475 XMLSEC_ERRORS_NO_MESSAGE); \
481 * @p: the expression.
482 * @ret: the return value.
484 * Macro. Verifies that @p is true and calls return(@ret) otherwise.
486 #define xmlSecAssert2( p, ret ) \
488 xmlSecError(XMLSEC_ERRORS_HERE, \
491 XMLSEC_ERRORS_R_ASSERTION, \
492 XMLSEC_ERRORS_NO_MESSAGE); \
500 #endif /* __cplusplus */
502 #endif /* __XMLSEC_ERRORS_H__ */