From 2db2bc932897adde84437498680c43e4e4e4e3bd Mon Sep 17 00:00:00 2001
From: Roberto Sánchez <roberto.sanchez@curisit.net>
Date: Wed, 16 Jul 2014 14:52:37 +0000
Subject: [PATCH] #0 feature - Moved pubblic key file to jar, new version 0.9.4

---
 src/main/java/net/curisit/securis/utils/SignatureHelper.java |   45 +++++++++++++++++++++++++++++++++------------
 1 files changed, 33 insertions(+), 12 deletions(-)

diff --git a/src/main/java/net/curisit/securis/utils/SignatureHelper.java b/src/main/java/net/curisit/securis/utils/SignatureHelper.java
index 2904f20..41d41e5 100644
--- a/src/main/java/net/curisit/securis/utils/SignatureHelper.java
+++ b/src/main/java/net/curisit/securis/utils/SignatureHelper.java
@@ -19,6 +19,7 @@
 import net.curisit.securis.beans.LicenseBean;
 
 import org.apache.commons.io.FileUtils;
+import org.apache.commons.io.IOUtils;
 import org.apache.commons.net.util.Base64;
 import org.apache.logging.log4j.LogManager;
 import org.apache.logging.log4j.Logger;
@@ -79,29 +80,48 @@
 
 	}
 
+	private static final String DEFAULT_PUB_KEY_RESOURCE = "/securis_key.pub";
+
 	private PublicKey generatePublicKey() throws NoSuchAlgorithmException, InvalidKeySpecException, IOException {
-		return generatePublicKey(new File(Params.get(Params.KEYS.PUBLIC_KEY_FILE, System.getenv("SECURIS_PUBLIC_KEY_FILE"))));
+		String pubKeyFilePath = System.getenv("SECURIS_PUBLIC_KEY_FILE");
+		if (pubKeyFilePath == null)
+			pubKeyFilePath = Params.get(Params.KEYS.PUBLIC_KEY_FILE);
+		String pubKeyBase64 = null;
+		if (pubKeyFilePath != null) {
+			File pubKeyFile = new File(pubKeyFilePath);
+			if (pubKeyFile.exists()) {
+				pubKeyBase64 = FileUtils.readFileToString(pubKeyFile);
+			}
+		}
+		if (pubKeyBase64 == null) {
+			pubKeyBase64 = IOUtils.toString(this.getClass().getResourceAsStream(DEFAULT_PUB_KEY_RESOURCE), "utf-8");
+		}
+		return generatePublicKey(pubKeyBase64);
 	}
 
-	private PublicKey generatePublicKey(File publicKeyFile) throws NoSuchAlgorithmException, InvalidKeySpecException, IOException {
-		String pubKeyBase64 = FileUtils.readFileToString(publicKeyFile);
-		int from = pubKeyBase64.indexOf('\n');
-		int to = pubKeyBase64.indexOf("-----END", from);
-		pubKeyBase64 = pubKeyBase64.substring(from, to);
-
+	private PublicKey generatePublicKey(String pubKeyBase64) throws NoSuchAlgorithmException, InvalidKeySpecException, IOException {
+		if (pubKeyBase64.startsWith("-----BEGIN")) {
+			int from = pubKeyBase64.indexOf('\n');
+			int to = pubKeyBase64.indexOf("-----END", from);
+			pubKeyBase64 = pubKeyBase64.substring(from, to);
+		}
 		KeyFactory keyFactory = KeyFactory.getInstance(DEFAULT_ALGORITHM);
 		X509EncodedKeySpec publicKeySpec = new X509EncodedKeySpec(Base64.decodeBase64(pubKeyBase64));
 		PublicKey publicKey = keyFactory.generatePublic(publicKeySpec);
-		log.debug("Public key read sucessfully from file: {}", publicKeyFile.getAbsolutePath());
 		return publicKey;
+	}
+
+	private PublicKey generatePublicKey(File pubKeyFile) throws NoSuchAlgorithmException, InvalidKeySpecException, IOException {
+		return generatePublicKey(FileUtils.readFileToString(pubKeyFile));
 	}
 
 	public PrivateKey generatePrivateKey(File privateKeyFile) throws NoSuchAlgorithmException, InvalidKeySpecException, IOException {
 		String privKeyBase64 = FileUtils.readFileToString(privateKeyFile);
-		int from = privKeyBase64.indexOf('\n');
-		int to = privKeyBase64.indexOf("-----END", from);
-		privKeyBase64 = privKeyBase64.substring(from, to);
-
+		if (privKeyBase64.startsWith("-----BEGIN")) {
+			int from = privKeyBase64.indexOf('\n');
+			int to = privKeyBase64.indexOf("-----END", from);
+			privKeyBase64 = privKeyBase64.substring(from, to);
+		}
 		KeyFactory keyFactory = KeyFactory.getInstance(DEFAULT_ALGORITHM);
 		PKCS8EncodedKeySpec privateKeySpec = new PKCS8EncodedKeySpec(Base64.decodeBase64(privKeyBase64));
 		PrivateKey privateKey = keyFactory.generatePrivate(privateKeySpec);
@@ -123,4 +143,5 @@
 			{ 64, -31, -81, 36, 99, -77, 100, 17, 16, -119, 31, 72, 123, -88, -32, 51, 39, -96, -35, 116, -65, 8, 41, -119, -108, -34, 41, 19, 26, -102, -16, -120, -96, 1, -5, -26, -13, 61, -121, 94, 59, 54, 110, 110, -55, 127, -106 };
 		AUX = Base64.encodeBase64String(s);
 	}
+
 }

--
Gitblit v1.3.2