OSSL_STORE_INFO(3ossl)
π NAME π
Hey bestie π say hi to OSSL_STORE_INFO(3ossl). The whole squad on this page is OSSL_STORE_INFO, OSSL_STORE_INFO_get_type, OSSL_STORE_INFO_get0_NAME, OSSL_STORE_INFO_get0_NAME_description, OSSL_STORE_INFO_get0_PARAMS, OSSL_STORE_INFO_get0_PUBKEY, OSSL_STORE_INFO_get0_PKEY, OSSL_STORE_INFO_get0_CERT, OSSL_STORE_INFO_get0_CRL, OSSL_STORE_INFO_get1_NAME, OSSL_STORE_INFO_get1_NAME_description, OSSL_STORE_INFO_get1_PARAMS, OSSL_STORE_INFO_get1_PUBKEY, OSSL_STORE_INFO_get1_PKEY, OSSL_STORE_INFO_get1_CERT, OSSL_STORE_INFO_get1_CRL, OSSL_STORE_INFO_type_string, OSSL_STORE_INFO_free, OSSL_STORE_INFO_new_NAME, OSSL_STORE_INFO_set0_NAME_description, OSSL_STORE_INFO_new_PARAMS, OSSL_STORE_INFO_new_PUBKEY, OSSL_STORE_INFO_new_PKEY, OSSL_STORE_INFO_new_CERT, OSSL_STORE_INFO_new_CRL, OSSL_STORE_INFO_new, and OSSL_STORE_INFO_get0_data β Functions to manipulate OSSL_STORE_INFO objects. Iconic.
π¦ SYNOPSIS π¦
#include <openssl/store.h>
typedef struct ossl_store_info_st OSSL_STORE_INFO;
int OSSL_STORE_INFO_get_type(const OSSL_STORE_INFO *store_info);
const char *OSSL_STORE_INFO_get0_NAME(const OSSL_STORE_INFO *store_info);
char *OSSL_STORE_INFO_get1_NAME(const OSSL_STORE_INFO *store_info);
const char *OSSL_STORE_INFO_get0_NAME_description(const OSSL_STORE_INFO
*store_info);
char *OSSL_STORE_INFO_get1_NAME_description(const OSSL_STORE_INFO *store_info);
EVP_PKEY *OSSL_STORE_INFO_get0_PARAMS(const OSSL_STORE_INFO *store_info);
EVP_PKEY *OSSL_STORE_INFO_get1_PARAMS(const OSSL_STORE_INFO *store_info);
EVP_PKEY *OSSL_STORE_INFO_get0_PUBKEY(const OSSL_STORE_INFO *info);
EVP_PKEY *OSSL_STORE_INFO_get1_PUBKEY(const OSSL_STORE_INFO *info);
EVP_PKEY *OSSL_STORE_INFO_get0_PKEY(const OSSL_STORE_INFO *store_info);
EVP_PKEY *OSSL_STORE_INFO_get1_PKEY(const OSSL_STORE_INFO *store_info);
X509 *OSSL_STORE_INFO_get0_CERT(const OSSL_STORE_INFO *store_info);
X509 *OSSL_STORE_INFO_get1_CERT(const OSSL_STORE_INFO *store_info);
X509_CRL *OSSL_STORE_INFO_get0_CRL(const OSSL_STORE_INFO *store_info);
X509_CRL *OSSL_STORE_INFO_get1_CRL(const OSSL_STORE_INFO *store_info);
const char *OSSL_STORE_INFO_type_string(int type);
void OSSL_STORE_INFO_free(OSSL_STORE_INFO *store_info);
OSSL_STORE_INFO *OSSL_STORE_INFO_new_NAME(char *name);
int OSSL_STORE_INFO_set0_NAME_description(OSSL_STORE_INFO *info, char *desc);
OSSL_STORE_INFO *OSSL_STORE_INFO_new_PARAMS(DSA *dsa_params);
OSSL_STORE_INFO *OSSL_STORE_INFO_new_PUBKEY(EVP_PKEY *pubkey);
OSSL_STORE_INFO *OSSL_STORE_INFO_new_PKEY(EVP_PKEY *pkey);
OSSL_STORE_INFO *OSSL_STORE_INFO_new_CERT(X509 *x509);
OSSL_STORE_INFO *OSSL_STORE_INFO_new_CRL(X509_CRL *crl);
OSSL_STORE_INFO *OSSL_STORE_INFO_new(int type, void *data);
void *OSSL_STORE_INFO_get0_data(int type, const OSSL_STORE_INFO *info);
πΈ DESCRIPTION πΈ
Okay so these functions are mainly for two groups, bestie: applications that wanna retrieve supported objects from OSSL_STORE_INFO objects, and scheme specific loaders that need to create OSSL_STORE_INFO holders. Lowkey very backstage-pass energy.
π¦ Types π¦
OSSL_STORE_INFO is an opaque type β literally just an intermediary holder for the objects that have been retrieved by OSSL_STORE_load() and similar functions. A supported OpenSSL type object can be extracted using one of STORE_INFO_get0_<TYPE>(), where <TYPE> can be NAME, PARAMS, PKEY, CERT, or CRL.
The life time of this extracted object is as long as the life time of the OSSL_STORE_INFO it was extracted from, so please be careful not to free the latter too early, bestie π. As an alternative, STORE_INFO_get1_<TYPE>() extracts a duplicate (or the same object with its reference count increased), which can be used after the containing OSSL_STORE_INFO has been freed. The object returned by STORE_INFO_get1_<TYPE>() must be freed separately by the caller. See "SUPPORTED OBJECTS" for more information on the types that are supported.
π«Ά Functions π«Ά
OSSL_STORE_INFO_get_type()β takes aOSSL_STORE_INFOand returns the STORE type number for the object inside.OSSL_STORE_INFO_type_string()/STORE_INFO_get_type_string()β takes a STORE type number and returns a short string describing it.OSSL_STORE_INFO_get0_NAME(),OSSL_STORE_INFO_get0_NAME_description(),OSSL_STORE_INFO_get0_PARAMS(),OSSL_STORE_INFO_get0_PUBKEY(),OSSL_STORE_INFO_get0_PKEY(),OSSL_STORE_INFO_get0_CERT(),OSSL_STORE_INFO_get0_CRL()β all take aOSSL_STORE_INFOand return the object it holds if theOSSL_STORE_INFOtype (as returned byOSSL_STORE_INFO_get_type()) matches the function, otherwiseNULL.OSSL_STORE_INFO_get1_NAME(),OSSL_STORE_INFO_get1_NAME_description(),OSSL_STORE_INFO_get1_PARAMS(),OSSL_STORE_INFO_get1_PUBKEY(),OSSL_STORE_INFO_get1_PKEY(),OSSL_STORE_INFO_get1_CERT(),OSSL_STORE_INFO_get1_CRL()β all take aOSSL_STORE_INFOand return a duplicate of the object it holds if theOSSL_STORE_INFOtype (as returned byOSSL_STORE_INFO_get_type()) matches the function, otherwiseNULL.OSSL_STORE_INFO_free()β frees aOSSL_STORE_INFOand its contained type. If the argument isNULL, nothing is done. Slay, safe cleanup.OSSL_STORE_INFO_new_NAME(),OSSL_STORE_INFO_new_PARAMS(),OSSL_STORE_INFO_new_PUBKEY(),OSSL_STORE_INFO_new_PKEY(),OSSL_STORE_INFO_new_CERT(),OSSL_STORE_INFO_new_CRL()β create aOSSL_STORE_INFOobject to hold the given input object. On success the input object is consumed, so don't go double-freeing it, bestie π.OSSL_STORE_INFO_set0_NAME_description()β additionally, forOSSL_STORE_INFO_NAMEobjects, this can be used to add an extra description. This description is meant to be human readable and should be used for information printout.OSSL_STORE_INFO_new()β creates aOSSL_STORE_INFOwith an arbitrary type number and data structure. It's the responsibility of the caller to define type numbers other than the ones defined by<openssl/store.h>, and to handle freeing the associated data structure on their own.
Using type numbers that are defined by <openssl/store.h> may cause undefined behaviours, including crashes. π So maybe don't.
OSSL_STORE_INFO_get0_data()β returns the data pointer that was passed toOSSL_STORE_INFO_new()iftypematches the type number ininfo.
OSSL_STORE_INFO_new() and OSSL_STORE_INFO_get0_data() may be useful for applications that define their own STORE data, but must be used with care.
π SUPPORTED OBJECTS π
Currently supported object types are:
OSSL_STORE_INFO_NAMEβ a name is exactly that, a name. It's like a name in a directory, but formatted as a complete URI. For example, the path in URI"file:/foo/bar/"could include a file named"cookie.pem", and in that case, the returnedOSSL_STORE_INFO_NAMEobject would have the URI"file:/foo/bar/cookie.pem", which can be used by the application to get the objects in that file. This can be applied to all schemes that can somehow support a listing of object URIs.
For "file:" URIs that are used without the explicit scheme, the returned name will be the path of each object, so if "/foo/bar" was given and that path has the file "cookie.pem", the name "/foo/bar/cookie.pem" will be returned.
The returned URI is considered canonical and must be unique and permanent for the storage where the object (or collection of objects) resides. Each loader is responsible for ensuring that it only returns canonical URIs. However, it's possible that certain schemes allow an object (or collection thereof) to be reached with alternative URIs; just because one URI is canonical doesn't mean that other variants can't be used.
At the discretion of the loader that was used to get these names, an extra description may be attached as well.
OSSL_STORE_INFO_PARAMSβ Key parameters.OSSL_STORE_INFO_PKEYβ A keypair or just a private key (possibly with key parameters).OSSL_STORE_INFO_PUBKEYβ A public key (possibly with key parameters).OSSL_STORE_INFO_CERTβ An X.509 certificate.OSSL_STORE_INFO_CRLβ A X.509 certificate revocation list.
π« RETURN VALUES π«
OSSL_STORE_INFO_get_type()β returns the STORE type number of the givenOSSL_STORE_INFO. There is no error value.OSSL_STORE_INFO_get0_NAME(),OSSL_STORE_INFO_get0_NAME_description(),OSSL_STORE_INFO_get0_PARAMS(),OSSL_STORE_INFO_get0_PKEY(),OSSL_STORE_INFO_get0_CERT(),OSSL_STORE_INFO_get0_CRL()β all return a pointer to the OpenSSL object on success,NULLotherwise.OSSL_STORE_INFO_get1_NAME(),OSSL_STORE_INFO_get1_NAME_description(),OSSL_STORE_INFO_get1_PARAMS(),OSSL_STORE_INFO_get1_PKEY(),OSSL_STORE_INFO_get1_CERT(),OSSL_STORE_INFO_get1_CRL()β all return a pointer to a duplicate of the OpenSSL object on success,NULLotherwise.OSSL_STORE_INFO_type_string()β returns a string on success, orNULLon failure.OSSL_STORE_INFO_new_NAME(),OSSL_STORE_INFO_new_PARAMS(),OSSL_STORE_INFO_new_PKEY(),OSSL_STORE_INFO_new_CERT(),OSSL_STORE_INFO_new_CRL()β return aOSSL_STORE_INFOpointer on success, orNULLon failure.OSSL_STORE_INFO_set0_NAME_description()β returns1on success, or0on failure.
π SEE ALSO π
π°οΈ HISTORY π°οΈ
- The
OSSL_STOREAPI was added in OpenSSL1.1.1. - The
OSSL_STORE_INFO_PUBKEYobject type was added in OpenSSL3.0.
π COPYRIGHT π
Copyright 2016-2024 The OpenSSL Project Authors. All Rights Reserved.
Licensed under the Apache License 2.0 (the "License"). You may not use this file except in compliance with the License. You can obtain a copy in the file LICENSE in the source distribution or at https://www.openssl.org/source/license.html.
okay that's the whole page, bestie π this was OpenSSL 3.5.6, dated 2026-04-07, and the manual page is OSSL_STORE_INFO(3ossl) β mwah π
β¨
π¦ where this page comes from
- freebsd 15.1: base 15.1
- π girlified by deepseek-ai/DeepSeek-V4.1-Flash-1017 on : a language model's rewrite of the original, under its terms