#0 feature - Added more License fields, metadata section for application
specific data
1 files added
3 files modified
| .. | .. |
|---|
| 15 | 15 | import java.security.spec.PKCS8EncodedKeySpec; |
|---|
| 16 | 16 | import java.security.spec.X509EncodedKeySpec; |
|---|
| 17 | 17 | import java.util.Date; |
|---|
| 18 | +import java.util.HashMap; |
|---|
| 19 | +import java.util.Map; |
|---|
| 18 | 20 | |
|---|
| 19 | 21 | import net.curisit.securis.beans.LicenseBean; |
|---|
| 20 | 22 | import net.curisit.securis.beans.RequestBean; |
|---|
| 23 | +import net.curisit.securis.beans.SignedLicenseBean; |
|---|
| 21 | 24 | import net.curisit.securis.utils.JsonUtils; |
|---|
| 22 | 25 | import net.curisit.securis.utils.Params; |
|---|
| 23 | 26 | |
|---|
| .. | .. |
|---|
| 131 | 134 | RequestBean req = ReqGenerator.getInstance().createRequest("CI", "Roberto"); |
|---|
| 132 | 135 | |
|---|
| 133 | 136 | 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"); |
|---|
| 135 | 145 | System.out.println(JsonUtils.toJSON(lic, true)); |
|---|
| 136 | | - System.out.println(JsonUtils.toJSON(lic)); |
|---|
| 146 | + System.out.println(JsonUtils.toJSON(new SignedLicenseBean(lic), true)); |
|---|
| 137 | 147 | } |
|---|
| 138 | 148 | |
|---|
| 139 | 149 | static { |
|---|
| .. | .. |
|---|
| 1 | 1 | package net.curisit.securis.beans; |
|---|
| 2 | 2 | |
|---|
| 3 | 3 | import java.util.Date; |
|---|
| 4 | +import java.util.Map; |
|---|
| 5 | +import java.util.TreeMap; |
|---|
| 4 | 6 | |
|---|
| 7 | +import org.codehaus.jackson.annotate.JsonIgnore; |
|---|
| 5 | 8 | import org.codehaus.jackson.annotate.JsonPropertyOrder; |
|---|
| 6 | 9 | |
|---|
| 7 | 10 | @JsonPropertyOrder( |
|---|
| 8 | | - { "maxUsers", "expirationDate", "appCode", "arch", "osName", "customerCode", "macAddresses", "crclogo" }) |
|---|
| 11 | + { "licenseCode", "licenseType", "expirationDate", "appCode", "arch", "osName", "customerCode", "macAddresses", "crcLogo", "metadata" }) |
|---|
| 9 | 12 | public class LicenseBean extends RequestBean { |
|---|
| 10 | | - private int maxUsers; |
|---|
| 11 | 13 | private Date expirationDate; |
|---|
| 12 | 14 | /** |
|---|
| 13 | 15 | * Signature is stored in Base64 code |
|---|
| 14 | 16 | */ |
|---|
| 15 | 17 | private String signature; |
|---|
| 18 | + private String licenseType; |
|---|
| 19 | + private String licenseCode; |
|---|
| 20 | + |
|---|
| 21 | + private Map<String, Object> metadata; |
|---|
| 16 | 22 | |
|---|
| 17 | 23 | public LicenseBean() { |
|---|
| 18 | 24 | } |
|---|
| .. | .. |
|---|
| 26 | 32 | super.setOsName(req.getOsName()); |
|---|
| 27 | 33 | } |
|---|
| 28 | 34 | |
|---|
| 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 |
|---|
| 29 | 44 | public String getSignature() { |
|---|
| 30 | 45 | return signature; |
|---|
| 31 | 46 | } |
|---|
| .. | .. |
|---|
| 42 | 57 | this.expirationDate = expirationDate; |
|---|
| 43 | 58 | } |
|---|
| 44 | 59 | |
|---|
| 45 | | - public int getMaxUsers() { |
|---|
| 46 | | - return maxUsers; |
|---|
| 47 | | - } |
|---|
| 48 | | - |
|---|
| 49 | | - public void setMaxUsers(int maxUsers) { |
|---|
| 50 | | - this.maxUsers = maxUsers; |
|---|
| 51 | | - } |
|---|
| 52 | | - |
|---|
| 53 | 60 | @Override |
|---|
| 54 | 61 | public boolean equals(Object obj) { |
|---|
| 55 | 62 | if (!(obj instanceof LicenseBean)) |
|---|
| 56 | 63 | return false; |
|---|
| 57 | 64 | LicenseBean rb = (LicenseBean) obj; |
|---|
| 58 | | - boolean result = (maxUsers == rb.maxUsers); |
|---|
| 65 | + boolean result = true; |
|---|
| 59 | 66 | result = result && ((expirationDate == null && rb.expirationDate == null) || (expirationDate != null && expirationDate.equals(rb.expirationDate))); |
|---|
| 60 | 67 | 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))); |
|---|
| 61 | 69 | |
|---|
| 62 | 70 | return result && super.equals(obj); |
|---|
| 63 | 71 | } |
|---|
| 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 | + |
|---|
| 64 | 89 | } |
|---|
| .. | .. |
|---|
| 10 | 10 | import java.security.spec.InvalidKeySpecException; |
|---|
| 11 | 11 | import java.text.MessageFormat; |
|---|
| 12 | 12 | import java.util.Date; |
|---|
| 13 | +import java.util.Map; |
|---|
| 13 | 14 | |
|---|
| 14 | 15 | import net.curisit.securis.beans.LicenseBean; |
|---|
| 15 | 16 | import net.curisit.securis.beans.RequestBean; |
|---|
| .. | .. |
|---|
| 25 | 26 | */ |
|---|
| 26 | 27 | public class LicenseGenerator { |
|---|
| 27 | 28 | |
|---|
| 28 | | - @SuppressWarnings("unused") |
|---|
| 29 | 29 | private static final Logger log = LoggerFactory.getLogger(LicenseGenerator.class); |
|---|
| 30 | 30 | |
|---|
| 31 | 31 | private static LicenseGenerator singleton = new LicenseGenerator(); |
|---|
| .. | .. |
|---|
| 50 | 50 | * @return |
|---|
| 51 | 51 | * @throws SeCurisException |
|---|
| 52 | 52 | */ |
|---|
| 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 { |
|---|
| 54 | 54 | log.info(MessageFormat.format("Generating license: MAC: {0}, Customer code: {1}, AppCode: {2}", req.getMacAddresses(), req.getCustomerCode(), req.getAppCode())); |
|---|
| 55 | 55 | LicenseBean license = new LicenseBean(req); |
|---|
| 56 | + license.setLicenseCode(licenseCode); |
|---|
| 56 | 57 | license.setExpirationDate(expirationDate); |
|---|
| 57 | | - license.setMaxUsers(maxUsers); |
|---|
| 58 | + license.setMetadata(metadata); |
|---|
| 58 | 59 | sign(license); |
|---|
| 59 | 60 | |
|---|
| 60 | 61 | return license; |
|---|
| .. | .. |
|---|
| 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 | +} |
|---|