=pod

=head1 NAME

i2d_PKCS7_bio_stream - output PKCS7 structure in BER format.

=head1 SYNOPSIS

 #include <openssl/pkcs7.h>

 int i2d_PKCS7_bio_stream(BIO *out, PKCS7 *p7, BIO *data, int flags);

=head1 DESCRIPTION

i2d_PKCS7_bio_stream() outputs a PKCS7 structure in BER format.

It is otherwise identical to the function SMIME_write_PKCS7().

=head1 NOTES

This function is effectively a version of the d2i_PKCS7_bio() supporting
streaming.

=head1 BUGS

The prefix "d2i" is arguably wrong because the function outputs BER format.

=head1 RETURN VALUES

i2d_PKCS7_bio_stream() returns 1 for success or 0 for failure.

=head1 SEE ALSO

L<ERR_get_error(3)|ERR_get_error(3)>, L<PKCS7_sign(3)|PKCS7_sign(3)>,
L<PKCS7_verify(3)|PKCS7_verify(3)>, L<PKCS7_encrypt(3)|PKCS7_encrypt(3)>
L<PKCS7_decrypt(3)|PKCS7_decrypt(3)>,
L<SMIME_write_PKCS7(3)|SMIME_write_PKCS7(3)>,
L<PEM_write_bio_PKCS7_stream(3)|PEM_write_bio_PKCS7_stream(3)>

=head1 HISTORY

i2d_PKCS7_bio_stream() was added to OpenSSL 1.0.0

=cut
