From: <my...@us...> - 2010-01-04 14:17:21
|
Revision: 2193 http://aperture.svn.sourceforge.net/aperture/?rev=2193&view=rev Author: mylka Date: 2010-01-04 14:17:02 +0000 (Mon, 04 Jan 2010) Log Message: ----------- 2925551 - found and fixed a bug in DataObjectFactory, some IMAP servers would return the Content-Type headers in UPPER CASE, thus an encrypted email would get a mime type APPLICATION/X-PKCS7-ENCRYPTED. This appeared only on IMAP, the same mails in local file, would be returned correctly. Replaced one equals() with equalsIgnoreCase, and one contains() with toLowerCase().contains(). This seemes to have fixed the problem and all s/mime encrypted mails are found correctly, both in IMAP and in local files Modified Paths: -------------- aperture/trunk/core/crawler/mail/src/main/java/org/semanticdesktop/aperture/crawler/mail/DataObjectFactory.java aperture/trunk/core/crawler/mail/src/test/java/org/semanticdesktop/aperture/crawler/mail/DataObjectFactoryTest.java Added Paths: ----------- aperture/trunk/test/docs/src/main/resources/org/semanticdesktop/aperture/docs/encrypted/mail-pgpmime-encrypted-ucase.eml aperture/trunk/test/docs/src/main/resources/org/semanticdesktop/aperture/docs/encrypted/mail-smime-encrypted-ucase.eml Modified: aperture/trunk/core/crawler/mail/src/main/java/org/semanticdesktop/aperture/crawler/mail/DataObjectFactory.java =================================================================== --- aperture/trunk/core/crawler/mail/src/main/java/org/semanticdesktop/aperture/crawler/mail/DataObjectFactory.java 2010-01-04 12:45:38 UTC (rev 2192) +++ aperture/trunk/core/crawler/mail/src/main/java/org/semanticdesktop/aperture/crawler/mail/DataObjectFactory.java 2010-01-04 14:17:02 UTC (rev 2193) @@ -91,37 +91,6 @@ @SuppressWarnings("unchecked") public class DataObjectFactory { - /** - * We need this. - * Java Activation Framework is the one responsible for processing various MIME types in messages. It - * actually does all the decoding stuff. Without it every message would return its content as a stream - * and we wouldn't be able to do any processing. Under normal circumstances when JAF is initialized - * it looks for all files named META-INF/mailcap (see http://java.sun.com/javase/6/docs/api/javax/activation/MailcapCommandMap.html - * for details). There are two such files, one in the activation.jar - registers generic handlers, - * and another one in the javamail jar - registers mail-specific handlers. Those mail-specific - * handlers are crucial for proper functioning of javamail. - * - * Now the problem is that in OSGI, the activation bundle doesn't see the mailcap file inside the mail - * bundle, because it is not exposed (for the same reason why SPI doesn't work in OSGI). That's why - * we must register those handlers manually, otherwise mail processing won't work in osgi. This solution - * has been ripped from: - * - * http://www.jguru.com/faq/view.jsp?EID=237257 - * - * The content of this block is a recreation of the mailcap file found found in the javamail jar - * taken from Eclipse Orbit repository, version 1.4.1.v200808130215. It should be updated when - * this dependency is updated. - */ -// static { -// MailcapCommandMap mc = (MailcapCommandMap)CommandMap.getDefaultCommandMap(); -// mc.addMailcap("text/html;; x-java-content-handler=com.sun.mail.handlers.text_html"); -// mc.addMailcap("text/xml;; x-java-content-handler=com.sun.mail.handlers.text_xml"); -// mc.addMailcap("text/plain;; x-java-content-handler=com.sun.mail.handlers.text_plain"); -// mc.addMailcap("multipart/*;; x-java-content-handler=com.sun.mail.handlers.multipart_mixed; x-java-fallback-entry=true"); -// mc.addMailcap("message/rfc822;; x-java-content-handler=com.sun.mail.handlers.message_rfc822"); -// CommandMap.setDefaultCommandMap(mc); -// } - /** Obtains InputStreams from {@link Part} instances. */ public static interface PartStreamFactory { @@ -581,7 +550,7 @@ * S/MIME - another email encryption standard marks encrypted message parts by a ContentType string * similar to: Content-Type: application/x-pkcs7-mime; name="smime.p7m" */ - if (contentType.getPrimaryType().equals("application") && contentType.getSubType().contains("pkcs7-mime") && + if (contentType.getPrimaryType().equalsIgnoreCase("application") && contentType.getSubType().toLowerCase().contains("pkcs7-mime") && contentType.getParameter("name") != null && contentType.getParameter("name").endsWith(".p7m")) { result.put(NFO.encryptionStatus, NFO.encryptedStatus); } Modified: aperture/trunk/core/crawler/mail/src/test/java/org/semanticdesktop/aperture/crawler/mail/DataObjectFactoryTest.java =================================================================== --- aperture/trunk/core/crawler/mail/src/test/java/org/semanticdesktop/aperture/crawler/mail/DataObjectFactoryTest.java 2010-01-04 12:45:38 UTC (rev 2192) +++ aperture/trunk/core/crawler/mail/src/test/java/org/semanticdesktop/aperture/crawler/mail/DataObjectFactoryTest.java 2010-01-04 14:17:02 UTC (rev 2193) @@ -656,6 +656,22 @@ } /** + * A single-part email encrypted with Enigmail OpenPGP without the "Use PGP/MIME" checkbox. + * it used a GnuPG certificate generated with the Gnome Seahorse application. The Content-Type + * header in that email has been uppercased. + */ + public void testPgpMimeUcaseEncryptedEmail() throws MessagingException, IOException, ModelException { + DataObjectFactory fac = wrapEmail("encrypted/mail-pgpmime-encrypted-ucase.eml"); + DataObject o1 = fac.getObject(); + assertNotNull(o1); + assertNull(fac.getObject()); + assertTrue(o1 instanceof MessageDataObject); + checkStatement(NFO.encryptionStatus, NFO.encryptedStatus, o1.getMetadata()); + checkStatement(NFO.fileName, "encrypted.asc", o1.getMetadata()); + o1.dispose(); + } + + /** * A single-part email encrypted with plain Thunderbird S/MIME encryption, using a PEM certificate * generated with OpenSSL. */ @@ -671,6 +687,21 @@ } /** + * A single-part email encrypted with plain Thunderbird S/MIME encryption, using a PEM certificate + * generated with OpenSSL. The Content-Type headers have been uppercased. + */ + public void testSMimeUcaseEncryptedEmail() throws MessagingException, IOException, ModelException { + DataObjectFactory fac = wrapEmail("encrypted/mail-smime-encrypted-ucase.eml"); + DataObject o1 = fac.getObject(); + assertNotNull(o1); + assertNull(fac.getObject()); + assertTrue(o1 instanceof MessageDataObject); + checkStatement(NFO.encryptionStatus, NFO.encryptedStatus, o1.getMetadata()); + checkStatement(NFO.fileName, "smime.p7m", o1.getMetadata()); + o1.dispose(); + } + + /** * An encrypted and signed email, is an encrypted email */ public void testPgpEncryptedSignedEmail() throws MessagingException, IOException, ModelException { Added: aperture/trunk/test/docs/src/main/resources/org/semanticdesktop/aperture/docs/encrypted/mail-pgpmime-encrypted-ucase.eml =================================================================== --- aperture/trunk/test/docs/src/main/resources/org/semanticdesktop/aperture/docs/encrypted/mail-pgpmime-encrypted-ucase.eml (rev 0) +++ aperture/trunk/test/docs/src/main/resources/org/semanticdesktop/aperture/docs/encrypted/mail-pgpmime-encrypted-ucase.eml 2010-01-04 14:17:02 UTC (rev 2193) @@ -0,0 +1,113 @@ +Return-Path: ant...@gm... +Received: from core.aduna.info (LHLO core.aduna-software.com) + (87.233.177.133) by core.aduna-software.com with LMTP; Thu, 3 Dec 2009 + 16:18:27 +0100 (CET) +Received: from localhost (localhost [127.0.0.1]) + by core.aduna-software.com (Postfix) with ESMTP id 19D0C128003 + for <an...@ad...>; Thu, 3 Dec 2009 16:18:27 +0100 (CET) +X-Virus-Scanned: amavisd-new at +X-Spam-Flag: NO +X-Spam-Score: -1.582 +X-Spam-Level: +X-Spam-Status: No, score=-1.582 tagged_above=-10 required=4 tests=[AWL=-1.820, + BAYES_00=-2.599, RCVD_IN_SORBS_WEB=0.619, SPF_PASS=-0.001, + TVD_SPACE_RATIO=2.219] +Received: from core.aduna-software.com ([127.0.0.1]) + by localhost (core.aduna-software.com [127.0.0.1]) (amavisd-new, port 10024) + with ESMTP id fITFGpFlueoD for <an...@ad...>; + Thu, 3 Dec 2009 16:18:25 +0100 (CET) +Received: from fg-out-1718.google.com (fg-out-1718.google.com [72.14.220.154]) + by core.aduna-software.com (Postfix) with ESMTP id C624C128002 + for <an...@ad...>; Thu, 3 Dec 2009 16:18:25 +0100 (CET) +Received: by fg-out-1718.google.com with SMTP id 19so56769fgg.1 + for <an...@ad...>; Thu, 03 Dec 2009 07:18:25 -0800 (PST) +DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; + d=gmail.com; s=gamma; + h=domainkey-signature:received:received:message-id:date:from + :user-agent:mime-version:to:subject:x-enigmail-version:content-type; + bh=yduWjuP+xmrEzenJgzm7xl+voNVbCQv9ogrNC2x2ZaU=; + b=vdRHrVPhzNSBrnoLDFH9bJWeP4dSa2qKduh7lNLJWjHiSA2wwMrid+DeDhEaDAnL8S + +VZUL7RvyacfCZ/u1pKy2m12iC8qmOY6QsQUpxnkDCdMd43SKlNz3uN2i7zBXmibhy+E + d02JsxVE12YeAtlHQKSdsRCLr3jbThXqe4Dew= +DomainKey-Signature: a=rsa-sha1; c=nofws; + d=gmail.com; s=gamma; + h=message-id:date:from:user-agent:mime-version:to:subject + :x-enigmail-version:content-type; + b=N3r8xTB7IlXfb6hhH0zqYWob9aw97gB6VjkIqQuPQIVWweboDDeOmfhoVS7W/IAp0Q + PHwKk5IHD5Yz/rsugVpO0m04NXY5l7+WABNcSNDQ6Dk3e8g0SnQQsNmLaOhx7atAmwti + cFDg8O+hiqcPV3Cqa0oXd5oAm7sq/j7jzbtW4= +Received: by 10.87.38.23 with SMTP id q23mr1485914fgj.35.1259853505432; + Thu, 03 Dec 2009 07:18:25 -0800 (PST) +Received: from ?192.168.10.119? (ita250.internetdsl.tpnet.pl [79.190.233.250]) + by mx.google.com with ESMTPS id l12sm7846741fgb.5.2009.12.03.07.18.24 + (version=SSLv3 cipher=RC4-MD5); + Thu, 03 Dec 2009 07:18:24 -0800 (PST) +Message-ID: <4B1...@gm...> +Date: Thu, 03 Dec 2009 16:18:23 +0100 +From: Antoni Mylka <ant...@gm...> +User-Agent: Thunderbird 2.0.0.23 (X11/20090817) +MIME-Version: 1.0 +To: an...@ad... +Subject: Encrypted, with PGP/MIME +X-Enigmail-Version: 0.95.7 +Content-Type: MULTIPART/ENCRYPTED; + protocol="application/pgp-encrypted"; + boundary="------------enig4E08B5CBE400095F1742A280" + +This is an OpenPGP/MIME encrypted message (RFC 2440 and 3156) +--------------enig4E08B5CBE400095F1742A280 +Content-Type: APPLICATION/PGP-ENCRYPTED +Content-Description: PGP/MIME version identification + +Version: 1 + +--------------enig4E08B5CBE400095F1742A280 +Content-Type: APPLICATION/OCTET-STREAM; name="encrypted.asc" +Content-Description: OpenPGP encrypted message +Content-Disposition: inline; filename="encrypted.asc" + +-----BEGIN PGP MESSAGE----- +Version: GnuPG v1.4.9 (GNU/Linux) +Comment: Using GnuPG with Mozilla - http://enigmail.mozdev.org + +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 +LtegqVggySNDe7DgEwJ8 +=6UAP +-----END PGP MESSAGE----- + +--------------enig4E08B5CBE400095F1742A280-- Added: aperture/trunk/test/docs/src/main/resources/org/semanticdesktop/aperture/docs/encrypted/mail-smime-encrypted-ucase.eml =================================================================== --- aperture/trunk/test/docs/src/main/resources/org/semanticdesktop/aperture/docs/encrypted/mail-smime-encrypted-ucase.eml (rev 0) +++ aperture/trunk/test/docs/src/main/resources/org/semanticdesktop/aperture/docs/encrypted/mail-smime-encrypted-ucase.eml 2010-01-04 14:17:02 UTC (rev 2193) @@ -0,0 +1,77 @@ +Return-Path: ant...@gm... +Received: from core.aduna.info (LHLO core.aduna-software.com) + (87.233.177.133) by core.aduna-software.com with LMTP; Thu, 3 Dec 2009 + 19:37:39 +0100 (CET) +Received: from localhost (localhost [127.0.0.1]) + by core.aduna-software.com (Postfix) with ESMTP id BA437128002 + for <an...@ad...>; Thu, 3 Dec 2009 19:37:39 +0100 (CET) +X-Virus-Scanned: amavisd-new at +X-Spam-Flag: NO +X-Spam-Score: -1.52 +X-Spam-Level: +X-Spam-Status: No, score=-1.52 tagged_above=-10 required=4 tests=[AWL=-1.758, + BAYES_00=-2.599, RCVD_IN_SORBS_WEB=0.619, SPF_PASS=-0.001, + TVD_SPACE_RATIO=2.219] +Received: from core.aduna-software.com ([127.0.0.1]) + by localhost (core.aduna-software.com [127.0.0.1]) (amavisd-new, port 10024) + with ESMTP id kxE6ru5Dbx2Y for <an...@ad...>; + Thu, 3 Dec 2009 19:37:39 +0100 (CET) +Received: from fg-out-1718.google.com (fg-out-1718.google.com [72.14.220.158]) + by core.aduna-software.com (Postfix) with ESMTP id 6716B128001 + for <an...@ad...>; Thu, 3 Dec 2009 19:37:39 +0100 (CET) +Received: by fg-out-1718.google.com with SMTP id 19so141989fgg.1 + for <an...@ad...>; Thu, 03 Dec 2009 10:37:38 -0800 (PST) +DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; + d=gmail.com; s=gamma; + h=domainkey-signature:received:received:message-id:date:from + :user-agent:mime-version:to:subject:x-enigmail-version:content-type + :content-transfer-encoding:content-disposition:content-description; + bh=GoPEIW05hIf1Gah2d+gkucEzm7FZ7Me7sTyUQYgjCWw=; + b=UqAWgvICyOJdhhJtKcdv2OzS7Jf8GKaW4BL+YSYoT1NbwGsgIRmEWSV7eiqQNy9O+x + J6C/0uYIBfEb210/wv5j/3RFonwzNEqN4rkDbuvoxhGYwAaa2c8ep5CX7/hSzyl4dOgR + bLgU0ts1cGqSpIggchEMDHvgt9uazDDg9CtuA= +DomainKey-Signature: a=rsa-sha1; c=nofws; + d=gmail.com; s=gamma; + h=message-id:date:from:user-agent:mime-version:to:subject + :x-enigmail-version:content-type:content-transfer-encoding + :content-disposition:content-description; + b=JFD7d6rQY9ubUPuL7QHSAdDlAG6TK9InMhHQkOX2m3hZ1P3+cj8lgTx8wxQ1dy4Oo6 + g8SaZmgzh92dSjxJC351b1RtQjV/RgRnhrpptbnQ8UHRQsLyvPQR0EDCVpW3aIAyGsqs + sx6kdz6YkXIG+nTX9GyLL4sgI11WiadsiMU/4= +Received: by 10.87.38.23 with SMTP id q23mr1698320fgj.35.1259865458583; + Thu, 03 Dec 2009 10:37:38 -0800 (PST) +Received: from ?192.168.10.119? (ita250.internetdsl.tpnet.pl [79.190.233.250]) + by mx.google.com with ESMTPS id e3sm19869712fga.21.2009.12.03.10.37.37 + (version=SSLv3 cipher=RC4-MD5); + Thu, 03 Dec 2009 10:37:38 -0800 (PST) +Message-ID: <4B1...@gm...> +Date: Thu, 03 Dec 2009 19:37:37 +0100 +From: Antoni Mylka <ant...@gm...> +User-Agent: Thunderbird 2.0.0.23 (X11/20090817) +MIME-Version: 1.0 +To: "Antoni Mylka (ADUNA)" <an...@ad...> +Subject: S/Mime encrypted +X-Enigmail-Version: 0.95.7 +Content-Type: APPLICATION/X-PKCS7-MIME; name="smime.p7m" +Content-Transfer-Encoding: base64 +Content-Disposition: attachment; filename="smime.p7m" +Content-Description: S/MIME Encrypted Message + +MIAGCSqGSIb3DQEHA6CAMIACAQAxggL2MIIBPgIBADCBpjCBmDELMAkGA1UEBhMCUEwxFDAS +BgNVBAgTC01hbG9wb2xza2llMQ8wDQYDVQQHEwZLcmFrb3cxDjAMBgNVBAoTBUFkdW5hMREw +DwYDVQQLEwhEZXYgVGVhbTEVMBMGA1UEAxMMQW50b25pIE15bGthMSgwJgYJKoZIhvcNAQkB +FhlhbnRvbmlAYWR1bmEtc29mdHdhcmUuY29tAgkA51qlqSrczREwDQYJKoZIhvcNAQEBBQAE +gYCIS85cHMzpSAOTYml2Q/toRp+zib/u7frpayazc4KsgKs/J+z73XmiHODFDGvvP+nFE7CH +CoAw5r48lHTFWHqw2RvwtczPDxVBAQv0bb/Gck7KQnvXTngDRAUZfJm6LSf9HkcxhBBTkh25 +ccDEX4RZsJoIhe2G1jgkYEKZ+yvFdTCCAbACAQAwgZcwfzELMAkGA1UEBhMCUEwxFTATBgNV +BAgMDE1hxYJvcG9sc2tpZTEQMA4GA1UEBwwHS3Jha8OzdzEXMBUGA1UEChMOQW50b25pIENv +bXBhbnkxFjAUBgNVBAsTDVNlY3VyaXR5IFRlYW0xFjAUBgNVBAMTDUFudG9uIFJvb3QgQ0EC +FAIAAAAAAAAAAAAAAAAAAAAAAAAAMA0GCSqGSIb3DQEBAQUABIIBAAyRvh4NctsqEHyF/NUJ ++hQsOkIBQbpxQxvmeydJrE4ccp7mLN0c+NpS6uKjMsd9ApVWuu6cIyS35EBXNEIkFVJSn4pt +5fezzvwajqpSDMNiCO+FEZdCDiClVrh7E3focf9NC8x2KQzibBgrBoLphBeNyO9c8s09AWtx +syGNB+6nYzmKlAgmaOIAj5EFPXAaCSrrxDdXdQK65QpO0y60rZOpdo6mUdxjXt4hFvPZsiVC +spajjhuFe8BK7PRMqgpKm0TXeHcSdrqEni0J4XLiXGhPE5wbpoAxr1FeEuWi6DmILINWu+7S +h/qUtFJfY811keaP/90pnSzAgb1lmvYr3h0wgAYJKoZIhvcNAQcBMBQGCCqGSIb3DQMHBAgJ +OD4DcvSJPaCABHBWfyCRL89LykdTERnSQ46+V5aoHsCezulZdRzPg2zayXvi2SNkroewJoHo +OHPo5d5yNa14cakXiGqb2MgQ0XX2RLkjAbh1hQSYB2iq4lKc6i+AxJeatC0pbciyncuGismA +tPM/iyX5w3sLltuAlA7lBAgUwoxeyU4GgwAAAAAAAAAAAAA= This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |