From f1965e6375e2e556f642f6002b4bb5add8a20ab8 Mon Sep 17 00:00:00 2001
From: Roberto Sánchez <roberto.sanchez@curisit.net>
Date: Fri, 21 Feb 2014 17:53:08 +0000
Subject: [PATCH] #0 feature - Added more License fields, metadata section for application specific data

---
 src/main/java/net/curisit/securis/beans/LicenseBean.java        |   47 ++++++++++++++++++-----
 src/patch/java/net/curisit/securis/beans/SignedLicenseBean.java |   21 ++++++++++
 src/main/java/net/curisit/securis/SignatureHelper.java          |   14 ++++++-
 src/patch/java/net/curisit/securis/LicenseGenerator.java        |    7 ++-
 4 files changed, 73 insertions(+), 16 deletions(-)

diff --git a/src/main/java/net/curisit/securis/SignatureHelper.java b/src/main/java/net/curisit/securis/SignatureHelper.java
index 0d14483..189fd73 100644
--- a/src/main/java/net/curisit/securis/SignatureHelper.java
+++ b/src/main/java/net/curisit/securis/SignatureHelper.java
@@ -15,9 +15,12 @@
 import java.security.spec.PKCS8EncodedKeySpec;
 import java.security.spec.X509EncodedKeySpec;
 import java.util.Date;
+import java.util.HashMap;
+import java.util.Map;
 
 import net.curisit.securis.beans.LicenseBean;
 import net.curisit.securis.beans.RequestBean;
+import net.curisit.securis.beans.SignedLicenseBean;
 import net.curisit.securis.utils.JsonUtils;
 import net.curisit.securis.utils.Params;
 
@@ -131,9 +134,16 @@
 		RequestBean req = ReqGenerator.getInstance().createRequest("CI", "Roberto");
 
 		LicenseGenerator lg = LicenseGenerator.getInstance();
-		LicenseBean lic = lg.generateLicense(req, 12, new Date(new Date().getTime() + 24 * 3600 * 1000 * 10));
+		Map<String, Object> metadata = new HashMap<>();
+		metadata.put("maxUsers", 14);
+		metadata.put("timeThreshold", 5000);
+		metadata.put("123", 5000);
+		metadata.put("Basdads", 5000);
+		metadata.put("aasdads", 5000);
+		metadata.put("maxInstances", 50);
+		LicenseBean lic = lg.generateLicense(req, metadata, new Date(new Date().getTime() + 24 * 3600 * 1000 * 10), "LIC-TEST-001");
 		System.out.println(JsonUtils.toJSON(lic, true));
-		System.out.println(JsonUtils.toJSON(lic));
+		System.out.println(JsonUtils.toJSON(new SignedLicenseBean(lic), true));
 	}
 
 	static {
diff --git a/src/main/java/net/curisit/securis/beans/LicenseBean.java b/src/main/java/net/curisit/securis/beans/LicenseBean.java
index 691241d..e009277 100644
--- a/src/main/java/net/curisit/securis/beans/LicenseBean.java
+++ b/src/main/java/net/curisit/securis/beans/LicenseBean.java
@@ -1,18 +1,24 @@
 package net.curisit.securis.beans;
 
 import java.util.Date;
+import java.util.Map;
+import java.util.TreeMap;
 
+import org.codehaus.jackson.annotate.JsonIgnore;
 import org.codehaus.jackson.annotate.JsonPropertyOrder;
 
 @JsonPropertyOrder(
-	{ "maxUsers", "expirationDate", "appCode", "arch", "osName", "customerCode", "macAddresses", "crclogo" })
+	{ "licenseCode", "licenseType", "expirationDate", "appCode", "arch", "osName", "customerCode", "macAddresses", "crcLogo", "metadata" })
 public class LicenseBean extends RequestBean {
-	private int maxUsers;
 	private Date expirationDate;
 	/**
 	 * Signature is stored in Base64 code
 	 */
 	private String signature;
+	private String licenseType;
+	private String licenseCode;
+
+	private Map<String, Object> metadata;
 
 	public LicenseBean() {
 	}
@@ -26,6 +32,15 @@
 		super.setOsName(req.getOsName());
 	}
 
