1 /* Simple S/MIME compress example */
2 #include <openssl/pem.h>
3 #include <openssl/cms.h>
4 #include <openssl/err.h>
5 
6 int main(int argc, char **argv)
7 	{
8 	BIO *in = NULL, *out = NULL;
9 	CMS_ContentInfo *cms = NULL;
10 	int ret = 1;
11 
12 	/*
13 	 * On OpenSSL 0.9.9 only:
14 	 * for streaming set CMS_STREAM
15 	 */
16 	int flags = CMS_STREAM;
17 
18 	OpenSSL_add_all_algorithms();
19 	ERR_load_crypto_strings();
20 
21 	/* Open content being compressed */
22 
23 	in = BIO_new_file("comp.txt", "r");
24 
25 	if (!in)
26 		goto err;
27 
28 	/* compress content */
29 	cms = CMS_compress(in, NID_zlib_compression, flags);
30 
31 	if (!cms)
32 		goto err;
33 
34 	out = BIO_new_file("smcomp.txt", "w");
35 	if (!out)
36 		goto err;
37 
38 	/* Write out S/MIME message */
39 	if (!SMIME_write_CMS(out, cms, in, flags))
40 		goto err;
41 
42 	ret = 0;
43 
44 	err:
45 
46 	if (ret)
47 		{
48 		fprintf(stderr, "Error Compressing Data\n");
49 		ERR_print_errors_fp(stderr);
50 		}
51 
52 	if (cms)
53 		CMS_ContentInfo_free(cms);
54 	if (in)
55 		BIO_free(in);
56 	if (out)
57 		BIO_free(out);
58 
59 	return ret;
60 
61 	}
62