Skip to content

Commit 6d64a39

Browse files
committed
Clarified field/method names to indicate it is not just about S/MIME signed emails, but also about encrypted email
1 parent 3140846 commit 6d64a39

File tree

5 files changed

+46
-9
lines changed

5 files changed

+46
-9
lines changed

modules/core-module/src/main/java/org/simplejavamail/api/internal/smimesupport/builder/SmimeParseResult.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@
1010

1111
public interface SmimeParseResult {
1212
@NotNull OriginalSmimeDetails getOriginalSmimeDetails();
13-
@Nullable AttachmentResource getSmimeSignedEmail();
13+
@Nullable AttachmentResource getSmimeSignedOrEncryptedEmail();
1414
@NotNull List<AttachmentDecryptionResult> getDecryptedAttachmentResults();
1515
@NotNull List<AttachmentResource> getDecryptedAttachments();
1616
}

modules/simple-java-mail/src/main/java/org/simplejavamail/converter/EmailConverter.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -267,8 +267,8 @@ private static void updateEmailIfBothSignedAndEncrypted(final EmailPopulatingBui
267267
private static void handleSmimeParseResult(final InternalEmailPopulatingBuilder emailBuilder, final SmimeParseResult smimeParseResult) {
268268
emailBuilder.withDecryptedAttachments(smimeParseResult.getDecryptedAttachments());
269269
emailBuilder.withOriginalSmimeDetails(smimeParseResult.getOriginalSmimeDetails());
270-
if (smimeParseResult.getSmimeSignedEmail() != null) {
271-
emailBuilder.withSmimeSignedEmail(emlToEmail(smimeParseResult.getSmimeSignedEmail().getDataSourceInputStream()));
270+
if (smimeParseResult.getSmimeSignedOrEncryptedEmail() != null) {
271+
emailBuilder.withSmimeSignedEmail(emlToEmail(smimeParseResult.getSmimeSignedOrEncryptedEmail().getDataSourceInputStream()));
272272
}
273273
}
274274

modules/simple-java-mail/src/test/java/org/simplejavamail/mailer/MailerLiveTest.java

Lines changed: 40 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -221,7 +221,7 @@ public void createMailSession_OutlookMessageSmimeEncryptTest()
221221
.smimeName("smime.p7m")
222222
.build());
223223
}
224-
224+
225225
@Test
226226
public void createMailSession_OutlookMessageSmimeSignEncryptTest()
227227
throws IOException, MessagingException, ExecutionException, InterruptedException {
@@ -230,9 +230,9 @@ public void createMailSession_OutlookMessageSmimeSignEncryptTest()
230230
builder.encryptWithSmime(new File(RESOURCES_PKCS + "/smime_test_user.pem.standard.crt"));
231231
Email email = assertSendingEmail(builder, false, true, false, true, false);
232232
verifyReceivedOutlookEmail(email, true, true);
233-
233+
234234
EmailAssert.assertThat(email).wasMergedWithSmimeSignedMessage();
235-
235+
236236
EmailAssert.assertThat(email).hasOriginalSmimeDetails(OriginalSmimeDetailsImpl.builder()
237237
.smimeMode(SmimeMode.SIGNED_ENCRYPTED)
238238
.smimeMime("application/pkcs7-mime")
@@ -248,6 +248,32 @@ public void createMailSession_OutlookMessageSmimeSignEncryptTest()
248248
.smimeSignedBy("Benny Bottema")
249249
.build());
250250
}
251+
252+
@Test
253+
public void testEncryptSendAndReceiveDecrypt()
254+
throws IOException, MessagingException, ExecutionException, InterruptedException {
255+
val builder = EmailHelper.createDummyEmailBuilder(null, true, true, true, false, false, false, false)
256+
.encryptWithSmime(new File(RESOURCES_PKCS + "/smime_test_user.pem.standard.crt"));
257+
258+
Email email = assertSendingEmail(builder, false, true, false, false, false);
259+
260+
EmailAssert.assertThat(email).wasMergedWithSmimeSignedMessage();
261+
262+
EmailAssert.assertThat(email).hasOriginalSmimeDetails(OriginalSmimeDetailsImpl.builder()
263+
.smimeMode(SmimeMode.ENCRYPTED)
264+
.smimeMime("application/pkcs7-mime")
265+
.smimeType("enveloped-data")
266+
.smimeName("smime.p7m")
267+
.build());
268+
EmailAssert.assertThat(email.getSmimeSignedEmail()).hasOriginalSmimeDetails(OriginalSmimeDetailsImpl.builder()
269+
.smimeMode(SmimeMode.PLAIN)
270+
.smimeMime(null)
271+
.smimeProtocol(null)
272+
.smimeMicalg(null)
273+
.smimeSignatureValid(null)
274+
.smimeSignedBy(null)
275+
.build());
276+
}
251277

