Skip to content

Commit 484bfe0

Browse files
Muthu-Palaniyappan-OLMuthu Palaniyappan
authored and
Muthu Palaniyappan
committed
migrate from net.i2p.crypto.eddsa to org.bouncycastle.bcpkix-jdk18on to remediate CVE-2020-36843
Before this commit we were using net.i2p.crypto.eddsa which was vulnerable to CVE-2020-36843, now we are moving to org.bouncycastle.bcpkix-jdk18on to remediate cve
1 parent fd5c449 commit 484bfe0

File tree

4 files changed

+16
-18
lines changed

4 files changed

+16
-18
lines changed

Diff for: pom.xml

+4-4
Original file line numberDiff line numberDiff line change
@@ -85,9 +85,9 @@
8585
</dependency>
8686

8787
<dependency>
88-
<groupId>net.i2p.crypto</groupId>
89-
<artifactId>eddsa</artifactId>
90-
<version>0.3.0</version>
88+
<groupId>org.bouncycastle</groupId>
89+
<artifactId>bcpkix-jdk18on</artifactId>
90+
<version>1.78</version>
9191
</dependency>
9292
</dependencies>
93-
</project>
93+
</project>

Diff for: src/main/java/org/simplejavamail/utils/mail/dkim/DkimSigner.java

+2-1
Original file line numberDiff line numberDiff line change
@@ -2,9 +2,10 @@
22

33
import jakarta.mail.Header;
44
import jakarta.mail.MessagingException;
5-
import net.i2p.crypto.eddsa.EdDSAPrivateKey;
65
import net.markenwerk.utils.data.fetcher.BufferedDataFetcher;
76
import net.markenwerk.utils.data.fetcher.DataFetchException;
7+
8+
import org.bouncycastle.jcajce.interfaces.EdDSAPrivateKey;
89
import org.eclipse.angus.mail.util.CRLFOutputStream;
910
import org.eclipse.angus.mail.util.QPEncoderStream;
1011

Diff for: src/main/java/org/simplejavamail/utils/mail/dkim/DomainKey.java

+8-11
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,9 @@
11
package org.simplejavamail.utils.mail.dkim;
22

3-
import java.nio.charset.StandardCharsets;
43
import java.security.InvalidKeyException;
54
import java.security.KeyFactory;
65
import java.security.NoSuchAlgorithmException;
6+
import java.security.NoSuchProviderException;
77
import java.security.PrivateKey;
88
import java.security.PublicKey;
99
import java.security.Signature;
@@ -20,12 +20,10 @@
2020
import java.util.StringTokenizer;
2121
import java.util.regex.Pattern;
2222

23-
import net.i2p.crypto.eddsa.EdDSAPublicKey;
24-
import net.i2p.crypto.eddsa.spec.EdDSANamedCurveTable;
25-
import net.i2p.crypto.eddsa.spec.EdDSAPublicKeySpec;
26-
2723
import static java.nio.charset.StandardCharsets.UTF_8;
2824

25+
import org.bouncycastle.jcajce.interfaces.EdDSAPublicKey;
26+
2927
/**
3028
* A {@code DomainKey} holds the information about a domain key.
3129
*
@@ -151,11 +149,10 @@ private RSAPublicKey getRsaPublicKey(String publicKeyTagValue) {
151149

152150
private EdDSAPublicKey getEd25519PublicKey(String publicKeyTagValue) {
153151
try {
154-
KeyFactory keyFactory = KeyFactory.getInstance(KeyPairType.ED25519.getJavaNotation());
155-
EdDSAPublicKeySpec publicKeySpec = new EdDSAPublicKeySpec(Base64.getDecoder().decode(publicKeyTagValue),
156-
EdDSANamedCurveTable.ED_25519_CURVE_SPEC);
157-
return (EdDSAPublicKey) keyFactory.generatePublic(publicKeySpec);
158-
} catch (NoSuchAlgorithmException nsae) {
152+
byte[] keyBytes = Base64.getDecoder().decode(publicKeyTagValue);
153+
KeyFactory keyFactory = KeyFactory.getInstance(KeyPairType.ED25519.getJavaNotation(), "BC");
154+
return (EdDSAPublicKey) keyFactory.generatePublic(new X509EncodedKeySpec(keyBytes));
155+
} catch (NoSuchAlgorithmException | NoSuchProviderException nsae) {
159156
throw new DkimException("Ed25519 algorithm not found by JVM");
160157
} catch (IllegalArgumentException e) {
161158
throw new DkimException("The public key " + publicKeyTagValue + " couldn't be read.", e);
@@ -297,4 +294,4 @@ private void checkKeyCompatiblilty(PrivateKey privateKey)
297294

298295
}
299296

300-
}
297+
}

Diff for: src/main/java/org/simplejavamail/utils/mail/dkim/KeyPairType.java

+2-2
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44
import java.util.Arrays;
55
import java.util.List;
66

7-
import net.i2p.crypto.eddsa.EdDSASecurityProvider;
7+
import org.bouncycastle.jce.provider.BouncyCastleProvider;
88

99
public enum KeyPairType {
1010

@@ -25,7 +25,7 @@ protected void initialize() {
2525
@Override
2626
protected void initialize() {
2727
if (!initailized) {
28-
Security.addProvider(new EdDSASecurityProvider());
28+
Security.addProvider(new BouncyCastleProvider());
2929
initailized = true;
3030
}
3131
}

0 commit comments

Comments
 (0)