1*b077aed3SPierre Pronchery=pod 2*b077aed3SPierre Pronchery 3*b077aed3SPierre Pronchery=head1 NAME 4*b077aed3SPierre Pronchery 5*b077aed3SPierre Proncheryossl_cmp_print_log, 6*b077aed3SPierre Proncheryossl_cmp_alert, 7*b077aed3SPierre Proncheryossl_cmp_err, 8*b077aed3SPierre Proncheryossl_cmp_warn, 9*b077aed3SPierre Proncheryossl_cmp_info, 10*b077aed3SPierre Proncheryossl_cmp_debug, 11*b077aed3SPierre Proncheryossl_cmp_log, 12*b077aed3SPierre Proncheryossl_cmp_log1, 13*b077aed3SPierre Proncheryossl_cmp_log2, 14*b077aed3SPierre Proncheryossl_cmp_log3, 15*b077aed3SPierre Proncheryossl_cmp_log4, 16*b077aed3SPierre Proncheryossl_cmp_log_parse_metadata, 17*b077aed3SPierre Proncheryossl_cmp_add_error_data, 18*b077aed3SPierre Proncheryossl_cmp_add_error_line 19*b077aed3SPierre Pronchery- logging and error reporting support for CMP 20*b077aed3SPierre Pronchery 21*b077aed3SPierre Pronchery=head1 SYNOPSIS 22*b077aed3SPierre Pronchery 23*b077aed3SPierre Pronchery #include "cmp_local.h" 24*b077aed3SPierre Pronchery 25*b077aed3SPierre Pronchery int ossl_cmp_print_log(OSSL_CMP_severity level, const OSSL_CMP_CTX *ctx, 26*b077aed3SPierre Pronchery const char *func, const char *file, int line, 27*b077aed3SPierre Pronchery const char *level_str, const char *format, ...); 28*b077aed3SPierre Pronchery #define ossl_cmp_alert(ctx, msg) 29*b077aed3SPierre Pronchery #define ossl_cmp_err(ctx, msg) 30*b077aed3SPierre Pronchery #define ossl_cmp_warn(ctx, msg) 31*b077aed3SPierre Pronchery #define ossl_cmp_info(ctx, msg) 32*b077aed3SPierre Pronchery #define ossl_cmp_debug(ctx, (msg) 33*b077aed3SPierre Pronchery #define ossl_cmp_log(level, ctx, msg) 34*b077aed3SPierre Pronchery #define ossl_cmp_log1(level, ctx, fmt, arg1) 35*b077aed3SPierre Pronchery #define ossl_cmp_log2(level, ctx, fmt, arg1, arg2) 36*b077aed3SPierre Pronchery #define ossl_cmp_log3(level, ctx, fmt, arg1, arg2, arg3) 37*b077aed3SPierre Pronchery #define ossl_cmp_log4(level, ctx, fmt, arg1, arg2, arg3, arg4) 38*b077aed3SPierre Pronchery const char *ossl_cmp_log_parse_metadata(const char *buf, 39*b077aed3SPierre Pronchery OSSL_CMP_severity *level, char **func, 40*b077aed3SPierre Pronchery char **file, int *line); 41*b077aed3SPierre Pronchery 42*b077aed3SPierre Pronchery #define ossl_cmp_add_error_data(txt) 43*b077aed3SPierre Pronchery #define ossl_cmp_add_error_line(txt) 44*b077aed3SPierre Pronchery 45*b077aed3SPierre Pronchery=head1 DESCRIPTION 46*b077aed3SPierre Pronchery 47*b077aed3SPierre Proncheryossl_cmp_print_log() prints CMP log messages (i.e., diagnostic info) via the 48*b077aed3SPierre Proncherylog callback of the B<ctx> if present and the severity level is sufficient. 49*b077aed3SPierre ProncheryIf the trace API if enabled the function uses it, prepending the function name, 50*b077aed3SPierre Proncheryfilename, line number, and severity information to the message being output. 51*b077aed3SPierre ProncheryIn any case the B<level>, B<func>, B<file>, and B<line> parameters 52*b077aed3SPierre Proncheryand the message constructed using the given B<format> and variable further 53*b077aed3SPierre Proncheryargument list are passed to the log callback function (unless it is NULL). 54*b077aed3SPierre ProncheryThe B<ctx>, B<func>, B<file>, and B<level_str> arguments may be NULL. 55*b077aed3SPierre Pronchery 56*b077aed3SPierre Proncheryossl_cmp_alert(), ossl_cmp_err(), ossl_cmp_warn(), ossl_cmp_info(), and 57*b077aed3SPierre Proncheryossl_cmp_debug() output a simple alert/error/warning/info/debug message 58*b077aed3SPierre Proncheryvia ossl_cmp_print_log(). 59*b077aed3SPierre Pronchery 60*b077aed3SPierre Proncheryossl_cmp_log(), ossl_cmp_log1(), ossl_cmp_log2(), ossl_cmp_log3(), and 61*b077aed3SPierre Proncheryossl_cmp_log4() output a log message with the given severity, 62*b077aed3SPierre Proncheryconstructing the message text from the given format and arguments. 63*b077aed3SPierre Pronchery 64*b077aed3SPierre Proncheryossl_cmp_log_parse_metadata() parses the given message buffer I<buf> populated 65*b077aed3SPierre Proncheryby ossl_cmp_log() etc. 66*b077aed3SPierre Proncheryaccording to the pattern OSSL_CMP_LOG_START#level ": %s\n", filling in 67*b077aed3SPierre Proncherythe variable pointed to by I<level> with the severity level or -1, 68*b077aed3SPierre Proncherythe variable pointed to by I<func> with the function name string or NULL, 69*b077aed3SPierre Proncherythe variable pointed to by I<file> with the filename string or NULL, and 70*b077aed3SPierre Proncherythe variable pointed to by I<line> with the line number or -1. 71*b077aed3SPierre ProncheryAny string returned via I<*func> and I<*file> must be freed by the caller. 72*b077aed3SPierre Pronchery 73*b077aed3SPierre Proncheryossl_cmp_add_error_data() is a macro calling 74*b077aed3SPierre ProncheryL<ERR_add_error_txt(3)> with the separator being ":". 75*b077aed3SPierre Pronchery 76*b077aed3SPierre Proncheryossl_cmp_add_error_line() is a macro calling 77*b077aed3SPierre ProncheryL<ERR_add_error_txt(3)> with the separator being "\n". 78*b077aed3SPierre Pronchery 79*b077aed3SPierre Pronchery=head1 RETURN VALUES 80*b077aed3SPierre Pronchery 81*b077aed3SPierre Proncheryossl_cmp_log_parse_metadata() returns the pointer to the actual message text 82*b077aed3SPierre Proncheryafter the OSSL_CMP_LOG_PREFIX and level and ':' if found in the buffer, 83*b077aed3SPierre Proncheryelse the beginning of the buffer. 84*b077aed3SPierre Pronchery 85*b077aed3SPierre Proncheryossl_cmp_add_error_data() and 86*b077aed3SPierre Proncheryossl_cmp_add_error_line() 87*b077aed3SPierre Proncherydo not return anything. 88*b077aed3SPierre Pronchery 89*b077aed3SPierre ProncheryAll other functions return 1 on success, 0 on error. 90*b077aed3SPierre Pronchery 91*b077aed3SPierre Pronchery=head1 SEE ALSO 92*b077aed3SPierre Pronchery 93*b077aed3SPierre ProncheryL<ERR_add_error_txt(3)> 94*b077aed3SPierre Pronchery 95*b077aed3SPierre Pronchery=head1 HISTORY 96*b077aed3SPierre Pronchery 97*b077aed3SPierre ProncheryThe OpenSSL CMP support was added in OpenSSL 3.0. 98*b077aed3SPierre Pronchery 99*b077aed3SPierre Pronchery=head1 COPYRIGHT 100*b077aed3SPierre Pronchery 101*b077aed3SPierre ProncheryCopyright 2007-2020 The OpenSSL Project Authors. All Rights Reserved. 102*b077aed3SPierre Pronchery 103*b077aed3SPierre ProncheryLicensed under the Apache License 2.0 (the "License"). You may not use 104*b077aed3SPierre Proncherythis file except in compliance with the License. You can obtain a copy 105*b077aed3SPierre Proncheryin the file LICENSE in the source distribution or at 106*b077aed3SPierre ProncheryL<https://www.openssl.org/source/license.html>. 107*b077aed3SPierre Pronchery 108*b077aed3SPierre Pronchery=cut 109