xref: /freebsd-src/crypto/openssl/doc/man3/OSSL_STORE_INFO.pod (revision e71b70530d95c4f34d8bdbd78d1242df1ba4a945)
1*e71b7053SJung-uk Kim=pod
2*e71b7053SJung-uk Kim
3*e71b7053SJung-uk Kim=head1 NAME
4*e71b7053SJung-uk Kim
5*e71b7053SJung-uk KimOSSL_STORE_INFO, OSSL_STORE_INFO_get_type, OSSL_STORE_INFO_get0_NAME,
6*e71b7053SJung-uk KimOSSL_STORE_INFO_get0_NAME_description, OSSL_STORE_INFO_get0_PARAMS,
7*e71b7053SJung-uk KimOSSL_STORE_INFO_get0_PKEY, OSSL_STORE_INFO_get0_CERT, OSSL_STORE_INFO_get0_CRL,
8*e71b7053SJung-uk KimOSSL_STORE_INFO_get1_NAME, OSSL_STORE_INFO_get1_NAME_description,
9*e71b7053SJung-uk KimOSSL_STORE_INFO_get1_PARAMS, OSSL_STORE_INFO_get1_PKEY,
10*e71b7053SJung-uk KimOSSL_STORE_INFO_get1_CERT,
11*e71b7053SJung-uk KimOSSL_STORE_INFO_get1_CRL, OSSL_STORE_INFO_type_string, OSSL_STORE_INFO_free,
12*e71b7053SJung-uk KimOSSL_STORE_INFO_new_NAME, OSSL_STORE_INFO_set0_NAME_description,
13*e71b7053SJung-uk KimOSSL_STORE_INFO_new_PARAMS, OSSL_STORE_INFO_new_PKEY, OSSL_STORE_INFO_new_CERT,
14*e71b7053SJung-uk KimOSSL_STORE_INFO_new_CRL - Functions to manipulate OSSL_STORE_INFO objects
15*e71b7053SJung-uk Kim
16*e71b7053SJung-uk Kim=head1 SYNOPSIS
17*e71b7053SJung-uk Kim
18*e71b7053SJung-uk Kim #include <openssl/store.h>
19*e71b7053SJung-uk Kim
20*e71b7053SJung-uk Kim typedef struct ossl_store_info_st OSSL_STORE_INFO;
21*e71b7053SJung-uk Kim
22*e71b7053SJung-uk Kim int OSSL_STORE_INFO_get_type(const OSSL_STORE_INFO *store_info);
23*e71b7053SJung-uk Kim const char *OSSL_STORE_INFO_get0_NAME(const OSSL_STORE_INFO *store_info);
24*e71b7053SJung-uk Kim char *OSSL_STORE_INFO_get1_NAME(const OSSL_STORE_INFO *store_info);
25*e71b7053SJung-uk Kim const char *OSSL_STORE_INFO_get0_NAME_description(const OSSL_STORE_INFO
26*e71b7053SJung-uk Kim                                                   *store_info);
27*e71b7053SJung-uk Kim char *OSSL_STORE_INFO_get1_NAME_description(const OSSL_STORE_INFO *store_info);
28*e71b7053SJung-uk Kim EVP_PKEY *OSSL_STORE_INFO_get0_PARAMS(const OSSL_STORE_INFO *store_info);
29*e71b7053SJung-uk Kim EVP_PKEY *OSSL_STORE_INFO_get1_PARAMS(const OSSL_STORE_INFO *store_info);
30*e71b7053SJung-uk Kim EVP_PKEY *OSSL_STORE_INFO_get0_PKEY(const OSSL_STORE_INFO *store_info);
31*e71b7053SJung-uk Kim EVP_PKEY *OSSL_STORE_INFO_get1_PKEY(const OSSL_STORE_INFO *store_info);
32*e71b7053SJung-uk Kim X509 *OSSL_STORE_INFO_get0_CERT(const OSSL_STORE_INFO *store_info);
33*e71b7053SJung-uk Kim X509 *OSSL_STORE_INFO_get1_CERT(const OSSL_STORE_INFO *store_info);
34*e71b7053SJung-uk Kim X509_CRL *OSSL_STORE_INFO_get0_CRL(const OSSL_STORE_INFO *store_info);
35*e71b7053SJung-uk Kim X509_CRL *OSSL_STORE_INFO_get1_CRL(const OSSL_STORE_INFO *store_info);
36*e71b7053SJung-uk Kim
37*e71b7053SJung-uk Kim const char *OSSL_STORE_INFO_type_string(int type);
38*e71b7053SJung-uk Kim
39*e71b7053SJung-uk Kim void OSSL_STORE_INFO_free(OSSL_STORE_INFO *store_info);
40*e71b7053SJung-uk Kim
41*e71b7053SJung-uk Kim OSSL_STORE_INFO *OSSL_STORE_INFO_new_NAME(char *name);
42*e71b7053SJung-uk Kim int OSSL_STORE_INFO_set0_NAME_description(OSSL_STORE_INFO *info, char *desc);
43*e71b7053SJung-uk Kim OSSL_STORE_INFO *OSSL_STORE_INFO_new_PARAMS(DSA *dsa_params);
44*e71b7053SJung-uk Kim OSSL_STORE_INFO *OSSL_STORE_INFO_new_PKEY(EVP_PKEY *pkey);
45*e71b7053SJung-uk Kim OSSL_STORE_INFO *OSSL_STORE_INFO_new_CERT(X509 *x509);
46*e71b7053SJung-uk Kim OSSL_STORE_INFO *OSSL_STORE_INFO_new_CRL(X509_CRL *crl);
47*e71b7053SJung-uk Kim
48*e71b7053SJung-uk Kim=head1 DESCRIPTION
49*e71b7053SJung-uk Kim
50*e71b7053SJung-uk KimThese functions are primarily useful for applications to retrieve
51*e71b7053SJung-uk Kimsupported objects from B<OSSL_STORE_INFO> objects and for scheme specific
52*e71b7053SJung-uk Kimloaders to create B<OSSL_STORE_INFO> holders.
53*e71b7053SJung-uk Kim
54*e71b7053SJung-uk Kim=head2 Types
55*e71b7053SJung-uk Kim
56*e71b7053SJung-uk KimB<OSSL_STORE_INFO> is an opaque type that's just an intermediary holder for
57*e71b7053SJung-uk Kimthe objects that have been retrieved by OSSL_STORE_load() and similar
58*e71b7053SJung-uk Kimfunctions.
59*e71b7053SJung-uk KimSupported OpenSSL type object can be extracted using one of
60*e71b7053SJung-uk KimSTORE_INFO_get0_TYPE().
61*e71b7053SJung-uk KimThe life time of this extracted object is as long as the life time of
62*e71b7053SJung-uk Kimthe B<OSSL_STORE_INFO> it was extracted from, so care should be taken not
63*e71b7053SJung-uk Kimto free the latter too early.
64*e71b7053SJung-uk KimAs an alternative, STORE_INFO_get1_TYPE() extracts a duplicate (or the
65*e71b7053SJung-uk Kimsame object with its reference count increased), which can be used
66*e71b7053SJung-uk Kimafter the containing B<OSSL_STORE_INFO> has been freed.
67*e71b7053SJung-uk KimThe object returned by STORE_INFO_get1_TYPE() must be freed separately
68*e71b7053SJung-uk Kimby the caller.
69*e71b7053SJung-uk KimSee L</SUPPORTED OBJECTS> for more information on the types that are
70*e71b7053SJung-uk Kimsupported.
71*e71b7053SJung-uk Kim
72*e71b7053SJung-uk Kim=head2 Functions
73*e71b7053SJung-uk Kim
74*e71b7053SJung-uk KimOSSL_STORE_INFO_get_type() takes a B<OSSL_STORE_INFO> and returns the STORE
75*e71b7053SJung-uk Kimtype number for the object inside.
76*e71b7053SJung-uk KimSTORE_INFO_get_type_string() takes a STORE type number and returns a
77*e71b7053SJung-uk Kimshort string describing it.
78*e71b7053SJung-uk Kim
79*e71b7053SJung-uk KimOSSL_STORE_INFO_get0_NAME(), OSSL_STORE_INFO_get0_NAME_description(),
80*e71b7053SJung-uk KimOSSL_STORE_INFO_get0_PARAMS(), OSSL_STORE_INFO_get0_PKEY(),
81*e71b7053SJung-uk KimOSSL_STORE_INFO_get0_CERT() and OSSL_STORE_INFO_get0_CRL() all take a
82*e71b7053SJung-uk KimB<OSSL_STORE_INFO> and return the held object of the appropriate OpenSSL
83*e71b7053SJung-uk Kimtype provided that's what's held.
84*e71b7053SJung-uk Kim
85*e71b7053SJung-uk KimOSSL_STORE_INFO_get1_NAME(), OSSL_STORE_INFO_get1_NAME_description(),
86*e71b7053SJung-uk KimOSSL_STORE_INFO_get1_PARAMS(), OSSL_STORE_INFO_get1_PKEY(),
87*e71b7053SJung-uk KimOSSL_STORE_INFO_get1_CERT() and OSSL_STORE_INFO_get1_CRL() all take a
88*e71b7053SJung-uk KimB<OSSL_STORE_INFO> and return a duplicate of the held object of the
89*e71b7053SJung-uk Kimappropriate OpenSSL type provided that's what's held.
90*e71b7053SJung-uk Kim
91*e71b7053SJung-uk KimOSSL_STORE_INFO_free() frees a B<OSSL_STORE_INFO> and its contained type.
92*e71b7053SJung-uk Kim
93*e71b7053SJung-uk KimOSSL_STORE_INFO_new_NAME() , OSSL_STORE_INFO_new_PARAMS(),
94*e71b7053SJung-uk KimOSSL_STORE_INFO_new_PKEY(), OSSL_STORE_INFO_new_CERT() and
95*e71b7053SJung-uk KimOSSL_STORE_INFO_new_CRL() create a B<OSSL_STORE_INFO>
96*e71b7053SJung-uk Kimobject to hold the given input object.
97*e71b7053SJung-uk KimAdditionally, for B<OSSL_STORE_INFO_NAME>` objects,
98*e71b7053SJung-uk KimOSSL_STORE_INFO_set0_NAME_description() can be used to add an extra
99*e71b7053SJung-uk Kimdescription.
100*e71b7053SJung-uk KimThis description is meant to be human readable and should be used for
101*e71b7053SJung-uk Kiminformation printout.
102*e71b7053SJung-uk Kim
103*e71b7053SJung-uk Kim=head1 SUPPORTED OBJECTS
104*e71b7053SJung-uk Kim
105*e71b7053SJung-uk KimCurrently supported object types are:
106*e71b7053SJung-uk Kim
107*e71b7053SJung-uk Kim=over 4
108*e71b7053SJung-uk Kim
109*e71b7053SJung-uk Kim=item OSSL_STORE_INFO_NAME
110*e71b7053SJung-uk Kim
111*e71b7053SJung-uk KimA name is exactly that, a name.
112*e71b7053SJung-uk KimIt's like a name in a directory, but formatted as a complete URI.
113*e71b7053SJung-uk KimFor example, the path in URI C<file:/foo/bar/> could include a file
114*e71b7053SJung-uk Kimnamed C<cookie.pem>, and in that case, the returned B<OSSL_STORE_INFO_NAME>
115*e71b7053SJung-uk Kimobject would have the URI C<file:/foo/bar/cookie.pem>, which can be
116*e71b7053SJung-uk Kimused by the application to get the objects in that file.
117*e71b7053SJung-uk KimThis can be applied to all schemes that can somehow support a listing
118*e71b7053SJung-uk Kimof object URIs.
119*e71b7053SJung-uk Kim
120*e71b7053SJung-uk KimFor C<file:> URIs that are used without the explicit scheme, the
121*e71b7053SJung-uk Kimreturned name will be the path of each object, so if C</foo/bar> was
122*e71b7053SJung-uk Kimgiven and that path has the file C<cookie.pem>, the name
123*e71b7053SJung-uk KimC</foo/bar/cookie.pem> will be returned.
124*e71b7053SJung-uk Kim
125*e71b7053SJung-uk KimThe returned URI is considered canonical and must be unique and permanent
126*e71b7053SJung-uk Kimfor the storage where the object (or collection of objects) resides.
127*e71b7053SJung-uk KimEach loader is responsible for ensuring that it only returns canonical
128*e71b7053SJung-uk KimURIs.
129*e71b7053SJung-uk KimHowever, it's possible that certain schemes allow an object (or collection
130*e71b7053SJung-uk Kimthereof) to be reached with alternative URIs; just because one URI is
131*e71b7053SJung-uk Kimcanonical doesn't mean that other variants can't be used.
132*e71b7053SJung-uk Kim
133*e71b7053SJung-uk KimAt the discretion of the loader that was used to get these names, an
134*e71b7053SJung-uk Kimextra description may be attached as well.
135*e71b7053SJung-uk Kim
136*e71b7053SJung-uk Kim=item OSSL_STORE_INFO_PARAMS
137*e71b7053SJung-uk Kim
138*e71b7053SJung-uk KimKey parameters.
139*e71b7053SJung-uk Kim
140*e71b7053SJung-uk Kim=item OSSL_STORE_INFO_PKEY
141*e71b7053SJung-uk Kim
142*e71b7053SJung-uk KimA private/public key of some sort.
143*e71b7053SJung-uk Kim
144*e71b7053SJung-uk Kim=item OSSL_STORE_INFO_CERT
145*e71b7053SJung-uk Kim
146*e71b7053SJung-uk KimAn X.509 certificate.
147*e71b7053SJung-uk Kim
148*e71b7053SJung-uk Kim=item OSSL_STORE_INFO_CRL
149*e71b7053SJung-uk Kim
150*e71b7053SJung-uk KimA X.509 certificate revocation list.
151*e71b7053SJung-uk Kim
152*e71b7053SJung-uk Kim=back
153*e71b7053SJung-uk Kim
154*e71b7053SJung-uk Kim=head1 RETURN VALUES
155*e71b7053SJung-uk Kim
156*e71b7053SJung-uk KimOSSL_STORE_INFO_get_type() returns the STORE type number of the given
157*e71b7053SJung-uk KimB<OSSL_STORE_INFO>.
158*e71b7053SJung-uk KimThere is no error value.
159*e71b7053SJung-uk Kim
160*e71b7053SJung-uk KimOSSL_STORE_INFO_get0_NAME(), OSSL_STORE_INFO_get0_NAME_description(),
161*e71b7053SJung-uk KimOSSL_STORE_INFO_get0_PARAMS(), OSSL_STORE_INFO_get0_PKEY(),
162*e71b7053SJung-uk KimOSSL_STORE_INFO_get0_CERT() and OSSL_STORE_INFO_get0_CRL() all return
163*e71b7053SJung-uk Kima pointer to the OpenSSL object on success, NULL otherwise.
164*e71b7053SJung-uk Kim
165*e71b7053SJung-uk KimOSSL_STORE_INFO_get0_NAME(), OSSL_STORE_INFO_get0_NAME_description(),
166*e71b7053SJung-uk KimOSSL_STORE_INFO_get0_PARAMS(), OSSL_STORE_INFO_get0_PKEY(),
167*e71b7053SJung-uk KimOSSL_STORE_INFO_get0_CERT() and OSSL_STORE_INFO_get0_CRL() all return
168*e71b7053SJung-uk Kima pointer to a duplicate of the OpenSSL object on success, NULL otherwise.
169*e71b7053SJung-uk Kim
170*e71b7053SJung-uk KimOSSL_STORE_INFO_type_string() returns a string on success, or B<NULL> on
171*e71b7053SJung-uk Kimfailure.
172*e71b7053SJung-uk Kim
173*e71b7053SJung-uk KimOSSL_STORE_INFO_new_NAME(), OSSL_STORE_INFO_new_PARAMS(),
174*e71b7053SJung-uk KimOSSL_STORE_INFO_new_PKEY(), OSSL_STORE_INFO_new_CERT() and
175*e71b7053SJung-uk KimOSSL_STORE_INFO_new_CRL() return a B<OSSL_STORE_INFO>
176*e71b7053SJung-uk Kimpointer on success, or B<NULL> on failure.
177*e71b7053SJung-uk Kim
178*e71b7053SJung-uk KimOSSL_STORE_INFO_set0_NAME_description() returns 1 on success, or 0 on
179*e71b7053SJung-uk Kimfailure.
180*e71b7053SJung-uk Kim
181*e71b7053SJung-uk Kim=head1 SEE ALSO
182*e71b7053SJung-uk Kim
183*e71b7053SJung-uk KimL<ossl_store(7)>, L<OSSL_STORE_open(3)>, L<OSSL_STORE_register_loader(3)>
184*e71b7053SJung-uk Kim
185*e71b7053SJung-uk Kim=head1 HISTORY
186*e71b7053SJung-uk Kim
187*e71b7053SJung-uk KimOSSL_STORE_INFO(), OSSL_STORE_INFO_get_type(), OSSL_STORE_INFO_get0_NAME(),
188*e71b7053SJung-uk KimOSSL_STORE_INFO_get0_PARAMS(), OSSL_STORE_INFO_get0_PKEY(),
189*e71b7053SJung-uk KimOSSL_STORE_INFO_get0_CERT(), OSSL_STORE_INFO_get0_CRL(),
190*e71b7053SJung-uk KimOSSL_STORE_INFO_type_string(), OSSL_STORE_INFO_free(), OSSL_STORE_INFO_new_NAME(),
191*e71b7053SJung-uk KimOSSL_STORE_INFO_new_PARAMS(), OSSL_STORE_INFO_new_PKEY(),
192*e71b7053SJung-uk KimOSSL_STORE_INFO_new_CERT() and OSSL_STORE_INFO_new_CRL()
193*e71b7053SJung-uk Kimwere added to OpenSSL 1.1.1.
194*e71b7053SJung-uk Kim
195*e71b7053SJung-uk Kim=head1 COPYRIGHT
196*e71b7053SJung-uk Kim
197*e71b7053SJung-uk KimCopyright 2016-2017 The OpenSSL Project Authors. All Rights Reserved.
198*e71b7053SJung-uk Kim
199*e71b7053SJung-uk KimLicensed under the OpenSSL license (the "License").  You may not use
200*e71b7053SJung-uk Kimthis file except in compliance with the License.  You can obtain a copy
201*e71b7053SJung-uk Kimin the file LICENSE in the source distribution or at
202*e71b7053SJung-uk KimL<https://www.openssl.org/source/license.html>.
203*e71b7053SJung-uk Kim
204*e71b7053SJung-uk Kim=cut
205