Roberto Sánchez
2014-02-21 f1965e6375e2e556f642f6002b4bb5add8a20ab8
#0 feature - Added more License fields, metadata section for application
specific data
1 files added
3 files modified
changed files
src/main/java/net/curisit/securis/SignatureHelper.java patch | view | blame | history
src/main/java/net/curisit/securis/beans/LicenseBean.java patch | view | blame | history
src/patch/java/net/curisit/securis/LicenseGenerator.java patch | view | blame | history
src/patch/java/net/curisit/securis/beans/SignedLicenseBean.java patch | view | blame | history
src/main/java/net/curisit/securis/SignatureHelper.java
....@@ -15,9 +15,12 @@
1515 import java.security.spec.PKCS8EncodedKeySpec;
1616 import java.security.spec.X509EncodedKeySpec;
1717 import java.util.Date;
18
+import java.util.HashMap;
19
+import java.util.Map;
1820
1921 import net.curisit.securis.beans.LicenseBean;
2022 import net.curisit.securis.beans.RequestBean;
23
+import net.curisit.securis.beans.SignedLicenseBean;
2124 import net.curisit.securis.utils.JsonUtils;
2225 import net.curisit.securis.utils.Params;
2326
....@@ -131,9 +134,16 @@
131134 RequestBean req = ReqGenerator.getInstance().createRequest("CI", "Roberto");
132135
133136 LicenseGenerator lg = LicenseGenerator.getInstance();
134
- LicenseBean lic = lg.generateLicense(req, 12, new Date(new Date().getTime() + 24 * 3600 * 1000 * 10));
137
+ Map<String, Object> metadata = new HashMap<>();
138
+ metadata.put("maxUsers", 14);
139
+ metadata.put("timeThreshold", 5000);
140
+ metadata.put("123", 5000);
141
+ metadata.put("Basdads", 5000);
142
+ metadata.put("aasdads", 5000);
143
+ metadata.put("maxInstances", 50);
144
+ LicenseBean lic = lg.generateLicense(req, metadata, new Date(new Date().getTime() + 24 * 3600 * 1000 * 10), "LIC-TEST-001");
135145 System.out.println(JsonUtils.toJSON(lic, true));
136
- System.out.println(JsonUtils.toJSON(lic));
146
+ System.out.println(JsonUtils.toJSON(new SignedLicenseBean(lic), true));
137147 }
138148
139149 static {
src/main/java/net/curisit/securis/beans/LicenseBean.java
....@@ -1,18 +1,24 @@
11 package net.curisit.securis.beans;
22
33 import java.util.Date;
4
+import java.util.Map;
5
+import java.util.TreeMap;
46
7
+import org.codehaus.jackson.annotate.JsonIgnore;
58 import org.codehaus.jackson.annotate.JsonPropertyOrder;
69
710 @JsonPropertyOrder(
8
- { "maxUsers", "expirationDate", "appCode", "arch", "osName", "customerCode", "macAddresses", "crclogo" })
11
+ { "licenseCode", "licenseType", "expirationDate", "appCode", "arch", "osName", "customerCode", "macAddresses", "crcLogo", "metadata" })
912 public class LicenseBean extends RequestBean {
10
- private int maxUsers;
1113 private Date expirationDate;
1214 /**
1315 * Signature is stored in Base64 code
1416 */
1517 private String signature;
18
+ private String licenseType;
19
+ private String licenseCode;
20
+
21
+ private Map<String, Object> metadata;
1622
1723 public LicenseBean() {
1824 }
....@@ -26,6 +32,15 @@
2632 super.setOsName(req.getOsName());
2733 }
2834
35
+ public Map<String, Object> getMetadata() {
36
+ return metadata;
37
+ }
38
+
39
+ public void setMetadata(Map<String, Object> metadata) {
40
+ this.metadata = new TreeMap<>(metadata);
41
+ }
42
+
43
+ @JsonIgnore
2944 public String getSignature() {
3045 return signature;
3146 }
....@@ -42,23 +57,33 @@
4257 this.expirationDate = expirationDate;
4358 }
4459
45
- public int getMaxUsers() {
46
- return maxUsers;
47
- }
48
-
49
- public void setMaxUsers(int maxUsers) {
50
- this.maxUsers = maxUsers;
51
- }
52
-
5360 @Override
5461 public boolean equals(Object obj) {
5562 if (!(obj instanceof LicenseBean))
5663 return false;
5764 LicenseBean rb = (LicenseBean) obj;
58
- boolean result = (maxUsers == rb.maxUsers);
65
+ boolean result = true;
5966 result = result && ((expirationDate == null && rb.expirationDate == null) || (expirationDate != null && expirationDate.equals(rb.expirationDate)));
6067 result = result && ((signature == null && rb.signature == null) || (signature != null && signature.equals(rb.signature)));
68
+ result = result && ((metadata == null && rb.metadata == null) || (metadata != null && metadata.equals(rb.metadata)));
6169
6270 return result && super.equals(obj);
6371 }
72
+
73
+ public String getLicenseCode() {
74
+ return licenseCode;
75
+ }
76
+
77
+ public void setLicenseCode(String licenseCode) {
78
+ this.licenseCode = licenseCode;
79
+ }
80
+
81
+ public String getLicenseType() {
82
+ return licenseType;
83
+ }
84
+
85
+ public void setLicenseType(String licenseType) {
86
+ this.licenseType = licenseType;
87
+ }
88
+
6489 }
src/patch/java/net/curisit/securis/LicenseGenerator.java
....@@ -10,6 +10,7 @@
1010 import java.security.spec.InvalidKeySpecException;
1111 import java.text.MessageFormat;
1212 import java.util.Date;
13
+import java.util.Map;
1314
1415 import net.curisit.securis.beans.LicenseBean;
1516 import net.curisit.securis.beans.RequestBean;
....@@ -25,7 +26,6 @@
2526 */
2627 public class LicenseGenerator {
2728
28
- @SuppressWarnings("unused")
2929 private static final Logger log = LoggerFactory.getLogger(LicenseGenerator.class);
3030
3131 private static LicenseGenerator singleton = new LicenseGenerator();
....@@ -50,11 +50,12 @@
5050 * @return
5151 * @throws SeCurisException
5252 */
53
- public LicenseBean generateLicense(RequestBean req, int maxUsers, Date expirationDate) throws SeCurisException {
53
+ public LicenseBean generateLicense(RequestBean req, Map<String, Object> metadata, Date expirationDate, String licenseCode) throws SeCurisException {
5454 log.info(MessageFormat.format("Generating license: MAC: {0}, Customer code: {1}, AppCode: {2}", req.getMacAddresses(), req.getCustomerCode(), req.getAppCode()));
5555 LicenseBean license = new LicenseBean(req);
56
+ license.setLicenseCode(licenseCode);
5657 license.setExpirationDate(expirationDate);
57
- license.setMaxUsers(maxUsers);
58
+ license.setMetadata(metadata);
5859 sign(license);
5960
6061 return license;
src/patch/java/net/curisit/securis/beans/SignedLicenseBean.java
....@@ -0,0 +1,21 @@
1
+package net.curisit.securis.beans;
2
+
3
+import org.codehaus.jackson.annotate.JsonProperty;
4
+
5
+public class SignedLicenseBean extends LicenseBean {
6
+
7
+ @JsonProperty("signature")
8
+ public String getCurrentSignature() {
9
+ return super.getSignature();
10
+ }
11
+
12
+ public SignedLicenseBean(LicenseBean lb) {
13
+ super(lb);
14
+ setSignature(lb.getSignature());
15
+ setExpirationDate(lb.getExpirationDate());
16
+ setLicenseCode(lb.getLicenseCode());
17
+ setLicenseType(lb.getLicenseType());
18
+ setMetadata(lb.getMetadata());
19
+ }
20
+
21
+}