SSL_CTX_GET0_PARAM(3ossl)
π SSL_CTX_GET0_PARAM(3ossl) β get and set verification parameters
okay bestie, pull up a chair π«Ά this is the OpenSSL manual page for SSL_CTX_GET0_PARAM(3ossl), and it's literally all about getting and setting verification parameters. yes, the whole page. no cap, it's giving "small but mighty" energy π
β¨ NAME β¨
SSL_CTX_get0_param, SSL_get0_param, SSL_CTX_set1_param, SSL_set1_param, SSL_CTX_set_purpose, SSL_CTX_set_trust, SSL_set_purpose, SSL_set_trust β get and set verification parameters π
πΈ SYNOPSIS πΈ
#include <openssl/ssl.h>
X509_VERIFY_PARAM *SSL_CTX_get0_param(SSL_CTX *ctx);
X509_VERIFY_PARAM *SSL_get0_param(SSL *ssl);
int SSL_CTX_set1_param(SSL_CTX *ctx, X509_VERIFY_PARAM *vpm);
int SSL_set1_param(SSL *ssl, X509_VERIFY_PARAM *vpm);
int SSL_CTX_set_purpose(SSL_CTX *ctx, int purpose);
int SSL_set_purpose(SSL *ssl, int purpose);
int SSL_CTX_set_trust(SSL_CTX *ctx, int trust);
int SSL_set_trust(SSL *ssl, int trust);
like, just look at them. all lined up. so organized. we love a tidy synopsis π
π¦ DESCRIPTION π¦
so SSL_CTX_get0_param() and SSL_get0_param() retrieve an internal pointer to the verification parameters for ctx or ssl respectively. and here's the thing β the returned pointer must not be freed by the calling application. not you, not your app, nobody. hands off π (it's not yours, it's the library's, respectfully)
SSL_CTX_set1_param() and SSL_set1_param() set the verification parameters to vpm for ctx or ssl.
the functions SSL_CTX_set_purpose() and SSL_set_purpose() are shorthands that set the purpose parameter on the verification parameters object β¨ they're equivalent to calling X509_VERIFY_PARAM_set_purpose() directly. iykyk.
and SSL_CTX_set_trust() and SSL_set_trust() are similarly shorthands that set the trust parameter on the verification parameters object π these ones are equivalent to calling X509_VERIFY_PARAM_set_trust() directly.
π NOTES π
typically, parameters are retrieved from an SSL_CTX or SSL structure using SSL_CTX_get0_param() or SSL_get0_param(), and then an application modifies them to suit its needs β for example, to add a hostname check π
like, get the param, tweak the param, live your truth. main character energy.
β RETURN VALUES β
SSL_CTX_get0_param()andSSL_get0_param()return a pointer to anX509_VERIFY_PARAMstructure πSSL_CTX_set1_param(),SSL_set1_param(),SSL_CTX_set_purpose(),SSL_set_purpose(),SSL_CTX_set_trust()andSSL_set_trust()return 1 for success and 0 for failure. that's it. 1 or 0. binary slay π
π₯ EXAMPLES π₯
check that the hostname matches "www.foo.com" in the peer certificate π
X509_VERIFY_PARAM *vpm = SSL_get0_param(ssl);
X509_VERIFY_PARAM_set1_host(vpm, "www.foo.com", 0);
two lines. iconic. ate and left no crumbs π
π SEE ALSO π
ssl(7), X509_VERIFY_PARAM_set_flags(3)
go read those next, bestie, they're the extended lore π§
π HISTORY π
these functions were added in OpenSSL 1.0.2 β so they've been around a minute. vintage, but make it secure.
π COPYRIGHT π
Copyright 2015-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>.
ngl the license part is the "please read the terms" of manpages, but you gotta respect it π don't be the person who skips it.
and that's the whole vibe check π this was 3.5.0, dated 2026-09-25 β catch you in the next manpage, bestie, mwah πΈπ«Άπ
π¦ where this page comes from
- opensuse-leap 16.0: openssl-3-doc 3.5.0-160000.11.1 Β· Apache-2.0
- π girlified by deepseek-ai/DeepSeek-V4.1-Flash-1017 on : a language model's rewrite of the original, under its terms