Provided by: libssl-doc_3.0.13-0ubuntu3.5_all bug

NAME

       BIO_s_core, BIO_new_from_core_bio - OSSL_CORE_BIO functions

SYNOPSIS

        #include <openssl/bio.h>

        const BIO_METHOD *BIO_s_core(void);

        BIO *BIO_new_from_core_bio(OSSL_LIB_CTX *libctx, OSSL_CORE_BIO *corebio);

DESCRIPTION

       BIO_s_core() returns the core BIO method function.

       A core BIO is treated as source/sink BIO which communicates to some external BIO. This is primarily
       useful to provider authors. A number of calls from libcrypto into a provider supply an OSSL_CORE_BIO
       parameter. This represents a BIO within libcrypto, but cannot be used directly by a provider. Instead it
       should be wrapped using a BIO_s_core().

       Once a BIO is constructed based on BIO_s_core(), the associated OSSL_CORE_BIO object should be set on it
       using BIO_set_data(3). Note that the BIO will only operate correctly if it is associated with a library
       context constructed using OSSL_LIB_CTX_new_from_dispatch(3). To associate the BIO with a library context
       construct it using BIO_new_ex(3).

       BIO_new_from_core_bio() is a convenience function that constructs a new BIO based on BIO_s_core() and
       that is associated with the given library context. It then also sets the OSSL_CORE_BIO object on the BIO
       using BIO_set_data(3).

RETURN VALUES

       BIO_s_core() return a core BIO BIO_METHOD structure.

       BIO_new_from_core_bio() returns a BIO structure on success or NULL on failure.  A failure will most
       commonly be because the library context was not constructed using OSSL_LIB_CTX_new_from_dispatch(3).

HISTORY

       BIO_s_core() and BIO_new_from_core_bio() were added in OpenSSL 3.0.

EXAMPLES

       Create a core BIO and write some data to it:

        int some_function(OSSL_LIB_CTX *libctx, OSSL_CORE_BIO *corebio) {
            BIO *cbio = BIO_new_from_core_bio(libctx, corebio);

            if (cbio == NULL)
                return 0;

            BIO_puts(cbio, "Hello World\n");

            BIO_free(cbio);
            return 1;
        }

COPYRIGHT

       Copyright 2021-2023 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
       <https://www.openssl.org/source/license.html>.