1/* Simple S/MIME compress example */ 2#include <openssl/pem.h> 3#include <openssl/cms.h> 4#include <openssl/err.h> 5 6int 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 1.0.0+ 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 fprintf(stderr, "Error Compressing Data\n"); 48 ERR_print_errors_fp(stderr); 49 } 50 51 if (cms) 52 CMS_ContentInfo_free(cms); 53 if (in) 54 BIO_free(in); 55 if (out) 56 BIO_free(out); 57 58 return ret; 59 60} 61