# Error Reporting
**API Group:** `xmlsec_core_errors`
Error codes and error-reporting functions.
Error reporting and logging functions.
## Macros
### `XMLSEC_ERRORS_R_XMLSEC_FAILED`
*Defined as:* `1`
*Source:* [include/xmlsec/errors.h](https://github.com/lsh123/xmlsec/blob/1.3.11/include/xmlsec/errors.h#L25)
An XMLSec function failed.
---
### `XMLSEC_ERRORS_R_MALLOC_FAILED`
*Defined as:* `2`
*Source:* [include/xmlsec/errors.h](https://github.com/lsh123/xmlsec/blob/1.3.11/include/xmlsec/errors.h#L30)
Failed to allocate memory error.
---
### `XMLSEC_ERRORS_R_STRDUP_FAILED`
*Defined as:* `3`
*Source:* [include/xmlsec/errors.h](https://github.com/lsh123/xmlsec/blob/1.3.11/include/xmlsec/errors.h#L35)
Failed to duplicate string error.
---
### `XMLSEC_ERRORS_R_CRYPTO_FAILED`
*Defined as:* `4`
*Source:* [include/xmlsec/errors.h](https://github.com/lsh123/xmlsec/blob/1.3.11/include/xmlsec/errors.h#L40)
Crypto (e.g. OpenSSL) function failed.
---
### `XMLSEC_ERRORS_R_XML_FAILED`
*Defined as:* `5`
*Source:* [include/xmlsec/errors.h](https://github.com/lsh123/xmlsec/blob/1.3.11/include/xmlsec/errors.h#L45)
LibXML function failed.
---
### `XMLSEC_ERRORS_R_XSLT_FAILED`
*Defined as:* `6`
*Source:* [include/xmlsec/errors.h](https://github.com/lsh123/xmlsec/blob/1.3.11/include/xmlsec/errors.h#L50)
LibXSLT function failed.
---
### `XMLSEC_ERRORS_R_IO_FAILED`
*Defined as:* `7`
*Source:* [include/xmlsec/errors.h](https://github.com/lsh123/xmlsec/blob/1.3.11/include/xmlsec/errors.h#L55)
IO operation failed.
---
### `XMLSEC_ERRORS_R_DISABLED`
*Defined as:* `8`
*Source:* [include/xmlsec/errors.h](https://github.com/lsh123/xmlsec/blob/1.3.11/include/xmlsec/errors.h#L61)
The feature is disabled during compilation.
The feature is disabled during compilation. Check './configure –help' for details on how to enable it.
---
### `XMLSEC_ERRORS_R_NOT_IMPLEMENTED`
*Defined as:* `9`
*Source:* [include/xmlsec/errors.h](https://github.com/lsh123/xmlsec/blob/1.3.11/include/xmlsec/errors.h#L66)
Feature is not implemented.
---
### `XMLSEC_ERRORS_R_INVALID_CONFIG`
*Defined as:* `10`
*Source:* [include/xmlsec/errors.h](https://github.com/lsh123/xmlsec/blob/1.3.11/include/xmlsec/errors.h#L71)
The configuration is invalid.
---
### `XMLSEC_ERRORS_R_INVALID_SIZE`
*Defined as:* `11`
*Source:* [include/xmlsec/errors.h](https://github.com/lsh123/xmlsec/blob/1.3.11/include/xmlsec/errors.h#L76)
Invalid size.
---
### `XMLSEC_ERRORS_R_INVALID_DATA`
*Defined as:* `12`
*Source:* [include/xmlsec/errors.h](https://github.com/lsh123/xmlsec/blob/1.3.11/include/xmlsec/errors.h#L81)
Invalid data.
---
### `XMLSEC_ERRORS_R_INVALID_RESULT`
*Defined as:* `13`
*Source:* [include/xmlsec/errors.h](https://github.com/lsh123/xmlsec/blob/1.3.11/include/xmlsec/errors.h#L86)
Invalid result.
---
### `XMLSEC_ERRORS_R_INVALID_TYPE`
*Defined as:* `14`
*Source:* [include/xmlsec/errors.h](https://github.com/lsh123/xmlsec/blob/1.3.11/include/xmlsec/errors.h#L91)
Invalid type.
---
### `XMLSEC_ERRORS_R_INVALID_OPERATION`
*Defined as:* `15`
*Source:* [include/xmlsec/errors.h](https://github.com/lsh123/xmlsec/blob/1.3.11/include/xmlsec/errors.h#L96)
Invalid operation.
---
### `XMLSEC_ERRORS_R_INVALID_STATUS`
*Defined as:* `16`
*Source:* [include/xmlsec/errors.h](https://github.com/lsh123/xmlsec/blob/1.3.11/include/xmlsec/errors.h#L101)
Invalid status.
---
### `XMLSEC_ERRORS_R_INVALID_FORMAT`
*Defined as:* `17`
*Source:* [include/xmlsec/errors.h](https://github.com/lsh123/xmlsec/blob/1.3.11/include/xmlsec/errors.h#L106)
Invalid format.
---
### `XMLSEC_ERRORS_R_DATA_NOT_MATCH`
*Defined as:* `18`
*Source:* [include/xmlsec/errors.h](https://github.com/lsh123/xmlsec/blob/1.3.11/include/xmlsec/errors.h#L111)
The data do not match our expectation.
---
### `XMLSEC_ERRORS_R_INVALID_VERSION`
*Defined as:* `19`
*Source:* [include/xmlsec/errors.h](https://github.com/lsh123/xmlsec/blob/1.3.11/include/xmlsec/errors.h#L116)
Version mismatch.
---
### `XMLSEC_ERRORS_R_INVALID_NODE`
*Defined as:* `21`
*Source:* [include/xmlsec/errors.h](https://github.com/lsh123/xmlsec/blob/1.3.11/include/xmlsec/errors.h#L121)
Invalid node.
---
### `XMLSEC_ERRORS_R_INVALID_NODE_CONTENT`
*Defined as:* `22`
*Source:* [include/xmlsec/errors.h](https://github.com/lsh123/xmlsec/blob/1.3.11/include/xmlsec/errors.h#L126)
Invalid node content.
---
### `XMLSEC_ERRORS_R_INVALID_NODE_ATTRIBUTE`
*Defined as:* `23`
*Source:* [include/xmlsec/errors.h](https://github.com/lsh123/xmlsec/blob/1.3.11/include/xmlsec/errors.h#L131)
Invalid node attribute.
---
### `XMLSEC_ERRORS_R_MISSING_NODE_ATTRIBUTE`
*Defined as:* `25`
*Source:* [include/xmlsec/errors.h](https://github.com/lsh123/xmlsec/blob/1.3.11/include/xmlsec/errors.h#L136)
Missing node attribute.
---
### `XMLSEC_ERRORS_R_NODE_ALREADY_PRESENT`
*Defined as:* `26`
*Source:* [include/xmlsec/errors.h](https://github.com/lsh123/xmlsec/blob/1.3.11/include/xmlsec/errors.h#L141)
Node already present.
---
### `XMLSEC_ERRORS_R_UNEXPECTED_NODE`
*Defined as:* `27`
*Source:* [include/xmlsec/errors.h](https://github.com/lsh123/xmlsec/blob/1.3.11/include/xmlsec/errors.h#L146)
Unexpected node.
---
### `XMLSEC_ERRORS_R_NODE_NOT_FOUND`
*Defined as:* `28`
*Source:* [include/xmlsec/errors.h](https://github.com/lsh123/xmlsec/blob/1.3.11/include/xmlsec/errors.h#L151)
Node not found.
---
### `XMLSEC_ERRORS_R_INVALID_TRANSFORM`
*Defined as:* `31`
*Source:* [include/xmlsec/errors.h](https://github.com/lsh123/xmlsec/blob/1.3.11/include/xmlsec/errors.h#L156)
This transform is invalid.
---
### `XMLSEC_ERRORS_R_INVALID_TRANSFORM_KEY`
*Defined as:* `32`
*Source:* [include/xmlsec/errors.h](https://github.com/lsh123/xmlsec/blob/1.3.11/include/xmlsec/errors.h#L161)
Key is invalid for this transform.
---
### `XMLSEC_ERRORS_R_INVALID_URI_TYPE`
*Defined as:* `33`
*Source:* [include/xmlsec/errors.h](https://github.com/lsh123/xmlsec/blob/1.3.11/include/xmlsec/errors.h#L166)
Invalid URI type.
---
### `XMLSEC_ERRORS_R_TRANSFORM_SAME_DOCUMENT_REQUIRED`
*Defined as:* `34`
*Source:* [include/xmlsec/errors.h](https://github.com/lsh123/xmlsec/blob/1.3.11/include/xmlsec/errors.h#L172)
The transform requires the same document as context.
The transform requires the input document to be the same as context.
---
### `XMLSEC_ERRORS_R_TRANSFORM_DISABLED`
*Defined as:* `35`
*Source:* [include/xmlsec/errors.h](https://github.com/lsh123/xmlsec/blob/1.3.11/include/xmlsec/errors.h#L177)
The transform is disabled.
---
### `XMLSEC_ERRORS_R_INVALID_ALGORITHM`
*Defined as:* `36`
*Source:* [include/xmlsec/errors.h](https://github.com/lsh123/xmlsec/blob/1.3.11/include/xmlsec/errors.h#L182)
Invalid or unsupported algorithm.
---
### `XMLSEC_ERRORS_R_INVALID_KEY_DATA`
*Defined as:* `41`
*Source:* [include/xmlsec/errors.h](https://github.com/lsh123/xmlsec/blob/1.3.11/include/xmlsec/errors.h#L187)
Key data is invalid.
---
### `XMLSEC_ERRORS_R_KEY_DATA_NOT_FOUND`
*Defined as:* `42`
*Source:* [include/xmlsec/errors.h](https://github.com/lsh123/xmlsec/blob/1.3.11/include/xmlsec/errors.h#L192)
Key data is not found.
---
### `XMLSEC_ERRORS_R_KEY_DATA_ALREADY_EXIST`
*Defined as:* `43`
*Source:* [include/xmlsec/errors.h](https://github.com/lsh123/xmlsec/blob/1.3.11/include/xmlsec/errors.h#L197)
The key data already exists.
---
### `XMLSEC_ERRORS_R_INVALID_KEY_DATA_SIZE`
*Defined as:* `44`
*Source:* [include/xmlsec/errors.h](https://github.com/lsh123/xmlsec/blob/1.3.11/include/xmlsec/errors.h#L202)
Invalid key size.
---
### `XMLSEC_ERRORS_R_KEY_NOT_FOUND`
*Defined as:* `45`
*Source:* [include/xmlsec/errors.h](https://github.com/lsh123/xmlsec/blob/1.3.11/include/xmlsec/errors.h#L207)
Key not found.
---
### `XMLSEC_ERRORS_R_KEYDATA_DISABLED`
*Defined as:* `46`
*Source:* [include/xmlsec/errors.h](https://github.com/lsh123/xmlsec/blob/1.3.11/include/xmlsec/errors.h#L212)
The key data type is disabled.
---
### `XMLSEC_ERRORS_R_MAX_RETRIEVALS_LEVEL`
*Defined as:* `51`
*Source:* [include/xmlsec/errors.h](https://github.com/lsh123/xmlsec/blob/1.3.11/include/xmlsec/errors.h#L217)
Max allowed retrievals level reached.
---
### `XMLSEC_ERRORS_R_MAX_RETRIEVAL_TYPE_MISMATCH`
*Defined as:* `52`
*Source:* [include/xmlsec/errors.h](https://github.com/lsh123/xmlsec/blob/1.3.11/include/xmlsec/errors.h#L223)
Key data type mismatch in dsig:RetrievalMethod node.
The retrieved key data type does not match the one specified in the node.
---
### `XMLSEC_ERRORS_R_MAX_KEYINFOREFERENCE_LEVEL`
*Defined as:* `51`
*Source:* [include/xmlsec/errors.h](https://github.com/lsh123/xmlsec/blob/1.3.11/include/xmlsec/errors.h#L228)
Max allowed KeyInfoReference level reached.
---
### `XMLSEC_ERRORS_R_MAX_ENCKEY_LEVEL`
*Defined as:* `61`
*Source:* [include/xmlsec/errors.h](https://github.com/lsh123/xmlsec/blob/1.3.11/include/xmlsec/errors.h#L233)
Max EncryptedKey level reached.
---
### `XMLSEC_ERRORS_R_CERT_VERIFY_FAILED`
*Defined as:* `71`
*Source:* [include/xmlsec/errors.h](https://github.com/lsh123/xmlsec/blob/1.3.11/include/xmlsec/errors.h#L238)
Certificate verification failed.
---
### `XMLSEC_ERRORS_R_CERT_NOT_FOUND`
*Defined as:* `72`
*Source:* [include/xmlsec/errors.h](https://github.com/lsh123/xmlsec/blob/1.3.11/include/xmlsec/errors.h#L243)
Requested certificate is not found.
---
### `XMLSEC_ERRORS_R_CERT_REVOKED`
*Defined as:* `73`
*Source:* [include/xmlsec/errors.h](https://github.com/lsh123/xmlsec/blob/1.3.11/include/xmlsec/errors.h#L248)
The certificate is revoked.
---
### `XMLSEC_ERRORS_R_CERT_ISSUER_FAILED`
*Defined as:* `74`
*Source:* [include/xmlsec/errors.h](https://github.com/lsh123/xmlsec/blob/1.3.11/include/xmlsec/errors.h#L253)
Failed to get certificate issuer.
---
### `XMLSEC_ERRORS_R_CERT_NOT_YET_VALID`
*Defined as:* `75`
*Source:* [include/xmlsec/errors.h](https://github.com/lsh123/xmlsec/blob/1.3.11/include/xmlsec/errors.h#L258)
"Not valid before" verification failed.
---
### `XMLSEC_ERRORS_R_CERT_HAS_EXPIRED`
*Defined as:* `76`
*Source:* [include/xmlsec/errors.h](https://github.com/lsh123/xmlsec/blob/1.3.11/include/xmlsec/errors.h#L263)
"Not valid after" verification failed.
---
### `XMLSEC_ERRORS_R_CRL_VERIFY_FAILED`
*Defined as:* `77`
*Source:* [include/xmlsec/errors.h](https://github.com/lsh123/xmlsec/blob/1.3.11/include/xmlsec/errors.h#L268)
CRL verification failed.
---
### `XMLSEC_ERRORS_R_CRL_NOT_YET_VALID`
*Defined as:* `78`
*Source:* [include/xmlsec/errors.h](https://github.com/lsh123/xmlsec/blob/1.3.11/include/xmlsec/errors.h#L273)
"Last update" CRL verification failed.
---
### `XMLSEC_ERRORS_R_CRL_HAS_EXPIRED`
*Defined as:* `79`
*Source:* [include/xmlsec/errors.h](https://github.com/lsh123/xmlsec/blob/1.3.11/include/xmlsec/errors.h#L278)
"Next update" verification failed.
---
### `XMLSEC_ERRORS_R_DSIG_NO_REFERENCES`
*Defined as:* `81`
*Source:* [include/xmlsec/errors.h](https://github.com/lsh123/xmlsec/blob/1.3.11/include/xmlsec/errors.h#L283)
The nodes not found.
---
### `XMLSEC_ERRORS_R_DSIG_INVALID_REFERENCE`
*Defined as:* `82`
*Source:* [include/xmlsec/errors.h](https://github.com/lsh123/xmlsec/blob/1.3.11/include/xmlsec/errors.h#L288)
The validation failed.
---
### `XMLSEC_ERRORS_R_ASSERTION`
*Defined as:* `100`
*Source:* [include/xmlsec/errors.h](https://github.com/lsh123/xmlsec/blob/1.3.11/include/xmlsec/errors.h#L293)
Invalid assertion.
---
### `XMLSEC_ERROR_R_CAST_IMPOSSIBLE`
*Defined as:* `101`
*Source:* [include/xmlsec/errors.h](https://github.com/lsh123/xmlsec/blob/1.3.11/include/xmlsec/errors.h#L298)
Impossible to cast from one type to another.
---
### `XMLSEC_ERRORS_MAX_NUMBER`
*Defined as:* `256`
*Source:* [include/xmlsec/errors.h](https://github.com/lsh123/xmlsec/blob/1.3.11/include/xmlsec/errors.h#L303)
The maximum xmlsec errors number.
---
### `__XMLSEC_FUNCTION__`
*Defined as:* `__func__`
*Source:* [include/xmlsec/errors.h](https://github.com/lsh123/xmlsec/blob/1.3.11/include/xmlsec/errors.h#L360)
The current function name (compiler-specific).
---
### `XMLSEC_ERRORS_HERE`
*Defined as:* `__FILE__,__LINE__,__XMLSEC_FUNCTION__`
*Source:* [include/xmlsec/errors.h](https://github.com/lsh123/xmlsec/blob/1.3.11/include/xmlsec/errors.h#L373)
The macro specifying the error location (file, line, function) for `xmlSecError()`.
defined(**XMLSEC_FUNCTION**)
The macro that specifies the location (file, line and function) for the `xmlSecError()` function.
---
### `XMLSEC_ERRORS_PRINTF_ATTRIBUTE`
*Defined as:* `__attribute__ ((format (printf, 7, 8)))`
*Source:* [include/xmlsec/errors.h](https://github.com/lsh123/xmlsec/blob/1.3.11/include/xmlsec/errors.h#L379)
Printf-style format-string attribute for `xmlSecError()` (GCC/Clang only).
Printf-style format-string attribute for the `xmlSecError()` function (GCC/Clang only; empty on other compilers).
---
### `xmlSecErrorsSafeString`
*Defined as:* `(((str) != NULL) ? ((const char*)(str)) : (const char*)"NULL")`
*Source:* [include/xmlsec/errors.h](https://github.com/lsh123/xmlsec/blob/1.3.11/include/xmlsec/errors.h#L388)
Macro. Returns `str` if it is not NULL or pointer to "NULL" otherwise.
**Parameters:**
- `str` — the string.
---
### `XMLSEC_ERRORS_NO_MESSAGE`
*Defined as:* `" "`
*Source:* [include/xmlsec/errors.h](https://github.com/lsh123/xmlsec/blob/1.3.11/include/xmlsec/errors.h#L394)
Empty error message " ".
---
### `xmlSecAssert`
*Defined as:* `if(!( p ) ) { \
xmlSecError(XMLSEC_ERRORS_HERE, \
NULL, \
#p, \
XMLSEC_ERRORS_R_ASSERTION, \
XMLSEC_ERRORS_NO_MESSAGE); \
return; \
}`
*Source:* [include/xmlsec/errors.h](https://github.com/lsh123/xmlsec/blob/1.3.11/include/xmlsec/errors.h#L414)
Macro. Verifies that `is` true and calls return() otherwise.
**Parameters:**
- `p` — the expression.
---
### `xmlSecAssert2`
*Defined as:* `if(!( p ) ) { \
xmlSecError(XMLSEC_ERRORS_HERE, \
NULL, \
#p, \
XMLSEC_ERRORS_R_ASSERTION, \
XMLSEC_ERRORS_NO_MESSAGE); \
return(ret); \
}`
*Source:* [include/xmlsec/errors.h](https://github.com/lsh123/xmlsec/blob/1.3.11/include/xmlsec/errors.h#L429)
Macro. Verifies that `is` true and calls return(`ret`) otherwise.
**Parameters:**
- `p` — the expression.
- `ret` — the return value.
---
## Typedefs
### `xmlSecErrorsCallback`
```c
typedef void(* xmlSecErrorsCallback) (const char *file, int line, const char *func, const char *errorObject, const char *errorSubject, int reason, const char *msg))(const char *file, int line, const char *func, const char *errorObject, const char *errorSubject, int reason, const char *msg);
```
*Source:* [include/xmlsec/errors.h](https://github.com/lsh123/xmlsec/blob/1.3.11/include/xmlsec/errors.h#L321)
The errors reporting callback function.
**Parameters:**
- `line` — the error location line number (**LINE** macro).
- `func` — the error location function name (**func** macro).
- `errorObject` — the error specific error object (e.g. transform, key data, etc).
- `errorSubject` — the error specific error subject.
- `reason` — the error code.
- `msg` — the additional error message.
---
## Functions
### `xmlSecErrorsInit`
```c
void xmlSecErrorsInit(void);
```
*Source:* [include/xmlsec/errors.h](https://github.com/lsh123/xmlsec/blob/1.3.11/include/xmlsec/errors.h#L330)
Initializes the errors reporting.
Initializes the errors reporting. It is called from `xmlSecInit` function. and applications must not call this function directly.
---
### `xmlSecErrorsShutdown`
```c
void xmlSecErrorsShutdown(void);
```
*Source:* [include/xmlsec/errors.h](https://github.com/lsh123/xmlsec/blob/1.3.11/include/xmlsec/errors.h#L331)
Cleanups the errors reporting.
Cleanups the errors reporting. It is called from `xmlSecShutdown` function. and applications must not call this function directly.
---
### `xmlSecErrorsSetCallback`
```c
void xmlSecErrorsSetCallback(xmlSecErrorsCallback callback);
```
*Source:* [include/xmlsec/errors.h](https://github.com/lsh123/xmlsec/blob/1.3.11/include/xmlsec/errors.h#L332)
Sets the errors callback function.
Sets the errors callback function to `callback` that will be called every time an error occurs.
**Parameters:**
- `callback` — the new errors callback function.
---
### `xmlSecErrorsDefaultCallback`
```c
void xmlSecErrorsDefaultCallback(const char *file, int line, const char *func, const char *errorObject, const char *errorSubject, int reason, const char *msg);
```
*Source:* [include/xmlsec/errors.h](https://github.com/lsh123/xmlsec/blob/1.3.11/include/xmlsec/errors.h#L333)
The default error reporting callback using LibXML.
The default error reporting callback that utilizes LibXML error reporting xmlGenericError function.
**Parameters:**
- `file` — the error location file name (**FILE** macro).
- `line` — the error location line number (**LINE** macro).
- `func` — the error location function name (**FUNCTION** macro).
- `errorObject` — the error specific error object
- `errorSubject` — the error specific error subject.
- `reason` — the error code.S
- `msg` — the additional error message.
---
### `xmlSecErrorsDefaultCallbackEnableOutput`
```c
void xmlSecErrorsDefaultCallbackEnableOutput(int enabled);
```
*Source:* [include/xmlsec/errors.h](https://github.com/lsh123/xmlsec/blob/1.3.11/include/xmlsec/errors.h#L340)
Enables or disables output from the default errors callback.
Enables or disables calling LibXML2 callback from the default errors callback.
**Parameters:**
- `enabled` — the flag.
---
### `xmlSecErrorsGetCode`
```c
int xmlSecErrorsGetCode(xmlSecSize pos);
```
*Source:* [include/xmlsec/errors.h](https://github.com/lsh123/xmlsec/blob/1.3.11/include/xmlsec/errors.h#L343)
Gets the known error code at position `pos`.
**Parameters:**
- `pos` — the error position.
**Returns:** the known error code or 0 if `pos` is greater than total number of known error codes.
---
### `xmlSecErrorsGetMsg`
```c
const char * xmlSecErrorsGetMsg(xmlSecSize pos);
```
*Source:* [include/xmlsec/errors.h](https://github.com/lsh123/xmlsec/blob/1.3.11/include/xmlsec/errors.h#L344)
Gets the known error message at position `pos`.
**Parameters:**
- `pos` — the error position.
**Returns:** the known error message or NULL if `pos` is greater than total number of known error codes.
---
### `xmlSecErrorsPrintCryptoLibraryLogOnExitSet`
```c
void xmlSecErrorsPrintCryptoLibraryLogOnExitSet(int enabled);
```
*Source:* [include/xmlsec/errors.h](https://github.com/lsh123/xmlsec/blob/1.3.11/include/xmlsec/errors.h#L347)
Enables or disables the crypto library error log dump on exit.
Enables or disables the crypto library error log dump on exit (only supported by OpenSSL).
**Parameters:**
- `enabled` — the flag
---
### `xmlSecError`
```c
void xmlSecError(const char *file, int line, const char *func, const char *errorObject, const char *errorSubject, int reason, const char *msg,...) XMLSEC_ERRORS_PRINTF_ATTRIBUTE;
```
*Source:* [include/xmlsec/errors.h](https://github.com/lsh123/xmlsec/blob/1.3.11/include/xmlsec/errors.h#L397)
Reports an error to the error callback.
Reports an error to the default (`xmlSecErrorsDefaultCallback`) or application specific callback installed using `xmlSecErrorsSetCallback` function.
**Parameters:**
- `file` — the error location filename (**FILE**).
- `line` — the error location line number (**LINE**).
- `func` — the error location function (**FUNCTION**).
- `errorObject` — the error specific error object (e.g. transform, key data, etc).
- `errorSubject` — the error specific error subject (e.g. failed function name).
- `reason` — the error code.
- `msg` — the error message in printf format.
- `...` — the parameters for the `msg`.
---