X509_DIGEST(3) | Library Functions Manual | X509_DIGEST(3)

# NAME

`X509_digest`, `X509_CRL_digest`, `X509_pubkey_digest`, `X509_NAME_digest`, `X509_REQ_digest`, `PKCS7_ISSUER_AND_SERIAL_digest` — get digests of various objects

# SYNOPSIS

library “libcrypto”
`#include <openssl/x509.h>`

int
`X509_digest`(const X509 *data, const EVP_MD *type, unsigned char *md, unsigned int *len);

int
`X509_CRL_digest`(const X509_CRL *data, const EVP_MD *type, unsigned char *md, unsigned int *len);

int
`X509_pubkey_digest`(const X509 *data, const EVP_MD *type, unsigned char *md, unsigned int *len);

int
`X509_REQ_digest`(const X509_REQ *data, const EVP_MD *type, unsigned char *md, unsigned int *len);

int
`X509_NAME_digest`(const X509_NAME *data, const EVP_MD *type, unsigned char *md, unsigned int *len);

`#include <openssl/pkcs7.h>`

int
`PKCS7_ISSUER_AND_SERIAL_digest`(PKCS7_ISSUER_AND_SERIAL *data, const EVP_MD *type, unsigned char *md, unsigned int *len);

# DESCRIPTION

`X509_pubkey_digest`() returns a digest of the DER representation of the public key contained in data. All other functions described here return a digest of the DER representation of their entire data object.

The type parameter specifies the digest to be used, such as EVP_sha1(3). md is a pointer to the buffer where the digest will be copied and is assumed to be large enough; a size of at least `EVP_MAX_MD_SIZE` bytes is suggested. The len parameter, if not `NULL`, points to a place where the digest size will be stored.

# RETURN VALUES

These functions return 1 for success or 0 for failure.

# SEE ALSO

EVP_get_digestbyname(3), X509_cmp(3), X509_CRL_new(3), X509_NAME_new(3), X509_new(3), X509_REQ_new(3)

# HISTORY

`X509_digest`(), `X509_NAME_digest`(), and `PKCS7_ISSUER_AND_SERIAL_digest`() first appeared in SSLeay 0.6.5 and have been available since OpenBSD 2.4.

`X509_CRL_digest`() and `X509_REQ_digest`() first appeared in OpenSSL 0.9.6 and have been available since OpenBSD 2.9.

`X509_pubkey_digest`() first appeared in OpenSSL 0.9.7 and has been available since OpenBSD 3.2.

June 8, 2025 | Debian