From e767d38a97828997ed3080d1332a3a2f2bcf8491 Mon Sep 17 00:00:00 2001
From: Roberto Sánchez <roberto.sanchez@curisit.net>
Date: Wed, 18 Jun 2014 12:06:24 +0000
Subject: [PATCH] #593 fix - Added further information when license is not valid due to HW validation

---
 src/main/java/net/curisit/securis/LicenseValidator.java  |   20 ++++++++++++++------
 src/patch/java/net/curisit/securis/LicenseGenerator.java |    8 ++++----
 2 files changed, 18 insertions(+), 10 deletions(-)

diff --git a/src/main/java/net/curisit/securis/LicenseValidator.java b/src/main/java/net/curisit/securis/LicenseValidator.java
index 23c9ea7..66744d6 100644
--- a/src/main/java/net/curisit/securis/LicenseValidator.java
+++ b/src/main/java/net/curisit/securis/LicenseValidator.java
@@ -9,8 +9,12 @@
 import net.curisit.securis.utils.LicUtils;
 
 import org.apache.commons.io.IOUtils;
+import org.apache.logging.log4j.LogManager;
+import org.apache.logging.log4j.Logger;
 
 public class LicenseValidator {
+
+	private static final Logger log = LogManager.getLogger(LicenseValidator.class);
 
 	public static LicenseValidator singleton = new LicenseValidator();
 	private byte[] LOGO_SECRET;
@@ -28,7 +32,7 @@
 	}
 
 	/**
-	 * @return true if logo is correct
+	 * @return CRC string for customer logo
 	 */
 	public String getCrcLogo() {
 		InputStream is = getClass().getClassLoader().getResourceAsStream("images/logo_customer.png");
@@ -36,21 +40,25 @@
 			String shaLogo = LicUtils.sha256(IOUtils.toByteArray(is), LOGO_SECRET);
 			return shaLogo;
 		} catch (IOException e) {
-			e.printStackTrace();
+			log.warn("Customer logo was not found in images/logo_customer.png");
 			return null;
 		}
 	}
 
 	public void validateLogo(RequestBean reqBean) throws SeCurisException {
-		String currentCRC = getCrcLogo();
-		if (!currentCRC.equals(reqBean.getCrcLogo()))
-			throw new SeCurisException("License logo validation failed for request data: " + JsonUtils.toJSON(reqBean));
+		if (reqBean.getCrcLogo() == null) {
+			log.info("Customer logo is not included in license file and won't be validated");
+		} else {
+			String currentCRC = getCrcLogo();
+			if (!currentCRC.equals(reqBean.getCrcLogo()))
+				throw new SeCurisException("License logo validation failed for request data: " + JsonUtils.toJSON(reqBean));
+		}
 	}
 
 	public void validateHW(RequestBean reqBean, String appCode, String customerCode) throws SeCurisException {
 		RequestBean currentHW = ReqGenerator.getInstance().createRequest(appCode, customerCode);
 		if (!currentHW.match(reqBean))
-			throw new SeCurisException("Current System info mismatch the License System info: " + JsonUtils.toJSON(reqBean));
+			throw new SeCurisException("Current System info mismatch the License System info:\n Licensed: " + JsonUtils.toJSON(reqBean, true) + "\n Expected: " + JsonUtils.toJSON(currentHW, true));
 	}
 
 }
diff --git a/src/patch/java/net/curisit/securis/LicenseGenerator.java b/src/patch/java/net/curisit/securis/LicenseGenerator.java
index 493a2d1..b9ef26e 100644
--- a/src/patch/java/net/curisit/securis/LicenseGenerator.java
+++ b/src/patch/java/net/curisit/securis/LicenseGenerator.java
@@ -111,7 +111,7 @@
 		Signature signature;
 		try {
 			signature = Signature.getInstance(SignatureHelper.SIGNATURE_GENERATION_ALGORITHM);
-			signature.initSign(sh.generatePrivateKey(new File("/Users/cproberto/Documents/wsPython/doky/tests/privkey.pkcs8")));
+			signature.initSign(sh.generatePrivateKey(new File("/Users/cproberto/Documents/wsPython/doky/tests/securis_private_key.pkcs8")));
 
 			sh.prepareSignature(signature, licBean);
 
@@ -135,12 +135,12 @@
 	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/Documents/wsCurisIT/SeCurisClient/license.req"));
+		RequestBean req = ReqGenerator.getInstance().loadRequest(new File("/Users/cproberto/Downloads/license.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), "L01", "LIC-9812987123-12837129873");
-		LicenseGenerator.getInstance().save(lic, new File("/Users/cproberto/Documents/wsCurisIT/SeCurisClient/license.lic"));
+		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/Downloads/license_curisdata.lic"));
 
 		System.out.print("os.arch: " + System.getProperty("os.arch") + " " + System.getProperty("os.name"));
 

--
Gitblit v1.3.2