in adapters/tlsio_wolfssl.c [967:1063]
int tlsio_wolfssl_setoption(CONCRETE_IO_HANDLE tls_io, const char* optionName, const void* value)
{
int result;
if (tls_io == NULL || optionName == NULL)
{
LogError("Bad arguments, tls_io = %p, optionName = %p", tls_io, optionName);
result = MU_FAILURE;
}
else
{
TLS_IO_INSTANCE* tls_io_instance = (TLS_IO_INSTANCE*)tls_io;
if (strcmp(OPTION_TRUSTED_CERT, optionName) == 0)
{
result = process_option(&tls_io_instance->certificate, optionName, value);
}
else if (strcmp(SU_OPTION_X509_CERT, optionName) == 0 || strcmp(OPTION_X509_ECC_CERT, optionName) == 0)
{
result = process_option(&tls_io_instance->x509certificate, optionName, value);
}
else if (strcmp(SU_OPTION_X509_PRIVATE_KEY, optionName) == 0 || strcmp(OPTION_X509_ECC_KEY, optionName) == 0)
{
result = process_option(&tls_io_instance->x509privatekey, optionName, value);
}
else if (strcmp(optionName, OPTION_SET_TLS_RENEGOTIATION) == 0)
{
// No need to do anything for WolfSSL
result = 0;
}
#ifdef INVALID_DEVID
else if (strcmp(OPTION_WOLFSSL_SET_DEVICE_ID, optionName) == 0)
{
int device_id = *((int *)value);
if (tls_io_instance->ssl != NULL && wolfSSL_SetDevId(tls_io_instance->ssl, device_id) != WOLFSSL_SUCCESS)
{
LogError("Failure setting device id on ssl");
result = MU_FAILURE;
}
else
{
// Save the device Id even if ssl object not yet created.
tls_io_instance->wolfssl_device_id = device_id;
result = 0;
}
}
#endif
else if (strcmp("ignore_host_name_check", optionName) == 0)
{
bool* server_name_check = (bool*)value;
tls_io_instance->ignore_host_name_check = *server_name_check;
result = 0;
}
#if defined(LIBWOLFSSL_VERSION_HEX) && LIBWOLFSSL_VERSION_HEX >= 0x04000000
else if (strcmp("debug_log", optionName) == 0)
{
bool* enable_debug_logging = (bool*)value;
if (enable_debug_logging)
{
if (!wolfSSL_Debugging_ON())
{
LogError("wolfSSL_Debugging_ON failed.");
result = MU_FAILURE;
}
else if (!wolfSSL_SetLoggingCb(&logging_callback))
{
LogError("wolfSSL_SetLoggingCb failed.");
result = MU_FAILURE;
}
else
{
result = 0;
}
}
else
{
LogError("tlsio WolfSSL layer does not support disabling debug_logs after they have been enabled.");
result = MU_FAILURE;
}
}
#endif // LIBWOLFSSL_VERSION_HEX >= 0x04000000
else
{
if (tls_io_instance->socket_io == NULL)
{
LogError("NULL underlying IO handle");
result = MU_FAILURE;
}
else
{
result = xio_setoption(tls_io_instance->socket_io, optionName, value);
}
}
}
return result;
}