BIO_s_core, BIO_new_from_core_bio - OSSL_CORE_BIO functions
#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);
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).
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).
BIO_s_core() and
BIO_new_from_core_bio() were added in OpenSSL
3.0.
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 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>.