From a3d5cefb3d4b5229624ee261125f6b4e03336bd5 Mon Sep 17 00:00:00 2001 From: dev Date: Thu, 30 Jun 2011 08:05:19 +0000 Subject: [PATCH] Added support for reading certificates from Base64 encoded strings. --- .../i2p/itoopie/i2pcontrol/JSONInterface.java | 5 ++- .../itoopie/security/CertificateHelper.java | 34 +++++++++++++++++++ .../itoopie/security/CertificateManager.java | 2 +- 3 files changed, 37 insertions(+), 4 deletions(-) create mode 100644 src/net/i2p/itoopie/security/CertificateHelper.java diff --git a/src/net/i2p/itoopie/i2pcontrol/JSONInterface.java b/src/net/i2p/itoopie/i2pcontrol/JSONInterface.java index 00608210f..8564e8667 100644 --- a/src/net/i2p/itoopie/i2pcontrol/JSONInterface.java +++ b/src/net/i2p/itoopie/i2pcontrol/JSONInterface.java @@ -43,9 +43,9 @@ public class JSONInterface{ int srvPort = _conf.getConf("server-port", 7656); String srvTarget = _conf.getConf("server-target", "jsonrpc"); try { - srvURL = new URL("http://"+srvHost+":"+srvPort+"/"+srvTarget); + srvURL = new URL("https://"+srvHost+":"+srvPort+"/"+srvTarget); } catch (MalformedURLException e){ - _log.error("Bad URL: http://"+srvHost+":"+srvPort+"/"+srvTarget, e); + _log.error("Bad URL: https://"+srvHost+":"+srvPort+"/"+srvTarget, e); } session = new JSONRPC2Session(srvURL); } @@ -84,7 +84,6 @@ public class JSONInterface{ @SuppressWarnings("unchecked") public static String getEcho(String str) throws JSONRPC2Error{ - JSONRPC2Request req = new JSONRPC2Request("echo", incrNonce()); @SuppressWarnings("rawtypes") Map params = new HashMap(); diff --git a/src/net/i2p/itoopie/security/CertificateHelper.java b/src/net/i2p/itoopie/security/CertificateHelper.java new file mode 100644 index 000000000..5616a6ee2 --- /dev/null +++ b/src/net/i2p/itoopie/security/CertificateHelper.java @@ -0,0 +1,34 @@ +package net.i2p.itoopie.security; + +import java.io.ByteArrayInputStream; +import java.security.cert.CertificateException; +import java.security.cert.CertificateFactory; +import java.security.cert.X509Certificate; + +import org.apache.commons.logging.Log; +import org.apache.commons.logging.LogFactory; + +import com.sun.org.apache.xerces.internal.impl.dv.util.Base64; + +public class CertificateHelper { + + private static Log _log; + + static { + _log = LogFactory.getLog(CertificateHelper.class); + } + + public static X509Certificate certFromBase64(String base64){ + try { + CertificateFactory cf = CertificateFactory.getInstance(CertificateManager.DEFAULT_CERT_SPI); + byte[] bytes = Base64.decode(base64); + return (X509Certificate) cf.generateCertificate(new ByteArrayInputStream(bytes)); + } catch (CertificateException e) { + _log.fatal("Unable to load service interface provider, " + + CertificateManager.DEFAULT_CERT_SPI + + " used for reading base64 encoded certificates", e); + } + + return null; + } +} diff --git a/src/net/i2p/itoopie/security/CertificateManager.java b/src/net/i2p/itoopie/security/CertificateManager.java index 139f9e841..f37278f8c 100644 --- a/src/net/i2p/itoopie/security/CertificateManager.java +++ b/src/net/i2p/itoopie/security/CertificateManager.java @@ -29,10 +29,10 @@ public class CertificateManager { private static final String DEFAULT_KEYSTORE_LOCATION = "key.store"; private static final String DEFAULT_KEYSTORE_PASSWORD = "nut'nfancy"; private static final String DEFAULT_KEYSTORE_ALGORITHM = "SunX509"; + public static final String DEFAULT_CERT_SPI = "X.509"; private static KeyStore _ks; private static Log _log; - static { _log = LogFactory.getLog(CertificateManager.class); }