OSSL_CMP_MSG_http_perform.3ossl - Man Page

client-side HTTP(S) transfer of a CMP request-response pair

Synopsis

 #include <openssl/cmp.h>

 OSSL_CMP_MSG *OSSL_CMP_MSG_http_perform(OSSL_CMP_CTX *ctx,
                                         const OSSL_CMP_MSG *req);

Description

OSSL_CMP_MSG_http_perform() sends the given PKIMessage req to the CMP server specified in ctx and returns the result obtained from it.

If OSSL_CMP_CTX_set_transfer_cb_arg(3) has been used to set the transfer callback argument then the provided pointer bios is taken as a two-element BIO array to use for the exchange with the server as described for the bio and rbio parameters of OSSL_HTTP_open(3). For instance, the two BIO pointers may be equal and refer to a TLS connection, such as in BRSKI-AE where a pre-established TLS channel is reused for CMP.

Otherwise the server specified via OSSL_CMP_CTX_set1_server(3) and optionally OSSL_CMP_CTX_set_serverPort(3) is contacted, where the default port is 80 for HTTP and 443 for HTTPS. The HTTP path (aka "CMP alias" in this context) to use is by default /, otherwise the string specified via OSSL_CMP_CTX_set1_serverPath(3). On success the function returns the server's response PKIMessage.

The function makes use of any HTTP callback function set via OSSL_CMP_CTX_set_http_cb(3). It respects any timeout value set via OSSL_CMP_CTX_set_option(3) with an OSSL_CMP_OPT_MSG_TIMEOUT argument. It also respects any HTTP(S) proxy options set via OSSL_CMP_CTX_set1_proxy(3) and OSSL_CMP_CTX_set1_no_proxy(3) and the respective environment variables. Proxying plain HTTP is supported directly, while using a proxy for HTTPS connections requires a suitable callback function such as OSSL_HTTP_proxy_connect(3).

Notes

CMP is defined in RFC 4210. HTTP transfer for CMP is defined in RFC 6712.

Return Values

OSSL_CMP_MSG_http_perform() returns the received CMP response message on success, else NULL.

See Also

OSSL_CMP_CTX_new(3), OSSL_HTTP_open(3), and OSSL_HTTP_proxy_connect(3).

History

The OpenSSL CMP support was added in OpenSSL 3.0.

The OSSL_CMP_MSG_http_perform() use of transfer_cb_arg was added in OpenSSL 3.5.

Referenced By

OSSL_CMP_CTX_new.3ossl(3), OSSL_CMP_exec_certreq.3ossl(3), OSSL_CMP_SRV_CTX_new.3ossl(3).

2025-07-01 3.5.1 OpenSSL