X509_CHECK_PRIVATE_KEY(3) | Library Functions Manual | X509_CHECK_PRIVATE_KEY(3)

# NAME

`X509_check_private_key`, `X509_REQ_check_private_key` — compare public key components

# SYNOPSIS

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

int
`X509_check_private_key`(const X509 *x, const EVP_PKEY *k);

int
`X509_REQ_check_private_key`(X509_REQ *x, EVP_PKEY *k);

# DESCRIPTION

These functions are seriously misnamed. `X509_check_private_key`() compares the public key components (e.g. exponent and modulus of an RSA key) and parameters (e.g. EC params of an EC key) of k with the corresponding properties of x. Despite the name, it neither checks whether k contains private key components at all, nor, if any are present, whether they are consistent with the public key components.

`X509_REQ_check_private_key`() is equivalent to `X509_check_private_key`() except that it compares to the public key contained in a certificate request.

# RETURN VALUES

These functions return 1 if the public key components and parameters match, or 0 if they do not or if an error occurs. On error or mismatch, a reason code can be obtained using ERR_get_error(3).

# SEE ALSO

SSL_check_private_key(3), X509_new(3), X509_REQ_new(3)

# HISTORY

`X509_check_private_key`() first appeared in SSLeay 0.6.5 and has been available since OpenBSD 2.4.

`X509_REQ_check_private_key`() first appeared in OpenSSL 0.9.8 and has been available since OpenBSD 4.5.

June 8, 2025 | Debian