SMIME_READ_ASN1(3)

NAME
SMIME_read_ASN1 - generic S/MIME message parser

SYNOPSIS
#include <openssl/asn1.h>
ASN1_VALUE *
SMIME_read_ASN1(BIO *in_bio, BIO **out_bio, const ASN1_ITEM *it);

DESCRIPTION
SMIME_read_ASN1() reads a message in S/MIME format from in_bio.

If the message uses cleartext signing, the content is saved in a memory BIO which is written to *out_bio. Otherwise, *out_bio is set to NULL.

To support future functionality, if out_bio is not NULL, *out_bio should be initialized to NULL before calling SMIME_read_ASN1().

RETURN VALUES
SMIME_read_ASN1() returns a newly allocated object of type it or NULL if an error occurred. The error can be obtained from ERR_get_error(3).

SEE ALSO
ASN1_item_d2i_bio(3), BIO_f_base64(3), BIO_new(3), SMIME_read_CMS(3), SMIME_read_PKCS7(3), SMIME_text(3)

HISTORY
SMIME_read_ASN1() first appeared in OpenSSL 0.9.8h and has been available since OpenBSD 4.5.

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

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

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