True-License的演示用例

keytool生成密钥库的方法就不说了。网上很多,也可详见 <java核心技术第二卷>

简单的trueLicense用例,仅供参考.

true-license的源码,已经添加了中文注释,喜欢的朋友可以拿去看看。

truelicense源码



import de.schlichtherle.license.LicenseManager;
import de.schlichtherle.license.LicenseParam;

/**
 * LicenseManager容器类
 * @author 宋三思
 */
public class LicenseManagerHolder {
	
	private static LicenseManager licenseManager;
 
	public static synchronized LicenseManager getLicenseManager(LicenseParam licenseParams) {
    	if (licenseManager == null) {
    		licenseManager = new LicenseManager(licenseParams);
    	}
    	return licenseManager;
    }
}

import java.io.File;
import java.util.Date;
import java.util.prefs.Preferences;

import javax.security.auth.x500.X500Principal;

import de.schlichtherle.license.CipherParam;
import de.schlichtherle.license.DefaultCipherParam;
import de.schlichtherle.license.DefaultKeyStoreParam;
import de.schlichtherle.license.DefaultLicenseParam;
import de.schlichtherle.license.KeyStoreParam;
import de.schlichtherle.license.LicenseContent;
import de.schlichtherle.license.LicenseParam;
import de.schlichtherle.license.LicenseManager;

public class TestTrueLicense {
	public final static String PRIVATEALIAS = "privatekey";
	public final static String PUBLICALIAS = "publiccert";
	public final static String KEYPWD = "111aaa";
	public final static String STOREPWD = "111aaa";
	public final static String SUBJECT = "trueLicense测试";
	//为了方便直接用的API里的例子
	//X500Princal是一个证书文件的固有格式,详见API
	public final static X500Principal DEFAULTHOLDERANDISSUER = new X500Principal("CN=Duke、OU=JavaSoft、O=Sun Microsystems、C=US");
	
    public static void main(String[] args) throws Exception {
    	/**************证书发布者端执行******************/
    	LicenseManager licenseManager = 
    		LicenseManagerHolder.getLicenseManager(initLicenseParams0());
    	String storePath = TestTrueLicense.class.getResource(".").getFile() + File.separator + "测试.lic";
    	licenseManager.store((createLicenseContent()), new File(storePath));
    	System.out.println("服务器端生成证书成功!");
    	/**************证书使用者端执行******************/
    	//由于用的是一个licenseManager所以重新设置验证时需要的LicenseParam
    	licenseManager.setLicenseParam(initLicenseParams1());
    	//安装证书
    	licenseManager.install(new File(storePath));
    	System.out.println("客户端安装证书成功!");
    	//验证证书
    	licenseManager.verify();
    	System.out.println("客户端验证证书成功!");
    } 
    
    //返回生成证书时需要的参数
    private static LicenseParam initLicenseParams0() {
    	Preferences preference = Preferences.userNodeForPackage(TestTrueLicense.class);
        //设置对证书内容加密的对称密码
    	CipherParam cipherParam = new DefaultCipherParam("111aaa");
        //参数1,2从哪个Class.getResource()获得密钥库
    	//参数3密钥库的别名
    	//参数4密钥库存储密码
    	//参数5密钥库密码
        KeyStoreParam privateStoreParam  = 
        	    new DefaultKeyStoreParam(TestTrueLicense.class, "privateKeys.store", PRIVATEALIAS, STOREPWD, KEYPWD);
        LicenseParam licenseParams =
        	new DefaultLicenseParam(SUBJECT, preference, privateStoreParam, cipherParam);
        return licenseParams;
    }
    
    //返回验证证书需要的参数
    private static LicenseParam initLicenseParams1() {
    	Preferences preference = Preferences.userNodeForPackage(TestTrueLicense.class);
        CipherParam cipherParam = new DefaultCipherParam("111aaa");
        
        KeyStoreParam privateStoreParam  = 
        	    new DefaultKeyStoreParam(TestTrueLicense.class, "publicCerts.store", PUBLICALIAS, STOREPWD, null);
        LicenseParam licenseParams =
        	new DefaultLicenseParam(SUBJECT, preference, privateStoreParam, cipherParam);
        return licenseParams;
    }
    //一般可以从外部表单拿到证书的内容
    //这里为了演示,把证书内容写死了
    public final static LicenseContent createLicenseContent() {
    	LicenseContent content = null;
    	content = new LicenseContent();
    	content.setSubject(SUBJECT);
    	content.setHolder(DEFAULTHOLDERANDISSUER);
    	content.setIssuer(DEFAULTHOLDERANDISSUER);
    	content.setIssued(new Date());
    	content.setNotBefore(new Date());
    	content.setNotAfter(new Date(new Date().getTime() + 1000));
    	content.setConsumerType("user");
    	content.setConsumerAmount(1);
    	content.setInfo("随便不为空的描述性信息");
    	//扩展
    	content.setExtra(new Object());
    	return content;
    }
}


  • 4
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
好的,针对图书馆管理系统,我们可以编写以下测试用例: 1. 用户登录功能测试用例: - 输入正确的用户名和密码,登录成功 - 输入不存在的用户名和密码,提示错误信息 - 输入正确的用户名但错误的密码,提示错误信息 2. 图书查询功能测试用例: - 按书名查询,查询结果正确 - 按作者查询,查询结果正确 - 按出版社查询,查询结果正确 - 输入不存在的关键字查询,提示查询结果为空 3. 图书借阅功能测试用例: - 图书可借阅,借阅成功 - 图书不可借阅,借阅失败 - 借阅同一本书超过规定的借阅天数,产生逾期罚款 - 逾期罚款产生后,不能再借阅其他书籍 4. 图书归还功能测试用例: - 图书已借出,归还成功 - 图书未借出,归还失败 - 归还同一本书超过规定的归还天数,产生逾期罚款 - 逾期罚款产生后,不能再借阅其他书籍 5. 用户信息管理测试用例: - 用户信息正确修改成功 - 用户信息删除成功 - 用户信息添加成功 6. 图书信息管理测试用例: - 图书信息正确修改成功 - 图书信息删除成功 - 图书信息添加成功 7. 系统安全性测试用例: - 输入非法字符,系统能够正确响应并提示错误信息 - 输入SQL注入代码,系统能够正确拦截并提示错误信息 - 输入恶意脚本,系统能够正确拦截并提示错误信息 以上是一些基本的测试用例,具体测试用例的编写还需要根据实际情况进行补充。同时,我们需要注意对测试用例的覆盖率,尽可能覆盖到系统的所有功能和场景。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值