I2D_RE_X509_TBS(3ossl)
π I2D_RE_X509_TBS (3ossl) β the OpenSSL manual, but make it make sense
okay bestie, so this is the OpenSSL manual page for the X509 encode/decode girlies β¨ β specifically d2i_X509_AUX, i2d_X509_AUX, i2d_re_X509_tbs, i2d_re_X509_CRL_tbs, and i2d_re_X509_REQ_tbs. Yes that's five (5) functions with names that look like someone fell asleep on a keyboard, but we're gonna get through it together π«Ά
β¨ SYNOPSIS β¨
like, the actual incantation:
#include <openssl/x509.h>
X509 *d2i_X509_AUX(X509 **px, const unsigned char **in, long len);
int i2d_X509_AUX(const X509 *x, unsigned char **out);
int i2d_re_X509_tbs(X509 *x, unsigned char **out);
int i2d_re_X509_CRL_tbs(X509_CRL *crl, unsigned char **pp);
int i2d_re_X509_REQ_tbs(X509_REQ *req, unsigned char **pp);
copy that exactly, no cap, these signatures are not vibes-based π
πΈ DESCRIPTION πΈ
So the X509 encode and decode routines encode and parse an X509 structure, which β plot twist β represents an X509 certificate. main character energy, honestly π
π d2i_X509_AUX()
It's similar to d2i_X509(3), but the input is expected to consist of an X509 certificate followed by auxiliary trust information. This is what the PEM routines use to read "TRUSTED CERTIFICATE" objects.
π¨ Warning, fr fr: this function should not be called on untrusted input. Not being dramatic, it's literally in the manual. π
π i2d_X509_AUX()
Similar to i2d_X509(3), except the encoded output contains both the certificate and any auxiliary trust information. This is what the PEM routines use to write "TRUSTED CERTIFICATE" objects.
π‘ Heads up: this is a non-standard OpenSSL-specific data format. It's giving "we made this ourselves", and honestly? iconic of them.
π i2d_re_X509_tbs()
Similar to i2d_X509(3) except it encodes only the TBSCertificate portion of the certificate. The "re" in i2d_re_X509_tbs stands for "re-encode", and it ensures a fresh encoding is generated in case the object has been modified after creation (peep the BUGS section π).
i2d_re_X509_CRL_tbs() and i2d_re_X509_REQ_tbs() are analogous β for CRL and certificate request respectively. Same energy, different object π
π the caching situation
The encoding of the TBSCertificate portion of a certificate is cached in the X509 structure internally to improve encoding performance and to ensure certificate signatures are verified correctly in some certificates with broken (non-DER) encodings. so it's a speed thing and a "some certs are built different" thing. both. slay π¦
If, after modification, the X509 object is re-signed with X509_sign(), the encoding is automatically renewed. Otherwise, you can manually renew the encoding of the TBSCertificate portion of the X509 by calling i2d_re_X509_tbs(). DIY energy β¨
π₯ RETURN VALUES π₯
d2i_X509_AUX()β returns a validX509structure, orNULLif an error occurred. bestie is either thriving or absolutely not πi2d_X509_AUX()β returns the length of encoded data, or-1on error.i2d_re_X509_tbs(),i2d_re_X509_CRL_tbs()andi2d_re_X509_REQ_tbs()β return the length of encoded data, or<=0on error. yes,<=0, not just-1, read it and weep π«
π SEE ALSO π
the whole friend group, go say hi:
ERR_get_error(3)X509_CRL_get0_by_serial(3)X509_get0_signature(3)X509_get_ext_d2i(3)X509_get_extension_flags(3)X509_get_pubkey(3)X509_get_subject_name(3)X509_get_version(3)X509_NAME_add_entry_by_txt(3)X509_NAME_ENTRY_get_object(3)X509_NAME_get_index_by_NID(3)X509_NAME_print_ex(3)X509_new(3)X509_sign(3)X509V3_get_d2i(3)X509_verify_cert(3)
π COPYRIGHT π
Copyright 2002-2018 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 thing, bestie π tysm for reading β this page was brought to you by OpenSSL 3.5.0, dated 2026-09-25, and documented under the name I2D_RE_X509_TBS(3ossl). go forth and encode responsibly πβ¨
π¦ 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