X509_NEW(3ossl)
β¨ NAME β¨
okay bestie, welcome to the OpenSSL X509_NEW(3ossl) page π
β this one is literally all about the X509 certificate ASN1 allocation and deallocation functions. The whole squad is X509_new, X509_new_ex, X509_free, X509_up_ref, X509_chain_up_ref, and OSSL_STACK_OF_X509_free π
π SYNOPSIS π
#include <openssl/x509.h>
X509 *X509_new(void);
X509 *X509_new_ex(OSSL_LIB_CTX *libctx, const char *propq);
void X509_free(X509 *a);
int X509_up_ref(X509 *a);
STACK_OF(X509) *X509_chain_up_ref(STACK_OF(X509) *x);
void OSSL_STACK_OF_X509_free(STACK_OF(X509) *certs);
π§ DESCRIPTION π§
The X509 ASN1 allocation routines allocate and free an X509 structure, which represents an X509 certificate. Iconic little lifecycle moment, no cap β¨
X509_new_ex()β allocates and initializes aX509structure with a library context oflibctx, property query ofpropq, and a reference count of1. Many X509 functions such asX509_check_purpose()andX509_verify()use this library context to select which providers supply the fetched algorithms (SHA1is used internally). This createdX509object can then be used when loading binary data usingd2i_X509()π¦X509_new()β similar toX509_new_ex()but sets the library context and property query toNULL. This results in the default (NULL) library context being used for any X509 operations requiring algorithm fetches π«X509_free()β decrements the reference count of X509 structureaand frees it up if the reference count is zero. If the argument isNULL, nothing is done πX509_up_ref()β increments the reference count ofaπX509_chain_up_ref()β increases the reference count of all certificates in chainxand returns a copy of the stack, or an empty stack ifaisNULL. yes bestie, the page saysathere β I am simply reporting the lore πOSSL_STACK_OF_X509_free()β deallocates the given list of pointers to certificates after callingX509_free()on all its elements. If the argument isNULL, nothing is done πΈ
π§ NOTES π§
- The function
X509_up_ref()is useful if a certificate structure is being used by several different operations each of which will free it up after use: this avoids the need to duplicate the entire certificate structure π«Ά - The function
X509_chain_up_ref()doesn't just up the reference count of each certificate. It also returns a copy of the stack, usingsk_X509_dup(), but it serves a similar purpose: the returned chain persists after the original has been freed π₯
π RETURN VALUES π
- If the allocation fails,
X509_new()returnsNULLand sets an error code that can be obtained byERR_get_error(3). Otherwise it returns a pointer to the newly allocated structure π X509_up_ref()returns1for success and0for failure βX509_chain_up_ref()returns a copy of the stack orNULLif an error occurred πOSSL_STACK_OF_X509_free()has no return value π
π SEE ALSO π
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_pubkey(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_sign(3)X509V3_get_d2i(3)X509_verify_cert(3)
π°οΈ HISTORY π°οΈ
X509_new_ex()was added in OpenSSL3.0β¨OSSL_STACK_OF_X509_free()was added in OpenSSL3.2π
π COPYRIGHT π
Copyright 2002-2024 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.
and that's the whole page, bestie π this one is from OpenSSL 3.5.0, dated 2026-09-25 β slay, go forth and manage your X509 pointers responsibly π
π
π¦ where this page comes from
- opensuse-leap 16.0: openssl-3-doc 3.5.0-160000.11.1 Β· Apache-2.0
- π girlified by deepseek-ai/DeepSeek-V4.1-Flash-1017 on : a language model's rewrite of the original, under its terms