From aef03de0208642fe8533758250084ecb1b015add Mon Sep 17 00:00:00 2001 From: =?utf8?q?Felix=20D=C3=B6rre?= Date: Sat, 21 Feb 2015 01:54:49 +0100 Subject: [PATCH] Fix: hide shady regex and mark it as regex clearly. --- src/org/cacert/gigi/crypto/SMIME.java | 5 +++-- src/org/cacert/gigi/email/Sendmail.java | 3 ++- src/org/cacert/gigi/util/PEM.java | 9 ++++++++- 3 files changed, 13 insertions(+), 4 deletions(-) diff --git a/src/org/cacert/gigi/crypto/SMIME.java b/src/org/cacert/gigi/crypto/SMIME.java index 9b657340..f37fbe8a 100644 --- a/src/org/cacert/gigi/crypto/SMIME.java +++ b/src/org/cacert/gigi/crypto/SMIME.java @@ -8,9 +8,10 @@ import java.security.GeneralSecurityException; import java.security.PrivateKey; import java.security.Signature; import java.security.cert.X509Certificate; -import java.util.Base64; import java.util.Random; +import org.cacert.gigi.util.PEM; + import sun.security.pkcs.ContentInfo; import sun.security.pkcs.PKCS7; import sun.security.pkcs.SignerInfo; @@ -71,7 +72,7 @@ public class SMIME { ByteArrayOutputStream bOut = new DerOutputStream(); p7.encodeSignedData(bOut); - mimeEncode(contents, Base64.getEncoder().encodeToString(bOut.toByteArray()).replaceAll("(.{64})(?=.)", "$1\n"), to); + mimeEncode(contents, PEM.formatBase64(bOut.toByteArray()), to); } private static Random r = new Random(); diff --git a/src/org/cacert/gigi/email/Sendmail.java b/src/org/cacert/gigi/email/Sendmail.java index 486f3c4e..285eee6b 100644 --- a/src/org/cacert/gigi/email/Sendmail.java +++ b/src/org/cacert/gigi/email/Sendmail.java @@ -14,6 +14,7 @@ import java.util.Locale; import java.util.Properties; import java.util.regex.Pattern; +import org.cacert.gigi.util.PEM; import org.cacert.gigi.util.ServerConstants; public class Sendmail extends EmailProvider { @@ -74,7 +75,7 @@ public class Sendmail extends EmailProvider { // out.print(chunk_split(base64_encode(recode("html..utf-8", // $message)))."\r\n.\r\n"); headers.append("\r\n"); - headers.append(Base64.getEncoder().encodeToString(message.getBytes("UTF-8")).replaceAll("(.{64})(?=.)", "$1\r\n")); + headers.append(PEM.formatBase64(message.getBytes("UTF-8"))); headers.append("\r\n"); try { diff --git a/src/org/cacert/gigi/util/PEM.java b/src/org/cacert/gigi/util/PEM.java index 06162705..049822c1 100644 --- a/src/org/cacert/gigi/util/PEM.java +++ b/src/org/cacert/gigi/util/PEM.java @@ -1,12 +1,15 @@ package org.cacert.gigi.util; import java.util.Base64; +import java.util.regex.Pattern; public class PEM { + public static final Pattern LINE = Pattern.compile("(.{64})(?=.)"); + public static String encode(String type, byte[] data) { return "-----BEGIN " + type + "-----\n" + // - Base64.getEncoder().encodeToString(data).replaceAll("(.{64})(?=.)", "$1\n") + // + formatBase64(data) + // "\n-----END " + type + "-----"; } @@ -18,4 +21,8 @@ public class PEM { return Base64.getDecoder().decode(data); } + + public static String formatBase64(byte[] bytes) { + return LINE.matcher(Base64.getEncoder().encodeToString(bytes)).replaceAll("$1\n"); + } } -- 2.39.2