配合网联接口

This commit is contained in:
yihzhou
2023-11-13 15:31:29 +08:00
parent 62598e0c89
commit ffd19acbfc
4 changed files with 398 additions and 1 deletions
@@ -170,6 +170,99 @@ public class SydApi4j implements SydApi {
return r;
}
public RetWrap SYD_SM2GenKeyPair(String userId, int nKeyType) {
ProtoQN proto = new ProtoQN();
String sk = "999999999999999999999999999";
if (userId != null) {
sk = SYMUtil.genPrivateKeyMark(userId, nKeyType == 0 ? "000" : "001", "00000001");
}
HashMap<String, Object> packet = new HashMap();
HashMap<String, Object> data = new HashMap();
packet.put("data", data);
PacketSN sn = PacketSN.gen();
packet.put("header", sn.getSn().array());
data.put("sk", sk);
// data.put("startTime", "20220101");
SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMdd");
Date dt = new Date();
String startTime = sdf.format(dt);
data.put("startTime", startTime);
data.put("endTime", "20990101");
ByteBuffer bb = proto.rend(packet);
synchronized (this) {
bb = this.syncRead(this.syncSend(bb));
}
Packet p = proto.parse(bb);
Map<String, Object> ret = p.toMap();
if (!Arrays.equals(sn.getSn().array(), ((PacketSection) ret.get("header")).getBytes())) {
throw new SydApiException("包序号不匹配", -4);
} else {
ret = (Map) ret.get("data");
PacketSection error = (PacketSection) ret.get("error");
byte[] be = error.getBytes();
if ((be[0] ^ be[1]) != 0) {
throw new SydApiException(error.getInfo(), error.autoInt());
} else {
String pkv = ((PacketSection) ret.get("pk")).getString();
String skv = ((PacketSection) ret.get("sk")).getString();
RetWrap r = new RetWrap();
r.put("publicKey", "03420004" + pkv);
r.put("privateKey", skv);
return r;
}
}
}
public RetWrap SYD_RSAGenKeyPair(String userId, int nKeyType) {
ProtoGN proto = new ProtoGN();
String sk = "999999999999999999999999999";
if (userId != null) {
sk = SYMUtil.genPrivateKeyMark(userId, nKeyType == 0 ? "000" : "001", "00000001");
}
HashMap<String, Object> packet = new HashMap();
HashMap<String, Object> data = new HashMap();
packet.put("data", data);
PacketSN sn = PacketSN.gen();
packet.put("header", sn.getSn().array());
data.put("sk", sk);
// data.put("startTime", "20220101");
SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMdd");
Date dt = new Date();
String startTime = sdf.format(dt);
data.put("startTime", startTime);
data.put("endTime", "20990101");
ByteBuffer bb = proto.rend(packet);
synchronized (this) {
bb = this.syncRead(this.syncSend(bb));
}
Packet p = proto.parse(bb);
Map<String, Object> ret = p.toMap();
if (!Arrays.equals(sn.getSn().array(), ((PacketSection) ret.get("header")).getBytes())) {
throw new SydApiException("包序号不匹配", -4);
} else {
ret = (Map) ret.get("data");
PacketSection error = (PacketSection) ret.get("error");
byte[] be = error.getBytes();
if ((be[0] ^ be[1]) != 0) {
throw new SydApiException(error.getInfo(), error.autoInt());
} else {
//String pkv = ((PacketSection) ret.get("pk")).getString();
byte[] pkv = ((PacketSection) ret.get("pk")).getBytes();
String skv = ((PacketSection) ret.get("sk")).getString();
RetWrap r = new RetWrap();
// r.put("publicKey", "03420004" + pkv);
r.put("publicKey", Util.bytes2HexString(pkv));
r.put("privateKey", skv);
return r;
}
}
}
@Override
public String SYD_SM2_Get_Id_PublicKey_HA(
String pUserID,