]> git.ipfire.org Git - thirdparty/openssl.git/blame - doc/man3/X509_STORE_add_cert.pod
Fix some things the rename script didn't quite get right
[thirdparty/openssl.git] / doc / man3 / X509_STORE_add_cert.pod
CommitLineData
d1142857
BK
1=pod
2
3=head1 NAME
4
4e46a7af 5X509_STORE,
d1142857
BK
6X509_STORE_add_cert, X509_STORE_add_crl, X509_STORE_set_depth,
7X509_STORE_set_flags, X509_STORE_set_purpose, X509_STORE_set_trust,
4e46a7af 8X509_STORE_add_lookup,
d8652be0
MC
9X509_STORE_load_file_ex, X509_STORE_load_file, X509_STORE_load_path,
10X509_STORE_load_store_ex, X509_STORE_load_store,
11X509_STORE_set_default_paths_ex, X509_STORE_set_default_paths,
12X509_STORE_load_locations_ex, X509_STORE_load_locations
d1142857
BK
13- X509_STORE manipulation
14
15=head1 SYNOPSIS
16
17 #include <openssl/x509_vfy.h>
18
4e46a7af
RL
19 typedef x509_store_st X509_STORE;
20
d1142857
BK
21 int X509_STORE_add_cert(X509_STORE *ctx, X509 *x);
22 int X509_STORE_add_crl(X509_STORE *ctx, X509_CRL *x);
23 int X509_STORE_set_depth(X509_STORE *store, int depth);
24 int X509_STORE_set_flags(X509_STORE *ctx, unsigned long flags);
25 int X509_STORE_set_purpose(X509_STORE *ctx, int purpose);
26 int X509_STORE_set_trust(X509_STORE *ctx, int trust);
27
4e46a7af
RL
28 X509_LOOKUP *X509_STORE_add_lookup(X509_STORE *store,
29 X509_LOOKUP_METHOD *meth);
30
d8652be0
MC
31 int X509_STORE_set_default_paths_ex(X509_STORE *ctx, OPENSSL_CTX *libctx,
32 const char *propq);
849d91a6 33 int X509_STORE_set_default_paths(X509_STORE *ctx);
d8652be0
MC
34 int X509_STORE_load_file_ex(X509_STORE *ctx, const char *file,
35 OPENSSL_CTX *libctx, const char *propq);
849d91a6
RL
36 int X509_STORE_load_file(X509_STORE *ctx, const char *file);
37 int X509_STORE_load_path(X509_STORE *ctx, const char *dir);
d8652be0
MC
38 int X509_STORE_load_store_ex(X509_STORE *ctx, const char *uri,
39 OPENSSL_CTX *libctx, const char *propq);
849d91a6 40 int X509_STORE_load_store(X509_STORE *ctx, const char *uri);
d8652be0
MC
41 int X509_STORE_load_locations_ex(X509_STORE *ctx, const char *file,
42 const char *dir, OPENSSL_CTX *libctx,
43 const char *propq);
d1142857
BK
44 int X509_STORE_load_locations(X509_STORE *ctx,
45 const char *file, const char *dir);
d1142857
BK
46
47=head1 DESCRIPTION
48
49The B<X509_STORE> structure is intended to be a consolidated mechanism for
50holding information about X.509 certificates and CRLs, and constructing
51and validating chains of certificates terminating in trusted roots.
52It admits multiple lookup mechanisms and efficient scaling performance
53with large numbers of certificates, and a great deal of flexibility in
54how validation and policy checks are performed.
55
56L<X509_STORE_new(3)> creates an empty B<X509_STORE> structure, which contains
57no information about trusted certificates or where such certificates
58are located on disk, and is generally not usable. Normally, trusted
59certificates will be added to the B<X509_STORE> to prepare it for use,
60via mechanisms such as X509_STORE_add_lookup() and X509_LOOKUP_file(), or
61PEM_read_bio_X509_AUX() and X509_STORE_add_cert(). CRLs can also be added,
62and many behaviors configured as desired.
63
64Once the B<X509_STORE> is suitably configured, X509_STORE_CTX_new() is
65used to instantiate a single-use B<X509_STORE_CTX> for each chain-building
66and verification operation. That process includes providing the end-entity
67certificate to be verified and an additional set of untrusted certificates
68that may be used in chain-building. As such, it is expected that the
69certificates included in the B<X509_STORE> are certificates that represent
70trusted entities such as root certificate authorities (CAs).
71OpenSSL represents these trusted certificates internally as B<X509> objects
72with an associated B<X509_CERT_AUX>, as are produced by
73PEM_read_bio_X509_AUX() and similar routines that refer to X509_AUX.
74The public interfaces that operate on such trusted certificates still
75operate on pointers to B<X509> objects, though.
76
77X509_STORE_add_cert() and X509_STORE_add_crl() add the respective object
78to the B<X509_STORE>'s local storage. Untrusted objects should not be
86333b6e
PY
79added in this way. The added object's reference count is incremented by one,
80hence the caller retains ownership of the object and needs to free it when it
81is no longer needed.
d1142857
BK
82
83X509_STORE_set_depth(), X509_STORE_set_flags(), X509_STORE_set_purpose(),
84X509_STORE_set_trust(), and X509_STORE_set1_param() set the default values
85for the corresponding values used in certificate chain validation. Their
86behavior is documented in the corresponding B<X509_VERIFY_PARAM> manual
87pages, e.g., L<X509_VERIFY_PARAM_set_depth(3)>.
88
4e46a7af
RL
89X509_STORE_add_lookup() finds or creates a L<X509_LOOKUP(3)> with the
90L<X509_LOOKUP_METHOD(3)> I<meth> and adds it to the B<X509_STORE>
91I<store>. This also associates the B<X509_STORE> with the lookup, so
92B<X509_LOOKUP> functions can look up objects in that store.
93
d8652be0 94X509_STORE_load_file_ex() loads trusted certificate(s) into an
6725682d
SL
95B<X509_STORE> from a given file. The library context I<libctx> and property
96query <propq> are used when fetching algorithms from providers.
97
d8652be0 98X509_STORE_load_file() is similar to X509_STORE_load_file_ex() but
6725682d 99uses NULL for the library context I<libctx> and property query <propq>.
849d91a6
RL
100
101X509_STORE_load_path() loads trusted certificate(s) into an
102B<X509_STORE> from a given directory path.
103The certificates in the directory must be in hashed form, as
104documented in L<X509_LOOKUP_hash_dir(3)>.
105
d8652be0 106X509_STORE_load_store_ex() loads trusted certificate(s) into an
6725682d
SL
107B<X509_STORE> from a store at a given URI. The library context I<libctx> and
108property query <propq> are used when fetching algorithms from providers.
849d91a6 109
d8652be0 110X509_STORE_load_store() is similar to X509_STORE_load_store_ex() but
6725682d
SL
111uses NULL for the library context I<libctx> and property query <propq>.
112
d8652be0
MC
113X509_STORE_load_locations_ex() combines
114X509_STORE_load_file_ex() and X509_STORE_load_dir() for a given file
6725682d 115and/or directory path.
849d91a6
RL
116It is permitted to specify just a file, just a directory, or both
117paths.
d1142857 118
d8652be0 119X509_STORE_load_locations() is similar to X509_STORE_load_locations_ex()
6725682d
SL
120but uses NULL for the library context I<libctx> and property query <propq>.
121
d8652be0 122X509_STORE_set_default_paths_ex() is somewhat misnamed, in that it does
6725682d 123not set what default paths should be used for loading certificates. Instead,
d1142857 124it loads certificates into the B<X509_STORE> from the hardcoded default
6725682d
SL
125paths. The library context I<libctx> and property query <propq> are used when
126fetching algorithms from providers.
127
128X509_STORE_set_default_paths() is similar to
d8652be0 129X509_STORE_set_default_paths_ex() but uses NULL for the library
6725682d 130context I<libctx> and property query <propq>.
d1142857
BK
131
132=head1 RETURN VALUES
133
134X509_STORE_add_cert(), X509_STORE_add_crl(), X509_STORE_set_depth(),
6725682d 135X509_STORE_set_flags(), X509_STORE_set_purpose(), X509_STORE_set_trust(),
d8652be0 136X509_STORE_load_file_ex(), X509_STORE_load_file(),
6725682d 137X509_STORE_load_path(),
d8652be0
MC
138X509_STORE_load_store_ex(), X509_STORE_load_store(),
139X509_STORE_load_locations_ex(), X509_STORE_load_locations(),
140X509_STORE_set_default_paths_ex() and X509_STORE_set_default_paths()
6725682d 141return 1 on success or 0 on failure.
d1142857 142
4e46a7af
RL
143X509_STORE_add_lookup() returns the found or created
144L<X509_LOOKUP(3)>, or NULL on error.
145
d1142857
BK
146=head1 SEE ALSO
147
148L<X509_LOOKUP_hash_dir(3)>.
149L<X509_VERIFY_PARAM_set_depth(3)>.
150L<X509_STORE_new(3)>,
151L<X509_STORE_get0_param(3)>
152
6725682d
SL
153=head1 HISTORY
154
d8652be0 155The functions X509_STORE_set_default_paths_ex(),
746f3674 156X509_STORE_load_file_ex(), X509_STORE_load_store_ex() and
d8652be0 157X509_STORE_load_locations_ex() were added in OpenSSL 3.0.
6725682d 158
d1142857
BK
159=head1 COPYRIGHT
160
33388b44 161Copyright 2017-2020 The OpenSSL Project Authors. All Rights Reserved.
d1142857 162
4746f25a 163Licensed under the Apache License 2.0 (the "License"). You may not use
d1142857
BK
164this file except in compliance with the License. You can obtain a copy
165in the file LICENSE in the source distribution or at
166L<https://www.openssl.org/source/license.html>.
167
168=cut