Sortix
Sortix Download Manual Development Source Code News Blog More
current nightly

Sortix volatile manual

This manual documents Sortix volatile, a development build that has not been officially released. You can instead view this document in the latest official manual.

NAME

SMIME_write_ASN1 — generate an S/MIME message

SYNOPSIS

#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);

DESCRIPTION

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 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.

RETURN VALUES

SMIME_write_ASN1() is intended to return 1 on success or 0 on failure.

SEE ALSO

ASN1_item_i2d_bio(3), BIO_f_base64(3), BIO_new(3), SMIME_crlf_copy(3), SMIME_write_CMS(3), SMIME_write_PKCS7(3), X509_ALGOR_new(3)

HISTORY

SMIME_write_ASN1() first appeared in OpenSSL 1.0.0 and has been available since OpenBSD 4.9.

BUGS

SMIME_write_ASN1() ignores most errors and is likely to return 1 even after producing corrupt or incomplete output.
Copyright 2011-2025 Jonas 'Sortie' Termansen and contributors.
Sortix's source code is free software under the ISC license.
#sortix on irc.sortix.org
@sortix_org