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>. 78e71b7053SJung-uk Kim 79e71b7053SJung-uk Kim=head2 Loader Functions 80e71b7053SJung-uk Kim 81e71b7053SJung-uk KimOSSL_STORE_SEARCH_get_type() returns the criterion type for the given 82e71b7053SJung-uk KimB<OSSL_STORE_SEARCH>. 83e71b7053SJung-uk Kim 84e71b7053SJung-uk KimOSSL_STORE_SEARCH_get0_name(), OSSL_STORE_SEARCH_get0_serial(), 85e71b7053SJung-uk KimOSSL_STORE_SEARCH_get0_bytes(), OSSL_STORE_SEARCH_get0_string(), 86e71b7053SJung-uk Kimand OSSL_STORE_SEARCH_get0_digest() 87e71b7053SJung-uk Kimare used to retrieve different data from a B<OSSL_STORE_SEARCH>, as 88e71b7053SJung-uk Kimavailable for each type. 89e71b7053SJung-uk KimFor more information, see L</SUPPORTED CRITERION TYPES> below. 90e71b7053SJung-uk Kim 91e71b7053SJung-uk Kim=head1 SUPPORTED CRITERION TYPES 92e71b7053SJung-uk Kim 93e71b7053SJung-uk KimCurrently supported criterion types are: 94e71b7053SJung-uk Kim 95e71b7053SJung-uk Kim=over 4 96e71b7053SJung-uk Kim 97e71b7053SJung-uk Kim=item OSSL_STORE_SEARCH_BY_NAME 98e71b7053SJung-uk Kim 99e71b7053SJung-uk KimThis criterion supports a search by exact match of subject name. 100e71b7053SJung-uk KimThe subject name itself is a B<X509_NAME> pointer. 101e71b7053SJung-uk KimA criterion of this type is created with OSSL_STORE_SEARCH_by_name(), 102e71b7053SJung-uk Kimand the actual subject name is retrieved with OSSL_STORE_SEARCH_get0_name(). 103e71b7053SJung-uk Kim 104e71b7053SJung-uk Kim=item OSSL_STORE_SEARCH_BY_ISSUER_SERIAL 105e71b7053SJung-uk Kim 106e71b7053SJung-uk KimThis criterion supports a search by exact match of both issuer name and serial 107e71b7053SJung-uk Kimnumber. 108e71b7053SJung-uk KimThe issuer name itself is a B<X509_NAME> pointer, and the serial number is 109e71b7053SJung-uk Kima B<ASN1_INTEGER> pointer. 110e71b7053SJung-uk KimA criterion of this type is created with OSSL_STORE_SEARCH_by_issuer_serial() 111e71b7053SJung-uk Kimand the actual issuer name and serial number are retrieved with 112e71b7053SJung-uk KimOSSL_STORE_SEARCH_get0_name() and OSSL_STORE_SEARCH_get0_serial(). 113e71b7053SJung-uk Kim 114e71b7053SJung-uk Kim=item OSSL_STORE_SEARCH_BY_KEY_FINGERPRINT 115e71b7053SJung-uk Kim 116e71b7053SJung-uk KimThis criterion supports a search by exact match of key fingerprint. 117e71b7053SJung-uk KimThe key fingerprint in itself is a string of bytes and its length, as 118e71b7053SJung-uk Kimwell as the algorithm that was used to compute the fingerprint. 119e71b7053SJung-uk KimThe digest may be left unspecified (NULL), and in that case, the 120e71b7053SJung-uk Kimloader has to decide on a default digest and compare fingerprints 121e71b7053SJung-uk Kimaccordingly. 122e71b7053SJung-uk KimA criterion of this type is created with OSSL_STORE_SEARCH_by_key_fingerprint() 123e71b7053SJung-uk Kimand the actual fingerprint and its length can be retrieved with 124e71b7053SJung-uk KimOSSL_STORE_SEARCH_get0_bytes(). 125e71b7053SJung-uk KimThe digest can be retrieved with OSSL_STORE_SEARCH_get0_digest(). 126e71b7053SJung-uk Kim 127e71b7053SJung-uk Kim=item OSSL_STORE_SEARCH_BY_ALIAS 128e71b7053SJung-uk Kim 129e71b7053SJung-uk KimThis criterion supports a search by match of an alias of some kind. 130e71b7053SJung-uk KimThe alias in itself is a simple C string. 131e71b7053SJung-uk KimA criterion of this type is created with OSSL_STORE_SEARCH_by_alias() 132e71b7053SJung-uk Kimand the actual alias is retrieved with OSSL_STORE_SEARCH_get0_string(). 133e71b7053SJung-uk Kim 134e71b7053SJung-uk Kim=back 135e71b7053SJung-uk Kim 136e71b7053SJung-uk Kim=head1 RETURN VALUES 137e71b7053SJung-uk Kim 138e71b7053SJung-uk KimOSSL_STORE_SEARCH_by_name(), 139e71b7053SJung-uk KimOSSL_STORE_SEARCH_by_issuer_serial(), 140e71b7053SJung-uk KimOSSL_STORE_SEARCH_by_key_fingerprint(), 141e71b7053SJung-uk Kimand OSSL_STORE_SEARCH_by_alias() 142*b077aed3SPierre Proncheryreturn a B<OSSL_STORE_SEARCH> pointer on success, or NULL on failure. 143e71b7053SJung-uk Kim 144e71b7053SJung-uk KimOSSL_STORE_SEARCH_get_type() returns the criterion type of the given 145e71b7053SJung-uk KimB<OSSL_STORE_SEARCH>. 146e71b7053SJung-uk KimThere is no error value. 147e71b7053SJung-uk Kim 148e71b7053SJung-uk KimOSSL_STORE_SEARCH_get0_name() returns a B<X509_NAME> pointer on success, 149*b077aed3SPierre Proncheryor NULL when the given B<OSSL_STORE_SEARCH> was of a different type. 150e71b7053SJung-uk Kim 151e71b7053SJung-uk KimOSSL_STORE_SEARCH_get0_serial() returns a B<ASN1_INTEGER> pointer on success, 152*b077aed3SPierre Proncheryor NULL when the given B<OSSL_STORE_SEARCH> was of a different type. 153e71b7053SJung-uk Kim 154e71b7053SJung-uk KimOSSL_STORE_SEARCH_get0_bytes() returns a B<const unsigned char> pointer and 155*b077aed3SPierre Proncherysets I<*length> to the strings length on success, or NULL when the given 156e71b7053SJung-uk KimB<OSSL_STORE_SEARCH> was of a different type. 157e71b7053SJung-uk Kim 158e71b7053SJung-uk KimOSSL_STORE_SEARCH_get0_string() returns a B<const char> pointer on success, 159*b077aed3SPierre Proncheryor NULL when the given B<OSSL_STORE_SEARCH> was of a different type. 160e71b7053SJung-uk Kim 161e71b7053SJung-uk KimOSSL_STORE_SEARCH_get0_digest() returns a B<const EVP_MD> pointer. 162*b077aed3SPierre ProncheryNULL is a valid value and means that the store loader default will 163e71b7053SJung-uk Kimbe used when applicable. 164e71b7053SJung-uk Kim 165e71b7053SJung-uk Kim=head1 SEE ALSO 166e71b7053SJung-uk Kim 167e71b7053SJung-uk KimL<ossl_store(7)>, L<OSSL_STORE_supports_search(3)>, L<OSSL_STORE_find(3)> 168e71b7053SJung-uk Kim 169e71b7053SJung-uk Kim=head1 HISTORY 170e71b7053SJung-uk Kim 171e71b7053SJung-uk KimB<OSSL_STORE_SEARCH>, 172e71b7053SJung-uk KimOSSL_STORE_SEARCH_by_name(), 173e71b7053SJung-uk KimOSSL_STORE_SEARCH_by_issuer_serial(), 174e71b7053SJung-uk KimOSSL_STORE_SEARCH_by_key_fingerprint(), 175e71b7053SJung-uk KimOSSL_STORE_SEARCH_by_alias(), 176e71b7053SJung-uk KimOSSL_STORE_SEARCH_free(), 177e71b7053SJung-uk KimOSSL_STORE_SEARCH_get_type(), 178e71b7053SJung-uk KimOSSL_STORE_SEARCH_get0_name(), 179e71b7053SJung-uk KimOSSL_STORE_SEARCH_get0_serial(), 180e71b7053SJung-uk KimOSSL_STORE_SEARCH_get0_bytes(), 181e71b7053SJung-uk Kimand OSSL_STORE_SEARCH_get0_string() 1826935a639SJung-uk Kimwere added in OpenSSL 1.1.1. 183e71b7053SJung-uk Kim 184e71b7053SJung-uk Kim=head1 COPYRIGHT 185e71b7053SJung-uk Kim 186*b077aed3SPierre ProncheryCopyright 2018-2020 The OpenSSL Project Authors. All Rights Reserved. 187e71b7053SJung-uk Kim 188*b077aed3SPierre ProncheryLicensed under the Apache License 2.0 (the "License"). You may not use 189e71b7053SJung-uk Kimthis file except in compliance with the License. You can obtain a copy 190e71b7053SJung-uk Kimin the file LICENSE in the source distribution or at 191e71b7053SJung-uk KimL<https://www.openssl.org/source/license.html>. 192e71b7053SJung-uk Kim 193e71b7053SJung-uk Kim=cut 194