Xuyi Wang / wolfSSL

Dependents:   OS

Committer:
wolfSSL
Date:
Sat Aug 18 22:20:43 2018 +0000
Revision:
15:117db924cf7c
wolfSSL 3.15.3

Who changed what in which revision?

UserRevisionLine numberNew contents of line
wolfSSL 15:117db924cf7c 1 /* logging.h
wolfSSL 15:117db924cf7c 2 *
wolfSSL 15:117db924cf7c 3 * Copyright (C) 2006-2017 wolfSSL Inc.
wolfSSL 15:117db924cf7c 4 *
wolfSSL 15:117db924cf7c 5 * This file is part of wolfSSL.
wolfSSL 15:117db924cf7c 6 *
wolfSSL 15:117db924cf7c 7 * wolfSSL is free software; you can redistribute it and/or modify
wolfSSL 15:117db924cf7c 8 * it under the terms of the GNU General Public License as published by
wolfSSL 15:117db924cf7c 9 * the Free Software Foundation; either version 2 of the License, or
wolfSSL 15:117db924cf7c 10 * (at your option) any later version.
wolfSSL 15:117db924cf7c 11 *
wolfSSL 15:117db924cf7c 12 * wolfSSL is distributed in the hope that it will be useful,
wolfSSL 15:117db924cf7c 13 * but WITHOUT ANY WARRANTY; without even the implied warranty of
wolfSSL 15:117db924cf7c 14 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
wolfSSL 15:117db924cf7c 15 * GNU General Public License for more details.
wolfSSL 15:117db924cf7c 16 *
wolfSSL 15:117db924cf7c 17 * You should have received a copy of the GNU General Public License
wolfSSL 15:117db924cf7c 18 * along with this program; if not, write to the Free Software
wolfSSL 15:117db924cf7c 19 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1335, USA
wolfSSL 15:117db924cf7c 20 */
wolfSSL 15:117db924cf7c 21
wolfSSL 15:117db924cf7c 22 /*!
wolfSSL 15:117db924cf7c 23 \file wolfssl/wolfcrypt/logging.h
wolfSSL 15:117db924cf7c 24 */
wolfSSL 15:117db924cf7c 25
wolfSSL 15:117db924cf7c 26
wolfSSL 15:117db924cf7c 27 /* submitted by eof */
wolfSSL 15:117db924cf7c 28
wolfSSL 15:117db924cf7c 29
wolfSSL 15:117db924cf7c 30 #ifndef WOLFSSL_LOGGING_H
wolfSSL 15:117db924cf7c 31 #define WOLFSSL_LOGGING_H
wolfSSL 15:117db924cf7c 32
wolfSSL 15:117db924cf7c 33 #include <wolfssl/wolfcrypt/types.h>
wolfSSL 15:117db924cf7c 34
wolfSSL 15:117db924cf7c 35 #ifdef __cplusplus
wolfSSL 15:117db924cf7c 36 extern "C" {
wolfSSL 15:117db924cf7c 37 #endif
wolfSSL 15:117db924cf7c 38
wolfSSL 15:117db924cf7c 39
wolfSSL 15:117db924cf7c 40 enum wc_LogLevels {
wolfSSL 15:117db924cf7c 41 ERROR_LOG = 0,
wolfSSL 15:117db924cf7c 42 INFO_LOG,
wolfSSL 15:117db924cf7c 43 ENTER_LOG,
wolfSSL 15:117db924cf7c 44 LEAVE_LOG,
wolfSSL 15:117db924cf7c 45 OTHER_LOG
wolfSSL 15:117db924cf7c 46 };
wolfSSL 15:117db924cf7c 47
wolfSSL 15:117db924cf7c 48 #ifdef WOLFSSL_FUNC_TIME
wolfSSL 15:117db924cf7c 49 /* WARNING: This code is only to be used for debugging performance.
wolfSSL 15:117db924cf7c 50 * The code is not thread-safe.
wolfSSL 15:117db924cf7c 51 * Do not use WOLFSSL_FUNC_TIME in production code.
wolfSSL 15:117db924cf7c 52 */
wolfSSL 15:117db924cf7c 53 enum wc_FuncNum {
wolfSSL 15:117db924cf7c 54 WC_FUNC_CLIENT_HELLO_SEND = 0,
wolfSSL 15:117db924cf7c 55 WC_FUNC_CLIENT_HELLO_DO,
wolfSSL 15:117db924cf7c 56 WC_FUNC_SERVER_HELLO_SEND,
wolfSSL 15:117db924cf7c 57 WC_FUNC_SERVER_HELLO_DO,
wolfSSL 15:117db924cf7c 58 WC_FUNC_ENCRYPTED_EXTENSIONS_SEND,
wolfSSL 15:117db924cf7c 59 WC_FUNC_ENCRYPTED_EXTENSIONS_DO,
wolfSSL 15:117db924cf7c 60 WC_FUNC_CERTIFICATE_REQUEST_SEND,
wolfSSL 15:117db924cf7c 61 WC_FUNC_CERTIFICATE_REQUEST_DO,
wolfSSL 15:117db924cf7c 62 WC_FUNC_CERTIFICATE_SEND,
wolfSSL 15:117db924cf7c 63 WC_FUNC_CERTIFICATE_DO,
wolfSSL 15:117db924cf7c 64 WC_FUNC_CERTIFICATE_VERIFY_SEND,
wolfSSL 15:117db924cf7c 65 WC_FUNC_CERTIFICATE_VERIFY_DO,
wolfSSL 15:117db924cf7c 66 WC_FUNC_FINISHED_SEND,
wolfSSL 15:117db924cf7c 67 WC_FUNC_FINISHED_DO,
wolfSSL 15:117db924cf7c 68 WC_FUNC_KEY_UPDATE_SEND,
wolfSSL 15:117db924cf7c 69 WC_FUNC_KEY_UPDATE_DO,
wolfSSL 15:117db924cf7c 70 WC_FUNC_EARLY_DATA_SEND,
wolfSSL 15:117db924cf7c 71 WC_FUNC_EARLY_DATA_DO,
wolfSSL 15:117db924cf7c 72 WC_FUNC_NEW_SESSION_TICKET_SEND,
wolfSSL 15:117db924cf7c 73 WC_FUNC_NEW_SESSION_TICKET_DO,
wolfSSL 15:117db924cf7c 74 WC_FUNC_SERVER_HELLO_DONE_SEND,
wolfSSL 15:117db924cf7c 75 WC_FUNC_SERVER_HELLO_DONE_DO,
wolfSSL 15:117db924cf7c 76 WC_FUNC_TICKET_SEND,
wolfSSL 15:117db924cf7c 77 WC_FUNC_TICKET_DO,
wolfSSL 15:117db924cf7c 78 WC_FUNC_CLIENT_KEY_EXCHANGE_SEND,
wolfSSL 15:117db924cf7c 79 WC_FUNC_CLIENT_KEY_EXCHANGE_DO,
wolfSSL 15:117db924cf7c 80 WC_FUNC_CERTIFICATE_STATUS_SEND,
wolfSSL 15:117db924cf7c 81 WC_FUNC_CERTIFICATE_STATUS_DO,
wolfSSL 15:117db924cf7c 82 WC_FUNC_SERVER_KEY_EXCHANGE_SEND,
wolfSSL 15:117db924cf7c 83 WC_FUNC_SERVER_KEY_EXCHANGE_DO,
wolfSSL 15:117db924cf7c 84 WC_FUNC_END_OF_EARLY_DATA_SEND,
wolfSSL 15:117db924cf7c 85 WC_FUNC_END_OF_EARLY_DATA_DO,
wolfSSL 15:117db924cf7c 86 WC_FUNC_COUNT
wolfSSL 15:117db924cf7c 87 };
wolfSSL 15:117db924cf7c 88 #endif
wolfSSL 15:117db924cf7c 89
wolfSSL 15:117db924cf7c 90 typedef void (*wolfSSL_Logging_cb)(const int logLevel,
wolfSSL 15:117db924cf7c 91 const char *const logMessage);
wolfSSL 15:117db924cf7c 92
wolfSSL 15:117db924cf7c 93 WOLFSSL_API int wolfSSL_SetLoggingCb(wolfSSL_Logging_cb log_function);
wolfSSL 15:117db924cf7c 94
wolfSSL 15:117db924cf7c 95 /* turn logging on, only if compiled in */
wolfSSL 15:117db924cf7c 96 WOLFSSL_API int wolfSSL_Debugging_ON(void);
wolfSSL 15:117db924cf7c 97 /* turn logging off */
wolfSSL 15:117db924cf7c 98 WOLFSSL_API void wolfSSL_Debugging_OFF(void);
wolfSSL 15:117db924cf7c 99
wolfSSL 15:117db924cf7c 100
wolfSSL 15:117db924cf7c 101 #if defined(OPENSSL_EXTRA) || defined(DEBUG_WOLFSSL_VERBOSE)
wolfSSL 15:117db924cf7c 102 WOLFSSL_LOCAL int wc_LoggingInit(void);
wolfSSL 15:117db924cf7c 103 WOLFSSL_LOCAL int wc_LoggingCleanup(void);
wolfSSL 15:117db924cf7c 104 WOLFSSL_LOCAL int wc_AddErrorNode(int error, int line, char* buf,
wolfSSL 15:117db924cf7c 105 char* file);
wolfSSL 15:117db924cf7c 106 WOLFSSL_LOCAL int wc_PeekErrorNode(int index, const char **file,
wolfSSL 15:117db924cf7c 107 const char **reason, int *line);
wolfSSL 15:117db924cf7c 108 WOLFSSL_LOCAL void wc_RemoveErrorNode(int index);
wolfSSL 15:117db924cf7c 109 WOLFSSL_LOCAL void wc_ClearErrorNodes(void);
wolfSSL 15:117db924cf7c 110 WOLFSSL_LOCAL int wc_PullErrorNode(const char **file, const char **reason,
wolfSSL 15:117db924cf7c 111 int *line);
wolfSSL 15:117db924cf7c 112 WOLFSSL_API int wc_SetLoggingHeap(void* h);
wolfSSL 15:117db924cf7c 113 WOLFSSL_API int wc_ERR_remove_state(void);
wolfSSL 15:117db924cf7c 114 #if !defined(NO_FILESYSTEM) && !defined(NO_STDIO_FILESYSTEM)
wolfSSL 15:117db924cf7c 115 WOLFSSL_API void wc_ERR_print_errors_fp(XFILE fp);
wolfSSL 15:117db924cf7c 116 #endif
wolfSSL 15:117db924cf7c 117 #endif /* OPENSSL_EXTRA || DEBUG_WOLFSSL_VERBOSE */
wolfSSL 15:117db924cf7c 118
wolfSSL 15:117db924cf7c 119 #ifdef WOLFSSL_FUNC_TIME
wolfSSL 15:117db924cf7c 120 /* WARNING: This code is only to be used for debugging performance.
wolfSSL 15:117db924cf7c 121 * The code is not thread-safe.
wolfSSL 15:117db924cf7c 122 * Do not use WOLFSSL_FUNC_TIME in production code.
wolfSSL 15:117db924cf7c 123 */
wolfSSL 15:117db924cf7c 124 WOLFSSL_API void WOLFSSL_START(int funcNum);
wolfSSL 15:117db924cf7c 125 WOLFSSL_API void WOLFSSL_END(int funcNum);
wolfSSL 15:117db924cf7c 126 WOLFSSL_API void WOLFSSL_TIME(int count);
wolfSSL 15:117db924cf7c 127 #else
wolfSSL 15:117db924cf7c 128 #define WOLFSSL_START(n)
wolfSSL 15:117db924cf7c 129 #define WOLFSSL_END(n)
wolfSSL 15:117db924cf7c 130 #define WOLFSSL_TIME(n)
wolfSSL 15:117db924cf7c 131 #endif
wolfSSL 15:117db924cf7c 132
wolfSSL 15:117db924cf7c 133 #if defined(DEBUG_WOLFSSL) && !defined(WOLFSSL_DEBUG_ERRORS_ONLY)
wolfSSL 15:117db924cf7c 134 #if defined(_WIN32)
wolfSSL 15:117db924cf7c 135 #if defined(INTIME_RTOS)
wolfSSL 15:117db924cf7c 136 #define __func__ NULL
wolfSSL 15:117db924cf7c 137 #else
wolfSSL 15:117db924cf7c 138 #define __func__ __FUNCTION__
wolfSSL 15:117db924cf7c 139 #endif
wolfSSL 15:117db924cf7c 140 #endif
wolfSSL 15:117db924cf7c 141
wolfSSL 15:117db924cf7c 142 /* a is prepended to m and b is appended, creating a log msg a + m + b */
wolfSSL 15:117db924cf7c 143 #define WOLFSSL_LOG_CAT(a, m, b) #a " " m " " #b
wolfSSL 15:117db924cf7c 144
wolfSSL 15:117db924cf7c 145 WOLFSSL_API void WOLFSSL_ENTER(const char* msg);
wolfSSL 15:117db924cf7c 146 WOLFSSL_API void WOLFSSL_LEAVE(const char* msg, int ret);
wolfSSL 15:117db924cf7c 147 #define WOLFSSL_STUB(m) \
wolfSSL 15:117db924cf7c 148 WOLFSSL_MSG(WOLFSSL_LOG_CAT(wolfSSL Stub, m, not implemented))
wolfSSL 15:117db924cf7c 149
wolfSSL 15:117db924cf7c 150 WOLFSSL_API void WOLFSSL_MSG(const char* msg);
wolfSSL 15:117db924cf7c 151 WOLFSSL_API void WOLFSSL_BUFFER(const byte* buffer, word32 length);
wolfSSL 15:117db924cf7c 152
wolfSSL 15:117db924cf7c 153 #else
wolfSSL 15:117db924cf7c 154
wolfSSL 15:117db924cf7c 155 #define WOLFSSL_ENTER(m)
wolfSSL 15:117db924cf7c 156 #define WOLFSSL_LEAVE(m, r)
wolfSSL 15:117db924cf7c 157 #define WOLFSSL_STUB(m)
wolfSSL 15:117db924cf7c 158
wolfSSL 15:117db924cf7c 159 #define WOLFSSL_MSG(m)
wolfSSL 15:117db924cf7c 160 #define WOLFSSL_BUFFER(b, l)
wolfSSL 15:117db924cf7c 161
wolfSSL 15:117db924cf7c 162 #endif /* DEBUG_WOLFSSL && !WOLFSSL_DEBUG_ERRORS_ONLY */
wolfSSL 15:117db924cf7c 163
wolfSSL 15:117db924cf7c 164 #if defined(DEBUG_WOLFSSL) || defined(OPENSSL_ALL) || defined(WOLFSSL_NGINX) || defined(WOLFSSL_HAPROXY)
wolfSSL 15:117db924cf7c 165
wolfSSL 15:117db924cf7c 166 #if defined(OPENSSL_EXTRA) || defined(DEBUG_WOLFSSL_VERBOSE)
wolfSSL 15:117db924cf7c 167 WOLFSSL_API void WOLFSSL_ERROR_LINE(int err, const char* func, unsigned int line,
wolfSSL 15:117db924cf7c 168 const char* file, void* ctx);
wolfSSL 15:117db924cf7c 169 #define WOLFSSL_ERROR(x) \
wolfSSL 15:117db924cf7c 170 WOLFSSL_ERROR_LINE((x), __func__, __LINE__, __FILE__, NULL)
wolfSSL 15:117db924cf7c 171 #else
wolfSSL 15:117db924cf7c 172 WOLFSSL_API void WOLFSSL_ERROR(int err);
wolfSSL 15:117db924cf7c 173 #endif
wolfSSL 15:117db924cf7c 174 WOLFSSL_API void WOLFSSL_ERROR_MSG(const char* msg);
wolfSSL 15:117db924cf7c 175
wolfSSL 15:117db924cf7c 176 #else
wolfSSL 15:117db924cf7c 177 #define WOLFSSL_ERROR(e)
wolfSSL 15:117db924cf7c 178 #define WOLFSSL_ERROR_MSG(m)
wolfSSL 15:117db924cf7c 179 #endif
wolfSSL 15:117db924cf7c 180
wolfSSL 15:117db924cf7c 181 #ifdef __cplusplus
wolfSSL 15:117db924cf7c 182 }
wolfSSL 15:117db924cf7c 183 #endif
wolfSSL 15:117db924cf7c 184 #endif /* WOLFSSL_LOGGING_H */
wolfSSL 15:117db924cf7c 185
wolfSSL 15:117db924cf7c 186