diff --git a/src/main/java/MISConnection/MIS_API.java b/src/main/java/MISConnection/MIS_API.java index 983b05f..52ff867 100644 --- a/src/main/java/MISConnection/MIS_API.java +++ b/src/main/java/MISConnection/MIS_API.java @@ -12,12 +12,38 @@ import VMSConnection.TCPNet.Message.NetworkResponse; * @Copyright: MIN-Group;国家重大科技基础设施——未来网络北大实验室;深圳市信息论与未来网络重点实验室 */ public class MIS_API extends BC_API { + public String ip="121.15.171.82"; + public Integer port=8888; + public Integer sslPort=7777; + public String serverKey="04e067d23d3fd3ba4ead731b78346cde1084a83" + + "7760f234621e36a93632b6f6418d4d6b735cd0ee19a8707cec" + + "a12ee4ff8106196ad8122ab2c89a7e11ba00d35b7"; + + public MIS_API(){ + init(); + } + + public MIS_API(String ip, Integer port, Integer sslPort, String serverKey) { + this.ip = ip; + this.port = port; + this.sslPort = sslPort; + this.serverKey = serverKey; + init(); + } + + public MIS_API(String ip, Integer port, Integer sslPort) { + this.ip = ip; + this.port = port; + this.sslPort = sslPort; + init(); + } + /** * 通知MIS获取手机验证码 * @param request * @return */ - public NetworkResponse getSMSMessage(AuthenticationRequest request){ + public NetworkResponse getSMSMessage(MISAuthenticationRequest request){ return doRequest(this.ip,this.port,this.sslPort,request, "identity-act","Authentication"); } @@ -27,7 +53,7 @@ public class MIS_API extends BC_API { * @param request * @return */ - public NetworkResponse registerMIS(RegisterRequest request){ + public NetworkResponse registerMIS(MISRegisterRequest request){ return doRequest(this.ip,this.port,this.sslPort,request, "identity-act","Registry"); } @@ -37,7 +63,7 @@ public class MIS_API extends BC_API { * @param request * @return */ - public NetworkResponse getValidIdentityMIS(GetValidIdentityRequest request){ + public NetworkResponse getValidIdentityMIS(MISGetValidIdentityRequest request){ return doRequest(this.ip,this.port,this.sslPort,request, "identity-act","GetValidIdentity"); } @@ -47,7 +73,7 @@ public class MIS_API extends BC_API { * @param request * @return */ - public NetworkResponse resetPasswordMIS(ResetPasswordRequest request){ + public NetworkResponse resetPasswordMIS(MISResetPasswordRequest request){ return doRequest(this.ip,this.port,this.sslPort,request, "identity-act","ResetPassword"); } @@ -57,7 +83,7 @@ public class MIS_API extends BC_API { * @param request * @return */ - public NetworkResponse uploadEncryptedPrikeyMIS(UploadEncryptedPrikeyRequest request){ + public NetworkResponse uploadEncryptedPrikeyMIS(MISUploadEncryptedPrikeyRequest request){ return doRequest(this.ip,this.port,this.sslPort,request, "identity-act","UploadEncryptedPrikey"); } diff --git a/src/main/java/MISConnection/Model/AuthenticationRequest.java b/src/main/java/MISConnection/Model/MISAuthenticationRequest.java similarity index 76% rename from src/main/java/MISConnection/Model/AuthenticationRequest.java rename to src/main/java/MISConnection/Model/MISAuthenticationRequest.java index d40a2f4..43aed7d 100644 --- a/src/main/java/MISConnection/Model/AuthenticationRequest.java +++ b/src/main/java/MISConnection/Model/MISAuthenticationRequest.java @@ -9,11 +9,11 @@ import VMSConnection.TCPNet.Message.BaseStruct; * @Date: 15:55 2021/8/24 * @Copyright: MIN-Group;国家重大科技基础设施——未来网络北大实验室;深圳市信息论与未来网络重点实验室 */ -public class AuthenticationRequest extends BaseStruct { +public class MISAuthenticationRequest extends BaseStruct { public String IdentityIdentifier; public String Phone; - public AuthenticationRequest(String identityIdentifier, String phone) { + public MISAuthenticationRequest(String identityIdentifier, String phone) { IdentityIdentifier = identityIdentifier; Phone = phone; } diff --git a/src/main/java/MISConnection/Model/GetValidIdentityRequest.java b/src/main/java/MISConnection/Model/MISGetValidIdentityRequest.java similarity index 72% rename from src/main/java/MISConnection/Model/GetValidIdentityRequest.java rename to src/main/java/MISConnection/Model/MISGetValidIdentityRequest.java index 7a1f9d0..2f9626b 100644 --- a/src/main/java/MISConnection/Model/GetValidIdentityRequest.java +++ b/src/main/java/MISConnection/Model/MISGetValidIdentityRequest.java @@ -9,14 +9,14 @@ import VMSConnection.TCPNet.Message.BaseStruct; * @Date: 16:07 2021/8/24 * @Copyright: MIN-Group;国家重大科技基础设施——未来网络北大实验室;深圳市信息论与未来网络重点实验室 */ -public class GetValidIdentityRequest extends BaseStruct { +public class MISGetValidIdentityRequest extends BaseStruct { public String IdentityIdentifier; public String Passwd; public String Phone; public String VerificationCode; - public GetValidIdentityRequest(String identityIdentifier, - String passwd, String phone, String verificationCode) { + public MISGetValidIdentityRequest(String identityIdentifier, + String passwd, String phone, String verificationCode) { IdentityIdentifier = identityIdentifier; Passwd = passwd; Phone = phone; diff --git a/src/main/java/MISConnection/Model/RegisterRequest.java b/src/main/java/MISConnection/Model/MISRegisterRequest.java similarity index 73% rename from src/main/java/MISConnection/Model/RegisterRequest.java rename to src/main/java/MISConnection/Model/MISRegisterRequest.java index 030d6fb..ae97add 100644 --- a/src/main/java/MISConnection/Model/RegisterRequest.java +++ b/src/main/java/MISConnection/Model/MISRegisterRequest.java @@ -9,7 +9,7 @@ import VMSConnection.TCPNet.Message.BaseStruct; * @Date: 16:02 2021/8/24 * @Copyright: MIN-Group;国家重大科技基础设施——未来网络北大实验室;深圳市信息论与未来网络重点实验室 */ -public class RegisterRequest extends BaseStruct { +public class MISRegisterRequest extends BaseStruct { public String IdentityIdentifier; public String Pubkey; public String Passwd; @@ -17,9 +17,9 @@ public class RegisterRequest extends BaseStruct { public String Phone; public String VerificationCode; - public RegisterRequest(String identityIdentifier, - String pubkey, String passwd, - String prikeyEncrypted, String phone, String verificationCode) { + public MISRegisterRequest(String identityIdentifier, + String pubkey, String passwd, + String prikeyEncrypted, String phone, String verificationCode) { IdentityIdentifier = identityIdentifier; Pubkey = pubkey; Passwd = passwd; diff --git a/src/main/java/MISConnection/Model/ResetPasswordRequest.java b/src/main/java/MISConnection/Model/MISResetPasswordRequest.java similarity index 71% rename from src/main/java/MISConnection/Model/ResetPasswordRequest.java rename to src/main/java/MISConnection/Model/MISResetPasswordRequest.java index 9aed1c8..db1e5dd 100644 --- a/src/main/java/MISConnection/Model/ResetPasswordRequest.java +++ b/src/main/java/MISConnection/Model/MISResetPasswordRequest.java @@ -9,7 +9,7 @@ import VMSConnection.TCPNet.Message.BaseStruct; * @Date: 16:11 2021/8/24 * @Copyright: MIN-Group;国家重大科技基础设施——未来网络北大实验室;深圳市信息论与未来网络重点实验室 */ -public class ResetPasswordRequest extends BaseStruct { +public class MISResetPasswordRequest extends BaseStruct { public String IdentityIdentifier; public String PrePasswd; public String Passwd; @@ -17,9 +17,9 @@ public class ResetPasswordRequest extends BaseStruct { public String Phone; public String VerificationCode; - public ResetPasswordRequest(String identityIdentifier, - String prePasswd, String passwd, - String prikeyEncrypted, String phone, String verificationCode) { + public MISResetPasswordRequest(String identityIdentifier, + String prePasswd, String passwd, + String prikeyEncrypted, String phone, String verificationCode) { IdentityIdentifier = identityIdentifier; PrePasswd = prePasswd; Passwd = passwd; diff --git a/src/main/java/MISConnection/Model/UploadEncryptedPrikeyRequest.java b/src/main/java/MISConnection/Model/MISUploadEncryptedPrikeyRequest.java similarity index 68% rename from src/main/java/MISConnection/Model/UploadEncryptedPrikeyRequest.java rename to src/main/java/MISConnection/Model/MISUploadEncryptedPrikeyRequest.java index 93d4f35..99bc8bd 100644 --- a/src/main/java/MISConnection/Model/UploadEncryptedPrikeyRequest.java +++ b/src/main/java/MISConnection/Model/MISUploadEncryptedPrikeyRequest.java @@ -9,16 +9,16 @@ import VMSConnection.TCPNet.Message.BaseStruct; * @Date: 16:13 2021/8/24 * @Copyright: MIN-Group;国家重大科技基础设施——未来网络北大实验室;深圳市信息论与未来网络重点实验室 */ -public class UploadEncryptedPrikeyRequest extends BaseStruct { +public class MISUploadEncryptedPrikeyRequest extends BaseStruct { public String IdentityIdentifier; public String Passwd; public String PrikeyEncrypted; public String Phone; public String VerificationCode; - public UploadEncryptedPrikeyRequest(String identityIdentifier, - String passwd, String prikeyEncrypted, - String phone, String verificationCode) { + public MISUploadEncryptedPrikeyRequest(String identityIdentifier, + String passwd, String prikeyEncrypted, + String phone, String verificationCode) { IdentityIdentifier = identityIdentifier; Passwd = passwd; PrikeyEncrypted = prikeyEncrypted; diff --git a/src/main/java/VMSConnection/BC_API.java b/src/main/java/VMSConnection/BC_API.java index 1a810c2..4e95297 100644 --- a/src/main/java/VMSConnection/BC_API.java +++ b/src/main/java/VMSConnection/BC_API.java @@ -49,7 +49,7 @@ public class BC_API { init(); } - private void init(){ + public void init(){ // 初始化keymanager this.tcpNet=new TCPNet(); this.keyManager=new BC_KeyManager(); diff --git a/src/main/java/VMSConnection/Encoding/BC_Encoder.java b/src/main/java/VMSConnection/Encoding/BC_Encoder.java index 9d307e4..7ec52aa 100644 --- a/src/main/java/VMSConnection/Encoding/BC_Encoder.java +++ b/src/main/java/VMSConnection/Encoding/BC_Encoder.java @@ -59,16 +59,30 @@ public class BC_Encoder { int length=ByteHelper.byteArrayToInt32(buf); System.out.println("read 111: "+length); // 读取真正的消息数据 - byte[] pkg=new byte[length]; - try { - int revL=channel.socket().getInputStream().read(pkg); - if(revL<0){ - System.out.println("read len < 0"); + byte[] pkg=new byte[length]; // 最终读取的数据区 + byte[] cachepkg=new byte[length]; // 缓存数据区 + int revL=0; + while (true) { + try { + // 读数据,拷进来 + int len = channel.socket().getInputStream().read(cachepkg); + if (len < 0) { + System.out.println("read len < 0"); + return null; + } + System.arraycopy(cachepkg,0,pkg,revL,len); + // 更新已读长度 + revL+=len; + // 判断要不要继续读 + if(revL >= length){ + break; + } + // 如果继续读,则更新cachepkg大小 + cachepkg=new byte[length-revL]; + } catch (IOException e) { + e.printStackTrace(); return null; } - } catch (IOException e) { - e.printStackTrace(); - return null; } System.out.println("read 222: "+new String(pkg)); return pkg; diff --git a/src/main/java/mgmt/RegisterPrefixHelper.java b/src/main/java/mgmt/RegisterPrefixHelper.java index adb8236..d80ed17 100644 --- a/src/main/java/mgmt/RegisterPrefixHelper.java +++ b/src/main/java/mgmt/RegisterPrefixHelper.java @@ -25,7 +25,7 @@ public class RegisterPrefixHelper implements IRegisterPrefixHelper { */ @Override public boolean registerPrefix(Identifier identifier, LogicFace face, KeyChain keyChain) throws MgmtException { - try { +// try { MIRController controller = MIRController.createMIRController(new LogicFaceBuilderInterface() { @Override public LogicFace LogicFaceBuilder() { @@ -56,8 +56,8 @@ public class RegisterPrefixHelper implements IRegisterPrefixHelper { }else{ throw new MgmtException("RegisterPrefixHelper.registerPrefix: "+response.msg); } - }catch (MgmtException e){ - throw new MgmtException("RegisterPrefixHelper.registerPrefix: "+e.getMessage()); - } +// }catch (MgmtException e){ +// throw new MgmtException("RegisterPrefixHelper.registerPrefix: "+e.getMessage()); +// } } } diff --git a/src/test/java/MISConnection/TestMisAPI.java b/src/test/java/MISConnection/TestMisAPI.java new file mode 100644 index 0000000..2382b9c --- /dev/null +++ b/src/test/java/MISConnection/TestMisAPI.java @@ -0,0 +1,120 @@ +package MISConnection; + +import MISConnection.Model.MISAuthenticationRequest; +import MISConnection.Model.MISGetValidIdentityRequest; +import MISConnection.Model.MISRegisterRequest; +import MISConnection.Model.MISResetPasswordRequest; +import VMSConnection.Model.VpnServerInfoRequest; +import VMSConnection.Security.BC_KeyManager; +import VMSConnection.TCPNet.Message.NetworkResponse; + +/* + * @Author: Wang Feng + * @Description: + * @Version: 1.0.0 + * @Date: 20:17 2021/7/1 + * @Copyright: MIN-Group;国家重大科技基础设施——未来网络北大实验室;深圳市信息论与未来网络重点实验室 + */ +public class TestMisAPI { +// public static void main(String[] args){ +// String pubkey="042faa5f5ea00eca6dc8df7bd4c7abcbf0a9af20d56d69b4a463bfd0750ee77d7b" + +// "9467e8815aa8e9b03106fa63cf85404a4999bcd874c7f64cf32908b2fbc37e17"; +// String base64sig="TUVZQ0lRRGZsZEw3RkRmem1lQlBNemxqbmxTVFFNeEJWU3JGUFY1Ql" + +// "BfSDZiNzhRYlFJaEFLakpYRmRRUlZvX1l6TFVZY1lrS2N6U3hpcjNIdzhodnZmT1pFY3dfcWlw"; +//// String rawSig= new String(Base64Helper.BlockChain_Base64Decode_GoLanUn(base64sig)); +//// String rawSig="MEUCIFGGCE9qnvYemzJ1y_57CPopEbC_5SVSD2euqC0gzCfPAiEA7cS" + +//// "hWuyUgrA95JuzMzTdylWUjOatgGWI68ig_IrAR5U"; +// String rawText="wefree7"; +// +// BC_KeyManager bc=new BC_KeyManager(); +// bc.SetPubkey(pubkey); +// boolean res=bc.Verify(rawText.getBytes(StandardCharsets.UTF_8),base64sig,pubkey); +// System.out.println(res); +// } + public static void main(String[] args){ +// String username="fsGXUa2ss"; + String email="2hqeDsissssahHk3s@163.com"; + int userID=1; + // 模拟客户端生成自己的公钥私钥 + BC_KeyManager bc_keyManager=new BC_KeyManager(); + bc_keyManager.GenKeyPair(); + String pubkey=bc_keyManager.GetPubkey(); + + String username="xzwtest1"; + String phone="86"+"18186152440"; +// String passwd="Xiaowei199876!"; + String passwd="5f46cb23a9ca184f58715278a688e7f6"; + + // 构造验证码请求包 + MISAuthenticationRequest request=new MISAuthenticationRequest("/"+username,phone); + try { + System.out.println("sms request: "+request.toJson()); + } catch (IllegalAccessException e) { + e.printStackTrace(); + } + + MIS_API mis_api=new MIS_API(); + mis_api.ip="192.168.3.15"; + System.out.println(mis_api.ip+mis_api.port+mis_api.sslPort); + // 手机验证码 +// NetworkResponse networkResponse=mis_api.getSMSMessage(request); +// try { +// System.out.println("获取验证码应答: "+networkResponse.toJson()); +// } catch (IllegalAccessException e) { +// e.printStackTrace(); +// } +// System.out.println(networkResponse.Code); + +//// // 注册 +// MISRegisterRequest registerRequest=new MISRegisterRequest("/"+username, +// pubkey,passwd,"hello,iamtheprikeyencrypted", +// phone,"640432"); +// try { +// System.out.println("register request: "+registerRequest.toJson()); +// } catch (IllegalAccessException e) { +// e.printStackTrace(); +// } +// +// // 获取注册应答 +// NetworkResponse networkResponse3=mis_api.registerMIS(registerRequest); +// try { +// System.out.println("获取注册应答: "+networkResponse3.toJson()); +// } catch (IllegalAccessException e) { +// e.printStackTrace(); +// } +// System.out.println(networkResponse3.Code); + +// // 获取已注册的身份信息 +// MISGetValidIdentityRequest getValidIdentityRequest=new MISGetValidIdentityRequest("/"+username, +// passwd,phone,"454308"); +// try { +// System.out.println("getidentity request: "+getValidIdentityRequest.toJson()); +// } catch (IllegalAccessException e) { +// e.printStackTrace(); +// } +// NetworkResponse networkResponse3=mis_api.getValidIdentityMIS(getValidIdentityRequest); +// try { +// System.out.println("获取身份应答: "+networkResponse3.toJson()); +// } catch (IllegalAccessException e) { +// e.printStackTrace(); +// } +// System.out.println(networkResponse3.Code); + + // 更改密码及私钥 + MISResetPasswordRequest rese=new MISResetPasswordRequest("/"+username, + passwd,"new12345", + "hello,iamtheprikeyencrypted.iamnew.",phone,"321521"); + try { + System.out.println("reset request: "+rese.toJson()); + } catch (IllegalAccessException e) { + e.printStackTrace(); + } + NetworkResponse networkResponse3=mis_api.resetPasswordMIS(rese); + try { + System.out.println("更改密码及密钥应答: "+networkResponse3.toJson()); + } catch (IllegalAccessException e) { + e.printStackTrace(); + } + System.out.println(networkResponse3.Code); + } +} diff --git a/src/test/java/mgmt/RegisterPrefixHelperTest.java b/src/test/java/mgmt/RegisterPrefixHelperTest.java index f1f90a5..75af90d 100644 --- a/src/test/java/mgmt/RegisterPrefixHelperTest.java +++ b/src/test/java/mgmt/RegisterPrefixHelperTest.java @@ -2,6 +2,8 @@ package mgmt; import component.ComponentException; import component.Identifier; +import examples.KeyManagerExample; +import examples.TestKeyManagerExample; import logicface.LogicFace; import logicface.LogicFaceException; import org.junit.Test; @@ -19,14 +21,33 @@ public class RegisterPrefixHelperTest { @Test public void registerPrefixTest() throws Exception { // 注册前缀Identifier - Identifier identifier=new Identifier("/hello/wefree"); + Identifier identifier=new Identifier("/hello/wefree"+System.currentTimeMillis()); // 初始化face LogicFace face=new LogicFace(); - face.initWithUdp("127.0.0.1",50000); +// face.initWithUdp("127.0.0.1",14922); + face.initWithUdp("14.215.134.202",14922); // 初始化KeyChain // KeyChain keyChain=new KeyChain(); RegisterPrefixHelper helper=new RegisterPrefixHelper(); - helper.registerPrefix(identifier,face,null); + KeyManagerExample.INSTANCE.initKeyChain("/wefree/test","D://"); + face.setKeyChain(KeyManagerExample.INSTANCE.getKeyChain()); + helper.registerPrefix(identifier,face,KeyManagerExample.INSTANCE.getKeyChain()); + } + + @Test + public void registerPrefixByTest() throws Exception { + // 注册前缀Identifier + Identifier identifier=new Identifier("/min/gdcni9/wefree/" + +System.currentTimeMillis()); + // 初始化face + LogicFace face=new LogicFace(); +// face.initWithTcp("14.215.134.202",14922); + face.initWithUdp("14.215.134.202",14922); + + RegisterPrefixHelper helper=new RegisterPrefixHelper(); + KeyManagerExample.INSTANCE.initKeyChain("/wefree/test","D://"); + face.setKeyChain(KeyManagerExample.INSTANCE.getKeyChain()); + face.registerIdentifier(identifier,5000,helper); } }