From 2cc108c10cf23fe3733674376de094097a995a29 Mon Sep 17 00:00:00 2001 From: zhaofeng233 Date: Thu, 22 Apr 2021 16:36:37 +0800 Subject: [PATCH] =?UTF-8?q?fix:=E5=88=A0=E9=99=A4=E9=83=A8=E5=88=86?= =?UTF-8?q?=E6=B5=8B=E8=AF=95=E4=BB=A3=E7=A0=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- pom.xml | 20 ++--- src/test/java/packet/DataTest.java | 105 ++++++++++++++++++------- src/test/java/packet/InterestTest.java | 66 ++++++++-------- 3 files changed, 121 insertions(+), 70 deletions(-) diff --git a/pom.xml b/pom.xml index 6dc9ff1..361a3a9 100644 --- a/pom.xml +++ b/pom.xml @@ -106,11 +106,11 @@ - - - - - + + org.xerial + sqlite-jdbc + 3.28.0 + io.github.willena sqlite-jdbc @@ -139,11 +139,11 @@ - - - - - + + com.github.jnr + jnr-unixsocket + 0.18 + com.cloudbees.util diff --git a/src/test/java/packet/DataTest.java b/src/test/java/packet/DataTest.java index fcdf928..c5c9ff4 100644 --- a/src/test/java/packet/DataTest.java +++ b/src/test/java/packet/DataTest.java @@ -3,7 +3,12 @@ package packet; import component.ComponentException; import component.Identifier; import encoding.*; +import minsecurity.Common; +import minsecurity.certificate.cert.CertUtils; +import minsecurity.certificate.cert.Certificate; +import minsecurity.crypto.sm2.SM2KeyPair; import minsecurity.identity.Identity; +import minsecurity.identity.KeyParam; import org.junit.Test; import security.KeyChain; @@ -73,35 +78,81 @@ public class DataTest { +" , payload: "+newData.payload.getValue() ); } - @Test - public void WireEncode2() throws Exception { - Identifier name = new Identifier("/min/pkusz"); - //////////////////// 构建数据包 //////////////////////// - Data data = new Data(); - data.setName(name); - data.freshnessPeriod.setFreshnessPeriod(1234); - byte[] str = "hello world".getBytes(); - data.congestionMark.setCongestionLevel(1234); -// todo data.setttl(1234); - ///////////////////////////////////////////////////// + /** + * 随机生成身份数据 + * @return Identity + */ + private Identity createRandomIdentity() throws Exception{ + // 测试PersistIdentity + SM2KeyPair pair = SM2KeyPair.generateKeyPair(); + Identity identity = new Identity(); + identity.setName("/zf"+Math.random()); // 身份名称必须以/开头 Identifier规定 + KeyParam keyParam = new KeyParam(); + keyParam.PublicKeyAlgorithm = 0; + keyParam.SignatureAlgorithm = 0; + identity.setKeyParam(keyParam); + identity.setPrikey(pair.getSm2PrivateKey()); + identity.setPubkey(pair.getSm2PublicKey()); + identity.setPasswd("2DD29CA851E7B56E4697B0E1F08507293D761A05CE4D1B628663F411A8086D99"); + // identity.lock("0123456789abcdef", Common.SM4ECB); + Certificate cert = new Certificate(); + cert.setVersion(1); + cert.setSerialNumber(1); + cert.setPublicKey(pair.getSm2PublicKey()); + cert.setSignatureAlgorithm(Common.SM3withSM2); // TODO 名字有误? SM2withSM3? + cert.setPublicKeyAlgorithm(Common.SM2); + cert.setIssueTo("root"); + cert.setIssuer("root"); + long timestamp = System.currentTimeMillis() / 1000; + cert.setTimestamp(timestamp); // 10bit timestamp + cert.setNotAfter(timestamp); // 10bit timestamp + cert.setNotBefore(timestamp + 1000); // 10bit timestamp + cert.setKeyUsage(Common.CertSign); + cert.setCA(true); + CertUtils.signCert(cert, pair.getSm2PrivateKey()); - //////////////////// 数据包签名 //////////////////////// - // 如果要进行包签名的话,则需要加入KeyChain - KeyChain keyChain = new KeyChain(); - // 获取身份 - Identity i = keyChain.getIdentifyManager().getIdentityByName("/localhost/operator"); - // 将身份对应的加密秘钥作为第二个参数传入 - keyChain.setCurrentIdentity(i,"pkusz123pkusz123"); - keyChain.signData(data); - ///////////////////////////////////////////////////// - - // 获取编码结果 - Encoder encoder = new Encoder(); - encoder.encoderReset(new SizeT(Encoder.MaxPacketSize), new SizeT(0)); - data.wireEncode(encoder); - byte[] buf = encoder.getBuffer(); - System.out.println(Arrays.toString(buf)); + identity.setCert(cert); + return identity; } + +// @Test +// public void WireEncode2() throws Exception { +// //////////////////// 构建数据包 //////////////////////// +// Identifier name = new Identifier("/min/pkusz"); +// Data data = new Data(); +// data.setName(name); +// data.freshnessPeriod.setFreshnessPeriod(1234); +// byte[] str = "hello world".getBytes(); +// data.congestionMark.setCongestionLevel(1234); +////// data.setttl(1234); +// ///////////////////////////////////////////////////// +// +// //////////////////// 数据包签名 //////////////////////// +// //测试设置新身份为当前身份 +// KeyChain keyChain = new KeyChain(); +// Identity id = createRandomIdentity(); +// keyChain.getIdentifyManager().setDefaultIdentity(id,true); +// // 输入命名解锁身份 +// keyChain.setCurrentIdentity(keyChain.getIdentifyManager().getDefaultIdentity(),"0123456789abcdef"); +// keyChain.signData(data); +// +//// //////////////////// 数据包签名 //////////////////////// +//// // 如果要进行包签名的话,则需要加入KeyChain +//// KeyChain keyChain = new KeyChain(); +//// // 获取身份 +//// Identity i = keyChain.getIdentifyManager().getIdentityByName("/localhost/operator"); +//// // 将身份对应的加密秘钥作为第二个参数传入 +//// keyChain.setCurrentIdentity(i,"pkusz123pkusz123"); +//// keyChain.signData(data); +//// ///////////////////////////////////////////////////// +//// +// // 获取编码结果 +// Encoder encoder = new Encoder(); +// encoder.encoderReset(new SizeT(Encoder.MaxPacketSize), new SizeT(0)); +// data.wireEncode(encoder); +// byte[] buf = encoder.getBuffer(); +// System.out.println(Arrays.toString(buf)); +// } } diff --git a/src/test/java/packet/InterestTest.java b/src/test/java/packet/InterestTest.java index e627a9c..5a50035 100644 --- a/src/test/java/packet/InterestTest.java +++ b/src/test/java/packet/InterestTest.java @@ -71,37 +71,37 @@ public class InterestTest { +" , ttl; "+newInterest.ttl.ttl()); } - @Test - public void TestInterest_WireEncode2() throws Exception { - Identifier name = new Identifier("/min/pkusz"); - //////////////////// 构建兴趣包 //////////////////////// - Interest interest = new Interest(); - interest.setName(name); - interest.canBePrefix.setCanBePrefix(true); - interest.mustBeRefresh.setMustBeRefresh(true); - interest.nonce.setNonce(1234); - interest.hopLimit.setHopLimit(1234); - interest.congestionMark.setCongestionLevel(1234); - interest.ttl.setTtl(1234); - byte[] str = "hello world".getBytes(); - interest.payload.setValue(str); - ////////////////////////////////////////////////////// - - //////////////////// 兴趣包签名 //////////////////////// - // 如果要进行包签名的话,则需要加入KeyChain - KeyChain keyChain = new KeyChain(); -// Identity i = keyChain.getIdentifyManager().getIdentityByName("/min123"); - Identity i = keyChain.getIdentifyManager().getIdentityByName("/localhost/operator"); - keyChain.setCurrentIdentity(i,"pkusz123pkusz123"); - keyChain.signInterest(interest); - ///////////////////////////////////////////////////// - - // 获取编码结果 - Encoder encoder = new Encoder(); - encoder.encoderReset(new SizeT(Encoder.MaxPacketSize), new SizeT(0)); - interest.wireEncode(encoder); - byte[] buf = encoder.getBuffer(); - System.out.println(Arrays.toString(buf)); - - } +// @Test +// public void TestInterest_WireEncode2() throws Exception { +// Identifier name = new Identifier("/min/pkusz"); +// //////////////////// 构建兴趣包 //////////////////////// +// Interest interest = new Interest(); +// interest.setName(name); +// interest.canBePrefix.setCanBePrefix(true); +// interest.mustBeRefresh.setMustBeRefresh(true); +// interest.nonce.setNonce(1234); +// interest.hopLimit.setHopLimit(1234); +// interest.congestionMark.setCongestionLevel(1234); +// interest.ttl.setTtl(1234); +// byte[] str = "hello world".getBytes(); +// interest.payload.setValue(str); +// ////////////////////////////////////////////////////// +// +// //////////////////// 兴趣包签名 //////////////////////// +// // 如果要进行包签名的话,则需要加入KeyChain +// KeyChain keyChain = new KeyChain(); +//// Identity i = keyChain.getIdentifyManager().getIdentityByName("/min123"); +// Identity i = keyChain.getIdentifyManager().getIdentityByName("/localhost/operator"); +// keyChain.setCurrentIdentity(i,"pkusz123pkusz123"); +// keyChain.signInterest(interest); +// ///////////////////////////////////////////////////// +// +// // 获取编码结果 +// Encoder encoder = new Encoder(); +// encoder.encoderReset(new SizeT(Encoder.MaxPacketSize), new SizeT(0)); +// interest.wireEncode(encoder); +// byte[] buf = encoder.getBuffer(); +// System.out.println(Arrays.toString(buf)); +// +// } }