[openssl] master update

Richard Levitte levitte at openssl.org
Thu Nov 14 07:24:42 UTC 2019

The branch master has been updated
       via  10e7216e502916f8e7917ac4f21411fffd1fb882 (commit)
      from  c31950b964a2f3f7b9e6ad98076954178ee1e77d (commit)

- Log -----------------------------------------------------------------
commit 10e7216e502916f8e7917ac4f21411fffd1fb882
Author: Richard Levitte <levitte at openssl.org>
Date:   Mon Nov 11 18:38:57 2019 +0100

    CORE: Add a generic callback function type
    This offers a very generic way to define a callback as well as calling
    Reviewed-by: Matt Caswell <matt at openssl.org>
    (Merged from https://github.com/openssl/openssl/pull/10412)


Summary of changes:
 doc/man7/openssl-core.h.pod | 12 ++++++++++++
 include/openssl/core.h      | 15 +++++++++++++++
 2 files changed, 27 insertions(+)

diff --git a/doc/man7/openssl-core.h.pod b/doc/man7/openssl-core.h.pod
index a7f209b104..55d53fe262 100644
--- a/doc/man7/openssl-core.h.pod
+++ b/doc/man7/openssl-core.h.pod
@@ -74,6 +74,18 @@ parameters, and to describe parameters.
 B<OSSL_PARAM> is further described in L<OSSL_PARAM(3)>
+This is a function type for a generic callback function:
+    typedef int (OSSL_CALLBACK)(const OSSL_PARAM params[], void *arg);
+A function that takes a pointer of this type should also take a
+pointer to caller data.  When calling this callback, the function is
+expected to build an B<OSSL_PARAM> array of data it wants or is
+expected to pass back, and pass that as I<params>, as well as
+the caller data pointer it received, as I<arg>.
 =head1 SEE ALSO
diff --git a/include/openssl/core.h b/include/openssl/core.h
index 74a3bfb91e..bed580c811 100644
--- a/include/openssl/core.h
+++ b/include/openssl/core.h
@@ -187,6 +187,21 @@ extern OSSL_provider_init_fn OSSL_provider_init;
 #  pragma names restore
 # endif
+ * Generic callback function signature.
+ *
+ * The expectation is that any provider function that wants to offer
+ * a callback / hook can do so by taking an argument with this type,
+ * as well as a pointer to caller-specific data.  When calling the
+ * callback, the provider function can populate an OSSL_PARAM array
+ * with data of its choice and pass that in the callback call, along
+ * with the caller data argument.
+ *
+ * libcrypto may use the OSSL_PARAM array to create arguments for an
+ * application callback it knows about.
+ */
+typedef int (OSSL_CALLBACK)(const OSSL_PARAM params[], void *arg);
 # ifdef __cplusplus
 # endif

More information about the openssl-commits mailing list