---
name: "libressl-X509_get_version"
section: "3"
platform: "linux"
package: "libressl"
version: "4.4.0-1"
release: "Arch Linux 2026-11-01"
platforms: ["linux"]
url: "https://new.carta.tech/libressl-X509_get_version"
---

# libressl-X509\_get\_version(3)

get or set certificate, certificate request, or CRL version

## NAME

**X509\_get\_version**, **X509\_set\_version**, **X509\_REQ\_get\_version**, **X509\_REQ\_set\_version**, **X509\_CRL\_get\_version**, **X509\_CRL\_set\_version** – get or set certificate, certificate request, or CRL version

## SYNOPSIS

Crypto Library (libcrypto, -lcrypto)

**#include \<openssl/x509.h\>**

*long*\

**X509\_get\_version**(*const X509 \*x*);

*int*\

**X509\_set\_version**(*X509 \*x*, *long version*);

*long*\

**X509\_REQ\_get\_version**(*const X509\_REQ \*req*);

*int*\

**X509\_REQ\_set\_version**(*X509\_REQ \*x*, *long version*);

*long*\

**X509\_CRL\_get\_version**(*const X509\_CRL \*crl*);

*int*\

**X509\_CRL\_set\_version**(*X509\_CRL \*x*, *long version*);

## DESCRIPTION

**X509\_get\_version**() returns the numerical value of the version field of certificate *x*. Note: this is defined by standards (X.509 et al.) to be one less than the certificate version. So a version 3 certificate will return 2 and a version 1 certificate will return 0.

**X509\_set\_version**() sets the numerical value of the version field of certificate *x* to *version*.

Similarly **X509\_REQ\_get\_version**(), **X509\_REQ\_set\_version**(), **X509\_CRL\_get\_version**(), and **X509\_CRL\_set\_version**() get and set the version number of certificate requests and CRLs.

The version field of certificates, certificate requests, and CRLs has a DEFAULT value of v1(0) meaning the field should be omitted for version 1. This is handled transparently by these functions.

## RETURN VALUES

**X509\_get\_version**(), **X509\_REQ\_get\_version**(), and **X509\_CRL\_get\_version**() return the numerical value of the version field.

**X509\_set\_version**(), **X509\_REQ\_set\_version**(), and **X509\_CRL\_set\_version**() return 1 for success or 0 for failure. In some cases of failure, the reason can be determined with ERR\_get\_error(3).

## SEE ALSO

d2i\_X509(3), X509\_CRL\_get0\_by\_serial(3), X509\_CRL\_new(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\_REQ\_new(3), X509\_sign(3), X509\_verify\_cert(3), X509V3\_get\_d2i(3)

## HISTORY

**X509\_get\_version**(), **X509\_set\_version**(), **X509\_REQ\_get\_version**(), and **X509\_REQ\_set\_version**() first appeared in SSLeay 0.6.5 and have been available since OpenBSD 2.4.

**X509\_CRL\_get\_version**() first appeared in OpenSSL 0.9.2b and has been available since OpenBSD 2.6.

**X509\_CRL\_set\_version**() first appeared in OpenSSL 0.9.7 and has been available since OpenBSD 3.2.
