2023-05-01 20:06:12 +00:00
|
|
|
.\" $OpenBSD: SMIME_write_ASN1.3,v 1.2 2023/05/01 07:28:11 tb Exp $
|
2023-04-30 01:15:27 +00:00
|
|
|
.\"
|
|
|
|
.\" Copyright (c) 2021 Ingo Schwarze <schwarze@openbsd.org>
|
|
|
|
.\"
|
|
|
|
.\" Permission to use, copy, modify, and distribute this software for any
|
|
|
|
.\" purpose with or without fee is hereby granted, provided that the above
|
|
|
|
.\" copyright notice and this permission notice appear in all copies.
|
|
|
|
.\"
|
|
|
|
.\" THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
|
|
|
|
.\" WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
|
|
|
|
.\" MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
|
|
|
|
.\" ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
|
|
|
|
.\" WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
|
|
|
|
.\" ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
|
|
|
|
.\" OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
|
|
|
|
.\"
|
2023-05-01 20:06:12 +00:00
|
|
|
.Dd $Mdocdate: May 1 2023 $
|
2023-04-30 01:15:27 +00:00
|
|
|
.Dt SMIME_WRITE_ASN1 3
|
|
|
|
.Os
|
|
|
|
.Sh NAME
|
|
|
|
.Nm SMIME_write_ASN1
|
|
|
|
.Nd generate an S/MIME message
|
|
|
|
.Sh SYNOPSIS
|
|
|
|
.In openssl/asn1.h
|
|
|
|
.Ft int
|
|
|
|
.Fo SMIME_write_ASN1
|
|
|
|
.Fa "BIO *out_bio"
|
|
|
|
.Fa "ASN1_VALUE *val_in"
|
|
|
|
.Fa "BIO *in_bio"
|
|
|
|
.Fa "int flags"
|
|
|
|
.Fa "int ctype_nid"
|
|
|
|
.Fa "int econt_nid"
|
|
|
|
.Fa "STACK_OF(X509_ALGOR) *micalg"
|
|
|
|
.Fa "const ASN1_ITEM *it"
|
|
|
|
.Fc
|
|
|
|
.Sh DESCRIPTION
|
|
|
|
.Fn SMIME_write_ASN1
|
|
|
|
generates an S/MIME message on
|
|
|
|
.Fa out_bio
|
|
|
|
by writing MIME 1.0 headers
|
|
|
|
followed by a BER- and base64-encoded serialization of
|
|
|
|
.Fa val_in ,
|
|
|
|
which can be of the type
|
|
|
|
.Vt CMS_ContentInfo
|
|
|
|
or
|
|
|
|
.Vt PKCS7
|
|
|
|
and has to match the
|
|
|
|
.Fa it
|
|
|
|
argument.
|
|
|
|
.Pp
|
|
|
|
The
|
|
|
|
.Fa flags
|
|
|
|
can be the logical OR of zero or more of the following bits:
|
|
|
|
.Bl -tag -width Ds
|
|
|
|
.It Dv PKCS7_REUSE_DIGEST
|
|
|
|
Skip the calls to
|
|
|
|
.Xr PKCS7_dataInit 3
|
|
|
|
and
|
|
|
|
.Xr PKCS7_dataFinal 3 .
|
|
|
|
This flag has no effect unless
|
|
|
|
.Dv SMIME_DETACHED
|
|
|
|
is also set.
|
|
|
|
It is normally used if
|
|
|
|
.Fa out_bio
|
|
|
|
is already set up to calculate and finalize the digest when written through.
|
|
|
|
.It Dv SMIME_BINARY
|
|
|
|
If specified, this flag is passed through to
|
|
|
|
.Xr SMIME_crlf_copy 3 .
|
|
|
|
.It Dv 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.
|
|
|
|
.It Dv SMIME_DETACHED
|
|
|
|
Use cleartext signing.
|
|
|
|
Generate a
|
|
|
|
.Qq multipart/signed
|
|
|
|
S/MIME message using the
|
|
|
|
.Fa micalg
|
|
|
|
argument and ignoring the
|
|
|
|
.Fa ctype_nid
|
|
|
|
and
|
|
|
|
.Fa econt_nid
|
|
|
|
arguments.
|
|
|
|
The content is read from
|
|
|
|
.Fa in_bio .
|
|
|
|
If
|
|
|
|
.Fa in_bio
|
|
|
|
is a
|
|
|
|
.Dv NULL
|
|
|
|
pointer, this flag is ignored.
|
|
|
|
.Pp
|
|
|
|
If this flag is ignored or not specified,
|
|
|
|
the smime-type is chosen according to
|
|
|
|
.Fa ctype_nid
|
|
|
|
instead:
|
|
|
|
.Bl -tag -width Ds
|
|
|
|
.It Dv NID_pkcs7_enveloped
|
|
|
|
.Qq enveloped-data
|
|
|
|
.It Dv NID_pkcs7_signed
|
|
|
|
.Qq signed-receipt
|
|
|
|
if
|
|
|
|
.Fa econt_nid
|
|
|
|
is
|
|
|
|
.Dv NID_id_smime_ct_receipt
|
|
|
|
.br
|
|
|
|
.Qq signed-data
|
|
|
|
if
|
|
|
|
.Fa micalg
|
|
|
|
is not empty
|
|
|
|
.br
|
|
|
|
.Qq certs-only
|
|
|
|
if
|
|
|
|
.Fa micalg
|
|
|
|
is empty
|
|
|
|
.It Dv NID_id_smime_ct_compressedData
|
|
|
|
.Qq compressed-data
|
|
|
|
.El
|
|
|
|
.It Dv SMIME_OLDMIME
|
|
|
|
In Content-Type headers, use
|
|
|
|
.Qq application/x-pkcs7-mime
|
|
|
|
or
|
|
|
|
.Qq application/x-pkcs7-signature .
|
|
|
|
By default,
|
|
|
|
.Qq application/pkcs7-mime
|
|
|
|
or
|
|
|
|
.Qq application/pkcs7-signature
|
|
|
|
are used instead.
|
|
|
|
.It Dv SMIME_STREAM
|
2023-05-01 20:06:12 +00:00
|
|
|
Perform streaming by reading the content from
|
2023-04-30 01:15:27 +00:00
|
|
|
.Fa in_bio .
|
|
|
|
This only works if
|
|
|
|
.Dv SMIME_DETACHED
|
|
|
|
is not specified.
|
|
|
|
.It SMIME_TEXT
|
|
|
|
Prepend the line
|
|
|
|
.Qq Content-Type: text/plain
|
|
|
|
to the content.
|
|
|
|
This only makes sense if
|
|
|
|
.Dv SMIME_DETACHED
|
|
|
|
is also set.
|
|
|
|
It is ignored if the flag
|
|
|
|
.Dv SMIME_BINARY
|
|
|
|
is also set.
|
|
|
|
.El
|
|
|
|
.Sh RETURN VALUES
|
|
|
|
.Fn SMIME_write_ASN1
|
|
|
|
is intended to return 1 on success or 0 on failure.
|
|
|
|
.Sh SEE ALSO
|
|
|
|
.Xr ASN1_item_i2d_bio 3 ,
|
|
|
|
.Xr BIO_f_base64 3 ,
|
|
|
|
.Xr BIO_new 3 ,
|
|
|
|
.Xr SMIME_crlf_copy 3 ,
|
|
|
|
.Xr SMIME_write_CMS 3 ,
|
|
|
|
.Xr SMIME_write_PKCS7 3 ,
|
|
|
|
.Xr X509_ALGOR_new 3
|
|
|
|
.Sh HISTORY
|
|
|
|
.Fn SMIME_write_ASN1
|
|
|
|
first appeared in OpenSSL 1.0.0 and has been available since
|
|
|
|
.Ox 4.9 .
|
|
|
|
.Sh BUGS
|
|
|
|
.Fn SMIME_write_ASN1
|
|
|
|
ignores most errors and is likely to return 1
|
|
|
|
even after producing corrupt or incomplete output.
|