package net.curisit.securis; import java.io.File; import java.io.IOException; import net.curisit.securis.beans.LicenseBean; import net.curisit.securis.beans.RequestBean; import net.curisit.securis.utils.JsonUtils; import org.apache.commons.io.FileUtils; /** * Manage all licenses tasks, just like, validation, sync, requesting, ... * * @author roberto */ public class LicenseManager { private static LicenseManager singleton = new LicenseManager(); private LicenseManager() { } public static LicenseManager getInstance() { return singleton; } public LicenseBean validateLicense(File licFile, String appCode, String customerCode) throws SeCurisException { LicenseBean licBean; try { licBean = JsonUtils.json2object(FileUtils.readFileToString(licFile), LicenseBean.class); } catch (IOException e) { throw new SeCurisException("Error validating license", e); } SignatureHelper.getInstance().validateSignature(licBean); validateHW(licBean, appCode, customerCode); return licBean; } private 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)); } }