12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697 |
- =pod
- =head1 NAME
- OPENSSL_CTX_get0_master_drbg,
- OPENSSL_CTX_get0_public_drbg,
- OPENSSL_CTX_get0_private_drbg,
- RAND_DRBG_get0_master,
- RAND_DRBG_get0_public,
- RAND_DRBG_get0_private
- - get access to the global RAND_DRBG instances
- =head1 SYNOPSIS
- #include <openssl/rand_drbg.h>
- RAND_DRBG *OPENSSL_CTX_get0_master_drbg(OPENSSL_CTX *ctx);
- RAND_DRBG *OPENSSL_CTX_get0_public_drbg(OPENSSL_CTX *ctx);
- RAND_DRBG *OPENSSL_CTX_get0_private_drbg(OPENSSL_CTX *ctx);
- RAND_DRBG *RAND_DRBG_get0_master(void);
- RAND_DRBG *RAND_DRBG_get0_public(void);
- RAND_DRBG *RAND_DRBG_get0_private(void);
- =head1 DESCRIPTION
- The default RAND API implementation (RAND_OpenSSL()) utilizes three
- shared DRBG instances which are accessed via the RAND API:
- The I<public> and I<private> DRBG are thread-local instances, which are used
- by RAND_bytes() and RAND_priv_bytes(), respectively.
- The I<master> DRBG is a global instance, which is not intended to be used
- directly, but is used internally to reseed the other two instances.
- These functions here provide access to the shared DRBG instances.
- =head1 RETURN VALUES
- OPENSSL_CTX_get0_master_drbg() returns a pointer to the I<master> DRBG instance
- for the given OPENSSL_CTX B<ctx>.
- OPENSSL_CTX_get0_public_drbg() returns a pointer to the I<public> DRBG instance
- for the given OPENSSL_CTX B<ctx>.
- OPENSSL_CTX_get0_private_drbg() returns a pointer to the I<private> DRBG instance
- for the given OPENSSL_CTX B<ctx>.
- In all the above cases the B<ctx> parameter can
- be NULL in which case the default OPENSSL_CTX is used. RAND_DRBG_get0_master(),
- RAND_DRBG_get0_public() and RAND_DRBG_get0_private() are the same as
- OPENSSL_CTX_get0_master_drbg(), OPENSSL_CTX_get0_public_drbg() and
- OPENSSL_CTX_get0_private_drbg() respectively except that the default OPENSSL_CTX
- is always used.
- =head1 NOTES
- It is not thread-safe to access the I<master> DRBG instance.
- The I<public> and I<private> DRBG instance can be accessed safely, because
- they are thread-local. Note however, that changes to these two instances
- apply only to the current thread.
- For that reason it is recommended not to change the settings of these
- three instances directly.
- Instead, an application should change the default settings for new DRBG instances
- at initialization time, before creating additional threads.
- During initialization, it is possible to change the reseed interval
- and reseed time interval.
- It is also possible to exchange the reseeding callbacks entirely.
- =head1 SEE ALSO
- L<RAND_DRBG_set_callbacks(3)>,
- L<RAND_DRBG_set_reseed_defaults(3)>,
- L<RAND_DRBG_set_reseed_interval(3)>,
- L<RAND_DRBG_set_reseed_time_interval(3)>,
- L<RAND_DRBG_set_callbacks(3)>,
- L<RAND_DRBG_generate(3)>,
- L<RAND_DRBG(7)>
- =head1 HISTORY
- The OPENSSL_CTX_get0_master_drbg(), OPENSSL_CTX_get0_public_drbg() and
- OPENSSL_CTX_get0_private_drbg() functions were added in OpenSSL 3.0.
- All other RAND_DRBG functions were added in OpenSSL 1.1.1.
- =head1 COPYRIGHT
- Copyright 2017-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
|