<<< Date Index >>>     <<< Thread Index >>>

mutt/2428: S/MIME opaque signed mails unverified or undisplayed



>Number:         2428
>Notify-List:    
>Category:       mutt
>Synopsis:       S/MIME opaque signed mails unverified or undisplayed
>Confidential:   no
>Severity:       normal
>Priority:       medium
>Responsible:    mutt-dev
>State:          open
>Keywords:       
>Class:          sw-bug
>Submitter-Id:   net
>Arrival-Date:   Fri Aug 18 17:21:10 +0200 2006
>Originator:     Alain Bench <veronatif@xxxxxxx>
>Release:        1.5.13
>Organization:
>Environment:
>Description:

Hello ALL and others,

    When displaying S/MIME opaque signed mails, of type
application/x-pkcs7-mime; smime-type=signed-data, Mutt 1.5.13 with
default smime.rc has one or the other of 2 problems:

| $ mutt-1.5.13-stock -nF ~/.mutt/smime.rc -Rf /tmp/smime-opaque.mbox


 - If signature is GOOD: The mail text appears, but there is no OpenSSL
output, no uppercase "S" in index, Mutt errors "S/MIME signature could
NOT be verified.", and $beeps:

| [-- The following data is S/MIME signed --]
| test S/MIME opaque signature.
|
| [-- End of S/MIME signed data. --]
|
| S/MIME signature could NOT be verified.


 - If signature is BAD (expired, lacking CA, whatever): The same hints
of error do appear, rightly. But there is still no OpenSSL output to
show the error reason, and the mail text does *not* appear.

| [-- The following data is S/MIME signed --]
|
| [-- End of S/MIME signed data. --]
|
| S/MIME signature could NOT be verified.


    The attached smime-opaque.mbox contains 2 such signed mails, one
expired, and one valid. You'll also need the CAcert root certificate
from <URL:http://www.CAcert.org/>.


    The default $smime_verify_opaque_command is "openssl smime -verify
-inform DER -in %s %C". Adding "-noverify" and removing "%C" displays
mail text always, but does not verify. I haven't found yet one command
that both verifies and always outputs text. Manual verifications:

| $ openssl smime -verify -in smime2.p7m -inform DER \
|  -CAfile ~/.smime/ca-bundle.crt -text ; echo $?
| stdout> test S/MIME opaque signature.
| stderr> Verification successful
| return> 0
|
| $ openssl smime -verify -in smime1.p7m -inform DER \
|  -CAfile ~/.smime/ca-bundle.crt -text ; echo $?
| stderr> Verification failure
| stderr> 29361:error:21075075:PKCS7 routines:PKCS7_verify:certificate \
|         verify error:pk7_smime.c:222:Verify error:certificate has expired
| return> 4

    ...gives nothing to stdout when verification failed. Hum... The
following double call ugly hack always displays text, and verifies to
stderr. But Mutt doesn't display stderr...

| set smime_verify_opaque_command="\
| openssl smime -verify -inform DER -in %s %C ||\
| openssl smime -verify -inform DER -in %s -noverify 2>/dev/null"


    Note this was already reported in a MU thread at 1.5.5.1 times:

| Date: Fri, 2 Jan 2004 13:03:33 +0100 (CET)
| From: Alain Bench <messtic@xxxxxxxxx>
| To: Mutt users ml <mutt-users@xxxxxxxx>
| Subject: S/MIME app/x-pkcs7-mime signed-data
| Message-ID: <20040102120332.GA18510@xxxxxxxxx>

    The other problem discussed there, about Apple Mail 2.612, seem now
solved. And the old mailcap workaround can be updated to:

| # auto_view in pager: display mail's body, without header, and verification 
status
| application/x-pkcs7-mime ;\
|  ( openssl smime -verify -text -inform DER -in %s -CAfile 
~/.smime/ca-bundle.crt ||\
|  openssl smime -verify -text -inform DER -in %s -noverify 2>/dev/null ) |\
|  fromdos ;\
|  nametemplate=%s.p7m ;\
|  test=test %{smime-type} == signed-data ;\
|  copiousoutput


Bye!    Alain.
>How-To-Repeat:
>Fix:
>Add-To-Audit-Trail:

>Unformatted:
 ----gnatsweb-attachment----
 Content-Type: application/x-gzip-compressed; name="smime-opaque.mbox.gz"
 Content-Transfer-Encoding: base64
 Content-Disposition: attachment; filename="smime-opaque.mbox.gz"
 
 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
 9UzV74UmBPk/deF2H4M0AAA=