---
name: "X509_get_serialNumber"
section: "3ssl"
platform: "linux"
package: "openssl"
version: "3.6.5-1"
release: "Arch Linux 2026-11-01"
platforms: ["linux"]
url: "https://new.carta.tech/X509_get_serialNumber"
---

# X509\_get\_serialNumber(3ssl)

get or set certificate serial number

## 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()** returns the serial number of certificate **x** as an **ASN1\_INTEGER** structure which can be examined or initialised. The value returned is an internal pointer which **MUST NOT** be freed up after the call.

**X509\_get0\_serialNumber()** is the same as **X509\_get\_serialNumber()** except it accepts a const parameter and returns a const result.

**X509\_set\_serialNumber()** sets the serial number of certificate **x** to **serial**. A copy of the serial number is used internally so **serial** should be freed up after use.

**X509\_ACERT\_get0\_serialNumber()** performs the same operation as **X509\_get\_serialNumber()** for attribute certificates.

**X509\_ACERT\_set1\_serialNumber()** performs the same operation as **X509\_set\_serialNumber()** for attribute certificates.

## RETURN VALUES

**X509\_get\_serialNumber()**, **X509\_get0\_serialNumber()** and **X509\_ACERT\_get0\_serialNumber()** return a pointer to an **ASN1\_INTEGER** structure.

**X509\_set\_serialNumber()** and **X509\_ACERT\_set1\_serialNumber()** return 1 for success and 0 for failure.

## SEE ALSO

**d2i\_X509**(3), **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\_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)

## HISTORY

The **X509\_get\_serialNumber()** and **X509\_set\_serialNumber()** functions are available in all versions of OpenSSL. The **X509\_get0\_serialNumber()** function was added in OpenSSL 1.1.0. The **X509\_ACERT\_get0\_serialNumber()** and **X509\_ACERT\_set1\_serialNumber()** functions were added in OpenSSL 3.4.

## COPYRIGHT

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\>.
