NAME
X509_get_pubkey,
    X509_get0_pubkey,
    X509_set_pubkey,
    X509_get_X509_PUBKEY,
    X509_REQ_get_pubkey,
    X509_REQ_set_pubkey —
    get or set certificate or certificate
    request public key
SYNOPSIS
#include
    <openssl/x509.h>
EVP_PKEY *
  
  X509_get_pubkey(X509 *x);
EVP_PKEY *
  
  X509_get0_pubkey(const X509
  *x);
int
  
  X509_set_pubkey(X509 *x,
    EVP_PKEY *pkey);
X509_PUBKEY *
  
  X509_get_X509_PUBKEY(X509
  *x);
EVP_PKEY *
  
  X509_REQ_get_pubkey(X509_REQ
    *req);
int
  
  X509_REQ_set_pubkey(X509_REQ *x,
    EVP_PKEY *pkey);
DESCRIPTION
X509_get_pubkey()
  attempts to decode the public key for certificate x. If
  successful it returns the public key as an EVP_PKEY
  pointer with its reference count incremented: this means the returned key must
  be freed up after use.
  X509_get0_pubkey()
  is similar except that it does not increment the reference count of the
  returned EVP_PKEY, so it must not be freed up after use.
X509_get_X509_PUBKEY()
    returns an internal pointer to the X509_PUBKEY
    structure which encodes the certificate of x. The
    returned value must not be freed up after use.
    X509_get_X509_PUBKEY() is implemented as a
  macro.
X509_set_pubkey()
    attempts to set the public key for certificate x to
    pkey. The key pkey should be
    freed up after use.
X509_REQ_get_pubkey()
    and
    X509_REQ_set_pubkey()
    are similar but operate on certificate request
  req.
The first time a public key is decoded, the EVP_PKEY structure is cached in the certificate or certificate request itself. Subsequent calls return the cached structure with its reference count incremented to improve performance.
RETURN VALUES
X509_get_pubkey(),
    X509_get0_pubkey(),
    X509_get_X509_PUBKEY(), and
    X509_REQ_get_pubkey() return a public key or
    NULL if an error occurred.
X509_set_pubkey() and
    X509_REQ_set_pubkey() return 1 for success or 0 for
    failure.
SEE ALSO
d2i_X509(3), ERR_get_error(3), X509_CRL_get0_by_serial(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), X509_verify_cert(3), X509V3_get_d2i(3)
HISTORY
X509_get_pubkey(),
    X509_set_pubkey(),
    X509_REQ_get_pubkey(), and
    X509_REQ_set_pubkey() first appeared in SSLeay
    0.6.5. X509_get_X509_PUBKEY() first appeared in
    SSLeay 0.8.0. These functions have been available since
    OpenBSD 2.4.
X509_get0_pubkey() first appeared in
    OpenSSL 1.1.0 and has been available since OpenBSD
    6.3.