identity & identity基础功能测试

This commit is contained in:
ghy committed 2021-03-10 15:43:03 +08:00
1 parent 01ed6a2e56
commit 16416fecf4
4 files changed
+265 -22

No files matched your search

@@ -8,6 +8,7 @@ import minsecurity.crypto.sm2.SM2Base;
import minsecurity.crypto.sm2.SM2PrivateKey;
import minsecurity.crypto.sm2.SM2PublicKey;
import minsecurity.identity.persist.IdentitySerializer;
import minsecurity.identity.persist.MapDB;
import org.bouncycastle.crypto.AsymmetricCipherKeyPair;
import org.bouncycastle.crypto.params.ECPrivateKeyParameters;
import org.bouncycastle.crypto.params.ECPublicKeyParameters;
@@ -18,6 +19,7 @@ import org.mapdb.DBMaker;
import org.mapdb.Serializer;
import org.slf4j.LoggerFactory;
import java.util.*;
import java.util.concurrent.ConcurrentMap;
/*
@@ -33,7 +35,6 @@ public class TestPersist {
@Test
public void testMapDB() throws Exception {
AsymmetricCipherKeyPair keyPair = SM2Base.generateKeyPairParameter();
ECPrivateKeyParameters priKey = (ECPrivateKeyParameters) keyPair.getPrivate();
ECPublicKeyParameters pubKey = (ECPublicKeyParameters) keyPair.getPublic();
@@ -52,17 +53,115 @@ public class TestPersist {
Common.CertSign, true, System.currentTimeMillis());
CertUtils.signCert(certificate, sm2PrivateKey);
identity.setCert(certificate);
DB db = DBMaker.fileDB("./target/test.db").closeOnJvmShutdown().transactionEnable().make();
Serializer<Identity> customSerializer = new IdentitySerializer();
ConcurrentMap<String, Identity> map = db.hashMap("identity")
.keySerializer(Serializer.STRING)
.valueSerializer(customSerializer)
.createOrOpen();
// map.put("/min/test05", new Identity());
map.put("/min/test06", identity);
db.commit();
MapDB mapDB = MapDB.getInstance("./target/test.db");
int random = new Random().nextInt();
mapDB.addIdentity("/test" + random, identity, false);
mapDB.commit();
mapDB.closeDB();
mapDB = MapDB.getInstance("./target/test.db");
ArrayList<Identity> arrayList = mapDB.getAllIdentity();
logger.debug("db size: {}",arrayList.size());
Identity id = mapDB.getIdentityByName("/test" + random);
logger.debug(identity.toString());
Identity id = map.get("/min/test06");
logger.debug(id.toString());
}
@Test
public void testMapDB2() throws Exception {
MapDB mapDB = MapDB.getInstance("./target/test.db");
for(int i = 0; i < 100; i++){
AsymmetricCipherKeyPair keyPair = SM2Base.generateKeyPairParameter();
ECPrivateKeyParameters priKey = (ECPrivateKeyParameters) keyPair.getPrivate();
ECPublicKeyParameters pubKey = (ECPublicKeyParameters) keyPair.getPublic();
byte[] d = priKey.getD().toByteArray();
// d = Arrays.copyOf(d,32);
byte[] x = pubKey.getQ().getAffineXCoord().getEncoded();
byte[] y = pubKey.getQ().getAffineYCoord().getEncoded();
// BigInteger bigInteger = priKey.getD();
SM2PrivateKey sm2PrivateKey = new SM2PrivateKey(d);
SM2PublicKey sm2PublicKey = new SM2PublicKey(x,y);
KeyParam keyParam = new KeyParam(Common.SM2, Common.SM3withSM2);
Identity identity = new Identity("root",keyParam,sm2PrivateKey,null,sm2PublicKey, "123456", null, false);
Certificate certificate = new Certificate(1, 1, sm2PublicKey, null,
Common.SM3withSM2, Common.SM2, "root", "root",
System.currentTimeMillis() - 1000, System.currentTimeMillis() + 5000,
Common.CertSign, true, System.currentTimeMillis());
CertUtils.signCert(certificate, sm2PrivateKey);
identity.setCert(certificate);
int random = new Random().nextInt();
mapDB.addIdentity("/test" + random, identity, false);
}
mapDB.commit();
ArrayList<Identity> arrayList = mapDB.getAllIdentity();
logger.debug("size = {}", arrayList.size());
for(Identity id : arrayList){
logger.debug(id.toString());
}
}
@Test
public void testHashmap(){
HashMap<String, Integer> primeNumbers = new HashMap<>();
// 往HasMap中添加映射
primeNumbers.put("Two", 2);
primeNumbers.put("Three", 3);
primeNumbers.put("Five", 5);
System.out.println("HashMap: " + primeNumbers);
// 得到value
Integer value = primeNumbers.get("Three");
System.out.println("key Three 对应的 value: " + value);
}
@Test
public void testDefault() throws Exception {
MapDB mapDB = MapDB.getInstance("./target/test.db");
for(int i = 0; i < 20; i++){
int random = new Random().nextInt();
Identity identity = generateIdentity("/test/" + random);
mapDB.addIdentity(identity.getName(), identity, false);
}
// mapDB.commit();
ArrayList<Identity> arrayList = mapDB.getAllIdentity();
logger.debug("size = {}", arrayList.size());
for(Identity id : arrayList){
logger.debug(id.getName() + " " + id.isDefault());
}
logger.debug("----setDefault----");
Identity identity = generateIdentity("/abc");
identity.setDefault(true);
mapDB.addIdentity("/abc", identity, false);
mapDB.setDefaultIdentity("/abc",false);
mapDB.commit();
arrayList = mapDB.getAllIdentity();
for(Identity id : arrayList){
logger.debug(id.getName() + " " + id.isDefault());
}
logger.debug("get default");
logger.debug(mapDB.getDefaultIdentity().toString());
}
private Identity generateIdentity(String name) throws Exception {
AsymmetricCipherKeyPair keyPair = SM2Base.generateKeyPairParameter();
ECPrivateKeyParameters priKey = (ECPrivateKeyParameters) keyPair.getPrivate();
ECPublicKeyParameters pubKey = (ECPublicKeyParameters) keyPair.getPublic();
byte[] d = priKey.getD().toByteArray();
byte[] x = pubKey.getQ().getAffineXCoord().getEncoded();
byte[] y = pubKey.getQ().getAffineYCoord().getEncoded();
SM2PrivateKey sm2PrivateKey = new SM2PrivateKey(d);
SM2PublicKey sm2PublicKey = new SM2PublicKey(x,y);
KeyParam keyParam = new KeyParam(Common.SM2, Common.SM3withSM2);
Identity identity = new Identity(name,keyParam,sm2PrivateKey,null,sm2PublicKey, "123456", null, false);
Certificate certificate = new Certificate(1, 1, sm2PublicKey, null,
Common.SM3withSM2, Common.SM2, "root", "root",
System.currentTimeMillis() - 1000, System.currentTimeMillis() + 5000,
Common.CertSign, true, System.currentTimeMillis());
CertUtils.signCert(certificate, sm2PrivateKey);
identity.setCert(certificate);
return identity;
}
}