Subject: multipart/signed interoperability

From: Peter Tornberg <[email-masked]>
Date: Thu, 12 Apr 2001 10:35:59 +0200

Hi all,

Thanks for all responses regarding my multipart/signed questions. Some of 
the problems I encountered were problems related to our own PKCS7 module.

Still I have found some interoperability problems when signing/verifying 
MIME multipart bodies. Attached are four different S/MIME messages. The two 
files ending in _fail could not be verified by openssl. These two files are 
the two non _fail files modified with an extra CRLF added (see below). 
However both _fail files could be verified by Outlook Express 5.0.

The two files starting with signed... were created by OE while the ones 
named openssl... were created by (surprise!) openssl.

My conclusions are the following:

OE verifies:
----------------------------------------
Content-Type multipart/signed boundary=outer

--outer
Content-Type: multipart/something 
boundary=inner                  //Signature starts on C
...
--inner
Content-Type: text/plain
...
--inner
Content-Type: text/html
...
--inner--
<CRLF>                               //Signature stops on first CRLF after 
ending inner boundary
<CRLF>
<CRLF>
<CRLF>
--outer
...

Openssl verifies:
-----------------------------------------
Content-Type multipart/signed boundary=outer

--outer
Content-Type: multipart/something 
boundary=inner                   //Signature starts on C
...
--inner
Content-Type: text/plain
...
--inner
Content-Type: text/html
...
--inner--
<CRLF>
<CRLF>
<CRLF>             //Signature stops at the second to last CRLF before the 
outer boundary.
<CRLF>
--outer
...

-------------------------------------------------------

When seperating the inner multipart and the outer boundary with TWO 
boundarys, OE and Openssl will verify the same data. Else one of them will 
fail depending on who signed the data.

Signing and verifying a simple Mime body is interoperable.

/Peter