I've reversed the patch. Bodo is correct, it's not OpenSSL's
responsability to do the various conversions that may be done by the
C run-time library anyway. If there are problems passing the
resulting file to some library that expects the formating to CRLF
line ends in a text file, the appropriate action is to filter the
file through something that adds the CR appropriately, for example:
# ^M is the actual control character
sed -e 's/\(^\|[^\^M]\)$/\1\^M/'
Can this be enough of a solution and good enough to resolve this
ticket?
[[EMAIL PROTECTED] - Tue Jul 16 09:04:08 2002]:
> The OpenSSL S/MIME implementation doesn't follow the MIME
> specification when writing out messages in that format. As a
result,
> messages created with this library will choke when passed through
> strictly compliant SMTP libraries.
>
> A patch is below, against today's mid-afternoon CVS tree (EST).
The
> problem was found and the patch created by Zachary Girouard
> <[EMAIL PROTECTED]>.
>
> diff --exclude=*Makefile* -ur openssl/apps/smime.c openssl-
> zakk/apps/smime.c
> --- openssl/apps/smime.c Wed May 8 11:12:59 2002
> +++ openssl-zakk/apps/smime.c Tue Jul 16 01:31:09 2002
> @@ -530,9 +530,9 @@
> } else if(operation == SMIME_PK7OUT) {
> PEM_write_bio_PKCS7(out, p7);
> } else {
> - if(to) BIO_printf(out, "To: %s\n", to);
> - if(from) BIO_printf(out, "From: %s\n", from);
> - if(subject) BIO_printf(out, "Subject: %s\n",
subject);
> + if(to) BIO_printf(out, "To: %s\r\n", to);
> + if(from) BIO_printf(out, "From: %s\r\n", from);
> + if(subject) BIO_printf(out, "Subject: %s\r\n",
subject);
> if(outformat == FORMAT_SMIME)
> SMIME_write_PKCS7(out, p7, in, flags);
> else if(outformat == FORMAT_PEM)
> diff --exclude=*Makefile* -ur openssl/crypto/dso/dso_lib.c openssl-
> zakk/crypto/dso/dso_lib.c
> --- openssl/crypto/dso/dso_lib.c Mon Jul 15 11:35:39 2002
> +++ openssl-zakk/crypto/dso/dso_lib.c Mon Jul 15 16:59:53 2002
> @@ -394,7 +394,7 @@
> {
> char *result = NULL;
>
> - if(dso == NULL || dir == NULL)
> + if(dso == NULL)
> {
> DSOerr(DSO_F_DSO_MERGE,ERR_R_PASSED_NULL_PARAMETER);
> return(NULL);
> diff --exclude=*Makefile* -ur openssl/crypto/pkcs7/pk7_mime.c
openssl-
> zakk/crypto/pkcs7/pk7_mime.c
> --- openssl/crypto/pkcs7/pk7_mime.c Tue Jan 30 08:38:59 2001
> +++ openssl-zakk/crypto/pkcs7/pk7_mime.c Mon Jul 15 16:57:29
2002
> @@ -164,34 +164,34 @@
> bound[i] = c;
> }
> bound[32] = 0;
> - BIO_printf(bio, "MIME-Version: 1.0\n");
> + BIO_printf(bio, "MIME-Version: 1.0\r\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, " micalg=sha1;
boundary=\"----%s\"\r\n\r\n",
> bound);
> BIO_printf(bio, "This is an S/MIME signed
message\n\n");
> /* Now write out the first part */
> BIO_printf(bio, "------%s\n", bound);
> - if(flags & PKCS7_TEXT) BIO_printf(bio, "Content-Type:
> text/plain\n\n");
> + if(flags & PKCS7_TEXT) BIO_printf(bio, "Content-Type:
> text/plain\r\n\r\n");
> while((i = BIO_read(data, linebuf, MAX_SMLEN)) > 0)
> BIO_write(bio,
linebuf, i);
> - BIO_printf(bio, "\n------%s\n", bound);
> + BIO_printf(bio, "\n------%s\r\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");
> + BIO_printf(bio, "Content-Type:
application/x-pkcs7-signature;
> name=\"smime.p7s\"\r\n");
> + BIO_printf(bio, "Content-Transfer-Encoding:
base64\r\n");
> + BIO_printf(bio, "Content-Disposition: attachment;
> filename=\"smime.p7s\"\r\n\r\n");
> B64_write_PKCS7(bio, p7);
> - BIO_printf(bio,"\n------%s--\n\n", bound);
> + BIO_printf(bio,"\r\n------%s--\r\n\r\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");
> + BIO_printf(bio, "MIME-Version: 1.0\r\n");
> + BIO_printf(bio, "Content-Disposition: attachment;
> filename=\"smime.p7m\"\r\n");
> + BIO_printf(bio, "Content-Type: application/x-pkcs7-mime;
> name=\"smime.p7m\"\r\n");
> + BIO_printf(bio, "Content-Transfer-Encoding: base64\r\n\r\n");
> B64_write_PKCS7(bio, p7);
> - BIO_printf(bio, "\n");
> + BIO_printf(bio, "\r\n");
> return 1;
> }
>
>
>
>
______________________________________________________________________
> OpenSSL Project
http://www.openssl.org
> Development Mailing List
[EMAIL PROTECTED]
> Automated List Manager
[EMAIL PROTECTED]
--
Richard Levitte
[EMAIL PROTECTED]
______________________________________________________________________
OpenSSL Project http://www.openssl.org
Development Mailing List [EMAIL PROTECTED]
Automated List Manager [EMAIL PROTECTED]