]> git.ipfire.org Git - thirdparty/openssl.git/blame - doc/internal/man3/OSSL_METHOD_STORE.pod
Make sure all BIGNUM operations work within the FIPS provider
[thirdparty/openssl.git] / doc / internal / man3 / OSSL_METHOD_STORE.pod
CommitLineData
1bdbdaff
P
1=pod
2
3=head1 NAME
4
4ce738d0
RL
5OSSL_METHOD_STORE, ossl_method_store_new, ossl_method_store_free,
6ossl_method_store_init, ossl_method_store_cleanup,
7ossl_method_store_add, ossl_method_store_remove, ossl_method_store_fetch,
8ossl_method_store_set_global_properties,
1ad2d940 9ossl_method_store_cache_get, ossl_method_store_cache_set
1bdbdaff
P
10- implementation method store and query
11
12=head1 SYNOPSIS
13
14 #include "internal/property.h"
15
16 typedef struct ossl_method_store_st OSSL_METHOD_STORE;
17
25b25b0f 18 OSSL_METHOD_STORE *ossl_method_store_new(OPENSSL_CTX *ctx);
1bdbdaff 19 void ossl_method_store_free(OSSL_METHOD_STORE *store);
25b25b0f
MC
20 int ossl_method_store_init(OPENSSL_CTX *ctx);
21 void ossl_method_store_cleanup(OPENSSL_CTX *ctx);
1bdbdaff
P
22 int ossl_method_store_add(OSSL_METHOD_STORE *store,
23 int nid, const char *properties,
0a79572a 24 void *method, void (*method_destruct)(void *));
1bdbdaff 25 int ossl_method_store_remove(OSSL_METHOD_STORE *store,
0a79572a 26 int nid, const void *method);
1bdbdaff
P
27 int ossl_method_store_fetch(OSSL_METHOD_STORE *store,
28 int nid, const char *properties,
0a79572a 29 void **method);
1bdbdaff
P
30 int ossl_method_store_set_global_properties(OSSL_METHOD_STORE *store,
31 const char *prop_query);
32 int ossl_method_store_cache_get(OSSL_METHOD_STORE *store, int nid,
0a79572a 33 const char *prop_query, void **method);
1bdbdaff 34 int ossl_method_store_cache_set(OSSL_METHOD_STORE *store, int nid,
0a79572a 35 const char *prop_query, void *method);
1bdbdaff
P
36
37=head1 DESCRIPTION
38
0a79572a
RL
39OSSL_METHOD_STORE stores methods that can be queried using properties and a
40numeric identity (nid).
1bdbdaff 41
0a79572a
RL
42Methods are expected to be library internal structures.
43It's left to the caller to define the exact contents.
44
45Numeric identities are expected to be an algorithm identity for the methods.
46It's left to the caller to define exactly what an algorithm is, and to allocate
47these numeric identities accordingly.
48
49The B<OSSL_METHOD_STORE> also holds an internal query cache, which is accessed
50separately (see L</Cache Functions> below).
51
52=head2 Store Functions
53
25b25b0f
MC
54ossl_method_store_init() initialises the method store subsystem in the scope of
55the library context B<ctx>.
1bdbdaff
P
56
57ossl_method_store_cleanup() cleans up and shuts down the implementation method
25b25b0f 58store subsystem in the scope of the library context B<ctx>.
1bdbdaff 59
25b25b0f
MC
60ossl_method_store_new() create a new empty method store using the supplied
61B<ctx> to allow access to the required underlying property data.
1bdbdaff
P
62
63ossl_method_store_free() frees resources allocated to B<store>.
64
0a79572a
RL
65ossl_method_store_add() adds the B<method> to the B<store> as an instance of an
66algorithm indicated by B<nid> and the property definition B<properties>.
67The optional B<method_destruct> function is called when B<method> is being
68released from B<store>.
1bdbdaff 69
0a79572a
RL
70ossl_method_store_remove() removes the B<method> identified by B<nid> from the
71B<store>.
1bdbdaff 72
0a79572a
RL
73ossl_method_store_fetch() queries B<store> for an method identified by B<nid>
74that matches the property query B<prop_query>.
75The result, if any, is returned in B<method>.
1bdbdaff 76
0a79572a
RL
77ossl_method_store_set_global_properties() sets method B<store> wide query
78properties to B<prop_query>.
1bdbdaff 79All subsequent fetches will need to meet both these global query properties
0a79572a
RL
80and the ones passed to the ossl_method_store_free().
81
82=head2 Cache Functions
1bdbdaff
P
83
84ossl_method_store_cache_get() queries the cache associated with the B<store>
0a79572a 85for an method identified by B<nid> that matches the property query
1bdbdaff 86B<prop_query>.
0a79572a 87The result, if any, is returned in B<method>.
1bdbdaff 88
0a79572a 89ossl_method_store_cache_set() sets a cache entry identified by B<nid> with the
1bdbdaff 90property query B<prop_query> in the B<store>.
0a79572a 91Future cache gets will return the specified B<method>.
1bdbdaff
P
92
93=head1 RETURN VALUES
94
95ossl_method_store_new() a new method store object or B<NULL> on failure.
96
97ossl_method_store_free(), ossl_method_store_add(),
98ossl_method_store_remove(), ossl_method_store_fetch(),
99ossl_method_store_set_global_properties(), ossl_method_store_cache_get()
100and ossl_method_store_cache_set() return B<1> on success and B<0> on error.
101
102ossl_method_store_free() and ossl_method_store_cleanup() do not return values.
103
104=head1 HISTORY
105
106This functionality was added to OpenSSL 3.0.0.
107
108=head1 COPYRIGHT
109
110Copyright 2019 The OpenSSL Project Authors. All Rights Reserved.
111Copyright (c) 2019, Oracle and/or its affiliates. All rights reserved.
112
113Licensed under the Apache License 2.0 (the "License"). You may not use this
114file except in compliance with the License. You can obtain a copy in the file
115LICENSE in the source distribution or at
116L<https://www.openssl.org/source/license.html>.
117
118=cut