mirror of
https://github.com/openssl/openssl.git
synced 2024-12-21 06:09:35 +08:00
73 lines
2.2 KiB
Plaintext
73 lines
2.2 KiB
Plaintext
|
=pod
|
||
|
|
||
|
=head1 NAME
|
||
|
|
||
|
BIO_s_core, BIO_new_from_core_bio - OSSL_CORE_BIO functions
|
||
|
|
||
|
=head1 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);
|
||
|
|
||
|
=head1 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 contructed 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).
|
||
|
|
||
|
=head1 RETURN VALUES
|
||
|
|
||
|
BIO_s_core() return a core BIO B<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).
|
||
|
|
||
|
=head1 HISTORY
|
||
|
|
||
|
BIO_s_core() and BIO_new_from_core_bio() were added in OpenSSL 3.0.
|
||
|
|
||
|
=head1 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;
|
||
|
}
|
||
|
|
||
|
=head1 COPYRIGHT
|
||
|
|
||
|
Copyright 2021 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
|