| =pod |
| |
| =head1 NAME |
| |
| OPENSSL_CTX, OPENSSL_CTX_new, OPENSSL_CTX_free, OPENSSL_CTX_load_config, |
| OPENSSL_CTX_set0_default |
| - OpenSSL library context |
| |
| =head1 SYNOPSIS |
| |
| #include <openssl/crypto.h> |
| |
| typedef struct openssl_ctx_st OPENSSL_CTX; |
| |
| OPENSSL_CTX *OPENSSL_CTX_new(void); |
| int OPENSSL_CTX_load_config(OPENSSL_CTX *ctx, const char *config_file); |
| void OPENSSL_CTX_free(OPENSSL_CTX *ctx); |
| OPENSSL_CTX *OPENSSL_CTX_set0_default(OPENSSL_CTX *ctx); |
| |
| =head1 DESCRIPTION |
| |
| B<OPENSSL_CTX> is an internal OpenSSL library context type. |
| Applications may allocate their own, but may also use NULL to use |
| a default context with functions that take an B<OPENSSL_CTX> |
| argument. |
| |
| When a non default library context is in use care should be taken with |
| multi-threaded applications to properly clean up thread local resources before |
| the OPENSSL_CTX is freed. |
| See L<OPENSSL_thread_stop_ex(3)> for more information. |
| |
| OPENSSL_CTX_new() creates a new OpenSSL library context. |
| |
| OPENSSL_CTX_load_config() loads a configuration file using the given C<ctx>. |
| This can be used to associate a library context with providers that are loaded |
| from a configuration. |
| |
| OPENSSL_CTX_free() frees the given I<ctx>, unless it happens to be the |
| default OpenSSL library context. |
| |
| OPENSSL_CTX_set0_default() sets the default OpenSSL library context to be |
| I<ctx> in the current thread. The previous default library context is |
| returned. Care should be taken by the caller to restore the previous |
| default library context with a subsequent call of this function. |
| |
| Care should be taken when changing the default library context and starting |
| async jobs (see L<ASYNC_start_job(3)>), as the default library context when |
| the job is started will be used throughout the lifetime of an async job, no |
| matter how the calling thread makes further default library context changes |
| in the mean time. This means that the calling thread must not free the |
| library context that was the default at the start of the async job before |
| that job has finished. |
| |
| =head1 RETURN VALUES |
| |
| OPENSSL_CTX_new() and OPENSSL_CTX_set0_default() return a library context |
| pointer on success, or NULL on error. |
| |
| OPENSSL_CTX_free() doesn't return any value. |
| |
| =head1 HISTORY |
| |
| OPENSSL_CTX, OPENSSL_CTX_new(), OPENSSL_CTX_load_config(), OPENSSL_CTX_free() |
| and OPENSSL_CTX_set0_default() were added in OpenSSL 3.0. |
| |
| =head1 COPYRIGHT |
| |
| Copyright 2019-2020 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 |