diff --git a/pom.xml b/pom.xml index 1ea2f50..39b4794 100644 --- a/pom.xml +++ b/pom.xml @@ -261,15 +261,10 @@ - - org.xerial - sqlite-jdbc - 3.28.0 - io.github.willena sqlite-jdbc - 3.35.4 + 3.35.5.1 diff --git a/src/main/java/mgmt/ControlParameters.java b/src/main/java/mgmt/ControlParameters.java index 49e7082..51ec89a 100644 --- a/src/main/java/mgmt/ControlParameters.java +++ b/src/main/java/mgmt/ControlParameters.java @@ -162,6 +162,11 @@ public class ControlParameters implements IEncodingAble { Block newBlock = elementContainer.getBlock(i); int type = newBlock.getType().getVlIntValue2Int(); switch (type) { + case TLV.TlvManagementLogicFaceId: + if (!this.controlParameterLogicFaceId.wireDecode(newBlock)) { + return false; + } + break; case TLV.TlvManagementPrefix: if (!this.controlParameterPrefix.wireDecode(newBlock)) { return false; diff --git a/src/main/java/mgmt/ControlResponse.java b/src/main/java/mgmt/ControlResponse.java index 3c7961d..afe2566 100644 --- a/src/main/java/mgmt/ControlResponse.java +++ b/src/main/java/mgmt/ControlResponse.java @@ -1,5 +1,6 @@ package mgmt; +import com.fasterxml.jackson.annotation.JsonProperty; import util.JSONHelper; import util.JSONHelperException; @@ -28,15 +29,19 @@ public class ControlResponse { public static final String ControlResponseTypeBytes = "bytes"; // Data类型 + @JsonProperty("Type") public String type; // 状态码 + @JsonProperty("Code") public int code; // 信息 + @JsonProperty("Msg") public String msg; // 数据 public class ControlResponseData{ public E value; } + @JsonProperty("Data") public ControlResponseData data=new ControlResponseData(); public ControlResponse(){ diff --git a/src/main/java/minsecurity/identity/persist/sqlite/Sqlite.java b/src/main/java/minsecurity/identity/persist/sqlite/Sqlite.java index e87dee2..460c0e5 100644 --- a/src/main/java/minsecurity/identity/persist/sqlite/Sqlite.java +++ b/src/main/java/minsecurity/identity/persist/sqlite/Sqlite.java @@ -1,9 +1,11 @@ package minsecurity.identity.persist.sqlite; +import org.sqlite.mc.SQLiteMCConfig; import org.sqlite.mc.SQLiteMCSqlCipherConfig; import java.io.File; import java.sql.*; +import java.util.Properties; /* * @Author: zhengqi wu @@ -80,8 +82,12 @@ public class Sqlite { new File(db_path).mkdirs(); } String real_db_file = db_path + db_file; + // 兼容sqlcipher - c = DriverManager.getConnection("jdbc:sqlite:" + real_db_file, SQLiteMCSqlCipherConfig.getV4Defaults().withKey(passwd2HexKey()).toProperties()); + SQLiteMCSqlCipherConfig sqlCipherConfig = SQLiteMCSqlCipherConfig.getV4Defaults(); + SQLiteMCConfig config = sqlCipherConfig.withKey(passwd2HexKey()); + Properties properties = config.toProperties(); + c = DriverManager.getConnection("jdbc:sqlite:" + real_db_file, properties); stmt = c.createStatement(); stmt.executeUpdate(table_create); stmt.close(); diff --git a/src/test/java/mgmt/CommandBaseTest.java b/src/test/java/mgmt/CommandBaseTest.java new file mode 100644 index 0000000..3e03c4d --- /dev/null +++ b/src/test/java/mgmt/CommandBaseTest.java @@ -0,0 +1,38 @@ +package mgmt; + +import component.*; +import org.junit.Test; +import org.slf4j.LoggerFactory; +import packet.Interest; + +public class CommandBaseTest { + private static final org.slf4j.Logger logger = LoggerFactory.getLogger(CommandBaseTest.class); + @Test + public void testCreateAndParseCommand(){ + + try{ + ControlParameters parameters = new ControlParameters(); + Identifier prefix = new Identifier("/pku/sz"); + ControlParameterPrefix controlParameterPrefix = new ControlParameterPrefix(prefix); + parameters.controlParameterPrefix = controlParameterPrefix; + parameters.controlParameterLogicFaceId.setLogicFaceId(1); + parameters.controlParameterCost.setCost(1); + parameters.controlParameterCapacity.setCapacity(1); + parameters.controlParameterCount.setCount(1); + parameters.controlParameterExpireTime.setExpireTime(1); + parameters.controlParameterUri.setUri("/pku/sz"); + parameters.controlParameterLocalUri.setLocalUri("/local"); + parameters.controlParameterLogicFacePersistency.setPersistency(1); + parameters.controlParameterUriScheme.setUriScheme(1); + parameters.controlParameterMtu.setMtu(1); + + Interest interest = CommandBase.createCommandIdentifierInterest(parameters, "/cp1/test"); + + ControlParameters cp = CommandBase.parseControlParameters(interest); + System.out.println(cp); + }catch (Exception ex){ + logger.debug(ex.getMessage()); + } + + } +} diff --git a/src/test/java/mgmt/ControlResponseTest.java b/src/test/java/mgmt/ControlResponseTest.java new file mode 100644 index 0000000..d87a630 --- /dev/null +++ b/src/test/java/mgmt/ControlResponseTest.java @@ -0,0 +1,21 @@ +package mgmt; + +import minsecurity.identity.TestIdentity; +import org.junit.Test; +import org.slf4j.LoggerFactory; + +public class ControlResponseTest { + private static final org.slf4j.Logger logger = LoggerFactory.getLogger(ControlResponseTest.class); + @Test + public void testUnmarshal(){ + try{ + ControlResponse response = new ControlResponse(); + String jsonString = "{\"Code\": 1, \"Type\": \"string\", \"Msg\": \"bbb\", \"Data\": \"abcd\"}"; + // Data无法解析 + response.UnmarshalJSON(jsonString.getBytes()); + }catch (Exception ex){ + logger.debug(ex.getMessage()); + } + + } +} diff --git a/src/test/java/security/KeyChainTest.java b/src/test/java/security/KeyChainTest.java index 37336bc..371b2ca 100644 --- a/src/test/java/security/KeyChainTest.java +++ b/src/test/java/security/KeyChainTest.java @@ -93,9 +93,9 @@ public class KeyChainTest { // 测试设置新身份为当前身份 KeyChain keyChain = new KeyChain(); Identity id = createRandomIdentity(); - keyChain.getIdentifyManager().setDefaultIdentity(id, true); - // 输入密码用于解锁身份 - keyChain.setCurrentIdentity(keyChain.getIdentifyManager().getDefaultIdentity(), "0123456789abcdef"); +// keyChain.getIdentifyManager().setDefaultIdentity(id, true); +// // 输入密码用于解锁身份 +// keyChain.setCurrentIdentity(keyChain.getIdentifyManager().getDefaultIdentity(), "0123456789abcdef"); }catch (Exception ex){ LoggerHelper.info(ex.getMessage()); } @@ -107,9 +107,9 @@ public class KeyChainTest { // 测试设置新身份为当前身份 KeyChain keyChain = new KeyChain(); Identity id = createRandomIdentity(); - keyChain.getIdentifyManager().setDefaultIdentity(id, true); - // 输入密码用于解锁身份 - keyChain.setCurrentIdentity(keyChain.getIdentifyManager().getDefaultIdentity(), "0123456789abcdef"); +// keyChain.getIdentifyManager().setDefaultIdentity(id, true); +// // 输入密码用于解锁身份 +// keyChain.setCurrentIdentity(keyChain.getIdentifyManager().getDefaultIdentity(), "0123456789abcdef"); // 身份允许签名与验证签名 Identifier id1 = new Identifier("/min/pku/sz"); @@ -142,9 +142,9 @@ public class KeyChainTest { // 测试设置新身份为当前身份 KeyChain keyChain = new KeyChain(); Identity id = createRandomIdentity(); - keyChain.getIdentifyManager().setDefaultIdentity(id, true); - // 输入密码用于解锁身份 - keyChain.setCurrentIdentity(keyChain.getIdentifyManager().getDefaultIdentity(), "0123456789abcdef"); +// keyChain.getIdentifyManager().setDefaultIdentity(id, true); +// // 输入密码用于解锁身份 +// keyChain.setCurrentIdentity(keyChain.getIdentifyManager().getDefaultIdentity(), "0123456789abcdef"); // 身份允许签名与验证签名 Identifier id1 = new Identifier("/min/pku/sz"); @@ -178,9 +178,9 @@ public class KeyChainTest { // 测试设置新身份为当前身份 KeyChain keyChain = new KeyChain(); Identity id = createRandomIdentity(); - keyChain.getIdentifyManager().setDefaultIdentity(id, true); - // 输入密码用于解锁身份 - keyChain.setCurrentIdentity(keyChain.getIdentifyManager().getDefaultIdentity(), "0123456789abcdef"); +// keyChain.getIdentifyManager().setDefaultIdentity(id, true); +// // 输入密码用于解锁身份 +// keyChain.setCurrentIdentity(keyChain.getIdentifyManager().getDefaultIdentity(), "0123456789abcdef"); // 身份允许签名与验证签名 // Identifier id1 = new Identifier("/min/pku/sz"); @@ -206,10 +206,10 @@ public class KeyChainTest { try { // 测试设置新身份为当前身份 KeyChain keyChain = new KeyChain(); - Identity id = createRandomIdentity(); - keyChain.getIdentifyManager().setDefaultIdentity(id, true); - // 输入密码用于解锁身份 - keyChain.setCurrentIdentity(keyChain.getIdentifyManager().getDefaultIdentity(), "0123456789abcdef"); +// Identity id = createRandomIdentity(); +// keyChain.getIdentifyManager().setDefaultIdentity(id, true); +// // 输入密码用于解锁身份 +// keyChain.setCurrentIdentity(keyChain.getIdentifyManager().getDefaultIdentity(), "0123456789abcdef"); // 身份允许签名与验证签名 Identifier id1 = new Identifier("/min/pku/sz"); @@ -236,9 +236,9 @@ public class KeyChainTest { // 测试设置新身份为当前身份 KeyChain keyChain = new KeyChain(); Identity id = createRandomIdentity(); - keyChain.getIdentifyManager().setDefaultIdentity(id, true); - // 输入密码用于解锁身份 - keyChain.setCurrentIdentity(keyChain.getIdentifyManager().getDefaultIdentity(), "0123456789abcdef"); +// keyChain.getIdentifyManager().setDefaultIdentity(id, true); +// // 输入密码用于解锁身份 +// keyChain.setCurrentIdentity(keyChain.getIdentifyManager().getDefaultIdentity(), "0123456789abcdef"); //////////////////// 构建Data包 //////////////////////// Data data = new Data(); data.freshnessPeriod.setFreshnessPeriod(02346345465453L); @@ -261,9 +261,9 @@ public class KeyChainTest { // 测试设置新身份为当前身份 KeyChain keyChain = new KeyChain(); Identity id = createRandomIdentity(); - keyChain.getIdentifyManager().setDefaultIdentity(id, true); - // 输入密码用于解锁身份 - keyChain.setCurrentIdentity(keyChain.getIdentifyManager().getDefaultIdentity(), "0123456789abcdef"); +// keyChain.getIdentifyManager().setDefaultIdentity(id, true); +// // 输入密码用于解锁身份 +// keyChain.setCurrentIdentity(keyChain.getIdentifyManager().getDefaultIdentity(), "0123456789abcdef"); //////////////////// 构建Data包 无只读区与标识区 //////////////////////// Data data = new Data(); // data.freshnessPeriod.setFreshnessPeriod(02346345465453L); @@ -287,10 +287,10 @@ public class KeyChainTest { // 测试设置新身份为当前身份 KeyChain keyChain = new KeyChain(); Identity id2 = createRandomIdentity(); - id2.unLock("0123456789abcdef", Common.SM4ECB); // 锁住的Identity无法导出 + // id2.unLock("0123456789abcdef", Common.SM4ECB); // 锁住的Identity无法导出 keyChain.getIdentifyManager().setDefaultIdentity(id, true); // 输入密码用于解锁身份 - keyChain.setCurrentIdentity(keyChain.getIdentifyManager().getDefaultIdentity(), "0123456789abcdef"); + // keyChain.setCurrentIdentity(keyChain.getIdentifyManager().getDefaultIdentity(), "0123456789abcdef"); // 正常导入导出 通过 LoggerHelper.info(String.format("身份数量:%d", keyChain.getIdentifyManager().getIdentifies().size())); SafeBag bag = keyChain.exportSafeBag(id2, "1234"); @@ -308,10 +308,10 @@ public class KeyChainTest { // 测试设置新身份为当前身份 KeyChain keyChain = new KeyChain(); Identity id2 = createRandomIdentity(); - id2.unLock("0123456789abcdef", Common.SM4ECB); // 锁住的Identity无法导出 + // id2.unLock("0123456789abcdef", Common.SM4ECB); // 锁住的Identity无法导出 keyChain.getIdentifyManager().setDefaultIdentity(id, true); // 输入密码用于解锁身份 - keyChain.setCurrentIdentity(keyChain.getIdentifyManager().getDefaultIdentity(), "0123456789abcdef"); + // keyChain.setCurrentIdentity(keyChain.getIdentifyManager().getDefaultIdentity(), "0123456789abcdef"); // 导入null 抛出异常 LoggerHelper.info(String.format("身份数量:%d", keyChain.getIdentifyManager().getIdentifies().size())); SafeBag bag = keyChain.exportSafeBag(null, "1234"); @@ -331,7 +331,7 @@ public class KeyChainTest { Identity id2 = new Identity(); keyChain.getIdentifyManager().setDefaultIdentity(id, true); // 输入密码用于解锁身份 - keyChain.setCurrentIdentity(keyChain.getIdentifyManager().getDefaultIdentity(), "0123456789abcdef"); + // keyChain.setCurrentIdentity(keyChain.getIdentifyManager().getDefaultIdentity(), "0123456789abcdef"); // 导入空Identity 抛出异常 LoggerHelper.info(String.format("身份数量:%d", keyChain.getIdentifyManager().getIdentifies().size())); SafeBag bag = keyChain.exportSafeBag(null, "1234");