I2D_RE_X509_TBS(3ossl)
π I2D_RE_X509_TBS π
okay bestie, so this is a page from the OpenSSL manual, and it's all about 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. we're gonna get into it. no cap.
β¨ NAME β¨
d2i_X509_AUX, i2d_X509_AUX, i2d_re_X509_tbs, i2d_re_X509_CRL_tbs, i2d_re_X509_REQ_tbs β the X509 encode and decode functions. that's the whole vibe. π
πΈ SYNOPSIS πΈ
#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);
look at her. five functions. iconic. π«Ά
π¦ DESCRIPTION π¦
so the X509 encode and decode routines encode and parse an X509 structure, which β plot twist β represents an X509 certificate. slay.
d2i_X509_AUX() is giving similar-to-d2i_X509(3) energy, except 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. π
π¨ bestie listen to me: this function should not be called on untrusted input. fr fr. don't do it.
i2d_X509_AUX() is the i2d_X509(3) cousin, but the encoded output contains both the certificate and any auxiliary trust information. the PEM routines use this one to write "TRUSTED CERTIFICATE" objects. π
ngl, this is a non-standard OpenSSL-specific data format. iykyk. it's not like, universal.
i2d_re_X509_tbs() is similar to i2d_X509(3) except it encodes only the TBSCertificate portion of the certificate. and i2d_re_X509_CRL_tbs() and i2d_re_X509_REQ_tbs() are the analogous girlies for CRL and certificate request, respectively. π
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 π).
okay so the encoding of the TBSCertificate portion of a certificate is cached in the X509 structure internally β to improve encoding performance, and also to make sure certificate signatures are verified correctly in some certificates with broken (non-DER) encodings. she's doing two jobs. main character energy. π
and here's the tea π: 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(). your girl, your call. π
β RETURN VALUES β
d2i_X509_AUX()β returns a validX509structure, orNULLif an error occurred. π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.
π SEE ALSO π
the whole friend group, periodt:
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>.
okay that's the whole page, bestie!! you ate. go re-encode something responsibly πβ¨
this was OpenSSL 3.5.9, dated 2026-09-29 β I2D_RE_X509_TBS(3ossl), signing off π¦π
π¦ where this page comes from
- fedora 43: openssl-devel 1:3.5.9-1.fc43 Β· Apache-2.0
- fedora 43: openssl-devel 1:3.5.9-1.fc43 Β· Apache-2.0
- fedora 44: openssl-devel 1:3.5.9-1.fc44 Β· Apache-2.0
- fedora 44: openssl-devel 1:3.5.9-1.fc44 Β· Apache-2.0
- π girlified by deepseek-ai/DeepSeek-V4.1-Flash on : a language model's rewrite of the original, under its terms