+	public Map<String, Object> getMetadata() {
+		return metadata;
+	}
+
+	public void setMetadata(Map<String, Object> metadata) {
+		this.metadata = new TreeMap<>(metadata);
+	}
+
+	@JsonIgnore
 	public String getSignature() {
 		return signature;
 	}
@@ -42,23 +57,33 @@
 		this.expirationDate = expirationDate;
 	}
 
-	public int getMaxUsers() {
-		return maxUsers;
-	}
-
-	public void setMaxUsers(int maxUsers) {
-		this.maxUsers = maxUsers;
-	}
-
 	@Override
 	public boolean equals(Object obj) {
 		if (!(obj instanceof LicenseBean))
 			return false;
 		LicenseBean rb = (LicenseBean) obj;
-		boolean result = (maxUsers == rb.maxUsers);
+		boolean result = true;
 		result = result && ((expirationDate == null && rb.expirationDate == null) || (expirationDate != null && expirationDate.equals(rb.expirationDate)));
 		result = result && ((signature == null && rb.signature == null) || (signature != null && signature.equals(rb.signature)));
+		result = result && ((metadata == null && rb.metadata == null) || (metadata != null && metadata.equals(rb.metadata)));
 
 		return result && super.equals(obj);
 	}
+
+	public String getLicenseCode() {
+		return licenseCode;
+	}
+
+	public void setLicenseCode(String licenseCode) {
+		this.licenseCode = licenseCode;
+	}
+
+	public String getLicenseType() {
+		return licenseType;
+	}
+
+	public void setLicenseType(String licenseType) {
+		this.licenseType = licenseType;
+	}
+
 }
diff --git a/src/patch/java/net/curisit/securis/LicenseGenerator.java b/src/patch/java/net/curisit/securis/LicenseGenerator.java
index 5977944..e2b96f6 100644
--- a/src/patch/java/net/curisit/securis/LicenseGenerator.java
+++ b/src/patch/java/net/curisit/securis/LicenseGenerator.java
@@ -10,6 +10,7 @@
 import java.security.spec.InvalidKeySpecException;
 import java.text.MessageFormat;
 import java.util.Date;
+import java.util.Map;
 
 import net.curisit.securis.beans.LicenseBean;
 import net.curisit.securis.beans.RequestBean;
@@ -25,7 +26,6 @@
  */
 public class LicenseGenerator {
 
-	@SuppressWarnings("unused")
 	private static final Logger log = LoggerFactory.getLogger(LicenseGenerator.class);
 
 	private static LicenseGenerator singleton = new LicenseGenerator();
@@ -50,11 +50,12 @@
 	 * @return
 	 * @throws SeCurisException
 	 */
-	public LicenseBean generateLicense(RequestBean req, int maxUsers, Date expirationDate) throws SeCurisException {
+	public LicenseBean generateLicense(RequestBean req, Map<String, Object> metadata, Date expirationDate, String licenseCode) throws SeCurisException {
 		log.info(MessageFormat.format("Generating license: MAC: {0}, Customer code: {1}, AppCode: {2}", req.getMacAddresses(), req.getCustomerCode(), req.getAppCode()));
 		LicenseBean license = new LicenseBean(req);
+		license.setLicenseCode(licenseCode);
 		license.setExpirationDate(expirationDate);
-		license.setMaxUsers(maxUsers);
+		license.setMetadata(metadata);
 		sign(license);
 
 		return license;
diff --git a/src/patch/java/net/curisit/securis/beans/SignedLicenseBean.java b/src/patch/java/net/curisit/securis/beans/SignedLicenseBean.java
new file mode 100644
index 0000000..35843da
--- /dev/null
+++ b/src/patch/java/net/curisit/securis/beans/SignedLicenseBean.java
@@ -0,0 +1,21 @@
+package net.curisit.securis.beans;
+
+import org.codehaus.jackson.annotate.JsonProperty;
+
+public class SignedLicenseBean extends LicenseBean {
+
+	@JsonProperty("signature")
+	public String getCurrentSignature() {
+		return super.getSignature();
+	}
+
+	public SignedLicenseBean(LicenseBean lb) {
+		super(lb);
+		setSignature(lb.getSignature());
+		setExpirationDate(lb.getExpirationDate());
+		setLicenseCode(lb.getLicenseCode());
+		setLicenseType(lb.getLicenseType());
+		setMetadata(lb.getMetadata());
+	}
+
+}

--
Gitblit v1.3.2