BIO_printf(bio, "MIME-Version: 1.0\n"); BIO_printf(bio, "Content-Disposition: attachment; filename=\"smime.p7m\"\n"); BIO_printf(bio, "Content-Type: application/x-pkcs7-mime; name=\"smime.p7m\"\n"); BIO_printf(bio, "Content-Transfer-Encoding: base64\n\n");
BIO_printf(bio, "MIME-Version: 1.0%s", mime_eol); BIO_printf(bio, "Content-Disposition: attachment;"); BIO_printf(bio, " filename=\"smime.p7m\"%s", mime_eol); BIO_printf(bio, "Content-Type: %smime;", mime_prefix); BIO_printf(bio, " name=\"smime.p7m\"%s", mime_eol); BIO_printf(bio, "Content-Transfer-Encoding: base64%s%s", mime_eol, mime_eol);
int SMIME_write_PKCS7(BIO *bio, PKCS7 *p7, BIO *data, int flags){	char bound[33], c;	int i;	if((flags & PKCS7_DETACHED) && data) {	/* We want multipart/signed */		/* Generate a random boundary */		RAND_pseudo_bytes((unsigned char *)bound, 32);		for(i = 0; i < 32; i++) {			c = bound[i] & 0xf;			if(c < 10) c += '0';			else c += 'A' - 10;			bound[i] = c;		}		bound[32] = 0;		BIO_printf(bio, "MIME-Version: 1.0\n");		BIO_printf(bio, "Content-Type: multipart/signed;");		BIO_printf(bio, " protocol=\"application/x-pkcs7-signature\";");		BIO_printf(bio, " micalg=sha1; boundary=\"----%s\"\n\n", bound);		BIO_printf(bio, "This is an S/MIME signed message\n\n");		/* Now write out the first part */		BIO_printf(bio, "------%s\r\n", bound);		pkcs7_output_data(bio, data, p7, flags);		BIO_printf(bio, "\n------%s\n", bound);		/* Headers for signature */		BIO_printf(bio, "Content-Type: application/x-pkcs7-signature; name=\"smime.p7s\"\n");		BIO_printf(bio, "Content-Transfer-Encoding: base64\n");		BIO_printf(bio, "Content-Disposition: attachment; filename=\"smime.p7s\"\n\n");		B64_write_PKCS7(bio, p7);		BIO_printf(bio,"\n------%s--\n\n", bound);		return 1;	}	/* MIME headers */	BIO_printf(bio, "MIME-Version: 1.0\n");	BIO_printf(bio, "Content-Disposition: attachment; filename=\"smime.p7m\"\n");	BIO_printf(bio, "Content-Type: application/x-pkcs7-mime; name=\"smime.p7m\"\n");	BIO_printf(bio, "Content-Transfer-Encoding: base64\n\n");	B64_write_PKCS7(bio, p7);	BIO_printf(bio, "\n");	return 1;}