SSL中的两个结构体字段由Pubkey改成Nonce

This commit is contained in:
free will
2021-07-30 10:38:56 +08:00
parent 8e33cb9894
commit bd4199d9c0
4 changed files with 31 additions and 14 deletions
+3 -3
View File
@@ -23,7 +23,7 @@ import java.util.Random;
*/
class SSL_SetupMessage extends BaseStruct {
public String Pubkey;
public String Nonce;
public String Secretkey;
}
@@ -31,7 +31,7 @@ class SSL_Message extends BaseStruct {
public int IsEncrypted=0;
public int MType=0;
public byte[] Data;
public String Pubkey="";
public String Nonce ="";
public int Code=0;
}
@@ -69,7 +69,7 @@ public class SSL {
.substring(0,16);
// 构造SSL_SetupMessage(公钥&密钥)
SSL_SetupMessage sm=new SSL_SetupMessage();
sm.Pubkey=pubKey;
sm.Nonce =pubKey;
sm.Secretkey=secretKey;
String data;
try {
@@ -171,7 +171,7 @@ public class TCPConn implements Conn{
}
mes.Data=ans;
if(this.role==1){
mes.Pubkey=this.key.GetPubkey();
mes.Nonce =this.key.GetPubkey();
}
mes.Code=200;
try {
+21 -8
View File
@@ -7,19 +7,16 @@ import VMSConnection.Security.BC_KeyManager;
import VMSConnection.TCPNet.Message.NetworkResponse;
import VMSConnection.Utils.Base64Helper;
import minsecurity.certificate.cert.CertException;
import minsecurity.certificate.cert.Certificate;
import minsecurity.crypto.AsymKeyException;
import minsecurity.identity.Identity;
import minsecurity.identity.IdentityException;
import org.bouncycastle.crypto.CryptoException;
import security.KeyChain;
import javax.crypto.BadPaddingException;
import javax.crypto.IllegalBlockSizeException;
import javax.crypto.NoSuchPaddingException;
import java.nio.charset.StandardCharsets;
import java.security.*;
import java.util.Arrays;
/*
* @Author: Wang Feng
@@ -33,7 +30,7 @@ public class VPNLoginExample {
// 身份信息保存位置
public static String identityPath="D:\\TEST\\Identitys\\";
// 用户名
public static String username="/freewill";
public static String username="freewill111";
// VMS发送来的证书的密码
public static byte[] certPasswd="123456".getBytes(StandardCharsets.UTF_8);
// 基于用户名的用户身份标识
@@ -41,7 +38,7 @@ public class VPNLoginExample {
// 注册用户的IP
public static String vms_ip="121.15.171.91";
// 注册邮箱
public static String email="2555627323s@163.com";
public static String email="2555627323s111@163.com";
/**
* 生成本地密钥,持久化存储到本地硬盘
@@ -124,12 +121,28 @@ public class VPNLoginExample {
// 2. 签名(签名用户名) & 公钥(用户本地保存的公钥)
byte[] registerSign= vpnExample.signBytes(username);
String pubKey=new String(KeyManagerExample.INSTANCE.getKeyChain().getCurrentIdentity().getPubkey()
.getBytes());
.getBytes(),StandardCharsets.UTF_8);
System.out.println("pubkey: "+pubKey);
// 测试验签
try {
boolean r=KeyManagerExample.INSTANCE.getKeyChain().getCurrentIdentity().verify(
username.getBytes(StandardCharsets.UTF_8),registerSign);
System.out.println("测试验签结果:"+r);
} catch (IdentityException | AsymKeyException e) {
e.printStackTrace();
}
boolean rr=new BC_KeyManager().Verify(username.getBytes(StandardCharsets.UTF_8),new String(registerSign),pubKey);
System.out.println("测试验签结果2"+rr);
// 3. 构造注册请求包
RegisterWithSignRequest request=new RegisterWithSignRequest(1,username,"password",
"15239970973","1234",email,"dev","",
pubKey,0,0,"1625142358",registerSign);
try {
System.out.println("register request: "+request.toJson());
} catch (IllegalAccessException e) {
e.printStackTrace();
}
// 4. 调用bc-api,进行注册
BC_API bc_api=new BC_API();
@@ -180,6 +193,6 @@ public class VPNLoginExample {
// 测试注册登录
public static void main(String[] args){
new VPNLoginExample().testRegister();
new VPNLoginExample().testLogin();
// new VPNLoginExample().testLogin();
}
}
+6 -2
View File
@@ -34,8 +34,8 @@ public class TestAPI {
// System.out.println(res);
// }
public static void main(String[] args){
String username="/frasgASJGXUa2";
String email="25SAUUKDsiahHk3s@163.com";
String username="/fssASssJGXUa2ss";
String email="25SAawhqeDsissssahHk3s@163.com";
int userID=1;
// 模拟客户端生成自己的公钥私钥
BC_KeyManager bc_keyManager=new BC_KeyManager();
@@ -65,6 +65,10 @@ public class TestAPI {
System.out.println("raw text: "+username);
// return;
// 测试验签结果
// boolean rr=new BC_KeyManager().Verify(username.getBytes(StandardCharsets.UTF_8),new String(sig),pubkey);
// System.out.println("测试验签结果2"+rr);
// 这里对sig进行一次base64编码
// sig=Base64Helper.BlockChain_Base64Encode(sig).getBytes(StandardCharsets.UTF_8);
//