1=pod 2 3=head1 NAME 4 5X509_chain_up_ref, 6X509_new, X509_free, X509_up_ref - X509 certificate ASN1 allocation functions 7 8=head1 SYNOPSIS 9 10 #include <openssl/x509.h> 11 12 X509 *X509_new(void); 13 void X509_free(X509 *a); 14 int X509_up_ref(X509 *a); 15 STACK_OF(X509) *X509_chain_up_ref(STACK_OF(X509) *x); 16 17=head1 DESCRIPTION 18 19The X509 ASN1 allocation routines, allocate and free an 20X509 structure, which represents an X509 certificate. 21 22X509_new() allocates and initializes a X509 structure with reference count 23B<1>. 24 25X509_free() decrements the reference count of B<X509> structure B<a> and 26frees it up if the reference count is zero. If B<a> is NULL nothing is done. 27 28X509_up_ref() increments the reference count of B<a>. 29 30X509_chain_up_ref() increases the reference count of all certificates in 31chain B<x> and returns a copy of the stack. 32 33=head1 NOTES 34 35The function X509_up_ref() if useful if a certificate structure is being 36used by several different operations each of which will free it up after 37use: this avoids the need to duplicate the entire certificate structure. 38 39The function X509_chain_up_ref() doesn't just up the reference count of 40each certificate it also returns a copy of the stack, using sk_X509_dup(), 41but it serves a similar purpose: the returned chain persists after the 42original has been freed. 43 44=head1 RETURN VALUES 45 46If the allocation fails, X509_new() returns B<NULL> and sets an error 47code that can be obtained by L<ERR_get_error(3)>. 48Otherwise it returns a pointer to the newly allocated structure. 49 50X509_up_ref() returns 1 for success and 0 for failure. 51 52X509_chain_up_ref() returns a copy of the stack or B<NULL> if an error 53occurred. 54 55=head1 SEE ALSO 56 57L<d2i_X509(3)>, 58L<ERR_get_error(3)>, 59L<X509_CRL_get0_by_serial(3)>, 60L<X509_get0_signature(3)>, 61L<X509_get_ext_d2i(3)>, 62L<X509_get_extension_flags(3)>, 63L<X509_get_pubkey(3)>, 64L<X509_get_subject_name(3)>, 65L<X509_get_version(3)>, 66L<X509_NAME_add_entry_by_txt(3)>, 67L<X509_NAME_ENTRY_get_object(3)>, 68L<X509_NAME_get_index_by_NID(3)>, 69L<X509_NAME_print_ex(3)>, 70L<X509_sign(3)>, 71L<X509V3_get_d2i(3)>, 72L<X509_verify_cert(3)> 73 74=head1 COPYRIGHT 75 76Copyright 2002-2016 The OpenSSL Project Authors. All Rights Reserved. 77 78Licensed under the OpenSSL license (the "License"). You may not use 79this file except in compliance with the License. You can obtain a copy 80in the file LICENSE in the source distribution or at 81L<https://www.openssl.org/source/license.html>. 82 83=cut 84