Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
Diff: wolfcrypt/src/logging.c
- Revision:
- 4:1b0d80432c79
diff -r 6f956bdb3073 -r 1b0d80432c79 wolfcrypt/src/logging.c --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/wolfcrypt/src/logging.c Thu Apr 28 00:57:21 2016 +0000 @@ -0,0 +1,208 @@ +/* logging.c + * + * Copyright (C) 2006-2016 wolfSSL Inc. + * + * This file is part of wolfSSL. + * + * wolfSSL is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * wolfSSL is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1335, USA + */ + + +#ifdef HAVE_CONFIG_H + #include <config.h> +#endif + +#include <wolfssl/wolfcrypt/settings.h> + +/* submitted by eof */ + +#include <wolfssl/wolfcrypt/logging.h> +#include <wolfssl/wolfcrypt/error-crypt.h> + + +#ifdef __cplusplus + extern "C" { +#endif + WOLFSSL_API int wolfSSL_Debugging_ON(void); + WOLFSSL_API void wolfSSL_Debugging_OFF(void); +#ifdef __cplusplus + } +#endif + + +#ifdef DEBUG_WOLFSSL + +/* Set these to default values initially. */ +static wolfSSL_Logging_cb log_function = 0; +static int loggingEnabled = 0; + +#endif /* DEBUG_WOLFSSL */ + + +int wolfSSL_SetLoggingCb(wolfSSL_Logging_cb f) +{ +#ifdef DEBUG_WOLFSSL + int res = 0; + + if (f) + log_function = f; + else + res = BAD_FUNC_ARG; + + return res; +#else + (void)f; + return NOT_COMPILED_IN; +#endif +} + + +int wolfSSL_Debugging_ON(void) +{ +#ifdef DEBUG_WOLFSSL + loggingEnabled = 1; + return 0; +#else + return NOT_COMPILED_IN; +#endif +} + + +void wolfSSL_Debugging_OFF(void) +{ +#ifdef DEBUG_WOLFSSL + loggingEnabled = 0; +#endif +} + + +#ifdef DEBUG_WOLFSSL + +#if defined(FREESCALE_MQX) || defined(FREESCALE_KSDK_MQX) + #if MQX_USE_IO_OLD + #include <fio.h> + #else + #include <nio.h> + #endif +#else + #include <stdio.h> /* for default printf stuff */ +#endif + +#ifdef THREADX + int dc_log_printf(char*, ...); +#endif + +static void wolfssl_log(const int logLevel, const char *const logMessage) +{ + if (log_function) + log_function(logLevel, logMessage); + else { + if (loggingEnabled) { +#ifdef THREADX + dc_log_printf("%s\n", logMessage); +#elif defined(MICRIUM) + #if (NET_SECURE_MGR_CFG_EN == DEF_ENABLED) + NetSecure_TraceOut((CPU_CHAR *)logMessage); + #endif +#elif defined(WOLFSSL_MDK_ARM) + fflush(stdout) ; + printf("%s\n", logMessage); + fflush(stdout) ; +#elif defined(WOLFSSL_LOG_PRINTF) + printf("%s\n", logMessage); +#else + fprintf(stderr, "%s\n", logMessage); +#endif + } + } +} + + +void WOLFSSL_MSG(const char* msg) +{ + if (loggingEnabled) + wolfssl_log(INFO_LOG , msg); +} + + +void WOLFSSL_BUFFER(byte* buffer, word32 length) +{ + #define LINE_LEN 16 + + if (loggingEnabled) { + word32 i; + char line[80]; + + if (!buffer) { + wolfssl_log(INFO_LOG, "\tNULL"); + + return; + } + + sprintf(line, "\t"); + + for (i = 0; i < LINE_LEN; i++) { + if (i < length) + sprintf(line + 1 + i * 3,"%02x ", buffer[i]); + else + sprintf(line + 1 + i * 3, " "); + } + + sprintf(line + 1 + LINE_LEN * 3, "| "); + + for (i = 0; i < LINE_LEN; i++) + if (i < length) + sprintf(line + 3 + LINE_LEN * 3 + i, + "%c", 31 < buffer[i] && buffer[i] < 127 ? buffer[i] : '.'); + + wolfssl_log(INFO_LOG, line); + + if (length > LINE_LEN) + WOLFSSL_BUFFER(buffer + LINE_LEN, length - LINE_LEN); + } +} + + +void WOLFSSL_ENTER(const char* msg) +{ + if (loggingEnabled) { + char buffer[80]; + sprintf(buffer, "wolfSSL Entering %s", msg); + wolfssl_log(ENTER_LOG , buffer); + } +} + + +void WOLFSSL_LEAVE(const char* msg, int ret) +{ + if (loggingEnabled) { + char buffer[80]; + sprintf(buffer, "wolfSSL Leaving %s, return %d", msg, ret); + wolfssl_log(LEAVE_LOG , buffer); + } +} + + +void WOLFSSL_ERROR(int error) +{ + if (loggingEnabled) { + char buffer[80]; + sprintf(buffer, "wolfSSL error occurred, error = %d", error); + wolfssl_log(ERROR_LOG , buffer); + } +} + +#endif /* DEBUG_WOLFSSL */ +