Latest update

This commit is contained in:
2019-07-13 19:13:22 +09:00
parent 9a23f88dc2
commit 2e57f602ae
542 changed files with 17287 additions and 6184 deletions
+42 -27
View File
@@ -15,11 +15,13 @@ OSSL_METHOD_CONSTRUCT_METHOD, ossl_method_construct
/* Remove a store */
void (*dealloc_tmp_store)(void *store);
/* Get an already existing method from a store */
void *(*get)(OPENSSL_CTX *libctx, void *store, const char *name,
const char *propquery, void *data);
void *(*get)(OPENSSL_CTX *libctx, void *store,
int operation_id, const char *name, const char *propquery,
void *data);
/* Store a method in a store */
int (*put)(OPENSSL_CTX *libctx, void *store, void *method,
const char *name, const char *propdef, void *data);
int operation_id, const char *name, const char *propdef,
void *data);
/* Construct a new method */
void *(*construct)(const char *name, const OSSL_DISPATCH *fns,
OSSL_PROVIDER *prov, void *data);
@@ -41,13 +43,25 @@ on provider dispatch tables need to do so in exactly the same way.
ossl_method_construct() does this while leaving it to the sub-systems
to define more precisely how the methods are created, stored, etc.
It's important to keep in mind that a method is identified by three things:
=over 4
=item The operation identity
=item The name of the algorithm
=item The properties associated with the algorithm implementation
=back
=head2 Functions
ossl_method_construct() creates a method by asking all available
providers for a dispatch table given an C<operation_id>, an algorithm
C<name> and a set of C<properties>, and then calling appropriate
providers for a dispatch table given an I<operation_id>, an algorithm
I<name> and a set of I<properties>, and then calling the appropriate
functions given by the sub-system specific method creator through
C<mcm> and the data in C<mcm_data> (which is passed by
I<mcm> and the data in I<mcm_data> (which is passed by
ossl_method_construct()).
This function assumes that the sub-system method creator implements
@@ -59,14 +73,14 @@ appropriate).
A central part of constructing a sub-system specific method is to give
ossl_method_construct a set of functions, all in the
C<OSSL_METHOD_CONSTRUCT_METHOD> structure, which holds the following
B<OSSL_METHOD_CONSTRUCT_METHOD> structure, which holds the following
function pointers:
=over 4
=item alloc_tmp_store()
Create a temporary method store in the scope of the library context C<ctx>.
Create a temporary method store in the scope of the library context I<ctx>.
This store is used to temporarily store methods for easier lookup, for
when the provider doesn't want its dispatch table stored in a longer
term cache.
@@ -79,50 +93,51 @@ Remove a temporary store.
Look up an already existing method from a store by name.
The store may be given with C<store>.
The store may be given with I<store>.
B<NULL> is a valid value and means that a sub-system default store
must be used.
This default store should be stored in the library context C<libctx>.
This default store should be stored in the library context I<libctx>.
The method to be looked up should be identified with the given C<name> and
data from C<data>
(which is the C<mcm_data> that was passed to ossl_construct_method())
and the provided property query C<propquery>.
The method to be looked up should be identified with the given
I<operation_id>, I<name>, the provided property query I<propquery>
and data from I<data> (which is the I<mcm_data> that was passed to
ossl_construct_method()).
This function is expected to increment the method's reference count.
=item put()
Places the C<method> created by the construct() function (see below)
Places the I<method> created by the construct() function (see below)
in a store.
The store may be given with C<store>.
The store may be given with I<store>.
B<NULL> is a valid value and means that a sub-system default store
must be used.
This default store should be stored in the library context C<libctx>.
This default store should be stored in the library context I<libctx>.
The method should be associated with the given C<name> and property definition
C<propdef> as well as any identification data given through C<data> (which is
the C<mcm_data> that was passed to ossl_construct_method()).
The method should be associated with the given I<operation_id>,
I<name> and property definition I<propdef> as well as any
identification data given through I<data> (which is the I<mcm_data>
that was passed to ossl_construct_method()).
This function is expected to increment the C<method>'s reference count.
This function is expected to increment the I<method>'s reference count.
=item construct()
Constructs a sub-system method for the given C<name> and the given
dispatch table C<fns>.
Constructs a sub-system method for the given I<name> and the given
dispatch table I<fns>.
The associated I<provider object> C<prov> is passed as well, to make
The associated provider object I<prov> is passed as well, to make
it possible for the sub-system constructor to keep a reference, which
is recommended.
If such a reference is kept, the I<provider object> reference counter
must be incremented, using ossl_provider_upref().
must be incremented, using ossl_provider_up_ref().
This function is expected to set the method's reference count to 1.
=item desctruct()
=item destruct()
Decrement the C<method>'s reference count, and destruct it when
Decrement the I<method>'s reference count, and destruct it when
the reference count reaches zero.
=back