OSSL_CMP_MSG_HTTP_PERFORM(3ossl)

πŸ“¦
version 15.1 Β· 3 versions
, in freebsd 15.1

πŸ’… OSSL_CMP_MSG_HTTP_PERFORM πŸ’…

okay bestie, so this one is from the 3ossl manual family β€” it's the OpenSSL page about client-side HTTP(S) transfer of a CMP request-response pair. Think of it as the little function that shoots your CMP request off to a server and brings the answer back. πŸŽ€


✨ 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() is literally the messenger girlie of CMP πŸ’Œ β€” it sends the given PKIMessage req to the CMP server specified in ctx and returns the result it got back from it. no cap.

πŸ¦‹ the transfer-callback route

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 β€” exactly 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. iykyk πŸ’…

🌈 the "just go find the server" route

Otherwise, the server specified via OSSL_CMP_CTX_set1_server(3) and optionally OSSL_CMP_CTX_set_serverPort(3) gets contacted, where the default port is 80 for HTTP and 443 for HTTPS. the way that port number just knows what it's doing.

The HTTP path (aka "CMP alias" in this context) to use is by default "/", otherwise it's the string specified via OSSL_CMP_CTX_set1_serverPath(3). On success the function returns the server's response PKIMessage. slay πŸ’–

⭐ the extra little behaviours

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). that's the catch, bestie β€” HTTPS-through-proxy doesn't just happen on its own πŸ™ˆ

πŸ‘‘ NOTES πŸ‘‘

CMP is defined in RFC 9810. HTTP transfer for CMP is defined in RFC 9811. go read them if you want the full lore πŸ“šβœ¨


πŸ’œ RETURN VALUES πŸ’œ

OSSL_CMP_MSG_http_perform() returns the received CMP response message on success, else NULL. that's it, that's the vibe check πŸ’€


🫢 SEE ALSO 🫢


🌱 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. πŸŽ€

Copyright 2007-2025 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 one's 3.5.6, dated 2026-04-07, and it lives under the name OSSL_CMP_MSG_HTTP_PERFORM(3ossl) β€” mwah, go forth and transfer πŸ§šβ€β™€οΈπŸŽ€
πŸ“¦ where this page comes from