123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129 |
- =pod
- =head1 NAME
- openssl/core.h - OpenSSL Core types
- =head1 SYNOPSIS
- #include <openssl/core.h>
- =head1 DESCRIPTION
- The F<< <openssl/core.h> >> header defines a number of public types that
- are used to communicate between the OpenSSL libraries and
- implementation providers.
- These types are designed to minimise the need for intimate knowledge
- of internal structures between the OpenSSL libraries and the providers.
- The types are:
- =over 4
- =item B<OSSL_DISPATCH>
- This type is a tuple of function identity and function pointer.
- Arrays of this type are passed between the OpenSSL libraries and the
- providers to describe what functionality one side provides to the
- other.
- Arrays of this type must be terminated with a tuple having function
- identity zero and function pointer NULL.
- The available function identities and corresponding function
- signatures are defined in L<openssl-core_numbers.h(7)>.
- Any function identity not recognised by the recipient of this type
- will be ignored.
- This ensures that providers built with one OpenSSL version in mind
- will work together with any other OpenSSL version that supports this
- mechanism.
- =item B<OSSL_ITEM>
- This type is a tuple of integer and pointer.
- It's a generic type used as a generic descriptor, its exact meaning
- being defined by how it's used.
- Arrays of this type are passed between the OpenSSL libraries and the
- providers, and must be terminated with a tuple where the integer is
- zero and the pointer NULL.
- =item B<OSSL_ALGORITHM>
- This type is a tuple of an algorithm name (string), a property
- definition (string) and a dispatch table (array of B<OSSL_DISPATCH>).
- Arrays of this type are passed on demand from the providers to the
- OpenSSL libraries to describe what algorithms the providers provide
- implementations of, and with what properties.
- Arrays of this type must be terminated with a tuple having function
- identity zero and function pointer NULL.
- The algorithm names and property definitions are defined by the
- providers.
- =item B<OSSL_PARAM>
- This type is a structure that allows passing arbitrary object data
- between two parties that have no or very little shared knowledge about
- their respective internal structures for that object.
- It's normally passed in arrays, where the array is terminated with an
- element where all fields are zero (for non-pointers) or NULL (for
- pointers).
- These arrays can be used to set parameters for some object, to request
- parameters, and to describe parameters.
- B<OSSL_PARAM> is further described in L<OSSL_PARAM(3)>
- =item B<OSSL_CALLBACK>
- This is a function type for a generic feedback 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>.
- =item B<OSSL_PASSPHRASE_CALLBACK>
- This is a function type for a generic pass phrase callback function:
- typedef int (OSSL_PASSPHRASE_CALLBACK)(char *pass, size_t pass_size,
- size_t *pass_len,
- const OSSL_PARAM params[],
- void *arg);
- This callback can be used to prompt the user for a passphrase. When
- calling it, a buffer to store the pass phrase needs to be given with
- I<pass>, and its size with I<pass_size>. The length of the prompted
- pass phrase will be given back in I<*pass_len>.
- Additional parameters can be passed with the B<OSSL_PARAM> array
- I<params>.
- A function that takes a pointer of this type should also take a
- pointer to caller data, which should be passed as I<arg> to this
- callback.
- =back
- =head1 SEE ALSO
- L<openssl-core_numbers.h(7)>
- =head1 HISTORY
- The types described here were added in OpenSSL 3.0.
- =head1 COPYRIGHT
- Copyright 2019 The OpenSSL Project Authors. 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
|