From d93a7af653cfcf62f55eab179ae327f491b84a7e Mon Sep 17 00:00:00 2001 From: ChessNineeee <709030194@qq.com> Date: Sat, 12 Jun 2021 10:26:34 +0800 Subject: [PATCH] =?UTF-8?q?add:=E6=A0=B9=E6=8D=AEname=EF=BC=88=E4=BC=A0?= =?UTF-8?q?=E5=85=A5String=EF=BC=89=E8=8E=B7=E5=8F=96Identity=EF=BC=9B?= =?UTF-8?q?=E8=AE=BE=E7=BD=AE=E9=BB=98=E8=AE=A4Identity=EF=BC=88=E4=B8=8D?= =?UTF-8?q?=E5=B8=A6=E5=AF=86=E7=A0=81=E7=9A=84=EF=BC=89?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/java/security/IdentityManager.java | 2 +- src/main/java/security/KeyChain.java | 43 +++++++++++++++++++++ src/test/java/security/KeyChainTest.java | 33 ++++++++++++++++ 3 files changed, 77 insertions(+), 1 deletion(-) diff --git a/src/main/java/security/IdentityManager.java b/src/main/java/security/IdentityManager.java index ec0cdd5..0f6befd 100644 --- a/src/main/java/security/IdentityManager.java +++ b/src/main/java/security/IdentityManager.java @@ -88,7 +88,6 @@ public class IdentityManager { /** * 从sqlite中加载全部网络身份信息并封装成identifies与versionMap - * @return {ConcurrentMap} * @throws Exception */ private void loadAllIdentifies() throws Exception{ @@ -260,6 +259,7 @@ public class IdentityManager { Persist.setDefaultIdentityByNameInStorage(identity.getName()); // 数据库设置成功后再设置内存中数据 this.defaultIdentity = identity; + this.version += 1; return true; } diff --git a/src/main/java/security/KeyChain.java b/src/main/java/security/KeyChain.java index e7e3c96..cc0235c 100644 --- a/src/main/java/security/KeyChain.java +++ b/src/main/java/security/KeyChain.java @@ -98,6 +98,49 @@ public class KeyChain { } } + /** + * 设置默认的的网络身份,不带密码 + * @param identity 身份对象 + * @return boolean + * @author zhengqi wu + * @date 2021/6/12 + **/ + public void setDefaultIdentity(Identity identity) throws KeyChainException { + boolean res = false; + try { + res = this.identityManager.setDefaultIdentity(identity, true); // 操作修改到数据库中 + } + catch (Exception e) + { + throw new KeyChainException("Set Default Identity Failed! " + e.getMessage()); + } + + if (!res) + { + throw new KeyChainException("Maybe the identity is null."); + } + this.currentIdentity = identity; + } + + /** + * 以身份名称字符串名称获取身份对象,查询不到返回为空 + * @param identityName 身份名称字符串 + * @return Identity 身份对象 + * @author zhengqi wu + * @date 2021/6/12 + **/ + public Identity getIdentityByName(String identityName) throws KeyChainException { + Identity res = null; + try { + res = this.identityManager.getIdentityByName(identityName); + } + catch (Exception e) + { + throw new KeyChainException("Get" + identityName + " failed! " + e.getMessage()); + } + return res; + } + /** * 为一个网络身份申请证书 * @param identity diff --git a/src/test/java/security/KeyChainTest.java b/src/test/java/security/KeyChainTest.java index 2d98791..176bbc8 100644 --- a/src/test/java/security/KeyChainTest.java +++ b/src/test/java/security/KeyChainTest.java @@ -92,6 +92,9 @@ public class KeyChainTest { try { // 测试设置新身份为当前身份 KeyChain keyChain = new KeyChain(); + IdentityManager idm = keyChain.getIdentifyManager(); + Identity testId = idm.getIdentityByName("aaa"); + Identity id = createRandomIdentity(); // keyChain.getIdentifyManager().setDefaultIdentity(id, true); // // 输入密码用于解锁身份 @@ -101,6 +104,36 @@ public class KeyChainTest { } } + @Test + public void testGetIdentity() + { + try { + // 测试设置新身份为当前身份 + KeyChain keyChain = new KeyChain(); + Identity res = keyChain.getIdentityByName("/wzq1"); + LoggerHelper.info(res.toString()); + }catch (Exception ex){ + LoggerHelper.info(ex.getMessage()); + } + } + + @Test + public void testSetDefaultIdentity() + { + try { + // 测试设置新身份为当前身份 + KeyChain keyChain = new KeyChain(); + Identity res = keyChain.getCurrentIdentity(); + LoggerHelper.info("当前默认身份信息:" + res.toString()); + // keyChain.setDefaultIdentity(keyChain.getIdentityByName("/wzq1")); + keyChain.setDefaultIdentity(keyChain.getIdentityByName("/wzq0.18345388121889994")); + res = keyChain.getCurrentIdentity(); + LoggerHelper.info("当前默认身份信息:" + res.toString()); + }catch (Exception ex){ + LoggerHelper.info(ex.getMessage()); + } + } + @Test public void testSignAndVerifyInterest(){ try {