gnutls_x509_cr...ity_info_access(3)

πŸ’– gnutls_x509_crt_get_authority_info_access β€” API function πŸ’–

okay bestie, this one lives in the gnutls manual, and it's giving ✨certificate archaeology✨ β€” we're digging the Authority Information Access extension out of a cert and you're gonna love it, fr fr.


🌸 SYNOPSIS 🌸

#include <gnutls/x509.h>

int gnutls_x509_crt_get_authority_info_access(gnutls_x509_crt_t crt,
                                              unsigned int seq, int what,
                                              gnutls_datum_t * data,
                                              unsigned int * critical);

πŸŽ€ ARGUMENTS πŸŽ€

  • gnutls_x509_crt_t crt β€” the certificate you're holding, literally holding it, main character certificate energy πŸ‘‘
  • unsigned int seq β€” which access descriptor in the sequence you want. 0 is the first one, 1 is the second, etc. (yes bestie, zero-indexed, we been knew πŸ’…)
  • int what β€” what data to actually get, and it's a gnutls_info_access_what_t type.
  • gnutls_datum_t * data β€” the output data, and you gotta free it later with gnutls_free() 🫢
  • unsigned int * critical β€” pointer to an output integer that gets set to non-zero if the extension is marked as critical. May be NULL, no pressure πŸ’œ

πŸ¦‹ DESCRIPTION πŸ¦‹

first things first, a lil heads up: there's a simpler API for grabbing authority info data, and it's provided by gnutls_x509_aia_get() and gnutls_x509_ext_import_aia(). so if that's more your vibe, go off ✨

Now the main event: this function extracts the Authority Information Access (AIA) extension. see RFC 5280 section 4.2.2.1 for more info if you want the whole lore. The AIA extension holds a sequence of AccessDescription (AD) data.

The seq input parameter is how you tell the function which member of that sequence you're interested in. The first member is 0, the second member is 1, and so on and so on. When the seq value is out of bounds, you get GNUTLS_E_REQUESTED_DATA_NOT_AVAILABLE back. rude, but okay 😭

The type of data that comes back in data is specified via what, which should be gnutls_info_access_what_t values. here's the breakdown:

  • If what is GNUTLS_IA_ACCESSMETHOD_OID, then data will hold the accessMethod OID (e.g., "1.3.6.1.5.5.7.48.1").
  • If what is GNUTLS_IA_ACCESSLOCATION_GENERALNAME_TYPE, data will hold the accessLocation GeneralName type (e.g., "uniformResourceIdentifier").
  • If what is GNUTLS_IA_URI, data will hold the accessLocation URI data. Requesting this what value leads to an error if the accessLocation is not of the "uniformResourceIdentifier" type. ⚠️
  • If what is GNUTLS_IA_OCSP_URI, data will hold the OCSP URI. Requesting this what value leads to an error if the accessMethod is not 1.3.6.1.5.5.7.48.1 aka OCSP, or if accessLocation is not of the "uniformResourceIdentifier" type. In that case GNUTLS_E_UNKNOWN_ALGORITHM will be returned, and seq should be increased and this function called again. yes bestie, you loop it, it's giving persistence πŸ’ͺ
  • If what is GNUTLS_IA_CAISSUERS_URI, data will hold the caIssuers URI. Requesting this what value leads to an error if the accessMethod is not 1.3.6.1.5.5.7.48.2 aka caIssuers, or if accessLocation is not of the "uniformResourceIdentifier" type. In that case handle as in GNUTLS_IA_OCSP_URI.

More what values may be allocated in the future as needed. the devs are cooking πŸ”₯

If data is NULL, the function does the same thing but without storing the output data β€” that is, it will set critical and do error checking as usual. vibe check only, no payload 🧚

The value of the critical flag is returned in *critical. Supply a NULL critical if you want the function to make sure the extension is non-critical, as required by RFC 5280. so like, NULL = "make it behave, pls" πŸ’…


⭐ RETURNS ⭐

  • GNUTLS_E_SUCCESS on success πŸŽ‰
  • GNUTLS_E_INVALID_REQUEST on an invalid crt
  • GNUTLS_E_CONSTRAINT_ERROR if the extension is incorrectly marked as critical (use a non-NULL critical to override)
  • GNUTLS_E_UNKNOWN_ALGORITHM if the requested OID does not match (e.g., when using GNUTLS_IA_OCSP_URI)
  • otherwise, a negative error code. yeah. negative. we don't love that but we respect it πŸ’€

🌈 SINCE 🌈

3.0 β€” vintage, but iconic. periodt.


πŸ™ˆ REPORTING BUGS πŸ™ˆ

Report bugs to <bugs@gnutls.org>.

Home page: https://www.gnutls.org


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, and also legally binding 🫢


πŸ‘‘ 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/

okay that's the whole page bestie, you ate πŸ’…βœ¨ this was gnutls 3.8.13, the gnutls_x509_cr...ity_info_access(3) page β€” go forth and read certs, ily, bye πŸŽ€πŸ¦‹πŸŒΈ

πŸ“¦ where this page comes from