From 5fd49eb7182b2522ee36be1f413f85271a20766c Mon Sep 17 00:00:00 2001 From: =?utf8?q?Felix=20D=C3=B6rre?= Date: Thu, 19 Feb 2015 22:22:49 +0100 Subject: [PATCH] FIX: add UTF-8 as charset where appropriate. --- src/org/cacert/gigi/DevelLauncher.java | 2 +- src/org/cacert/gigi/Gigi.java | 7 ++++++- src/org/cacert/gigi/database/SQLFileManager.java | 2 +- src/org/cacert/gigi/dbObjects/Certificate.java | 2 +- src/org/cacert/gigi/email/EmailProvider.java | 7 ++++--- src/org/cacert/gigi/pages/StaticPage.java | 5 +++-- src/org/cacert/gigi/ping/SSLPinger.java | 10 +++++----- src/org/cacert/gigi/util/PasswordHash.java | 5 ++++- 8 files changed, 25 insertions(+), 15 deletions(-) diff --git a/src/org/cacert/gigi/DevelLauncher.java b/src/org/cacert/gigi/DevelLauncher.java index 5d168672..5e023593 100644 --- a/src/org/cacert/gigi/DevelLauncher.java +++ b/src/org/cacert/gigi/DevelLauncher.java @@ -61,7 +61,7 @@ public class DevelLauncher { Launcher.boot(); addDevelPage(); System.setIn(oldin); - BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); + BufferedReader br = new BufferedReader(new InputStreamReader(System.in, "UTF-8")); System.out.println("Cacert-gigi system sucessfully started."); System.out.println("Press enter to shutdown."); br.readLine(); diff --git a/src/org/cacert/gigi/Gigi.java b/src/org/cacert/gigi/Gigi.java index 8c4a234c..7e0b3b55 100644 --- a/src/org/cacert/gigi/Gigi.java +++ b/src/org/cacert/gigi/Gigi.java @@ -2,6 +2,7 @@ package org.cacert.gigi; import java.io.IOException; import java.io.PrintWriter; +import java.io.UnsupportedEncodingException; import java.security.KeyStore; import java.security.cert.X509Certificate; import java.util.Calendar; @@ -149,7 +150,11 @@ public class Gigi extends HttpServlet { } } - putPage("/wot/rules", new StaticPage("Web of Trust Rules", AssurePage.class.getResourceAsStream("Rules.templ")), "Web of Trust"); + try { + putPage("/wot/rules", new StaticPage("Web of Trust Rules", AssurePage.class.getResourceAsStream("Rules.templ")), "Web of Trust"); + } catch (UnsupportedEncodingException e) { + new ServletException(e); + } baseTemplate = new Template(Gigi.class.getResource("Gigi.templ")); rootMenu = new Menu("Main"); Menu about = new Menu("About CAcert.org"); diff --git a/src/org/cacert/gigi/database/SQLFileManager.java b/src/org/cacert/gigi/database/SQLFileManager.java index 676d9e66..62083c74 100644 --- a/src/org/cacert/gigi/database/SQLFileManager.java +++ b/src/org/cacert/gigi/database/SQLFileManager.java @@ -56,6 +56,6 @@ public class SQLFileManager { while ((len = f.read(buf)) > 0) { baos.write(buf, 0, len); } - return new String(baos.toByteArray()); + return new String(baos.toByteArray(), "UTF-8"); } } diff --git a/src/org/cacert/gigi/dbObjects/Certificate.java b/src/org/cacert/gigi/dbObjects/Certificate.java index 9a857fe4..affb1719 100644 --- a/src/org/cacert/gigi/dbObjects/Certificate.java +++ b/src/org/cacert/gigi/dbObjects/Certificate.java @@ -274,7 +274,7 @@ public class Certificate { File csrFile = KeyStorage.locateCsr(id); csrName = csrFile.getPath(); FileOutputStream fos = new FileOutputStream(csrFile); - fos.write(csr.getBytes()); + fos.write(csr.getBytes("UTF-8")); fos.close(); GigiPreparedStatement updater = DatabaseConnection.getInstance().prepare("UPDATE certs SET csr_name=? WHERE id=?"); diff --git a/src/org/cacert/gigi/email/EmailProvider.java b/src/org/cacert/gigi/email/EmailProvider.java index 49a27356..918d7da3 100644 --- a/src/org/cacert/gigi/email/EmailProvider.java +++ b/src/org/cacert/gigi/email/EmailProvider.java @@ -87,7 +87,7 @@ public abstract class EmailProvider { } else { return "Strange MX records."; } - try (Socket s = new Socket(host, 25); BufferedReader br0 = new BufferedReader(new InputStreamReader(s.getInputStream())); PrintWriter pw0 = new PrintWriter(s.getOutputStream())) { + try (Socket s = new Socket(host, 25); BufferedReader br0 = new BufferedReader(new InputStreamReader(s.getInputStream(), "UTF-8")); PrintWriter pw0 = new PrintWriter(s.getOutputStream())) { BufferedReader br = br0; PrintWriter pw = pw0; String line; @@ -100,8 +100,9 @@ public abstract class EmailProvider { boolean starttls = false; do { line = br.readLine(); - if (line == null) + if (line == null) { break; + } starttls |= line.substring(4).equals("STARTTLS"); } while (line.startsWith("250-")); if (line == null || !line.startsWith("250 ")) { @@ -115,7 +116,7 @@ public abstract class EmailProvider { continue; } Socket s1 = ((SSLSocketFactory) SSLSocketFactory.getDefault()).createSocket(s, host, 25, true); - br = new BufferedReader(new InputStreamReader(s1.getInputStream())); + br = new BufferedReader(new InputStreamReader(s1.getInputStream(), "UTF-8")); pw = new PrintWriter(s1.getOutputStream()); pw.print("EHLO www.cacert.org\r\n"); pw.flush(); diff --git a/src/org/cacert/gigi/pages/StaticPage.java b/src/org/cacert/gigi/pages/StaticPage.java index f4d824c7..be2e75bd 100644 --- a/src/org/cacert/gigi/pages/StaticPage.java +++ b/src/org/cacert/gigi/pages/StaticPage.java @@ -3,6 +3,7 @@ package org.cacert.gigi.pages; import java.io.IOException; import java.io.InputStream; import java.io.InputStreamReader; +import java.io.UnsupportedEncodingException; import java.util.HashMap; import javax.servlet.http.HttpServletRequest; @@ -14,9 +15,9 @@ public class StaticPage extends Page { private Template content; - public StaticPage(String title, InputStream content) { + public StaticPage(String title, InputStream content) throws UnsupportedEncodingException { super(title); - this.content = new Template(new InputStreamReader(content)); + this.content = new Template(new InputStreamReader(content, "UTF-8")); } @Override diff --git a/src/org/cacert/gigi/ping/SSLPinger.java b/src/org/cacert/gigi/ping/SSLPinger.java index 6a20dafe..ec63a787 100644 --- a/src/org/cacert/gigi/ping/SSLPinger.java +++ b/src/org/cacert/gigi/ping/SSLPinger.java @@ -76,7 +76,7 @@ public class SSLPinger extends DomainPinger { InputStream is = s.getInputStream(); OutputStream os = s.getOutputStream(); scanFor(is, "\n"); - os.write("ENABLE STARTTLS\r\n".getBytes()); + os.write("ENABLE STARTTLS\r\n".getBytes("UTF-8")); os.flush(); scanFor(is, "\n"); } @@ -87,7 +87,7 @@ public class SSLPinger extends DomainPinger { OutputStream os = s.getOutputStream(); os.write(("").getBytes()); os.flush(); - os.write("".getBytes()); + os.write("".getBytes("UTF-8")); os.flush(); scanFor(is, ""); @@ -109,13 +109,13 @@ public class SSLPinger extends DomainPinger { Socket s = sch.socket(); InputStream is = s.getInputStream(); readSMTP(is); - s.getOutputStream().write("EHLO ssl.pinger\r\n".getBytes()); + s.getOutputStream().write("EHLO ssl.pinger\r\n".getBytes("UTF-8")); s.getOutputStream().flush(); readSMTP(is); - s.getOutputStream().write("HELP\r\n".getBytes()); + s.getOutputStream().write("HELP\r\n".getBytes("UTF-8")); s.getOutputStream().flush(); readSMTP(is); - s.getOutputStream().write("STARTTLS\r\n".getBytes()); + s.getOutputStream().write("STARTTLS\r\n".getBytes("UTF-8")); s.getOutputStream().flush(); readSMTP(is); } diff --git a/src/org/cacert/gigi/util/PasswordHash.java b/src/org/cacert/gigi/util/PasswordHash.java index 11e4d344..ed0d4f3c 100644 --- a/src/org/cacert/gigi/util/PasswordHash.java +++ b/src/org/cacert/gigi/util/PasswordHash.java @@ -1,5 +1,6 @@ package org.cacert.gigi.util; +import java.io.UnsupportedEncodingException; import java.security.MessageDigest; import java.security.NoSuchAlgorithmException; @@ -48,7 +49,7 @@ public class PasswordHash { private static String sha1(String password) { try { MessageDigest md = MessageDigest.getInstance("SHA1"); - byte[] digest = md.digest(password.getBytes()); + byte[] digest = md.digest(password.getBytes("UTF-8")); StringBuffer res = new StringBuffer(digest.length * 2); for (int i = 0; i < digest.length; i++) { res.append(Integer.toHexString((digest[i] & 0xF0) >> 4)); @@ -57,6 +58,8 @@ public class PasswordHash { return res.toString(); } catch (NoSuchAlgorithmException e) { throw new Error(e); + } catch (UnsupportedEncodingException e) { + throw new Error(e); } } -- 2.39.2