#include <openssl/pkcs7.h> int SMIME_write_PKCS7(BIO *out, PKCS7 *p7, BIO *data, int flags);
out is the BIO to write the data to. p7 is the appropriate PKCS7 structure. If cleartext signing (multipart/signed) is being used then the signed data must be supplied in the data argument. flags is an optional set of flags.
If PKCS7_DETACHED is set then cleartext signing will be used, this option only makes sense for signedData where PKCS7_DETACHED is also set when PKCS7_sign() is also called.
If the PKCS7_TEXT flag is set MIME headers for type text/plain are added to the content, this only makes sense if PKCS7_DETACHED is also set.
If the PKCS7_PARTSIGN flag is set the signed data is finalized and output along with the content. This flag should only be set if PKCS7_DETACHED is also set and the previous call to PKCS7_sign() also set these flags.
If cleartext signing is being used and PKCS7_PARTSIGN not set then the data must be read twice: once to compute the signature in PKCS7_sign() and once to output the S/MIME message.