gnutls_certifi...rieve_function3(3)
β¨ NAME β¨
gnutls_certificate_set_retrieve_function3 β bestie, this is an API function in the gnutls manual, and she's the one who sets up your certificate-retrieval callback π
πΈ SYNOPSIS πΈ
#include <gnutls/abstract.h>
void
gnutls_certificate_set_retrieve_function3(gnutls_certificate_credentials_t
cred, gnutls_certificate_retrieve_function3 * func);
π ARGUMENTS π
gnutls_certificate_credentials_t credβ okay so this one is agnutls_certificate_credentials_ttype, that's literally what she is πgnutls_certificate_retrieve_function3 * funcβ and this is the callback function, the star of the show, the main character π
π¦ DESCRIPTION π¦
So the way this works: this function sets a callback that gets called to retrieve the certificate and OCSP responses that are gonna be used in the handshake. No cap. And func only gets called if the peer actually requests a certificate β either during the handshake or during post-handshake authentication. If nobody asks, she's not coming out, periodt.
The callback's function prototype is defined in abstract.h, and it's giving:
int gnutls_certificate_retrieve_function3( gnutls_session_t, const
struct gnutls_cert_retr_st *info, gnutls_pcert_st **certs, unsigned int
*certs_length, gnutls_ocsp_data_st **ocsp, unsigned int *ocsp_length,
gnutls_privkey_t *privkey, unsigned int *flags);
The info field of the callback contains:
req_ca_dnβ a list with the CA names that the server considers trusted. Lowkey it's just a hint, and typically the client should send a certificate that is signed by one of these CAs. These names, when available, are DER encoded. To get a more meaningful value use the functiongnutls_x509_rdn_get(). π§pk_algosβ contains a list with server's acceptable public key algorithms. The certificate returned should support the server's given algorithms. Like, match the vibe or don't bother β¨
The callback should fill-in the following values:
certsshould contain an allocated list of certificates and public keys.certs_lengthis the size of the previous list.ocspshould contain an allocated list of OCSP responses.ocsp_lengthis the size of the previous list.privkeyis the private key. π
If flags in the callback are set to GNUTLS_CERT_RETR_DEINIT_ALL then all provided values must be allocated using gnutls_malloc(), and will be released by gnutls; otherwise they will not be touched by gnutls. So like, know which lane you're in bestie, this matters π
The callback function should set the certificate and OCSP response list to be sent, and return 0 on success. If no certificates are available, the certs_length and ocsp_length should be set to zero. The return value (-1) indicates error and the handshake will be terminated. Yikes. π And if both certificates are set in the credentials and a callback is available, the callback takes predence. (That's how it's spelled in the original, I'm just the messenger π«Ά)
Raw public-keys: In case raw public-keys are negotiated as certificate type, certificates that would normally hold the public-key material are not available. In that case, certs contains an allocated list with only the public key. Since there is no certificate, there is also no certificate status. Therefore, OCSP information should not be set. Don't set it. Not even a little. π
β SINCE β
3.6.3 β she's been around, she's iconic, she's established π
π REPORTING BUGS π
Found a bug? Tell the girlies at <bugs@gnutls.org> fr fr.
Home page: https://www.gnutls.org
π COPYRIGHT π
Copyright Β© 2001-2023 Free Software Foundation, Inc., and others.
Copying and distribution of this file, with or without modification, are permitted in any medium without royalty provided the copyright notice and this notice are preserved. Slay, honestly β free to copy, just keep the receipts. π
π SEE ALSO π
The full documentation for gnutls is maintained as a Texinfo manual. If the /usr/share/doc/gnutls/ directory does not contain the HTML form visit
https://www.gnutls.org/manual/
And that's the whole page, bestie β from the gnutls manual, version 3.8.13, and she's giving gnutls_certificate_set_retrieve_function3(3) energy all the way through. Mwah. π
β¨
π¦ where this page comes from
- alpine 3.22: gnutls-doc 3.8.13-r0 Β· LGPL-2.1-or-later
- alpine 3.23: gnutls-doc 3.8.13-r0 Β· LGPL-2.1-or-later
- alpine 3.24: gnutls-doc 3.8.13-r0 Β· LGPL-2.1-or-later
- arch rolling: gnutls 3.8.13-3 Β· GPL-3.0-or-later AND LGPL-2.1-or-later
- fedora 43: gnutls-devel 3.8.13-1.fc43 Β· GPL-3.0-or-later AND LGPL-2.1-or-later
- fedora 43: gnutls-devel 3.8.13-1.fc43 Β· GPL-3.0-or-later AND LGPL-2.1-or-later
- fedora 44: gnutls-devel 3.8.13-1.fc44 Β· GPL-3.0-or-later AND LGPL-2.1-or-later
- fedora 44: gnutls-devel 3.8.13-1.fc44 Β· GPL-3.0-or-later AND LGPL-2.1-or-later
- ubuntu stonking: gnutls-doc 3.8.13-1ubuntu1
- π girlified by deepseek-ai/DeepSeek-V4.1-Flash on : a language model's rewrite of the original, under its terms