X509_GET_SERIALNUMBER(3SSL)

πŸ’– X509_GET_SERIALNUMBER πŸ’–

okay bestie, so this is the OpenSSL page about peeking at (and setting!) certificate serial numbers β€” in the 3SSL manual, fr fr. Serial numbers are literally the lil unique ID every cert gets, and these functions are how you grab 'em or swap 'em. Let's go πŸ¦‹


✨ NAME ✨

X509_get_serialNumber, X509_get0_serialNumber, X509_set_serialNumber, X509_ACERT_get0_serialNumber, X509_ACERT_set1_serialNumber β€” get or set certificate serial number πŸ‘‘


🌸 SYNOPSIS 🌸

#include <openssl/x509.h>

ASN1_INTEGER *X509_get_serialNumber(X509 *x);
const ASN1_INTEGER *X509_get0_serialNumber(const X509 *x);
int X509_set_serialNumber(X509 *x, ASN1_INTEGER *serial);

#include <openssl/x509_acert.h>

ASN1_INTEGER *X509_ACERT_get0_serialNumber(X509_ACERT *x);
int X509_ACERT_set1_serialNumber(X509_ACERT *x, ASN1_INTEGER *serial);

πŸ’… DESCRIPTION πŸ’…

X509_get_serialNumber() hands you back the serial number of certificate x as an ASN1_INTEGER structure, which you can like… examine or initialise, whatever you need. The value it returns is an internal pointer, so bestie, it MUST NOT be freed after the call. Do not free it. Leave it alone. It is not yours. πŸ™ˆ

X509_get0_serialNumber() is the exact same thing as X509_get_serialNumber() except it takes a const parameter and gives back a const result. Const-correct queen πŸ’œ

X509_set_serialNumber() sets the serial number of certificate x to serial. A copy of the serial number gets used internally, so serial should be freed up after use β€” yes, even though it's a set function, you still own your copy πŸŽ€

X509_ACERT_get0_serialNumber() does the same operation as X509_get_serialNumber() but for attribute certificates. Same vibes, different cert type ✨

X509_ACERT_set1_serialNumber() does the same operation as X509_set_serialNumber() but for attribute certificates. Slay 🫢


🌈 RETURN VALUES 🌈

  • X509_get_serialNumber(), X509_get0_serialNumber() and X509_ACERT_get0_serialNumber() all return a pointer to an ASN1_INTEGER structure πŸ‘‘
  • X509_set_serialNumber() and X509_ACERT_set1_serialNumber() return 1 for success and 0 for failure. Two outcomes, no in-between, icons only πŸ’…

πŸ¦‹ SEE ALSO πŸ¦‹


⭐ HISTORY ⭐

okay so the timeline is giving lore:

  • X509_get_serialNumber() and X509_set_serialNumber() β€” available in all versions of OpenSSL. OG behavior, been here since forever, no cap πŸ’–
  • X509_get0_serialNumber() β€” added in OpenSSL 1.1.0 ✨
  • X509_ACERT_get0_serialNumber() and X509_ACERT_set1_serialNumber() β€” added in OpenSSL 3.4, the new babies on the block 🌸

Copyright 2016-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>.

bestie, that's a real license, please actually read it before you ship anything πŸ’€ not me being your legal conscience

mwah πŸ’‹ that's the whole page! this gorgeousness is from OpenSSL 4.0.3, dated 2026-09-29 β€” go forth and read your serial numbers, main character πŸ§šπŸ’–

πŸ“¦ where this page comes from