CMS_compress
—
create a CMS CompressedData structure
#include
<openssl/cms.h>
CMS_ContentInfo *
CMS_compress
(BIO *in,
int comp_nid, unsigned int
flags);
CMS_compress
()
creates and returns a CMS CompressedData
structure.
comp_nid is the
compression algorithm to use or NID_undef
to use the
default algorithm. Currently, the default algorithm
NID_zlib_compression
is the only supported
algorithm. If zlib support is not compiled in,
CMS_compress
()
always returns an error.
in provides the content to be
compressed.
Any of the following flags (OR'ed together) can be passed in the
flags parameter:
CMS_TEXT
- Prepend MIME headers for type text/plain to the data.
CMS_BINARY
- Do not translate the supplied content into MIME canonical format, even
though that is required by the S/MIME specifications. This option should
be used if the supplied data is in binary format. Otherwise, the
translation will corrupt it. If
CMS_BINARY
is set,
CMS_TEXT
is ignored.
CMS_STREAM
- Return a partial CMS_ContentInfo structure suitable
for streaming I/O: no data is read from in. Several
functions including
SMIME_write_CMS(3),
i2d_CMS_bio_stream(3),
or
PEM_write_bio_CMS_stream(3)
can be used to finalize the structure. Alternatively, finalization can be
performed by obtaining the streaming ASN1 BIO
directly using
BIO_new_CMS(3).
Outputting the contents of the CMS_ContentInfo
structure via a function that does not properly finalize it will give
unpredictable results.
CMS_DETACHED
- Do not include the compressed data in the
CMS_ContentInfo structure. This is rarely used in
practice and is not supported by
SMIME_write_CMS(3).
Additional compression parameters such as the zlib compression
level cannot currently be set.
CMS_compress
() returns either a
CMS_ContentInfo structure or
NULL
if an error occurred. The error can be obtained
from
ERR_get_error(3).
RFC 3274: Compressed Data Content Type for Cryptographic Message
Syntax (CMS)
CMS_compress
() first appeared in OpenSSL
0.9.8h and has been available since OpenBSD 6.7.
The CMS_STREAM
flag first appeared in
OpenSSL 1.0.0.