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