ERR_ERROR_STRING(3) | Library Functions Manual | ERR_ERROR_STRING(3)

# NAME

`ERR_error_string`, `ERR_error_string_n`, `ERR_lib_error_string`, `ERR_func_error_string`, `ERR_reason_error_string` — obtain human-readable OpenSSL error messages

# SYNOPSIS

library “libcrypto”
`#include <openssl/err.h>`

char *
`ERR_error_string`(unsigned long e, char *buf);

void
`ERR_error_string_n`(unsigned long e, char *buf, size_t len);

const char *
`ERR_lib_error_string`(unsigned long e);

const char *
`ERR_func_error_string`(unsigned long e);

const char *
`ERR_reason_error_string`(unsigned long e);

# DESCRIPTION

`ERR_error_string`() generates a human-readable string representing the error code e and places it in buf. buf must be at least 256 bytes long. If buf is `NULL`, the error string is placed in a static buffer. Note that this function is not thread-safe and does no checks on the size of the buffer; use `ERR_error_string_n`() instead.

`ERR_error_string_n`() is a variant of `ERR_error_string`() that writes at most len characters (including the terminating NUL) and truncates the string if necessary. For `ERR_error_string_n`(), buf may not be `NULL`.

The string will have the following format:

`error:[error code]:[library name]:[function name]:[reason string]`

The error code is an 8-digit hexadecimal number. The library name, the function name, and the reason string are ASCII text.

`ERR_lib_error_string`(), `ERR_func_error_string`(), and `ERR_reason_error_string`() return the library name, the function name, and the reason string, respectively.

The OpenSSL error strings should be loaded by calling ERR_load_crypto_strings(3) or, for SSL applications, SSL_load_error_strings(3) first. If there is no text string registered for the given error code, the error string will contain the numeric code.

ERR_print_errors(3) can be used to print all error codes currently in the queue.

# RETURN VALUES

`ERR_error_string`() returns a pointer to a static buffer containing the string if buf is `NULL`, or buf otherwise.

`ERR_lib_error_string`(), `ERR_func_error_string`(), and `ERR_reason_error_string`() return the strings, or `NULL` if none is registered for the error code.

# SEE ALSO

ERR(3), ERR_get_error(3), ERR_load_crypto_strings(3), ERR_print_errors(3), SSL_load_error_strings(3)

# HISTORY

`ERR_error_string`(), `ERR_lib_error_string`(), `ERR_func_error_string`(), and `ERR_reason_error_string`() first appeared in SSLeay 0.4.4 and have been available since OpenBSD 2.4.

`ERR_error_string_n`() first appeared in OpenSSL 0.9.6 and has been available since OpenBSD 2.9.

June 8, 2025 | Debian