=pod =head1 NAME ossl_method_store_new, ossl_method_store_free, ossl_method_store_init, ossl_method_store_cleanup, ossl_method_store_add, ossl_method_store_remove, ossl_method_store_fetch, ossl_method_store_set_global_properties, ossl_method_store_cache_get and ossl_method_store_cache_set - implementation method store and query =head1 SYNOPSIS #include "internal/property.h" typedef struct ossl_method_store_st OSSL_METHOD_STORE; OSSL_METHOD_STORE *ossl_method_store_new(void); void ossl_method_store_free(OSSL_METHOD_STORE *store); int ossl_method_store_init(void); void ossl_method_store_cleanup(void); int ossl_method_store_add(OSSL_METHOD_STORE *store, int nid, const char *properties, void *implementation, void (*implementation_destruct)(void *)); int ossl_method_store_remove(OSSL_METHOD_STORE *store, int nid, const void *implementation); int ossl_method_store_fetch(OSSL_METHOD_STORE *store, int nid, const char *properties, void **result); int ossl_method_store_set_global_properties(OSSL_METHOD_STORE *store, const char *prop_query); int ossl_method_store_cache_get(OSSL_METHOD_STORE *store, int nid, const char *prop_query, void **result); int ossl_method_store_cache_set(OSSL_METHOD_STORE *store, int nid, const char *prop_query, void *result); =head1 DESCRIPTION OSSL_METHOD_STORE stores implementations of algorithms that can be queried using properties and a NID. ossl_method_store_init() initialises the implementation method store subsystem. ossl_method_store_cleanup() cleans up and shuts down the implementation method store subsystem ossl_method_store_new() create a new empty implementation method store. ossl_method_store_free() frees resources allocated to B. ossl_method_store_add() adds the B to the B as an instance of the algorithm indicated by B and the property definition . The optional B function is called when B is being released from B. ossl_method_store_remove() remove the B of algorithm B from the B. ossl_method_store_fetch() query B for an implementation of algorithm B that matches the property query B. The result, if any, is returned in B. ossl_method_store_set_global_properties() sets implementation method B wide query properties to B. All subsequent fetches will need to meet both these global query properties and the ones passed to the fetch function. ossl_method_store_cache_get() queries the cache associated with the B for an implementation of algorithm B that matches the property query B. The result, if any, is returned in B. ossl_method_store_cache_set() sets a cache entry for algorithm B with the property query B in the B. Future cache gets will return the specified . =head1 RETURN VALUES ossl_method_store_new() a new method store object or B on failure. ossl_method_store_free(), ossl_method_store_add(), ossl_method_store_remove(), ossl_method_store_fetch(), ossl_method_store_set_global_properties(), ossl_method_store_cache_get() and ossl_method_store_cache_set() return B<1> on success and B<0> on error. ossl_method_store_free() and ossl_method_store_cleanup() do not return values. =head1 HISTORY This functionality was added to OpenSSL 3.0.0. =head1 COPYRIGHT Copyright 2019 The OpenSSL Project Authors. All Rights Reserved. Copyright (c) 2019, Oracle and/or its affiliates. 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 L. =cut