openssl/doc/internal/man3/OSSL_METHOD_STORE.pod
Pauli 1bdbdaffdc Properties for implementation selection.
Properties are a sequence of comma separated name=value pairs.  A name
without a corresponding value is assumed to be a Boolean and have the
true value 'yes'.  Values are either strings or numbers.  Strings can be
quoted either _"_ or _'_ or unquoted (with restrictions).  There are no
escape characters inside strings.  Number are either decimal digits or
'0x' followed by hexidecimal digits.  Numbers are represented internally
as signed sixty four bit values.

Queries on properties are a sequence comma separated conditional tests.
These take the form of name=value (equality test), name!=value (inequality
test) or name (Boolean test for truth).  Queries can be parsed, compared
against a definition or merged pairwise.

Reviewed-by: Matt Caswell <matt@openssl.org>
Reviewed-by: Tim Hudson <tjh@openssl.org>
(Merged from https://github.com/openssl/openssl/pull/8224)
2019-02-18 13:28:14 +10:00

103 lines
4 KiB
Text

=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