调整接口和测试
This commit is contained in:
@@ -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);
|
||||
|
||||
Reference in New Issue
Block a user