SMIME_write_ASN1
—
generate an S/MIME message
#include <openssl/asn1.h>
int
SMIME_write_ASN1
(BIO *out_bio,
ASN1_VALUE *val_in, BIO *in_bio,
int flags, int ctype_nid,
int econt_nid, STACK_OF(X509_ALGOR)
*micalg, const ASN1_ITEM *it);
SMIME_write_ASN1
() generates an S/MIME message on
out_bio by writing MIME 1.0 headers followed by a BER-
and base64-encoded serialization of val_in, which can be
of the type CMS_ContentInfo or
PKCS7 and has to match the it
argument.
The flags can be the logical OR of zero or
more of the following bits:
PKCS7_REUSE_DIGEST
- Skip the calls to
PKCS7_dataInit(3)
and
PKCS7_dataFinal(3).
This flag has no effect unless
SMIME_DETACHED
is
also set. It is normally used if out_bio is already
set up to calculate and finalize the digest when written through.
SMIME_BINARY
- If specified, this flag is passed through to
SMIME_crlf_copy(3).
SMIME_CRLFEOL
- End MIME header lines with pairs of carriage return and newline
characters. By default, no carriage return characters are written and
header lines are ended with newline characters only.
SMIME_DETACHED
- Use cleartext signing. Generate a “multipart/signed” S/MIME
message using the micalg argument and ignoring the
ctype_nid and econt_nid
arguments. The content is read from in_bio. If
in_bio is a
NULL
pointer,
this flag is ignored.
If this flag is ignored or not specified, the smime-type is
chosen according to ctype_nid instead:
NID_pkcs7_enveloped
- “enveloped-data”
NID_pkcs7_signed
- “signed-receipt” if econt_nid is
NID_id_smime_ct_receipt
“signed-data” if micalg is not empty
“certs-only” if micalg is empty
NID_id_smime_ct_compressedData
- “compressed-data”
SMIME_OLDMIME
- In Content-Type headers, use “application/x-pkcs7-mime” or
“application/x-pkcs7-signature”. By default,
“application/pkcs7-mime” or
“application/pkcs7-signature” are used instead.
SMIME_STREAM
- Perform streaming by passing this flag through to
i2d_ASN1_bio_stream(3)
and reading the content from in_bio. This only works
if
SMIME_DETACHED
is not specified.
- SMIME_TEXT
- Prepend the line “Content-Type: text/plain” to the content.
This only makes sense if
SMIME_DETACHED
is also
set. It is ignored if the flag SMIME_BINARY
is
also set.
SMIME_write_ASN1
() is intended to return 1 on success or
0 on failure.
SMIME_write_ASN1
() first appeared in OpenSSL 1.0.0 and
has been available since OpenBSD 4.9.
SMIME_write_ASN1
() ignores most errors and is likely to
return 1 even after producing corrupt or incomplete output.