LIBRESSL-SSL_CTX_SET_CERT_VERIFY_CALLBACK(3)

πŸ“¦
version 4.4.0 Β· 2 versions
, in arch rolling

🌸 NAME 🌸

okay bestie, welcome to the SSL_CTX_SET_CERT_VERIFY_(3) page from the Library Functions Manual β€” the LibreSSL LIBRESSL-SSL_CTX_SET_CERT_VERIFY_CALLBACK(3) corner of the internet, no cap. This function is here to set peer certificate verification procedure.


✨ SYNOPSIS ✨

library β€œlibssl” libcrypto #include <openssl/ssl.h>

void
SSL_CTX_set_cert_verify_callback(SSL_CTX *ctx,
    int (*callback)(X509_STORE_CTX *, void *), void *arg);

πŸ’– DESCRIPTION πŸ’–

okay so SSL_CTX_set_cert_verify_callback() sets the verification callback function for ctx. And the way SSL_CTX works? SSL objects that are created from ctx inherit the setting valid at the time when SSL_new(3) is called. inherited, periodt πŸ’…

Whenever a certificate is verified during an SSL/TLS handshake, a verification function is called. If the application does not explicitly specify a verification callback function, the built-in verification function is used. If a verification callback callback is specified via SSL_CTX_set_cert_verify_callback(), the supplied callback function is called instead. By setting callback to NULL, the default behaviour is restored. iconic little reset button energy πŸŽ€

When the verification must be performed, callback will be called with the arguments callback(X509_STORE_CTX *x509_store_ctx, void *arg). The argument arg is specified by the application when setting callback.

callback should return 1 to indicate verification success and 0 to indicate verification failure. If SSL_VERIFY_PEER is set and callback returns 0, the handshake will fail. literally the handshake said nope 😭

🚨 As the verification procedure may allow the connection to continue in case of failure (by always returning 1) the verification result must be set in any case using the error member of x509_store_ctx so that the calling application will be informed about the detailed result of the verification procedure! this is the part where you do not skip steps, bestie 🫢

Within x509_store_ctx, callback has access to the verify_callback function set using SSL_CTX_set_verify(3). main character access, honestly ✨


πŸ¦‹ SEE ALSO πŸ¦‹


πŸŽ€ HISTORY πŸŽ€

SSL_CTX_set_cert_verify_callback() first appeared in SSLeay 0.6.1 and has been available since OpenBSD 2.4. certified vintage, fr fr 🌈

Previous to OpenSSL 0.9.7, the arg argument to SSL_CTX_set_cert_verify_callback() was ignored, and callback was called simply as int (*callback)(X509_STORE_CTX *). To compile software written for previous versions of OpenSSL, a dummy argument will have to be added to callback. old-code archaeology, but make it cute πŸ¦‹


πŸ’… CAVEATS πŸ’…

Do not mix the verification callback described in this function with the verify_callback function called during the verification process. The latter is set using the SSL_CTX_set_verify(3) family of functions. do not mix the two, i am begging πŸ™ˆ

Providing a complete verification procedure including certificate purpose settings, etc., is a complex task. The built-in procedure is quite powerful and in most cases it should be sufficient to modify its behaviour using the verify_callback function. lowkey the built-in is doing the most so you don't have to πŸ’š


πŸ’€ BUGS πŸ’€

SSL_CTX_set_cert_verify_callback() does not provide diagnostic information. it is giving mysterious, and not in the fun way πŸ’€


that's a wrap, bestie! 🫢 source/version: Debian; date: August 25; footer text: 2SSL_CTX_SET_CERT_VERIFY_CALLBACK(3). stay iconic βœ¨πŸ’…

πŸ“¦ where this page comes from
  • arch rolling: libressl 4.4.0-1 Β· ISC AND custom:OpenSSL
  • πŸ’– girlified by deepseek-ai/DeepSeek-V4.1-Flash-1017 on : a language model's rewrite of the original, under its terms