openssl/doc/internal/man3/OSSL_METHOD_STORE.pod

104 lines
4 KiB
Text
Raw Normal View History

=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<store>.
ossl_method_store_add() adds the B<implementation> to the B<store> as an
instance of the algorithm indicated by B<nid> and the property definition
<properties>.
The optional B<implementation_destruct> function is called when
B<implementation> is being released from B<store>.
ossl_method_store_remove() remove the B<implementation> of algorithm B<nid>
from the B<store>.
ossl_method_store_fetch() query B<store> for an implementation of algorithm
B<nid> that matches the property query B<prop_query>.
The result, if any, is returned in B<result>.
ossl_method_store_set_global_properties() sets implementation method B<store>
wide query properties to B<prop_query>.
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<store>
for an implementation of algorithm B<nid> that matches the property query
B<prop_query>.
The result, if any, is returned in B<result>.
ossl_method_store_cache_set() sets a cache entry for algorithm B<nid> with the
property query B<prop_query> in the B<store>.
Future cache gets will return the specified <result>.
=head1 RETURN VALUES
ossl_method_store_new() a new method store object or B<NULL> 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<https://www.openssl.org/source/license.html>.
=cut