CMS_compress(3)

CMS_compress(3) | OpenSSL | CMS_compress(3)

# NAME

CMS_compress - create a CMS CompressedData structure

# LIBRARY

libcrypto, -lcrypto

# SYNOPSIS

     #include <openssl/cms.h>
     CMS_ContentInfo *CMS_compress(BIO *in, int comp_nid, unsigned int flags);

# DESCRIPTION

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 (zlib compression). in is the content to be compressed. flags is an optional set of flags.

# NOTES

The only currently supported compression algorithm is zlib using the NID NID_zlib_compression.
If zlib support is not compiled into OpenSSL then CMS_compress() will return an error.
If the CMS_TEXT flag is set MIME headers for type text/plain are prepended to the data.
Normally the supplied content is translated into MIME canonical format (as required by the S/MIME specifications) if CMS_BINARY is set no translation occurs. This option should be used if the supplied data is in binary format otherwise the translation will corrupt it. If CMS_BINARY is set then CMS_TEXT is ignored.
If the CMS_STREAM flag is set a partial CMS_ContentInfo structure is returned suitable for streaming I/O: no data is read from the BIO in.
The compressed data is included in the CMS_ContentInfo structure, unless CMS_DETACHED is set in which case it is omitted. This is rarely used in practice and is not supported by SMIME_write_CMS().

# NOTES

If the flag CMS_STREAM is set the returned CMS_ContentInfo structure is not complete and outputting its contents via a function that does not properly finalize the CMS_ContentInfo structure will give unpredictable results.
Several functions including SMIME_write_CMS(), i2d_CMS_bio_stream(), PEM_write_bio_CMS_stream() finalize the structure. Alternatively finalization can be performed by obtaining the streaming ASN1 BIO directly using BIO_new_CMS().
Additional compression parameters such as the zlib compression level cannot currently be set.

# RETURN VALUES

CMS_compress() returns either a CMS_ContentInfo structure or NULL if an error occurred. The error can be obtained from ERR_get_error(3).

# SEE ALSO

ERR_get_error(3), CMS_uncompress(3)

# HISTORY

CMS_compress() was added to OpenSSL 0.9.8 The CMS_STREAM flag was first supported in OpenSSL 1.0.0.

2009-12-26 | 1.0.2k