package com.zy.system.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; 
 | 
    } 
 | 
  
 | 
} 
 |