X509_ACERT_PRINT_EX(3SSL)

✨ NAME ✨

okay so this is the X509_ACERT_print_ex / X509_ACERT_print situation β€” aka the X509_ACERT printing routines, aka how you make an attribute certificate spill its whole life story in human-readable form πŸ’… (this is the X509_ACERT_PRINT_EX(3SSL) page btw, in case the header didn't load for you)


🌸 SYNOPSIS 🌸

#include <openssl/x509_acert.h>

int X509_ACERT_print(BIO *bp, X509_ACERT *acert);
int X509_ACERT_print_ex(BIO *bp, X509_ACERT *acert, unsigned long nmflags,
                        unsigned long cflag);

πŸ’– DESCRIPTION πŸ’–

So X509_ACERT_print_ex() prints a human readable version of the attribute certificate acert to the BIO bp. It's giving "tell me everything, bestie" ✨

Here's the data inside the attribute certificate, printed in this exact order (and yes, the order is the whole point, don't come for me):

  • The header text "Attribute certificate:" and "Data:" (X509_FLAG_NO_HEADER)
  • The attribute certificate version number as defined by the standard, followed in parentheses by the value contained in the version field in hexadecimal notation. If the version number is not a valid value according to the specification, only the raw value is printed. See X509_ACERT_get_version(3) for details. (X509_FLAG_NO_VERSION)
  • The serial number of the attribute certificate (X509_FLAG_NO_SERIAL)
  • The identity of the holder of the attribute certificate. If the holder issuer name is present, the first GENERAL_NAME returned by X509_ACERT_get0_holder_entityName() is printed. If the holder baseCertificateId is present, the issuer name (printed with X509_NAME_print_ex) and serial number of the holder's certificate are displayed. (X509_FLAG_NO_SUBJECT)
  • The name of the attribute certificate issuer as returned from X509_ACERT_get0_issuerName() and printed using X509_NAME_print_ex(). (X509_FLAG_NO_ISSUER)
  • The period of validity between the times returned from X509_ACERT_get0_notBefore() and X509_ACERT_get0_notAfter(). The values are printed as a generalized times using ASN1_GENERALIZEDTIME_print(). (X509_FLAG_NO_VALIDITY)
  • The list of attributes contained in the attribute certificate. The attribute type is printed with i2a_ASN1_OBJECT(). String valued attributes are printed as raw string data. ASN1 encoded values are printed with ASN1_parse_dump(). (X509_FLAG_NO_ATTRIBUTES)
  • All X.509 extensions contained in the attribute certificate. (X509_FLAG_NO_EXTENSIONS)
  • The signature is printed with X509_signature_print(). (X509_FLAG_NO_SIGDUMP)

If cflag is specifies as X509_FLAG_COMPAT, all of the above data in the attribute certificate will be printed. 🫢

The nmflags flag determines the format used to output all fields printed using X509_NAME_print_ex(). See X509_NAME_print_ex(3) for details. iykyk πŸ‘‘

X509_ACERT_print() is equivalent to calling X509_ACERT_print_ex() with the nmflags and cflags set to XN_FLAG_COMPAT and X509_FLAG_COMPAT respectively.


πŸŽ€ RETURN VALUES πŸŽ€

X509_ACERT_print_ex() X509_ACERT_print() return 1 for success and 0 for failure. no in-between fr fr 😭


πŸ¦‹ SEE ALSO πŸ¦‹

X509_NAME_print_ex(3)


⭐ HISTORY ⭐

X509_ACERT_print() and X509_ACERT_print_ex() were added in OpenSSL 3.4. little icons in the making 🌈


Copyright 2023-2024 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, no cap πŸ’œ this was X509_ACERT_PRINT_EX(3SSL) from the OpenSSL fam, version 4.0.3, dated 2026-09-29 β€” slay, go print some attribute certificates πŸŒΈπŸ’…βœ¨

πŸ“¦ where this page comes from