ENGINE_NEW(3) | Library Functions Manual | ENGINE_NEW(3)

# NAME

`ENGINE_new`, `ENGINE_free`, `ENGINE_init`, `ENGINE_finish`, `ENGINE_ctrl_cmd`, `ENGINE_ctrl_cmd_string`, `ENGINE_by_id`, `ENGINE_get_id`, `ENGINE_get_name`, `ENGINE_set_default`, `ENGINE_get_default_RSA`, `ENGINE_set_default_RSA`, `ENGINE_load_private_key`, `ENGINE_load_public_key`, `ENGINE_load_builtin_engines`, `ENGINE_load_dynamic`, `ENGINE_load_openssl`, `ENGINE_register_all_complete`, `ENGINE_cleanup` — ENGINE stub functions

# SYNOPSIS

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

ENGINE *
`ENGINE_new`(void);

int
`ENGINE_free`(ENGINE *engine);

int
`ENGINE_init`(ENGINE *engine);

int
`ENGINE_finish`(ENGINE *engine);

int
`ENGINE_ctrl_cmd`(ENGINE *engine, const char *cmd_name, long i, void *p, void (*f)(void), int cmd_optional);

int
`ENGINE_ctrl_cmd_string`(ENGINE *engine, const char *cmd_name, const char *arg, int cmd_optional);

ENGINE *
`ENGINE_by_id`(const char *id);

const char *
`ENGINE_get_id`(const ENGINE *engine);

const char *
`ENGINE_get_name`(const ENGINE *engine);

int
`ENGINE_set_default`(ENGINE *engine, unsigned int flags);

ENGINE *
`ENGINE_get_default_RSA`(ENGINE *engine);

int
`ENGINE_set_default_RSA`(ENGINE *engine);

EVP_PKEY *
`ENGINE_load_private_key`(ENGINE *engine, const char *key_id, UI_METHOD *ui_method, void *callback_data);

EVP_PKEY *
`ENGINE_load_public_key`(ENGINE *engine, const char *key_id, UI_METHOD *ui_method, void *callback_data);

void
`ENGINE_load_builtin_engines`(void);

void
`ENGINE_load_dynamic`(void);

void
`ENGINE_load_openssl`(void);

int
`ENGINE_register_all_complete`(void);

void
`ENGINE_cleanup`(void);

# DESCRIPTION

ENGINE objects used to provide alternative implementations of cryptographic algorithms, for example using specialized hardware. LibreSSL no longer supports this feature.

All functions in this manual ignore all their arguments and do nothing except return failure if possible. They are provided only to avoid patching software that expects ENGINE support to be available.

# RETURN VALUES

`ENGINE_new`(), `ENGINE_by_id`(), `ENGINE_get_default_RSA`(), `ENGINE_load_private_key`(), and `ENGINE_load_public_key`() always return `NULL`.

`ENGINE_free`(), `ENGINE_init`(), `ENGINE_finish`(), `ENGINE_ctrl_cmd`(), `ENGINE_ctrl_cmd_string`(), `ENGINE_set_default`(), `ENGINE_set_default_RSA`(), and `ENGINE_register_all_complete`() always return 0.

`ENGINE_get_id`() and `ENGINE_get_name`() always return the constant empty string.

# SEE ALSO

crypto(3)

# HISTORY

`ENGINE_new`(), `ENGINE_free`(), `ENGINE_init`(), `ENGINE_finish`(), `ENGINE_by_id`(), `ENGINE_get_id`(), `ENGINE_get_name`(), `ENGINE_set_default`(), `ENGINE_get_default_RSA`(), `ENGINE_set_default_RSA`(), `ENGINE_load_private_key`(), and `ENGINE_load_public_key`() first appeared in OpenSSL 0.9.7 and have been available since OpenBSD 2.9.

`ENGINE_ctrl_cmd`(), `ENGINE_ctrl_cmd_string`(), `ENGINE_load_builtin_engines`(), `ENGINE_load_openssl`(), `ENGINE_register_all_complete`(), and `ENGINE_cleanup`() first appeared in OpenSSL 0.9.7 and have been available since OpenBSD 3.4.

All these functions were turned into stubs in OpenBSD 7.4.

June 8, 2025 | Debian