=pod

=head1 NAME

SMIME_read_CMS - parse S/MIME message

=head1 SYNOPSIS

 #include <openssl/cms.h>

 CMS_ContentInfo *SMIME_read_CMS(BIO *in, BIO **bcont);

=head1 DESCRIPTION

SMIME_read_CMS() parses a message in S/MIME format.

B<in> is a BIO to read the message from.

If cleartext signing is used then the content is saved in a memory bio which is
written to B<*bcont>, otherwise B<*bcont> is set to NULL.

The parsed CMS_ContentInfo structure is returned or NULL if an
error occurred.

=head1 NOTES

If B<*bcont> is not NULL then the message is clear text signed. B<*bcont> can
then be passed to CMS_verify() with the B<CMS_DETACHED> flag set.

Otherwise the type of the returned structure can be determined
using CMS_get0_type().

To support future functionality if B<bcont> is not NULL B<*bcont> should be
initialized to NULL. For example:

 BIO *cont = NULL;
 CMS_ContentInfo *cms;

 cms = SMIME_read_CMS(in, &cont);

=head1 BUGS

The MIME parser used by SMIME_read_CMS() is somewhat primitive.  While it will
handle most S/MIME messages more complex compound formats may not work.

The parser assumes that the CMS_ContentInfo structure is always base64 encoded
and will not handle the case where it is in binary format or uses quoted
printable format.

The use of a memory BIO to hold the signed content limits the size of message
which can be processed due to memory restraints: a streaming single pass option
should be available.

=head1 RETURN VALUES

SMIME_read_CMS() returns a valid B<CMS_ContentInfo> structure or B<NULL>
if an error occurred. The error can be obtained from ERR_get_error(3).

=head1 SEE ALSO

L<ERR_get_error(3)>, L<CMS_type(3)>,
L<SMIME_read_CMS(3)>, L<CMS_sign(3)>,
L<CMS_verify(3)>, L<CMS_encrypt(3)>,
L<CMS_decrypt(3)>

=head1 COPYRIGHT

Copyright 2008-2016 The OpenSSL Project Authors. All Rights Reserved.

Licensed under the OpenSSL license (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
