X509_GET_PUBKEY(3ossl)
π NAME π
okay bestie, welcome to X509_GET_PUBKEY(3ossl) β the OpenSSL manual page for X509_get_pubkey, X509_get0_pubkey, X509_set_pubkey, X509_get_X509_PUBKEY, X509_REQ_get_pubkey, X509_REQ_get0_pubkey, X509_REQ_set_pubkey, and X509_REQ_get_X509_PUBKEY β together they get or set the public key for a certificate or a certificate request. slay. β¨
π¦ SYNOPSIS π¦
copy these exactly, no cap:
#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(const X509 *x);
EVP_PKEY *X509_REQ_get_pubkey(X509_REQ *req);
EVP_PKEY *X509_REQ_get0_pubkey(X509_REQ *req);
int X509_REQ_set_pubkey(X509_REQ *x, EVP_PKEY *pkey);
X509_PUBKEY *X509_REQ_get_X509_PUBKEY(X509_REQ *x);
πΈ DESCRIPTION πΈ
X509_get_pubkey()β tries to decode the public key for certificate x. If it works, you get the public key back as anEVP_PKEYpointer with its reference count incremented; that means you must free the returned key after use. πX509_get0_pubkey()β same idea, except it does not increment the reference count of the returnedEVP_PKEY, so you must not free it after use. no cap. πX509_get_X509_PUBKEY()β hands you an internal pointer to theX509_PUBKEYstructure which encodes the certificate of x. The returned value must not be freed up after use. πX509_set_pubkey()β tries to set the public key for certificate x to pkey. The key pkey should be freed up after use. π¦X509_REQ_get_pubkey(),X509_REQ_get0_pubkey(),X509_REQ_set_pubkey(), andX509_REQ_get_X509_PUBKEY()β same vibes, but they operate on certificate request req. β¨
π₯ NOTES π₯
the first time a public key gets 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. that's the whole point, bestie β performance slay. β
π RETURN VALUES π
X509_get_pubkey(),X509_get0_pubkey(),X509_get_X509_PUBKEY(),X509_REQ_get_pubkey(), andX509_REQ_get_X509_PUBKEY()return a public key, orNULLif an error occurred. πX509_set_pubkey()andX509_REQ_set_pubkey()return1for success and0for failure. β
π SEE ALSO π
go read these next, bestie: 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_subject_name(3), X509_get_version(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). π
π COPYRIGHT π
Copyright 2015-2016 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>. π«Ά
this page is from OpenSSL 3.5.6, dated 2026-04-07 β bye bestie, go get those pubkeys π
π¦ where this page comes from
- freebsd 15.1: base 15.1
- π girlified by deepseek-ai/DeepSeek-V4.1-Flash-1017 on : a language model's rewrite of the original, under its terms