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