aboutsummaryrefslogtreecommitdiff
path: root/src/supplemental/tls/wolfssl
diff options
context:
space:
mode:
authorGarrett D'Amore <garrett@damore.org>2025-06-21 18:29:24 -0700
committerGarrett D'Amore <garrett@damore.org>2025-06-21 21:11:18 -0700
commit258ae680ca0db3471bbf7345472ff92a030c13a0 (patch)
treecc0b0067a589b7f174715fad50932a3d31437bbb /src/supplemental/tls/wolfssl
parent39b86ba0a4f77ba1aa32586a782354f7505409ee (diff)
downloadnng-258ae680ca0db3471bbf7345472ff92a030c13a0.tar.gz
nng-258ae680ca0db3471bbf7345472ff92a030c13a0.tar.bz2
nng-258ae680ca0db3471bbf7345472ff92a030c13a0.zip
TLS: Remove support for dynamic engine initialization.
This saves some atomic lookups, and avoids possible races when the engine is not yet initialized or being torn down.
Diffstat (limited to 'src/supplemental/tls/wolfssl')
-rw-r--r--src/supplemental/tls/wolfssl/CMakeLists.txt2
-rw-r--r--src/supplemental/tls/wolfssl/wolfssl.c82
2 files changed, 45 insertions, 39 deletions
diff --git a/src/supplemental/tls/wolfssl/CMakeLists.txt b/src/supplemental/tls/wolfssl/CMakeLists.txt
index 7b129d9c..762757a3 100644
--- a/src/supplemental/tls/wolfssl/CMakeLists.txt
+++ b/src/supplemental/tls/wolfssl/CMakeLists.txt
@@ -69,8 +69,6 @@ if (NNG_TLS_ENGINE STREQUAL "wolf")
message(STATUS "wolfSSL configured without pre-shared key (PSK) support.")
endif()
- nng_defines(NNG_TLS_ENGINE_INIT=nng_tls_engine_init_wolf)
- nng_defines(NNG_TLS_ENGINE_FINI=nng_tls_engine_fini_wolf)
nng_defines(NNG_SUPP_TLS)
nng_defines(NNG_TLS_ENGINE_WOLFSSL)
endif ()
diff --git a/src/supplemental/tls/wolfssl/wolfssl.c b/src/supplemental/tls/wolfssl/wolfssl.c
index 3eab0ada..f7f3732e 100644
--- a/src/supplemental/tls/wolfssl/wolfssl.c
+++ b/src/supplemental/tls/wolfssl/wolfssl.c
@@ -625,38 +625,6 @@ wolf_config_version(nng_tls_engine_config *cfg, nng_tls_version min_ver,
return (0);
}
-static nng_tls_engine_config_ops wolf_config_ops = {
- .init = wolf_config_init,
- .fini = wolf_config_fini,
- .size = sizeof(nng_tls_engine_config),
- .auth = wolf_config_auth_mode,
- .ca_chain = wolf_config_ca_chain,
- .own_cert = wolf_config_own_cert,
- .server = wolf_config_server,
- .psk = wolf_config_psk,
- .version = wolf_config_version,
-};
-
-static nng_tls_engine_conn_ops wolf_conn_ops = {
- .size = sizeof(nng_tls_engine_conn),
- .init = wolf_conn_init,
- .fini = wolf_conn_fini,
- .close = wolf_conn_close,
- .recv = wolf_conn_recv,
- .send = wolf_conn_send,
- .handshake = wolf_conn_handshake,
- .verified = wolf_conn_verified,
-};
-
-static nng_tls_engine wolf_engine = {
- .version = NNG_TLS_ENGINE_VERSION,
- .config_ops = &wolf_config_ops,
- .conn_ops = &wolf_conn_ops,
- .name = "wolf",
- .description = "wolfSSL " LIBWOLFSSL_VERSION_STRING,
- .fips_mode = false, // commercial users only
-};
-
static void
wolf_logging_cb(const int level, const char *msg)
{
@@ -679,8 +647,8 @@ wolf_logging_cb(const int level, const char *msg)
}
}
-int
-nng_tls_engine_init_wolf(void)
+static nng_err
+tls_engine_init(void)
{
switch (wolfSSL_Init()) {
case WOLFSSL_SUCCESS:
@@ -694,11 +662,51 @@ nng_tls_engine_init_wolf(void)
// Uncomment for full debug (also WolfSSL needs to be a debug build)
//
// wolfSSL_Debugging_ON();
- return (nng_tls_engine_register(&wolf_engine));
+ return (NNG_OK);
}
-void
-nng_tls_engine_fini_wolf(void)
+static void
+tls_engine_fini(void)
{
(void) wolfSSL_Cleanup();
}
+
+static bool
+fips_mode(void)
+{
+ return (false); // TODO: Support FIPS mode.
+}
+
+static nng_tls_engine_config_ops wolf_config_ops = {
+ .init = wolf_config_init,
+ .fini = wolf_config_fini,
+ .size = sizeof(nng_tls_engine_config),
+ .auth = wolf_config_auth_mode,
+ .ca_chain = wolf_config_ca_chain,
+ .own_cert = wolf_config_own_cert,
+ .server = wolf_config_server,
+ .psk = wolf_config_psk,
+ .version = wolf_config_version,
+};
+
+static nng_tls_engine_conn_ops wolf_conn_ops = {
+ .size = sizeof(nng_tls_engine_conn),
+ .init = wolf_conn_init,
+ .fini = wolf_conn_fini,
+ .close = wolf_conn_close,
+ .recv = wolf_conn_recv,
+ .send = wolf_conn_send,
+ .handshake = wolf_conn_handshake,
+ .verified = wolf_conn_verified,
+};
+
+nng_tls_engine nng_tls_engine_ops = {
+ .version = NNG_TLS_ENGINE_VERSION,
+ .config_ops = &wolf_config_ops,
+ .conn_ops = &wolf_conn_ops,
+ .name = "wolf",
+ .description = "wolfSSL " LIBWOLFSSL_VERSION_STRING,
+ .init = tls_engine_init,
+ .fini = tls_engine_fini,
+ .fips_mode = fips_mode,
+};