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