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