Skip to content

Commit 0c681f2

Browse files
committed
#498: Finally implement builder API to configure S/MIME signing and/or encryption algorithms, and actually use it. Added tests to test some variations, including both RSA (already present) and DSA (added new key for this in pkcs store).
1 parent c958f53 commit 0c681f2

File tree

34 files changed

+889
-509
lines changed

34 files changed

+889
-509
lines changed

modules/core-module/src/main/java/org/simplejavamail/api/email/Email.java

Lines changed: 25 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -5,14 +5,14 @@
55
import org.jetbrains.annotations.NotNull;
66
import org.jetbrains.annotations.Nullable;
77
import org.simplejavamail.api.email.config.DkimConfig;
8+
import org.simplejavamail.api.email.config.SmimeEncryptionConfig;
9+
import org.simplejavamail.api.email.config.SmimeSigningConfig;
810
import org.simplejavamail.api.internal.smimesupport.model.PlainSmimeDetails;
9-
import org.simplejavamail.api.mailer.config.Pkcs12Config;
1011
import org.simplejavamail.internal.config.EmailProperty;
1112
import org.simplejavamail.internal.util.MiscUtil;
1213

13-
import java.io.InputStream;
14+
import java.io.File;
1415
import java.io.Serializable;
15-
import java.security.cert.X509Certificate;
1616
import java.text.SimpleDateFormat;
1717
import java.util.Collection;
1818
import java.util.Date;
@@ -192,17 +192,17 @@ public class Email implements Serializable {
192192
private final DkimConfig dkimConfig;
193193

194194
/**
195-
* @see EmailPopulatingBuilder#signWithSmime(Pkcs12Config)
196-
* @see EmailPopulatingBuilder#signWithSmime(InputStream, String, String, String)
195+
* @see EmailPopulatingBuilder#encryptWithSmime(SmimeEncryptionConfig)
196+
* @see EmailPopulatingBuilder#encryptWithSmime(File, String, String)
197197
*/
198-
private final X509Certificate x509CertificateForSmimeEncryption;
198+
private final SmimeEncryptionConfig smimeEncryptionConfig;
199199

200200
/**
201-
* @see EmailPopulatingBuilder#encryptWithSmime(X509Certificate)
202-
* @see EmailPopulatingBuilder#encryptWithSmime(InputStream)
201+
* @see EmailPopulatingBuilder#signWithSmime(SmimeSigningConfig)
202+
* @see EmailPopulatingBuilder#signWithSmime(File, String, String, String, String)
203203
*/
204204
// data source is not serializable, so transient
205-
private final transient Pkcs12Config pkcs12ConfigForSmimeSigning;
205+
private transient final SmimeSigningConfig smimeSigningConfig;
206206

207207
/**
208208
* @see EmailPopulatingBuilder#getSmimeSignedEmail()
@@ -274,8 +274,8 @@ public Email(@NotNull final EmailPopulatingBuilder builder) {
274274
emailToForward = builder.getEmailToForward();
275275
originalSmimeDetails = builder.getOriginalSmimeDetails();
276276
sentDate = builder.getSentDate();
277-
x509CertificateForSmimeEncryption = builder.getX509CertificateForSmimeEncryption();
278-
pkcs12ConfigForSmimeSigning = builder.getPkcs12ConfigForSmimeSigning();
277+
smimeEncryptionConfig = builder.getSmimeEncryptionConfig();
278+
smimeSigningConfig = builder.getSmimeSigningConfig();
279279
dkimConfig = builder.getDkimConfig();
280280
}
281281

@@ -335,18 +335,18 @@ public String toString() {
335335
s += ",\n\tforwardingEmail=true";
336336
}
337337

338-
if (smimeSignedEmail != null || pkcs12ConfigForSmimeSigning != null
339-
|| x509CertificateForSmimeEncryption != null || !(originalSmimeDetails instanceof PlainSmimeDetails)) {
338+
if (smimeSignedEmail != null || smimeSigningConfig != null
339+
|| smimeEncryptionConfig != null || !(originalSmimeDetails instanceof PlainSmimeDetails)) {
340340
s += ",\n\tsmime details: {\n";
341341
s += "\t----------------------\n";
342342
if (smimeSignedEmail != null) {
343343
s += "\t\tsmimeSignedEmail=" + smimeSignedEmail + ",\n";
344344
}
345-
if (pkcs12ConfigForSmimeSigning != null) {
346-
s += "\t\tpkcs12ConfigForSmimeSigning=" + pkcs12ConfigForSmimeSigning + ",\n";
345+
if (smimeSigningConfig != null) {
346+
s += "\t\tsmimeSigningConfig=" + smimeSigningConfig + ",\n";
347347
}
348-
if (x509CertificateForSmimeEncryption != null) {
349-
s += "\t\tx509CertificateForSmimeEncryption=" + x509CertificateForSmimeEncryption;
348+
if (smimeEncryptionConfig != null) {
349+
s += "\t\tsmimeEncryptionConfig=" + smimeEncryptionConfig;
350350
}
351351
s += "\t\toriginalSmimeDetails=" + originalSmimeDetails + "\n";
352352
s += "\t----------------------\n\t}";
@@ -600,23 +600,22 @@ public Map<String, Collection<String>> getHeaders() {
600600
public DkimConfig getDkimConfig() {
601601
return dkimConfig;
602602
}
603-
604603
/**
605-
* @see EmailPopulatingBuilder#signWithSmime(Pkcs12Config)
606-
* @see EmailPopulatingBuilder#signWithSmime(InputStream, String, String, String)
604+
* @see EmailPopulatingBuilder#encryptWithSmime(SmimeEncryptionConfig)
605+
* @see EmailPopulatingBuilder#encryptWithSmime(File, String, String)
607606
*/
608607
@Nullable
609-
public X509Certificate getX509CertificateForSmimeEncryption() {
610-
return x509CertificateForSmimeEncryption;
608+
public SmimeEncryptionConfig getSmimeEncryptionConfig() {
609+
return smimeEncryptionConfig;
611610
}
612611

613612
/**
614-
* @see EmailPopulatingBuilder#encryptWithSmime(X509Certificate)
615-
* @see EmailPopulatingBuilder#encryptWithSmime(InputStream)
613+
* @see EmailPopulatingBuilder#signWithSmime(SmimeSigningConfig)
614+
* @see EmailPopulatingBuilder#signWithSmime(File, String, String, String, String)
616615
*/
617616
@Nullable
618-
public Pkcs12Config getPkcs12ConfigForSmimeSigning() {
619-
return pkcs12ConfigForSmimeSigning;
617+
public SmimeSigningConfig getSmimeSigningConfig() {
618+
return smimeSigningConfig;
620619
}
621620

622621
/**

0 commit comments

Comments
 (0)