252278
private void verifyReceivedOutlookEmail(final Email email, final boolean smimeSigned, final boolean smimeEncrypted) throws IOException {
253279
// Google SMTP overrode this, Outlook recognized it as: Benny Bottema <[email protected]>; on behalf of; lollypop <[email protected]>
@@ -381,6 +407,17 @@ private Email assertSendingEmail(final EmailPopulatingBuilder originalEmailPopul
381407

382408
if (!skipChecksDueToSmime) { // reading a signed mail is different from building a new one
383409
assertThat(receivedEmail).isEqualTo(originalEmailPopulatingBuilder.buildEmail());
410+
} else {
411+
val originalMail = originalEmailPopulatingBuilder.buildEmail();
412+
EmailAssert.assertThat(receivedEmail).hasSubject(originalMail.getSubject());
413+
EmailAssert.assertThat(receivedEmail).hasFromRecipient(originalMail.getFromRecipient());
414+
EmailAssert.assertThat(receivedEmail).hasOnlyRecipients(originalMail.getRecipients());
415+
EmailAssert.assertThat(receivedEmail).hasHTMLText(originalMail.getHTMLText());
416+
EmailAssert.assertThat(receivedEmail).hasPlainText(originalMail.getPlainText());
417+
EmailAssert.assertThat(receivedEmail).hasCalendarMethod(originalMail.getCalendarMethod());
418+
EmailAssert.assertThat(receivedEmail).hasCalendarText(originalMail.getCalendarText());
419+
EmailAssert.assertThat(receivedEmail).hasBounceToRecipient(originalMail.getBounceToRecipient());
420+
EmailAssert.assertThat(receivedEmail).hasDispositionNotificationTo(originalMail.getDispositionNotificationTo());
384421
}
385422

386423
return receivedEmail;

modules/smime-module/src/main/java/org/simplejavamail/internal/smimesupport/SMIMESupport.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -111,7 +111,7 @@ public SmimeParseResultBuilder decryptAttachments(@NotNull final List<Attachment
111111

112112
if (smimeBuilder.getOriginalSmimeDetails().getSmimeMode() == SmimeMode.SIGNED) {
113113
// this is the only way for Outlook messages to know a valid signature was included
114-
smimeBuilder.getOriginalSmimeDetails().completeWithSmimeSignatureValid(smimeBuilder.getSmimeSignedEmail() != null);
114+
smimeBuilder.getOriginalSmimeDetails().completeWithSmimeSignatureValid(smimeBuilder.getSmimeSignedOrEncryptedEmail() != null);
115115
}
116116

117117
return smimeBuilder;
@@ -182,7 +182,7 @@ private void decryptAttachments(@NotNull final SmimeParseResultBuilder smimeBuil
182182
final AttachmentDecryptionResult onlyAttachmentDecrypted = smimeBuilder.getDecryptedAttachmentResults().get(0);
183183
if (isSmimeAttachment(onlyAttachment) && isMimeMessageAttachment(onlyAttachmentDecrypted.getAttachmentResource())) {
184184
smimeBuilder.getOriginalSmimeDetails().completeWith(determineSmimeDetails(onlyAttachment));
185-
smimeBuilder.setSmimeSignedEmail(onlyAttachmentDecrypted.getAttachmentResource());
185+
smimeBuilder.setSmimeSignedOrEncryptedEmail(onlyAttachmentDecrypted.getAttachmentResource());
186186
}
187187
}
188188
}

modules/smime-module/src/main/java/org/simplejavamail/internal/smimesupport/builder/SmimeParseResultBuilder.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@ public class SmimeParseResultBuilder implements SmimeParseResult {
1818

1919
@NotNull private final List<AttachmentDecryptionResult> decryptedAttachmentResults = new ArrayList<>();
2020
@NotNull private final OriginalSmimeDetailsImpl originalSmimeDetails = OriginalSmimeDetailsImpl.builder().build();
21-
@Nullable private AttachmentResource smimeSignedEmail;
21+
@Nullable private AttachmentResource smimeSignedOrEncryptedEmail;
2222

2323
public void addDecryptedAttachments(@NotNull final List<AttachmentDecryptionResult> attachments) {
2424
decryptedAttachmentResults.addAll(attachments);

0 commit comments

Comments
 (0)