OSSL_CMP_LOG_OPEN(3ossl)
OSSL_CMP_LOG_OPEN π
okay bestie, this is the 3ossl manual page for the OpenSSL CMP logging + error-reporting squad. it's giving "who logged what and why" energy and honestly? we love a facility. β¨
β¨ NAME β¨
OSSL_CMP_log_open, OSSL_CMP_log_close, OSSL_CMP_severity, OSSL_CMP_LOG_EMERG, OSSL_CMP_LOG_ALERT, OSSL_CMP_LOG_CRIT, OSSL_CMP_LOG_ERR, OSSL_CMP_LOG_WARNING, OSSL_CMP_LOG_NOTICE, OSSL_CMP_LOG_INFO, OSSL_CMP_LOG_DEBUG, OSSL_CMP_LOG_TRACE, OSSL_CMP_log_cb_t, OSSL_CMP_print_to_bio, OSSL_CMP_print_errors_cb β functions for logging and error reporting π«Ά
πΈ SYNOPSIS πΈ
#include <openssl/cmp_util.h>
int OSSL_CMP_log_open(void);
void OSSL_CMP_log_close(void);
/* severity level declarations resemble those from syslog.h */
typedef int OSSL_CMP_severity;
#define OSSL_CMP_LOG_EMERG 0
#define OSSL_CMP_LOG_ALERT 1
#define OSSL_CMP_LOG_CRIT 2
#define OSSL_CMP_LOG_ERR 3
#define OSSL_CMP_LOG_WARNING 4
#define OSSL_CMP_LOG_NOTICE 5
#define OSSL_CMP_LOG_INFO 6
#define OSSL_CMP_LOG_DEBUG 7
#define OSSL_CMP_LOG_TRACE 8
typedef int (*OSSL_CMP_log_cb_t)(const char *component,
const char *file, int line,
OSSL_CMP_severity level, const char *msg);
int OSSL_CMP_print_to_bio(BIO *bio, const char *component, const char *file,
int line, OSSL_CMP_severity level, const char *msg);
void OSSL_CMP_print_errors_cb(OSSL_CMP_log_cb_t log_fn);
π DESCRIPTION π
So the logging + error reporting situation described here is basically a little convenience bundle for CMP-specific logging β it's got a string prefix that mirrors the severity levels from syslog.h, plus some glow-ups to the error queue mechanism that you need when the CMP library starts producing big diagnostic messages because certificate validation failed. π
When something interesting happens, or when an error pops off, you're supposed to give some detail for user info, debugging, and auditing. A CMP application gets all of that by handing over a callback function with this exact type:
typedef int (*OSSL_CMP_log_cb_t)(const char *component,
const char *file, int line,
OSSL_CMP_severity level, const char *msg);
The parameters can give you some component info (which may be a module name and/or function name) or NULL, a file pathname or NULL, a line number or 0 indicating the source code location, a severity level, and a message string describing the nature of the event, terminated by '\n'. β¨
Even when an activity is successful, some warnings may be useful and some degree of auditing may be required. So yeah β the logging facility supports a severity level, and the callback function has a level parameter indicating such a level, so that error, warning, info, debug, etc. can all be treated differently. The callback is activated only when the severity level is sufficient according to the current level of verbosity, which by default is OSSL_CMP_LOG_INFO. π
The callback function may itself do non-trivial tasks like writing to a log file or a remote stream, which in turn may fail. So it should return 1 on success and 0 on failure. no cap.
OSSL_CMP_log_open() initializes the CMP-specific logging facility to output everything to STDOUT. It fails if the integrated tracing is disabled or STDIO is not available. It may be called during application startup. Alternatively, OSSL_CMP_CTX_set_log_cb(3) can be used for more flexibility. As long as neither of the two is used, any logging output is ignored. π
OSSL_CMP_log_close() may be called when all activities are finished to flush any pending CMP-specific log output and deallocate related resources. It may be called multiple times. It does get called at OpenSSL shutdown. periodt.
OSSL_CMP_print_to_bio() prints the given component info, filename, line number, severity level, and log message or error queue message to the given bio. component usually is a function or module name. If it is NULL, empty, or "(unknown function)" then "CMP" is used as fallback. π
OSSL_CMP_print_errors_cb() outputs any entries in the OpenSSL error queue. It is similar to ERR_print_errors_cb(3) but uses the CMP log callback function log_fn for uniformity with CMP logging if not NULL. Otherwise it prints to STDERR using OSSL_CMP_print_to_bio(3) (unless OPENSSL_NO_STDIO is defined).
β RETURN VALUES β
OSSL_CMP_log_close() and OSSL_CMP_print_errors_cb() do not return anything. (they're void, they said what they said π
)
All other functions return 1 on success, 0 on error.
π¦ HISTORY π¦
The OpenSSL CMP support was added in OpenSSL 3.0.
π COPYRIGHT π
Copyright 2007-2022 The OpenSSL Project Authors. All Rights Reserved.
Licensed under the Apache License 2.0 (the "License"). You may not use this file except in compliance with the License. You can obtain a copy in the file LICENSE in the source distribution or at <https://www.openssl.org/source/license.html>.
and that's the whole page, bestie π«Ά this was OpenSSL version3.5.9, dated2026-09-29, filed underOSSL_CMP_LOG_OPEN(3ossl). go log something iconic. πβ¨
π¦ where this page comes from
- fedora 43: openssl-devel 1:3.5.9-1.fc43 Β· Apache-2.0
- fedora 43: openssl-devel 1:3.5.9-1.fc43 Β· Apache-2.0
- fedora 44: openssl-devel 1:3.5.9-1.fc44 Β· Apache-2.0
- fedora 44: openssl-devel 1:3.5.9-1.fc44 Β· Apache-2.0
- π girlified by deepseek-ai/DeepSeek-V4.1-Flash on : a language model's rewrite of the original, under its terms