11package org .simplejavamail .internal .smimesupport ;
22
3+ import org .assertj .core .api .Assumptions ;
34import org .junit .Test ;
45import org .simplejavamail .api .email .AttachmentResource ;
56import org .simplejavamail .api .email .Email ;
67import org .simplejavamail .api .email .EmailAssert ;
78import org .simplejavamail .api .email .OriginalSmimeDetails .SmimeMode ;
89import org .simplejavamail .api .email .Recipient ;
10+ import org .simplejavamail .api .mailer .config .Pkcs12Config ;
911import org .simplejavamail .converter .EmailConverter ;
1012import org .simplejavamail .internal .smimesupport .model .OriginalSmimeDetailsImpl ;
13+ import testutil .SecureTestDataHelper ;
14+ import testutil .SecureTestDataHelper .PasswordsConsumer ;
1115
1216import java .io .File ;
17+ import java .util .Properties ;
1318
1419import static demo .ResourceFolderHelper .determineResourceFolder ;
1520import static java .lang .String .format ;
1621import static javax .mail .Message .RecipientType .TO ;
1722import static org .assertj .core .api .Assertions .assertThat ;
23+ import static org .assertj .core .api .Assumptions .assumeThat ;
1824import static org .simplejavamail .internal .util .MiscUtil .normalizeNewlines ;
1925import static org .simplejavamail .util .TestDataHelper .loadPkcs12KeyStore ;
2026
2127public class TestSmimeSelfSigned {
2228
23- private static final String RESOURCES_PKCS = determineResourceFolder ("simple-java-mail" ) + "/test/resources/pkcs12" ;
29+ private static final String RESOURCES = determineResourceFolder ("simple-java-mail" ) + "/test/resources" ;
30+ private static final String RESOURCES_PKCS = RESOURCES + "/pkcs12" ;
2431 private static final String RESOURCES_MESSAGES = RESOURCES_PKCS + "/test messages" ;
2532
2633 @ Test
@@ -163,6 +170,49 @@ public void testEncryptedMessageEml() {
163170 .build ());
164171 }
165172
173+ @ Test
174+ public void testEncryptedMessageEml_LegacySignedEnvelopedAttachment ()
175+ throws Exception {
176+ SecureTestDataHelper .runTestWithSecureTestData (new PasswordsConsumer () {
177+ @ Override
178+ public void accept (final Properties passwords ) {
179+ final Pkcs12Config pkcs12Config = Pkcs12Config .builder ()
180+ .pkcs12Store (RESOURCES + "/secure-testdata/legacy-signed-enveloped-email/7acc30df-26dd-40b3-9d45-e31f681e755b.p12" )
181+ .storePassword (passwords .getProperty ("legacy-signed-enveloped-email-zip-keystore-password" ))
182+ .keyAlias ("sectigo limited id von " )
183+ .keyPassword (passwords .getProperty ("legacy-signed-enveloped-email-zip-key-password" ))
184+ .build ();
185+ Email emailParsedFromEml = EmailConverter .emlToEmail (new File (RESOURCES + "/secure-testdata/legacy-signed-enveloped-email/email.eml" ), pkcs12Config );
186+
187+ EmailAssert .assertThat (emailParsedFromEml ).hasSubject ("Ausarbeitung einer Schutzrechtsanmeldung : R.389390, Hr/Pv" );
188+
189+ assertThat (normalizeNewlines (emailParsedFromEml .getPlainText ())).doesNotStartWith ("This is a multipart message in MIME format." );
190+ assertThat (normalizeNewlines (emailParsedFromEml .getPlainText ())).contains ("Sehr geehrte Damen und Herren," );
191+
192+ assertThat (emailParsedFromEml .getEmbeddedImages ()).isEmpty ();
193+
194+ assertThat (emailParsedFromEml .getAttachments ()).extracting ("name" )
195+ .containsExactlyInAnyOrder ("smime.p7m" ,
196+ "PDmembran_m_Stuelement_pdf_3373833.pdf" ,
197+ "IN_COVER_SHEET_3374652_pdf_3374715.pdf" ,
198+ "389390_Pruefung_des_Entwurfs_3493097.doc"
199+ );
200+ assertThat (emailParsedFromEml .getDecryptedAttachments ()).extracting ("name" )
201+ .containsExactlyInAnyOrder ("signed-email.eml" ,
202+ "PDmembran_m_Stuelement_pdf_3373833.pdf" ,
203+ "IN_COVER_SHEET_3374652_pdf_3374715.pdf" ,
204+ "389390_Pruefung_des_Entwurfs_3493097.doc" );
205+
206+ EmailAssert .assertThat (emailParsedFromEml ).hasOriginalSmimeDetails (OriginalSmimeDetailsImpl .builder ()
207+ .smimeMode (SmimeMode .SIGNED_ENCRYPTED )
208+ .smimeMime ("application/pkcs7-mime" )
209+ .smimeType ("enveloped-data" )
210+ .smimeName ("smime.p7m" )
211+ .build ());
212+ }
213+ });
214+ }
215+
166216 @ Test
167217 public void testSignedAndEncryptedMessageMsg () {
168218 Email emailParsedFromMsg = EmailConverter .outlookMsgToEmail (new File (RESOURCES_MESSAGES + "/S_MIME test message signed & encrypted.msg" ), loadPkcs12KeyStore ());
@@ -185,7 +235,8 @@ public void testSignedAndEncryptedMessageMsg() {
185235 assertThat (emailParsedFromMsg .getHTMLText ()).contains (format ("<img src=\" cid:%s\" " , embeddedImg .getName ()));
186236
187237 assertThat (emailParsedFromMsg .getAttachments ()).hasSize (3 );
188- assertThat (emailParsedFromMsg .getAttachments ()).extracting ("name" ).containsExactlyInAnyOrder ("smime.p7m" , "smime.p7s" , "03-07-2005 errata SharnErrata.pdf" );
238+ assertThat (emailParsedFromMsg .getAttachments ()).extracting ("name" )
239+ .containsExactlyInAnyOrder ("smime.p7m" , "smime.p7s" , "03-07-2005 errata SharnErrata.pdf" );
189240 assertThat (emailParsedFromMsg .getDecryptedAttachments ()).hasSize (3 );
190241 assertThat (emailParsedFromMsg .getDecryptedAttachments ()).extracting ("name" ).containsExactlyInAnyOrder ("smime.p7s" , "signed-email.eml" , "03-07-2005 errata SharnErrata.pdf" );
191242
@@ -204,4 +255,10 @@ public void testSignedAndEncryptedMessageMsg() {
204255 .smimeSignedBy ("Benny Bottema" )
205256 .build ());
206257 }
258+
259+ private static String assumeSystemVariablePresent (String name ) {
260+ final String systemVariable = System .getenv (name );
261+ assumeThat (systemVariable ).as ("system variable " + name ).isNotNull ();
262+ return systemVariable ;
263+ }
207264}
0 commit comments