21
21
22
22
#include <wolfssl/wolfcrypt/libwolfssl_sources.h>
23
23
24
+ /*
25
+ * Display debug messages: wolfSSL_Debugging_ON();
26
+ * Turn off debug messages: wolfSSL_Debugging_OFF();
27
+ *
28
+ * #define WOLFSSL_DEBUG_CERTS
29
+ * Define to enable cert-related diagnostic messages.
30
+ * Enabled automatically with DEBUG_WOLFSSL but can be use separately.
31
+ *
32
+ * Optional user callbacks:
33
+ * wolfSSL_SetLoggingCb(my_log_cb);
34
+ */
35
+
24
36
#if defined(OPENSSL_EXTRA ) && !defined(WOLFCRYPT_ONLY )
25
37
/* avoid adding WANT_READ and WANT_WRITE to error queue */
26
38
#include <wolfssl/error-ssl.h>
@@ -115,7 +127,7 @@ THREAD_LS_T void *StackSizeCheck_stackOffsetPointer = 0;
115
127
116
128
#endif /* HAVE_STACK_SIZE_VERBOSE */
117
129
118
- #ifdef DEBUG_WOLFSSL
130
+ #if defined( DEBUG_WOLFSSL ) || defined( WOLFSSL_DEBUG_CERTS )
119
131
120
132
/* Set these to default values initially. */
121
133
static wolfSSL_Logging_cb log_function = NULL ;
@@ -178,7 +190,7 @@ void wolfSSL_Debugging_OFF(void)
178
190
179
191
WOLFSSL_API void wolfSSL_SetLoggingPrefix (const char * prefix )
180
192
{
181
- #ifdef DEBUG_WOLFSSL
193
+ #if defined( DEBUG_WOLFSSL ) || defined( WOLFSSL_DEBUG_CERTS )
182
194
log_prefix = prefix ;
183
195
#else
184
196
(void )prefix ;
@@ -228,7 +240,7 @@ void WOLFSSL_TIME(int count)
228
240
}
229
241
#endif
230
242
231
- #ifdef DEBUG_WOLFSSL
243
+ #if defined( DEBUG_WOLFSSL ) || defined( WOLFSSL_DEBUG_CERTS )
232
244
233
245
234
246
#ifdef HAVE_STACK_SIZE_VERBOSE
@@ -248,24 +260,33 @@ static void wolfssl_log(const int logLevel, const char* const file_name,
248
260
#elif defined(WOLFSSL_DEBUG_PRINTF_FN )
249
261
#ifdef WOLFSSL_MDK_ARM
250
262
fflush (stdout );
263
+ #endif
264
+ /* see settings.h for platform-specific line endings */
265
+ #ifndef WOLFSSL_DEBUG_LINE_ENDING
266
+ #define WOLFSSL_DEBUG_LINE_ENDING "\n"
251
267
#endif
252
268
if (log_prefix != NULL ) {
253
- if (file_name != NULL )
269
+ if (file_name != NULL ) {
254
270
WOLFSSL_DEBUG_PRINTF_FN (WOLFSSL_DEBUG_PRINTF_FIRST_ARGS
255
- "[%s]: [%s L %d] %s\n" ,
271
+ "[%s]: [%s L %d] %s" WOLFSSL_DEBUG_LINE_ENDING ,
256
272
log_prefix , file_name , line_number , logMessage );
257
- else
273
+ }
274
+ else {
258
275
WOLFSSL_DEBUG_PRINTF_FN (WOLFSSL_DEBUG_PRINTF_FIRST_ARGS
259
- "[%s]: %s\n" , log_prefix , logMessage );
260
- } else {
261
- if (file_name != NULL )
276
+ "[%s]: %s" WOLFSSL_DEBUG_LINE_ENDING , log_prefix , logMessage );
277
+ } /* file_name check */
278
+ }
279
+ else {
280
+ if (file_name != NULL ) {
262
281
WOLFSSL_DEBUG_PRINTF_FN (WOLFSSL_DEBUG_PRINTF_FIRST_ARGS
263
- "[%s L %d] %s\n" ,
282
+ "[%s L %d] %s" WOLFSSL_DEBUG_LINE_ENDING ,
264
283
file_name , line_number , logMessage );
265
- else
284
+ }
285
+ else {
266
286
WOLFSSL_DEBUG_PRINTF_FN (WOLFSSL_DEBUG_PRINTF_FIRST_ARGS
267
- "%s\n" , logMessage );
268
- }
287
+ "%s" WOLFSSL_DEBUG_LINE_ENDING , logMessage );
288
+ } /* file_name check */
289
+ } /* log_prefix check */
269
290
#ifdef WOLFSSL_MDK_ARM
270
291
fflush (stdout );
271
292
#endif
@@ -287,10 +308,14 @@ static void wolfssl_log(const int logLevel, const char* const file_name,
287
308
288
309
#if defined(XVSNPRINTF ) && !defined(NO_WOLFSSL_MSG_EX )
289
310
#include <stdarg.h> /* for var args */
311
+
290
312
#ifndef WOLFSSL_MSG_EX_BUF_SZ
291
313
#define WOLFSSL_MSG_EX_BUF_SZ 100
292
314
#endif
315
+
293
316
#undef WOLFSSL_MSG_EX /* undo WOLFSSL_DEBUG_CODEPOINTS wrapper */
317
+
318
+ #ifndef WOLFSSL_MSG_EX_DO_NOTHING
294
319
#ifdef __clang__
295
320
/* tell clang argument 1 is format */
296
321
__attribute__((__format__ (__printf__ , 1 , 0 )))
@@ -308,6 +333,7 @@ void WOLFSSL_MSG_EX(const char* fmt, ...)
308
333
wolfssl_log (INFO_LOG , NULL , 0 , msg );
309
334
}
310
335
}
336
+ #endif
311
337
312
338
#ifdef WOLFSSL_DEBUG_CODEPOINTS
313
339
void WOLFSSL_MSG_EX2 (const char * file , int line , const char * fmt , ...)
@@ -323,16 +349,34 @@ void WOLFSSL_MSG_EX2(const char *file, int line, const char* fmt, ...)
323
349
wolfssl_log (INFO_LOG , file , line , msg );
324
350
}
325
351
}
326
- #endif
352
+ #endif /* WOLFSSL_DEBUG_CODEPOINTS */
327
353
328
- #endif
354
+ #if defined(DEBUG_WOLFSSL ) || defined(WOLFSSL_DEBUG_CERTS )
355
+ void WOLFSSL_MSG_CERT (const char * fmt , ...)
356
+ {
357
+ /* Always show cert debug messages, even with loggingEnabled == 0 */
358
+ char msg [WOLFSSL_MSG_EX_BUF_SZ ];
359
+ int written ;
360
+ va_list args ;
361
+ va_start (args , fmt );
362
+ written = XVSNPRINTF (msg , sizeof (msg ), fmt , args );
363
+ va_end (args );
364
+ if (written > 0 ) {
365
+ wolfssl_log (CERT_LOG , NULL , 0 , msg );
366
+ }
367
+ }
368
+ #endif /* DEBUG_WOLFSSL || WOLFSSL_DEBUG_CERTS */
369
+
370
+ #endif /* XVSNPRINTF && !NO_WOLFSSL_MSG_EX */
329
371
330
372
#undef WOLFSSL_MSG /* undo WOLFSSL_DEBUG_CODEPOINTS wrapper */
373
+ #ifndef WOLFSSL_MSG_DO_NOTHING
331
374
void WOLFSSL_MSG (const char * msg )
332
375
{
333
376
if (loggingEnabled )
334
377
wolfssl_log (INFO_LOG , NULL , 0 , msg );
335
378
}
379
+ #endif
336
380
337
381
#ifdef WOLFSSL_DEBUG_CODEPOINTS
338
382
void WOLFSSL_MSG2 (const char * file , int line , const char * msg )
@@ -420,6 +464,7 @@ void WOLFSSL_BUFFER(const byte* buffer, word32 length)
420
464
}
421
465
422
466
#undef WOLFSSL_ENTER /* undo WOLFSSL_DEBUG_CODEPOINTS wrapper */
467
+ #ifndef WOLFSSL_ENTER_DO_NOTHING
423
468
void WOLFSSL_ENTER (const char * msg )
424
469
{
425
470
if (loggingEnabled ) {
@@ -432,6 +477,7 @@ void WOLFSSL_ENTER(const char* msg)
432
477
wolfssl_log (ENTER_LOG , NULL , 0 , buffer );
433
478
}
434
479
}
480
+ #endif /* WOLFSSL_ENTER_DO_NOTHING */
435
481
436
482
#ifdef WOLFSSL_DEBUG_CODEPOINTS
437
483
void WOLFSSL_ENTER2 (const char * file , int line , const char * msg )
@@ -449,6 +495,7 @@ void WOLFSSL_ENTER2(const char *file, int line, const char* msg)
449
495
#endif
450
496
451
497
#undef WOLFSSL_LEAVE /* undo WOLFSSL_DEBUG_CODEPOINTS wrapper */
498
+ #ifndef WOLFSSL_LEAVE_DO_NOTHING
452
499
void WOLFSSL_LEAVE (const char * msg , int ret )
453
500
{
454
501
if (loggingEnabled ) {
@@ -462,6 +509,7 @@ void WOLFSSL_LEAVE(const char* msg, int ret)
462
509
wolfssl_log (LEAVE_LOG , NULL , 0 , buffer );
463
510
}
464
511
}
512
+ #endif /* WOLFSSL_LEAVE_DO_NOTHING */
465
513
466
514
#ifdef WOLFSSL_DEBUG_CODEPOINTS
467
515
void WOLFSSL_LEAVE2 (const char * file , int line , const char * msg , int ret )
@@ -490,15 +538,26 @@ void WOLFSSL_LEAVE2(const char *file, int line, const char* msg, int ret)
490
538
#endif
491
539
#endif
492
540
541
+ #ifndef WOLFSSL_IS_DEBUG_ON_DO_NOTHING
493
542
WOLFSSL_API int WOLFSSL_IS_DEBUG_ON (void )
494
543
{
495
544
return loggingEnabled ;
496
545
}
546
+ #endif /* WOLFSSL_IS_DEBUG_ON_NO_NOTHING */
497
547
#endif /* !WOLFSSL_DEBUG_ERRORS_ONLY */
498
548
#endif /* DEBUG_WOLFSSL */
499
549
500
550
#if defined(OPENSSL_EXTRA ) || defined(DEBUG_WOLFSSL_VERBOSE ) || defined(HAVE_MEMCACHED )
501
551
552
+ #ifndef DEBUG_WOLFSSL
553
+ #define WOLFSSL_ENTER_DO_NOTHING
554
+ #define WOLFSSL_LEAVE_DO_NOTHING
555
+ #define WOLFSSL_MSG_DO_NOTHING
556
+ #define WOLFSSL_ENTER (m ) WC_DO_NOTHING
557
+ #define WOLFSSL_LEAVE (m , r ) WC_DO_NOTHING
558
+ #define WOLFSSL_MSG (m ) WC_DO_NOTHING
559
+ #endif
560
+
502
561
#ifdef WOLFSSL_HAVE_ERROR_QUEUE
503
562
504
563
#ifdef ERROR_QUEUE_PER_THREAD
0 commit comments