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/resources/securis-client.properties                 |    1 
 src/main/resources/securis_key.pub                           |    9 ++++
 pom.xml                                                      |    2 
 src/main/java/net/curisit/securis/utils/SignatureHelper.java |   45 ++++++++++++++++------
 src/patch/java/net/curisit/securis/LicenseGenerator.java     |   14 ++++--
 5 files changed, 52 insertions(+), 19 deletions(-)

diff --git a/pom.xml b/pom.xml
index a792286..029f86f 100644
--- a/pom.xml
+++ b/pom.xml
@@ -3,7 +3,7 @@
 	<modelVersion>4.0.0</modelVersion>
 	<groupId>net.curisit</groupId>
 	<artifactId>securis-client</artifactId>
-	<version>0.9.3-SNAPSHOT</version>
+	<version>0.9.4-SNAPSHOT</version>
 	<build>
 		<plugins>
 			<plugin>
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);
 	}
+
 }
diff --git a/src/main/resources/securis-client.properties b/src/main/resources/securis-client.properties
index c1e07d0..51bcce8 100644
--- a/src/main/resources/securis-client.properties
+++ b/src/main/resources/securis-client.properties
@@ -1,4 +1,3 @@
 license.server.url = https://securis.curistec.com/securis/api
-public.key.file = __ADD_PUBLIC_KEY_FILE__
 app.code = __ADD_APP_CODE__
 customer.code = __ADD_CUSTOMER_CODE__
diff --git a/src/main/resources/securis_key.pub b/src/main/resources/securis_key.pub
new file mode 100644
index 0000000..a259cfa
--- /dev/null
+++ b/src/main/resources/securis_key.pub
@@ -0,0 +1,9 @@
+-----BEGIN PUBLIC KEY-----
+MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAp69f2wWJh1YOiB7vIagc
+lmy+eL7Qm/4vkb+2kpfijxWVoTVVjPkieDL6Bmo/s198H/gP4ugVhDLTMFgAhFa0
+C7QZHiB/8rzrtKr3kBLl+BcCoBUmyhzo5VLWNJIUtW4pUl0WZ4FJ/AfVqs14nwvk
+SaU6v5A9qp0yksoJxM/3T3NngIAXRNqLkllW2o8BXbDSBn2TR6AqkoQ6+X0bxR3t
+nTh+5T8i8wnZNb1yrksK3nWa+X7IVndNJI2c0BPCglyeW1AgPar0dNlhUK3+SgKG
+e9n2ZtZhtIQcsqv2V+Qg1rrgOrTpcXskauU/LPKiqfBVKKH0MwKyCLjFb4Yzu8ht
+CwIDAQAB
+-----END PUBLIC KEY-----
diff --git a/src/patch/java/net/curisit/securis/LicenseGenerator.java b/src/patch/java/net/curisit/securis/LicenseGenerator.java
index 1336d4f..3675c26 100644
--- a/src/patch/java/net/curisit/securis/LicenseGenerator.java
+++ b/src/patch/java/net/curisit/securis/LicenseGenerator.java
@@ -135,12 +135,16 @@
 	public static void main(String[] args) throws SeCurisException {
 		Paths.get(new File("/Users/cproberto/Documents/wsCurisIT/SeCurisClient/license.req").toURI());
 
-		RequestBean req = ReqGenerator.getInstance().loadRequest(new File("/Users/cproberto/Desktop/lic_win.req"));
+		RequestBean req = ReqGenerator.getInstance().loadRequest(new File("/Users/cproberto/Downloads/license-2.req"));
 		Map<String, Object> metadata = new TreeMap<>();
-		metadata.put("maxUsers", 23);
-		metadata.put("maxInstances", 12);
-		LicenseBean lic = LicenseGenerator.getInstance().generateLicense(req, metadata, new Date(new Date().getTime() + 3600 * 1000), "CurisData01", "LIC-9812987123-12837129873");
-		LicenseGenerator.getInstance().save(lic, new File("/Users/cproberto/Desktop/license_win.lic"));
+		metadata.put("maxUsers", 0);
+		metadata.put("maxInstances", 0);
+		metadata.put("timeThreshold", 0);
+		metadata.put("datasetPrefix", "BP");
+		metadata.put("extendedMode", true);
+
+		LicenseBean lic = LicenseGenerator.getInstance().generateLicense(req, metadata, new Date(new Date().getTime() + 3600 * 1000), "CI-CS-01", "LIC-CESAR-00001");
+		LicenseGenerator.getInstance().save(lic, new File("/Users/cproberto/Desktop/license_cesar.lic"));
 
 		System.out.print("os.arch: " + System.getProperty("os.arch") + " " + System.getProperty("os.name"));
 

--
Gitblit v1.3.2