调整接口和测试

This commit is contained in:
Cheney Wong
2025-06-30 16:01:47 +08:00
parent f215651ad7
commit 9efe703bca
16 changed files with 1416 additions and 45 deletions
@@ -2,5 +2,6 @@ package com.sunyard.sge.database;
public interface ISM4Mac {
public void update(byte[] pcData);
public String disget();
public String digest();
public boolean checkDigest(String mac);
}
@@ -296,12 +296,14 @@ public interface SydApi {
* @param mac 输入。密文的 MAC。
* @return 明文
*/
byte[] SYD_SM4_CheckMacAndDecrypt_ShortData(
DataAndMacCheck SYD_SM4_CheckMacAndDecrypt_ShortData(
int iEncKeyIndex,
int iMacKeyIndex,
byte[] pcData,
String mac
);
List<DataAndMac> SYD_SM4_EncryptAndMac_BatchData(
int[] iEncKeyIndex,
int[] iMacKeyIndex,
@@ -798,14 +798,18 @@ public class SydApiBaseFunction implements SydApi {
return new DataAndMac(enData, mac);
}
@Override
public byte[] SYD_SM4_CheckMacAndDecrypt_ShortData(int iEncKeyIndex, int iMacKeyIndex, byte[] pcData, String mac) {
boolean ret = SYD_SM4Mac_ShortData(iMacKeyIndex, pcData, mac);
if (!ret) {
throw new SydApiException("MAC 验证不通过", 90);
}
return SYD_SM4_ShortData(iEncKeyIndex, pcData, Consts.ECB_DEC);
@Override
public DataAndMacCheck SYD_SM4_CheckMacAndDecrypt_ShortData(int iEncKeyIndex, int iMacKeyIndex, byte[] pcData, String mac) {
boolean ret = SYD_SM4Mac_ShortData(iMacKeyIndex, pcData, mac);
byte[] data = null;
try {
data = SYD_SM4_ShortData(iEncKeyIndex, pcData, Consts.ECB_DEC);
}catch (Exception e){
return new DataAndMacCheck(null, ret);
}
return new DataAndMacCheck(data, ret);
}
@Override
@@ -170,10 +170,10 @@ public class SydApiLongLinkWrap implements SydApi {
}
@Override
public byte[] SYD_SM4_CheckMacAndDecrypt_ShortData(int iEncKeyIndex, int iMacKeyIndex, byte[] pcData, String mac) {
FutureTask<byte[]> task = builder.getLongLinkWorks().fTask(new Callable<byte[]>() {
public DataAndMacCheck SYD_SM4_CheckMacAndDecrypt_ShortData(int iEncKeyIndex, int iMacKeyIndex, byte[] pcData, String mac) {
FutureTask<DataAndMacCheck> task = builder.getLongLinkWorks().fTask(new Callable<DataAndMacCheck>() {
@Override
public byte[] call() throws Exception {
public DataAndMacCheck call() throws Exception {
return builder.get().SYD_SM4_CheckMacAndDecrypt_ShortData(iEncKeyIndex, iMacKeyIndex, pcData, mac);
}
});
@@ -20,6 +20,7 @@ public class SydSM4Mac implements ISM4Mac {
this.pcProcData = null;
}
@Override
public void update(byte[] pcData) {
if (null == pcData || 0 == pcData.length) {
return;
@@ -70,7 +71,14 @@ public class SydSM4Mac implements ISM4Mac {
}
}
public String disget() {
@Override
public boolean checkDigest(String mac) {
return mac != null && this.pcMac.equals(mac);
}
@Override
public String digest() {
if (is_finished) {
throw new SydApiException(0x8007);