xref: /freebsd/crypto/openssl/doc/man3/OSSL_STORE_SEARCH.pod (revision a7148ab39c03abd4d1a84997c70bf96f15dd2a09)
1e71b7053SJung-uk Kim=pod
2e71b7053SJung-uk Kim
3e71b7053SJung-uk Kim=head1 NAME
4e71b7053SJung-uk Kim
5e71b7053SJung-uk KimOSSL_STORE_SEARCH,
6e71b7053SJung-uk KimOSSL_STORE_SEARCH_by_name,
7e71b7053SJung-uk KimOSSL_STORE_SEARCH_by_issuer_serial,
8e71b7053SJung-uk KimOSSL_STORE_SEARCH_by_key_fingerprint,
9e71b7053SJung-uk KimOSSL_STORE_SEARCH_by_alias,
10e71b7053SJung-uk KimOSSL_STORE_SEARCH_free,
11e71b7053SJung-uk KimOSSL_STORE_SEARCH_get_type,
12e71b7053SJung-uk KimOSSL_STORE_SEARCH_get0_name,
13e71b7053SJung-uk KimOSSL_STORE_SEARCH_get0_serial,
14e71b7053SJung-uk KimOSSL_STORE_SEARCH_get0_bytes,
15e71b7053SJung-uk KimOSSL_STORE_SEARCH_get0_string,
16e71b7053SJung-uk KimOSSL_STORE_SEARCH_get0_digest
17e71b7053SJung-uk Kim- Type and functions to create OSSL_STORE search criteria
18e71b7053SJung-uk Kim
19e71b7053SJung-uk Kim=head1 SYNOPSIS
20e71b7053SJung-uk Kim
21e71b7053SJung-uk Kim #include <openssl/store.h>
22e71b7053SJung-uk Kim
23e71b7053SJung-uk Kim typedef struct ossl_store_search_st OSSL_STORE_SEARCH;
24e71b7053SJung-uk Kim
25e71b7053SJung-uk Kim OSSL_STORE_SEARCH *OSSL_STORE_SEARCH_by_name(X509_NAME *name);
26e71b7053SJung-uk Kim OSSL_STORE_SEARCH *OSSL_STORE_SEARCH_by_issuer_serial(X509_NAME *name,
27e71b7053SJung-uk Kim                                                       const ASN1_INTEGER
28e71b7053SJung-uk Kim                                                       *serial);
29e71b7053SJung-uk Kim OSSL_STORE_SEARCH *OSSL_STORE_SEARCH_by_key_fingerprint(const EVP_MD *digest,
30e71b7053SJung-uk Kim                                                         const unsigned char
31e71b7053SJung-uk Kim                                                         *bytes, int len);
32e71b7053SJung-uk Kim OSSL_STORE_SEARCH *OSSL_STORE_SEARCH_by_alias(const char *alias);
33e71b7053SJung-uk Kim
34e71b7053SJung-uk Kim void OSSL_STORE_SEARCH_free(OSSL_STORE_SEARCH *search);
35e71b7053SJung-uk Kim
36e71b7053SJung-uk Kim int OSSL_STORE_SEARCH_get_type(const OSSL_STORE_SEARCH *criterion);
37e71b7053SJung-uk Kim X509_NAME *OSSL_STORE_SEARCH_get0_name(OSSL_STORE_SEARCH *criterion);
38e71b7053SJung-uk Kim const ASN1_INTEGER *OSSL_STORE_SEARCH_get0_serial(const OSSL_STORE_SEARCH
39e71b7053SJung-uk Kim                                                   *criterion);
40e71b7053SJung-uk Kim const unsigned char *OSSL_STORE_SEARCH_get0_bytes(const OSSL_STORE_SEARCH
41e71b7053SJung-uk Kim                                                   *criterion, size_t *length);
42e71b7053SJung-uk Kim const char *OSSL_STORE_SEARCH_get0_string(const OSSL_STORE_SEARCH *criterion);
43e71b7053SJung-uk Kim const EVP_MD *OSSL_STORE_SEARCH_get0_digest(const OSSL_STORE_SEARCH
44e71b7053SJung-uk Kim                                             *criterion);
45e71b7053SJung-uk Kim
46e71b7053SJung-uk Kim=head1 DESCRIPTION
47e71b7053SJung-uk Kim
48e71b7053SJung-uk KimThese functions are used to specify search criteria to help search for specific
49e71b7053SJung-uk Kimobjects through other names than just the URI that's given to OSSL_STORE_open().
50e71b7053SJung-uk KimFor example, this can be useful for an application that has received a URI
51e71b7053SJung-uk Kimand then wants to add on search criteria in a uniform and supported manner.
52e71b7053SJung-uk Kim
53e71b7053SJung-uk Kim=head2 Types
54e71b7053SJung-uk Kim
55e71b7053SJung-uk KimB<OSSL_STORE_SEARCH> is an opaque type that holds the constructed search
56e71b7053SJung-uk Kimcriterion, and that can be given to an OSSL_STORE context with
57e71b7053SJung-uk KimOSSL_STORE_find().
58e71b7053SJung-uk Kim
59e71b7053SJung-uk KimThe calling application owns the allocation of an B<OSSL_STORE_SEARCH> at all
60e71b7053SJung-uk Kimtimes, and should therefore be careful not to deallocate it before
61e71b7053SJung-uk KimOSSL_STORE_close() has been called for the OSSL_STORE context it was given
62e71b7053SJung-uk Kimto.
63e71b7053SJung-uk Kim
64e71b7053SJung-uk Kim=head2 Application Functions
65e71b7053SJung-uk Kim
66e71b7053SJung-uk KimOSSL_STORE_SEARCH_by_name(),
67e71b7053SJung-uk KimOSSL_STORE_SEARCH_by_issuer_serial(),
68e71b7053SJung-uk KimOSSL_STORE_SEARCH_by_key_fingerprint(),
69e71b7053SJung-uk Kimand OSSL_STORE_SEARCH_by_alias()
70e71b7053SJung-uk Kimare used to create an B<OSSL_STORE_SEARCH> from a subject name, an issuer name
71e71b7053SJung-uk Kimand serial number pair, a key fingerprint, and an alias (for example a friendly
72e71b7053SJung-uk Kimname).
73e71b7053SJung-uk KimThe parameters that are provided are not copied, only referred to in a
74e71b7053SJung-uk Kimcriterion, so they must have at least the same life time as the created
75e71b7053SJung-uk KimB<OSSL_STORE_SEARCH>.
76e71b7053SJung-uk Kim
77e71b7053SJung-uk KimOSSL_STORE_SEARCH_free() is used to free the B<OSSL_STORE_SEARCH>.
78*a7148ab3SEnji CooperIf the argument is NULL, nothing is done.
79e71b7053SJung-uk Kim
80e71b7053SJung-uk Kim=head2 Loader Functions
81e71b7053SJung-uk Kim
82e71b7053SJung-uk KimOSSL_STORE_SEARCH_get_type() returns the criterion type for the given
83e71b7053SJung-uk KimB<OSSL_STORE_SEARCH>.
84e71b7053SJung-uk Kim
85e71b7053SJung-uk KimOSSL_STORE_SEARCH_get0_name(), OSSL_STORE_SEARCH_get0_serial(),
86e71b7053SJung-uk KimOSSL_STORE_SEARCH_get0_bytes(), OSSL_STORE_SEARCH_get0_string(),
87e71b7053SJung-uk Kimand OSSL_STORE_SEARCH_get0_digest()
88e71b7053SJung-uk Kimare used to retrieve different data from a B<OSSL_STORE_SEARCH>, as
89e71b7053SJung-uk Kimavailable for each type.
90e71b7053SJung-uk KimFor more information, see L</SUPPORTED CRITERION TYPES> below.
91e71b7053SJung-uk Kim
92e71b7053SJung-uk Kim=head1 SUPPORTED CRITERION TYPES
93e71b7053SJung-uk Kim
94e71b7053SJung-uk KimCurrently supported criterion types are:
95e71b7053SJung-uk Kim
96e71b7053SJung-uk Kim=over 4
97e71b7053SJung-uk Kim
98e71b7053SJung-uk Kim=item OSSL_STORE_SEARCH_BY_NAME
99e71b7053SJung-uk Kim
100e71b7053SJung-uk KimThis criterion supports a search by exact match of subject name.
101e71b7053SJung-uk KimThe subject name itself is a B<X509_NAME> pointer.
102e71b7053SJung-uk KimA criterion of this type is created with OSSL_STORE_SEARCH_by_name(),
103e71b7053SJung-uk Kimand the actual subject name is retrieved with OSSL_STORE_SEARCH_get0_name().
104e71b7053SJung-uk Kim
105e71b7053SJung-uk Kim=item OSSL_STORE_SEARCH_BY_ISSUER_SERIAL
106e71b7053SJung-uk Kim
107e71b7053SJung-uk KimThis criterion supports a search by exact match of both issuer name and serial
108e71b7053SJung-uk Kimnumber.
109e71b7053SJung-uk KimThe issuer name itself is a B<X509_NAME> pointer, and the serial number is
110e71b7053SJung-uk Kima B<ASN1_INTEGER> pointer.
111e71b7053SJung-uk KimA criterion of this type is created with OSSL_STORE_SEARCH_by_issuer_serial()
112e71b7053SJung-uk Kimand the actual issuer name and serial number are retrieved with
113e71b7053SJung-uk KimOSSL_STORE_SEARCH_get0_name() and OSSL_STORE_SEARCH_get0_serial().
114e71b7053SJung-uk Kim
115e71b7053SJung-uk Kim=item OSSL_STORE_SEARCH_BY_KEY_FINGERPRINT
116e71b7053SJung-uk Kim
117e71b7053SJung-uk KimThis criterion supports a search by exact match of key fingerprint.
118e71b7053SJung-uk KimThe key fingerprint in itself is a string of bytes and its length, as
119e71b7053SJung-uk Kimwell as the algorithm that was used to compute the fingerprint.
120e71b7053SJung-uk KimThe digest may be left unspecified (NULL), and in that case, the
121e71b7053SJung-uk Kimloader has to decide on a default digest and compare fingerprints
122e71b7053SJung-uk Kimaccordingly.
123e71b7053SJung-uk KimA criterion of this type is created with OSSL_STORE_SEARCH_by_key_fingerprint()
124e71b7053SJung-uk Kimand the actual fingerprint and its length can be retrieved with
125e71b7053SJung-uk KimOSSL_STORE_SEARCH_get0_bytes().
126e71b7053SJung-uk KimThe digest can be retrieved with OSSL_STORE_SEARCH_get0_digest().
127e71b7053SJung-uk Kim
128e71b7053SJung-uk Kim=item OSSL_STORE_SEARCH_BY_ALIAS
129e71b7053SJung-uk Kim
130e71b7053SJung-uk KimThis criterion supports a search by match of an alias of some kind.
131e71b7053SJung-uk KimThe alias in itself is a simple C string.
132e71b7053SJung-uk KimA criterion of this type is created with OSSL_STORE_SEARCH_by_alias()
133e71b7053SJung-uk Kimand the actual alias is retrieved with OSSL_STORE_SEARCH_get0_string().
134e71b7053SJung-uk Kim
135e71b7053SJung-uk Kim=back
136e71b7053SJung-uk Kim
137e71b7053SJung-uk Kim=head1 RETURN VALUES
138e71b7053SJung-uk Kim
139e71b7053SJung-uk KimOSSL_STORE_SEARCH_by_name(),
140e71b7053SJung-uk KimOSSL_STORE_SEARCH_by_issuer_serial(),
141e71b7053SJung-uk KimOSSL_STORE_SEARCH_by_key_fingerprint(),
142e71b7053SJung-uk Kimand OSSL_STORE_SEARCH_by_alias()
143b077aed3SPierre Proncheryreturn a B<OSSL_STORE_SEARCH> pointer on success, or NULL on failure.
144e71b7053SJung-uk Kim
145e71b7053SJung-uk KimOSSL_STORE_SEARCH_get_type() returns the criterion type of the given
146e71b7053SJung-uk KimB<OSSL_STORE_SEARCH>.
147e71b7053SJung-uk KimThere is no error value.
148e71b7053SJung-uk Kim
149e71b7053SJung-uk KimOSSL_STORE_SEARCH_get0_name() returns a B<X509_NAME> pointer on success,
150b077aed3SPierre Proncheryor NULL when the given B<OSSL_STORE_SEARCH> was of a different type.
151e71b7053SJung-uk Kim
152e71b7053SJung-uk KimOSSL_STORE_SEARCH_get0_serial() returns a B<ASN1_INTEGER> pointer on success,
153b077aed3SPierre Proncheryor NULL when the given B<OSSL_STORE_SEARCH> was of a different type.
154e71b7053SJung-uk Kim
155e71b7053SJung-uk KimOSSL_STORE_SEARCH_get0_bytes() returns a B<const unsigned char> pointer and
156b077aed3SPierre Proncherysets I<*length> to the strings length on success, or NULL when the given
157e71b7053SJung-uk KimB<OSSL_STORE_SEARCH> was of a different type.
158e71b7053SJung-uk Kim
159e71b7053SJung-uk KimOSSL_STORE_SEARCH_get0_string() returns a B<const char> pointer on success,
160b077aed3SPierre Proncheryor NULL when the given B<OSSL_STORE_SEARCH> was of a different type.
161e71b7053SJung-uk Kim
162e71b7053SJung-uk KimOSSL_STORE_SEARCH_get0_digest() returns a B<const EVP_MD> pointer.
163b077aed3SPierre ProncheryNULL is a valid value and means that the store loader default will
164e71b7053SJung-uk Kimbe used when applicable.
165e71b7053SJung-uk Kim
166e71b7053SJung-uk Kim=head1 SEE ALSO
167e71b7053SJung-uk Kim
168e71b7053SJung-uk KimL<ossl_store(7)>, L<OSSL_STORE_supports_search(3)>, L<OSSL_STORE_find(3)>
169e71b7053SJung-uk Kim
170e71b7053SJung-uk Kim=head1 HISTORY
171e71b7053SJung-uk Kim
172e71b7053SJung-uk KimB<OSSL_STORE_SEARCH>,
173e71b7053SJung-uk KimOSSL_STORE_SEARCH_by_name(),
174e71b7053SJung-uk KimOSSL_STORE_SEARCH_by_issuer_serial(),
175e71b7053SJung-uk KimOSSL_STORE_SEARCH_by_key_fingerprint(),
176e71b7053SJung-uk KimOSSL_STORE_SEARCH_by_alias(),
177e71b7053SJung-uk KimOSSL_STORE_SEARCH_free(),
178e71b7053SJung-uk KimOSSL_STORE_SEARCH_get_type(),
179e71b7053SJung-uk KimOSSL_STORE_SEARCH_get0_name(),
180e71b7053SJung-uk KimOSSL_STORE_SEARCH_get0_serial(),
181e71b7053SJung-uk KimOSSL_STORE_SEARCH_get0_bytes(),
182e71b7053SJung-uk Kimand OSSL_STORE_SEARCH_get0_string()
1836935a639SJung-uk Kimwere added in OpenSSL 1.1.1.
184e71b7053SJung-uk Kim
185e71b7053SJung-uk Kim=head1 COPYRIGHT
186e71b7053SJung-uk Kim
187*a7148ab3SEnji CooperCopyright 2018-2024 The OpenSSL Project Authors. All Rights Reserved.
188e71b7053SJung-uk Kim
189b077aed3SPierre ProncheryLicensed under the Apache License 2.0 (the "License").  You may not use
190e71b7053SJung-uk Kimthis file except in compliance with the License.  You can obtain a copy
191e71b7053SJung-uk Kimin the file LICENSE in the source distribution or at
192e71b7053SJung-uk KimL<https://www.openssl.org/source/license.html>.
193e71b7053SJung-uk Kim
194e71b7053SJung-uk Kim=cut
195