| package com.zy.asrs.common.sys.entity.license; | 
|   | 
| import de.schlichtherle.license.*; | 
| import org.apache.logging.log4j.LogManager; | 
| import org.apache.logging.log4j.Logger; | 
|   | 
| import javax.security.auth.x500.X500Principal; | 
| import java.io.File; | 
| import java.text.MessageFormat; | 
| import java.util.prefs.Preferences; | 
|   | 
| /** | 
|  * License生成类 | 
|  */ | 
| public class LicenseCreator { | 
|     private static Logger logger = LogManager.getLogger(LicenseCreator.class); | 
|     private final static X500Principal DEFAULT_HOLDER_AND_ISSUER = new X500Principal("CN=localhost, OU=localhost, O=localhost, L=SH, ST=SH, C=CN"); | 
|     private LicenseCreatorParam param; | 
|   | 
|     public LicenseCreator(LicenseCreatorParam param) { | 
|         this.param = param; | 
|     } | 
|   | 
|     /** | 
|      * 生成License证书 | 
|      */ | 
|     public boolean generateLicense(){ | 
|         try { | 
|             LicenseManager licenseManager = new CustomLicenseManager(initLicenseParam()); | 
|             LicenseContent licenseContent = initLicenseContent(); | 
|   | 
|             licenseManager.store(licenseContent,new File(param.getLicensePath())); | 
|   | 
|             return true; | 
|         }catch (Exception e){ | 
|             logger.error(MessageFormat.format("证书生成失败:{0}",param),e); | 
|             return false; | 
|         } | 
|     } | 
|   | 
|     /** | 
|      * 初始化证书生成参数 | 
|      */ | 
|     private LicenseParam initLicenseParam(){ | 
|         Preferences preferences = Preferences.userNodeForPackage(LicenseCreator.class); | 
|   | 
|         //设置对证书内容加密的秘钥 | 
|         CipherParam cipherParam = new DefaultCipherParam(param.getStorePass()); | 
|   | 
|         KeyStoreParam privateStoreParam = new CustomKeyStoreParam(LicenseCreator.class | 
|                 ,param.getPrivateKeysStorePath() | 
|                 ,param.getPrivateAlias() | 
|                 ,param.getStorePass() | 
|                 ,param.getKeyPass()); | 
|   | 
|         LicenseParam licenseParam = new DefaultLicenseParam(param.getSubject() | 
|                 ,preferences | 
|                 ,privateStoreParam | 
|                 ,cipherParam); | 
|   | 
|         return licenseParam; | 
|     } | 
|   | 
|     /** | 
|      * 设置证书生成正文信息 | 
|      */ | 
|     private LicenseContent initLicenseContent(){ | 
|         LicenseContent licenseContent = new LicenseContent(); | 
|         licenseContent.setHolder(DEFAULT_HOLDER_AND_ISSUER); | 
|         licenseContent.setIssuer(DEFAULT_HOLDER_AND_ISSUER); | 
|   | 
|         licenseContent.setSubject(param.getSubject()); | 
|         licenseContent.setIssued(param.getIssuedTime()); | 
|         licenseContent.setNotBefore(param.getIssuedTime()); | 
|         licenseContent.setNotAfter(param.getExpiryTime()); | 
|         licenseContent.setConsumerType(param.getConsumerType()); | 
|         licenseContent.setConsumerAmount(param.getConsumerAmount()); | 
|         licenseContent.setInfo(param.getDescription()); | 
|   | 
|         //扩展校验服务器硬件信息 | 
|         licenseContent.setExtra(param.getLicenseCheck()); | 
|   | 
|         return licenseContent; | 
|     } | 
|   | 
| } |