From e8e8bd5639e4388f8647d42160245113df601840 Mon Sep 17 00:00:00 2001
From: free will <2647778488@qq.com>
Date: Thu, 13 May 2021 19:41:30 +0800
Subject: [PATCH] =?UTF-8?q?=E6=B3=A8=E9=87=8A=E6=8E=89=E4=BA=86mapdb?=
=?UTF-8?q?=E7=9B=B8=E5=85=B3=E7=9A=84=E4=BB=A3=E7=A0=81=EF=BC=8C=E4=BB=A5?=
=?UTF-8?q?=E9=80=82=E9=85=8D=E5=AE=89=E5=8D=93?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
pom.xml | 10 +-
properties/assembly-release.xml | 4 +-
src/main/java/logicface/UdpTransport.java | 1 +
.../identity/persist/IdentitySerializer.java | 194 +++++------
.../minsecurity/identity/persist/MapDB.java | 307 +++++++++---------
src/main/java/security/IdentifyManager.java | 2 +-
src/test/java/component/KeyLocatorTest.java | 1 -
.../java/component/SignatureInfoTest.java | 1 -
src/test/java/logicface/LogicFaceTest.java | 11 +-
.../java/minsecurity/crypto/SM2Benchmark.java | 2 +-
.../minsecurity/identity/TestPersist.java | 12 +-
src/test/java/security/KeyChainTest.java | 4 +-
src/test/java/security/KeychainBenchmark.java | 2 +-
13 files changed, 279 insertions(+), 272 deletions(-)
diff --git a/pom.xml b/pom.xml
index 8466d17..fad6b02 100644
--- a/pom.xml
+++ b/pom.xml
@@ -243,11 +243,11 @@
-
- org.mapdb
- mapdb
- 3.0.8
-
+
+
+
+
+
diff --git a/properties/assembly-release.xml b/properties/assembly-release.xml
index d4a9ced..af0cfc5 100644
--- a/properties/assembly-release.xml
+++ b/properties/assembly-release.xml
@@ -67,8 +67,8 @@
org.jetbrains.kotlin
-
-
+ org.jetbrains.kotlin:kotlin-stdlib
+ org.jetbrains.kotlin:kotlin-stdlib-common
org.jetbrains:annotations
diff --git a/src/main/java/logicface/UdpTransport.java b/src/main/java/logicface/UdpTransport.java
index bc2f017..a50bdc9 100644
--- a/src/main/java/logicface/UdpTransport.java
+++ b/src/main/java/logicface/UdpTransport.java
@@ -120,6 +120,7 @@ public class UdpTransport extends Transport implements ITransport{
@Override
public boolean setReadTimeout(long duration) throws LogicFaceException {
try {
+ System.out.println("udp setReadTimeout duration: "+duration);
if (duration <= 0) {
// this.channel.socket().setSoTimeout(0);
return true;
diff --git a/src/main/java/minsecurity/identity/persist/IdentitySerializer.java b/src/main/java/minsecurity/identity/persist/IdentitySerializer.java
index d28f0e0..db95c41 100644
--- a/src/main/java/minsecurity/identity/persist/IdentitySerializer.java
+++ b/src/main/java/minsecurity/identity/persist/IdentitySerializer.java
@@ -1,97 +1,97 @@
-package minsecurity.identity.persist;
-
-import minsecurity.Common;
-import minsecurity.certificate.cert.CertException;
-import minsecurity.certificate.cert.CertUtils;
-import minsecurity.certificate.cert.Certificate;
-import minsecurity.crypto.sm2.SM2PrivateKey;
-import minsecurity.crypto.sm2.SM2PublicKey;
-import minsecurity.identity.Identity;
-import minsecurity.identity.KeyParam;
-import org.bouncycastle.pqc.math.linearalgebra.ByteUtils;
-import org.jetbrains.annotations.NotNull;
-import org.mapdb.DataInput2;
-import org.mapdb.DataOutput2;
-import org.mapdb.Serializer;
-
-import javax.crypto.BadPaddingException;
-import javax.crypto.IllegalBlockSizeException;
-import javax.crypto.NoSuchPaddingException;
-import java.io.IOException;
-import java.security.InvalidAlgorithmParameterException;
-import java.security.InvalidKeyException;
-import java.security.NoSuchAlgorithmException;
-import java.security.NoSuchProviderException;
-
-/*
- * @Author: hongyu guo
- * @Description: mapDB需要自定义序列化、反序列化方法
- * @Version: 1.0.0
- * @Date: 20:50 2021/03/09
- * @Copyright: MIN-Group;国家重大科技基础设施——未来网络北大实验室;深圳市信息论与未来网络重点实验室
- */
-
-// DONE: 加密版本的序列化可以不用实现 已经改用加密Sqlite
-public class IdentitySerializer implements Serializer {
-
- @Override
- public void serialize(@NotNull DataOutput2 dataOutput2, @NotNull Identity identity) throws IOException {
- String name = identity.getName();
- String pub = ByteUtils.toHexString(identity.getPubkey().getBytes());
- String priv = ByteUtils.toHexString(identity.getPrikey().getBytes());
- int pubAlgo = identity.getKeyParam().PublicKeyAlgorithm;
- int signAlgo = identity.getKeyParam().SignatureAlgorithm;
- String passwd = identity.getPasswd();
- String cert = "";
- try {
- cert = CertUtils.toPem(identity.getCert(),null, Common.SM4CBC);
- } catch (CertException | NoSuchPaddingException | InvalidAlgorithmParameterException |
- NoSuchAlgorithmException | IllegalBlockSizeException | BadPaddingException |
- NoSuchProviderException | InvalidKeyException e) {
- e.printStackTrace();
- }
- boolean isDefault = identity.isDefault();
- String prikeyRawByte = identity.getPrikeyRawByte()== null ?
- "" :ByteUtils.toHexString(identity.getPrikeyRawByte());
-
-
- dataOutput2.writeUTF(name);
- dataOutput2.writeUTF(pub);
- dataOutput2.writeUTF(priv);
- dataOutput2.writeInt(pubAlgo);
- dataOutput2.writeInt(signAlgo);
- dataOutput2.writeUTF(passwd);
- dataOutput2.writeUTF(cert);
- dataOutput2.writeBoolean(isDefault);
- dataOutput2.writeUTF(prikeyRawByte);
- }
-
- @Override
- public Identity deserialize(@NotNull DataInput2 dataInput2, int i) throws IOException {
- String name = dataInput2.readUTF();
- byte[] pub = ByteUtils.fromHexString(dataInput2.readUTF());
- byte[] priv = ByteUtils.fromHexString(dataInput2.readUTF());
- int pubAlgo = dataInput2.readInt();
- int signAlgo = dataInput2.readInt();
- String passwd = dataInput2.readUTF();
- String certString = dataInput2.readUTF();
- Certificate certificate = null;
- try {
- certificate = CertUtils.fromPem(certString, null, Common.SM4CBC);
- } catch (CertException | BadPaddingException | NoSuchPaddingException |
- InvalidAlgorithmParameterException | NoSuchAlgorithmException |
- IllegalBlockSizeException | NoSuchProviderException | InvalidKeyException e) {
- e.printStackTrace();
- }
- boolean isDefault = dataInput2.readBoolean();
- byte[] prikeyRawByte = dataInput2.readUTF().equals("") ?
- null : ByteUtils.fromHexString(dataInput2.readUTF());
- KeyParam keyParam = new KeyParam(pubAlgo, signAlgo);
- SM2PrivateKey sm2PrivateKey = new SM2PrivateKey();
- sm2PrivateKey.setBytes(priv);
- SM2PublicKey sm2PublicKey = new SM2PublicKey();
- sm2PublicKey.setBytes(pub);
- return new Identity(name,keyParam, sm2PrivateKey,prikeyRawByte, sm2PublicKey, passwd, certificate, isDefault);
- }
-
-}
+//package minsecurity.identity.persist;
+//// 不能用于安卓,安卓编译会报错,暂时注释掉
+//import minsecurity.Common;
+//import minsecurity.certificate.cert.CertException;
+//import minsecurity.certificate.cert.CertUtils;
+//import minsecurity.certificate.cert.Certificate;
+//import minsecurity.crypto.sm2.SM2PrivateKey;
+//import minsecurity.crypto.sm2.SM2PublicKey;
+//import minsecurity.identity.Identity;
+//import minsecurity.identity.KeyParam;
+//import org.bouncycastle.pqc.math.linearalgebra.ByteUtils;
+//import org.jetbrains.annotations.NotNull;
+//import org.mapdb.DataInput2;
+//import org.mapdb.DataOutput2;
+//import org.mapdb.Serializer;
+//
+//import javax.crypto.BadPaddingException;
+//import javax.crypto.IllegalBlockSizeException;
+//import javax.crypto.NoSuchPaddingException;
+//import java.io.IOException;
+//import java.security.InvalidAlgorithmParameterException;
+//import java.security.InvalidKeyException;
+//import java.security.NoSuchAlgorithmException;
+//import java.security.NoSuchProviderException;
+//
+///*
+// * @Author: hongyu guo
+// * @Description: mapDB需要自定义序列化、反序列化方法
+// * @Version: 1.0.0
+// * @Date: 20:50 2021/03/09
+// * @Copyright: MIN-Group;国家重大科技基础设施——未来网络北大实验室;深圳市信息论与未来网络重点实验室
+// */
+//
+//// DONE: 加密版本的序列化可以不用实现 已经改用加密Sqlite
+//public class IdentitySerializer implements Serializer {
+//
+// @Override
+// public void serialize(@NotNull DataOutput2 dataOutput2, @NotNull Identity identity) throws IOException {
+// String name = identity.getName();
+// String pub = ByteUtils.toHexString(identity.getPubkey().getBytes());
+// String priv = ByteUtils.toHexString(identity.getPrikey().getBytes());
+// int pubAlgo = identity.getKeyParam().PublicKeyAlgorithm;
+// int signAlgo = identity.getKeyParam().SignatureAlgorithm;
+// String passwd = identity.getPasswd();
+// String cert = "";
+// try {
+// cert = CertUtils.toPem(identity.getCert(),null, Common.SM4CBC);
+// } catch (CertException | NoSuchPaddingException | InvalidAlgorithmParameterException |
+// NoSuchAlgorithmException | IllegalBlockSizeException | BadPaddingException |
+// NoSuchProviderException | InvalidKeyException e) {
+// e.printStackTrace();
+// }
+// boolean isDefault = identity.isDefault();
+// String prikeyRawByte = identity.getPrikeyRawByte()== null ?
+// "" :ByteUtils.toHexString(identity.getPrikeyRawByte());
+//
+//
+// dataOutput2.writeUTF(name);
+// dataOutput2.writeUTF(pub);
+// dataOutput2.writeUTF(priv);
+// dataOutput2.writeInt(pubAlgo);
+// dataOutput2.writeInt(signAlgo);
+// dataOutput2.writeUTF(passwd);
+// dataOutput2.writeUTF(cert);
+// dataOutput2.writeBoolean(isDefault);
+// dataOutput2.writeUTF(prikeyRawByte);
+// }
+//
+// @Override
+// public Identity deserialize(@NotNull DataInput2 dataInput2, int i) throws IOException {
+// String name = dataInput2.readUTF();
+// byte[] pub = ByteUtils.fromHexString(dataInput2.readUTF());
+// byte[] priv = ByteUtils.fromHexString(dataInput2.readUTF());
+// int pubAlgo = dataInput2.readInt();
+// int signAlgo = dataInput2.readInt();
+// String passwd = dataInput2.readUTF();
+// String certString = dataInput2.readUTF();
+// Certificate certificate = null;
+// try {
+// certificate = CertUtils.fromPem(certString, null, Common.SM4CBC);
+// } catch (CertException | BadPaddingException | NoSuchPaddingException |
+// InvalidAlgorithmParameterException | NoSuchAlgorithmException |
+// IllegalBlockSizeException | NoSuchProviderException | InvalidKeyException e) {
+// e.printStackTrace();
+// }
+// boolean isDefault = dataInput2.readBoolean();
+// byte[] prikeyRawByte = dataInput2.readUTF().equals("") ?
+// null : ByteUtils.fromHexString(dataInput2.readUTF());
+// KeyParam keyParam = new KeyParam(pubAlgo, signAlgo);
+// SM2PrivateKey sm2PrivateKey = new SM2PrivateKey();
+// sm2PrivateKey.setBytes(priv);
+// SM2PublicKey sm2PublicKey = new SM2PublicKey();
+// sm2PublicKey.setBytes(pub);
+// return new Identity(name,keyParam, sm2PrivateKey,prikeyRawByte, sm2PublicKey, passwd, certificate, isDefault);
+// }
+//
+//}
diff --git a/src/main/java/minsecurity/identity/persist/MapDB.java b/src/main/java/minsecurity/identity/persist/MapDB.java
index a06785c..6cbeac1 100644
--- a/src/main/java/minsecurity/identity/persist/MapDB.java
+++ b/src/main/java/minsecurity/identity/persist/MapDB.java
@@ -1,154 +1,153 @@
-package minsecurity.identity.persist;
-
-import com.fasterxml.jackson.annotation.JsonTypeInfo;
-import minsecurity.identity.Identity;
-import org.mapdb.DB;
-import org.mapdb.DBMaker;
-import org.mapdb.Serializer;
-import org.slf4j.LoggerFactory;
-
-import java.util.ArrayList;
-import java.util.concurrent.ConcurrentMap;
-
-/*
- * @Author: hongyu guo
- * @Description: 封装MapDB中需要的方法
- * @Version: 1.0.0
- * @Date: 10:34 2021/03/10
- * @Copyright: MIN-Group;国家重大科技基础设施——未来网络北大实验室;深圳市信息论与未来网络重点实验室
- */
-public class MapDB {
- private static final org.slf4j.Logger logger = LoggerFactory.getLogger(MapDB.class);
- // TODO: 如有需要, 后续添加其他map
- // TODO: 数据库加密?
- public static final String defaultPath = "./target/test.db";
- public static final String defaultIdentity = "identity";
- public static final String defaultName = "/default";
-
-
- private DB db;
- private ConcurrentMap identityMap;
- private Serializer customSerializer;
- private static MapDB mapDB = null;
-
- private MapDB(){
- db = DBMaker.fileDB(defaultPath).closeOnJvmShutdown().transactionEnable().make();
- customSerializer = new IdentitySerializer();
- identityMap = db.hashMap(defaultIdentity)
- .keySerializer(Serializer.STRING)
- .valueSerializer(customSerializer)
- .createOrOpen();
- }
- private MapDB(String filePath){
- db = DBMaker.fileDB(filePath).closeOnJvmShutdown().transactionEnable().make();
- customSerializer = new IdentitySerializer();
- identityMap = db.hashMap(defaultIdentity)
- .keySerializer(Serializer.STRING)
- .valueSerializer(customSerializer)
- .createOrOpen();
- }
-
- public static MapDB getInstance(){
- if(mapDB == null){
- mapDB = new MapDB();
- }
- return mapDB;
- }
- public static MapDB getInstance(String filePath){
- if(mapDB == null){
- mapDB = new MapDB(filePath);
- }
- return mapDB;
- }
-
- public Identity addIdentity(String name, Identity identity, boolean commit){
- Identity id = identityMap.put(name,identity);
- if(identityMap.size() == 1){
- // 首次添加default Identity
- setDefaultIdentity(name, commit);
- }
-
-
- if(commit){
- db.commit();
- }
- return id;
- }
-
- public void closeDB(){
- db.close();
- mapDB = null;
- }
-
- public void commit(){
- db.commit();
- }
-
-
- public Identity getIdentityByName(String name){
- return identityMap.get(name);
- }
-
- public ArrayList getAllIdentity(){
- ArrayList list = new ArrayList<>();
- for(String key : identityMap.keySet()){
- list.add(identityMap.get(key));
- }
- return list;
- }
-
- public boolean setDefaultIdentity(String name, boolean commit){
- Identity identity = identityMap.get(name);
- if(identity == null)
- return false;
- // 将所有identity的设置为非默认
- for(String key : identityMap.keySet()){
- Identity id = identityMap.get(key);
- if(id.isDefault()) {
- id.setDefault(false);
- identityMap.put(key, id);
- }
- }
- identity.setDefault(true);
- identityMap.put(name, identity);
- // set /default
- identityMap.put(defaultName, identity);
- if(commit){
- db.commit();
- }
- return true;
- }
-
- public Identity getDefaultIdentity(){
- return identityMap.get(defaultName);
- }
-
- public Identity deleteIdentity(String name, boolean commit){
- // 不能删除默认Identity
- if(name.equals(defaultName)){
- logger.error("不能删除default identity");
- return null;
- }
- Identity identity = identityMap.remove(name);
- if(commit){
- db.commit();
- }
- return identity;
- }
-
- public DB getDb() {
- return db;
- }
-
- public void setDb(DB db) {
- this.db = db;
- }
-
- public ConcurrentMap getIdentityMap() {
- return identityMap;
- }
-
- public void setIdentityMap(ConcurrentMap identityMap) {
- this.identityMap = identityMap;
- }
-}
+//package minsecurity.identity.persist;
+// // 不能用于安卓,安卓编译会报错,暂时注释掉
+//import minsecurity.identity.Identity;
+//import org.mapdb.DB;
+//import org.mapdb.DBMaker;
+//import org.mapdb.Serializer;
+//import org.slf4j.LoggerFactory;
+//
+//import java.util.ArrayList;
+//import java.util.concurrent.ConcurrentMap;
+//
+///*
+// * @Author: hongyu guo
+// * @Description: 封装MapDB中需要的方法
+// * @Version: 1.0.0
+// * @Date: 10:34 2021/03/10
+// * @Copyright: MIN-Group;国家重大科技基础设施——未来网络北大实验室;深圳市信息论与未来网络重点实验室
+// */
+//public class MapDB {
+// private static final org.slf4j.Logger logger = LoggerFactory.getLogger(MapDB.class);
+// // TODO: 如有需要, 后续添加其他map
+// // TODO: 数据库加密?
+// public static final String defaultPath = "./target/test.db";
+// public static final String defaultIdentity = "identity";
+// public static final String defaultName = "/default";
+//
+//
+// private DB db;
+// private ConcurrentMap identityMap;
+// private Serializer customSerializer;
+// private static MapDB mapDB = null;
+//
+// private MapDB(){
+// db = DBMaker.fileDB(defaultPath).closeOnJvmShutdown().transactionEnable().make();
+// customSerializer = new IdentitySerializer();
+// identityMap = db.hashMap(defaultIdentity)
+// .keySerializer(Serializer.STRING)
+// .valueSerializer(customSerializer)
+// .createOrOpen();
+// }
+// private MapDB(String filePath){
+// db = DBMaker.fileDB(filePath).closeOnJvmShutdown().transactionEnable().make();
+// customSerializer = new IdentitySerializer();
+// identityMap = db.hashMap(defaultIdentity)
+// .keySerializer(Serializer.STRING)
+// .valueSerializer(customSerializer)
+// .createOrOpen();
+// }
+//
+// public static MapDB getInstance(){
+// if(mapDB == null){
+// mapDB = new MapDB();
+// }
+// return mapDB;
+// }
+// public static MapDB getInstance(String filePath){
+// if(mapDB == null){
+// mapDB = new MapDB(filePath);
+// }
+// return mapDB;
+// }
+//
+// public Identity addIdentity(String name, Identity identity, boolean commit){
+// Identity id = identityMap.put(name,identity);
+// if(identityMap.size() == 1){
+// // 首次添加default Identity
+// setDefaultIdentity(name, commit);
+// }
+//
+//
+// if(commit){
+// db.commit();
+// }
+// return id;
+// }
+//
+// public void closeDB(){
+// db.close();
+// mapDB = null;
+// }
+//
+// public void commit(){
+// db.commit();
+// }
+//
+//
+// public Identity getIdentityByName(String name){
+// return identityMap.get(name);
+// }
+//
+// public ArrayList getAllIdentity(){
+// ArrayList list = new ArrayList<>();
+// for(String key : identityMap.keySet()){
+// list.add(identityMap.get(key));
+// }
+// return list;
+// }
+//
+// public boolean setDefaultIdentity(String name, boolean commit){
+// Identity identity = identityMap.get(name);
+// if(identity == null)
+// return false;
+// // 将所有identity的设置为非默认
+// for(String key : identityMap.keySet()){
+// Identity id = identityMap.get(key);
+// if(id.isDefault()) {
+// id.setDefault(false);
+// identityMap.put(key, id);
+// }
+// }
+// identity.setDefault(true);
+// identityMap.put(name, identity);
+// // set /default
+// identityMap.put(defaultName, identity);
+// if(commit){
+// db.commit();
+// }
+// return true;
+// }
+//
+// public Identity getDefaultIdentity(){
+// return identityMap.get(defaultName);
+// }
+//
+// public Identity deleteIdentity(String name, boolean commit){
+// // 不能删除默认Identity
+// if(name.equals(defaultName)){
+// logger.error("不能删除default identity");
+// return null;
+// }
+// Identity identity = identityMap.remove(name);
+// if(commit){
+// db.commit();
+// }
+// return identity;
+// }
+//
+// public DB getDb() {
+// return db;
+// }
+//
+// public void setDb(DB db) {
+// this.db = db;
+// }
+//
+// public ConcurrentMap getIdentityMap() {
+// return identityMap;
+// }
+//
+// public void setIdentityMap(ConcurrentMap identityMap) {
+// this.identityMap = identityMap;
+// }
+//}
diff --git a/src/main/java/security/IdentifyManager.java b/src/main/java/security/IdentifyManager.java
index d586852..20a863c 100644
--- a/src/main/java/security/IdentifyManager.java
+++ b/src/main/java/security/IdentifyManager.java
@@ -6,7 +6,7 @@ import minsecurity.crypto.sm2.SM2KeyPair;
import minsecurity.identity.Identity;
import minsecurity.identity.IdentityException;
import minsecurity.identity.KeyParam;
-import minsecurity.identity.persist.MapDB;
+//import minsecurity.identity.persist.MapDB;
import minsecurity.identity.persist.Persist;
import minsecurity.identity.persist.sqlite.Sqlite;
diff --git a/src/test/java/component/KeyLocatorTest.java b/src/test/java/component/KeyLocatorTest.java
index d529ab1..25d009c 100644
--- a/src/test/java/component/KeyLocatorTest.java
+++ b/src/test/java/component/KeyLocatorTest.java
@@ -2,7 +2,6 @@ package component;
import encoding.*;
import mgmt.MgmtException;
-import org.checkerframework.checker.units.qual.K;
import org.junit.Test;
import packet.PacketException;
diff --git a/src/test/java/component/SignatureInfoTest.java b/src/test/java/component/SignatureInfoTest.java
index 3b5eac2..2463909 100644
--- a/src/test/java/component/SignatureInfoTest.java
+++ b/src/test/java/component/SignatureInfoTest.java
@@ -1,7 +1,6 @@
package component;
import encoding.*;
-import org.checkerframework.checker.units.qual.A;
import org.junit.Test;
import java.util.Arrays;
diff --git a/src/test/java/logicface/LogicFaceTest.java b/src/test/java/logicface/LogicFaceTest.java
index 3f834a1..cfa79d1 100644
--- a/src/test/java/logicface/LogicFaceTest.java
+++ b/src/test/java/logicface/LogicFaceTest.java
@@ -129,6 +129,7 @@ public class LogicFaceTest {
}
}
+ // todo: 在这里测试为何超时依然能接收到UDP包
@Test
public void testReceiveDataByUdp() throws ComponentException, LogicFaceException, EncoderException, BlockException, MgmtException, PacketException {
Data data=new Data();
@@ -244,7 +245,7 @@ public class LogicFaceTest {
* 测试结果:
* [-15, 0, -6, 25, -52, 4, 4, 5, 6, 7, -15, 0, -5, 15, -15, 0, -4, 1, 1, -15, 0, -3, 1, 1, -15, 0, -2, 1, 0]
*/
-// @Test
+ @Test
public void startUDPServer() throws IOException {
while(true){
//1.创建服务端+端口
@@ -263,6 +264,14 @@ public class LogicFaceTest {
SocketAddress remoteHost=packet.getSocketAddress();
System.out.println("remote host: "+packet.getSocketAddress());
+ // 睡眠5s
+ try {
+ System.out.println("start 5s sleeping ... ");
+ Thread.sleep(5000);
+ System.out.println("After 5s, wake up now!");
+ } catch (InterruptedException e) {
+ e.printStackTrace();
+ }
// 做数据应答
server.connect(remoteHost);
server.send(packet);
diff --git a/src/test/java/minsecurity/crypto/SM2Benchmark.java b/src/test/java/minsecurity/crypto/SM2Benchmark.java
index 3a35e61..af21e4c 100644
--- a/src/test/java/minsecurity/crypto/SM2Benchmark.java
+++ b/src/test/java/minsecurity/crypto/SM2Benchmark.java
@@ -11,7 +11,7 @@ import org.bouncycastle.crypto.InvalidCipherTextException;
import org.bouncycastle.crypto.params.ECPrivateKeyParameters;
import org.bouncycastle.crypto.params.ECPublicKeyParameters;
import org.bouncycastle.pqc.math.linearalgebra.ByteUtils;
-import org.eclipse.collections.api.partition.ordered.PartitionReversibleIterable;
+//import org.eclipse.collections.api.partition.ordered.PartitionReversibleIterable;
import org.openjdk.jmh.annotations.*;
import org.openjdk.jmh.runner.Runner;
import org.openjdk.jmh.runner.RunnerException;
diff --git a/src/test/java/minsecurity/identity/TestPersist.java b/src/test/java/minsecurity/identity/TestPersist.java
index abfede8..0b428dd 100644
--- a/src/test/java/minsecurity/identity/TestPersist.java
+++ b/src/test/java/minsecurity/identity/TestPersist.java
@@ -8,18 +8,18 @@ import minsecurity.crypto.sm2.SM2Base;
import minsecurity.crypto.sm2.SM2KeyPair;
import minsecurity.crypto.sm2.SM2PrivateKey;
import minsecurity.crypto.sm2.SM2PublicKey;
-import minsecurity.identity.persist.IdentitySerializer;
-import minsecurity.identity.persist.MapDB;
+//import minsecurity.identity.persist.IdentitySerializer;
+//import minsecurity.identity.persist.MapDB;
import minsecurity.identity.persist.Persist;
import minsecurity.identity.persist.sqlite.Sqlite;
import org.bouncycastle.crypto.AsymmetricCipherKeyPair;
import org.bouncycastle.crypto.params.ECPrivateKeyParameters;
import org.bouncycastle.crypto.params.ECPublicKeyParameters;
import org.junit.Test;
-import org.mapdb.BTreeMap;
-import org.mapdb.DB;
-import org.mapdb.DBMaker;
-import org.mapdb.Serializer;
+//import org.mapdb.BTreeMap;
+//import org.mapdb.DB;
+//import org.mapdb.DBMaker;
+//import org.mapdb.Serializer;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
diff --git a/src/test/java/security/KeyChainTest.java b/src/test/java/security/KeyChainTest.java
index 17aff42..adac62b 100644
--- a/src/test/java/security/KeyChainTest.java
+++ b/src/test/java/security/KeyChainTest.java
@@ -11,8 +11,8 @@ import minsecurity.crypto.sm2.SM2KeyPair;
import minsecurity.identity.Identity;
import minsecurity.identity.KeyParam;
import minsecurity.identity.TestIdentity;
-import org.checkerframework.checker.units.qual.C;
-import org.checkerframework.checker.units.qual.K;
+//import org.checkerframework.checker.units.qual.C;
+//import org.checkerframework.checker.units.qual.K;
import org.junit.Test;
import org.slf4j.LoggerFactory;
import packet.CPacket;
diff --git a/src/test/java/security/KeychainBenchmark.java b/src/test/java/security/KeychainBenchmark.java
index e4cf498..c3f0738 100644
--- a/src/test/java/security/KeychainBenchmark.java
+++ b/src/test/java/security/KeychainBenchmark.java
@@ -10,7 +10,7 @@ import minsecurity.certificate.cert.Certificate;
import minsecurity.crypto.sm2.SM2KeyPair;
import minsecurity.identity.Identity;
import minsecurity.identity.KeyParam;
-import org.checkerframework.checker.units.qual.K;
+//import org.checkerframework.checker.units.qual.K;
import org.openjdk.jmh.annotations.*;
import org.openjdk.jmh.runner.Runner;
import org.openjdk.jmh.runner.RunnerException;