sydapi-java-sge-database/src/main/java/com/sunyard/sge/database/SydSM3.java
2025-07-11 15:20:01 +08:00

49 lines
1.6 KiB
Java

package com.sunyard.sge.database;
import com.sunyard.SydApiException;
public class SydSM3 implements ISM3 {
private boolean is_finished = false;
private SydApi api;
private byte[] pcProcData;
public SydSM3(SydApi sydApi) {
this.api = sydApi;
}
public void update(byte[] pcData) {
if (is_finished) {
throw new SydApiException(0x8007);
}
if (null == pcData || 0 == pcData.length) {
pcData = new byte[0];
}
if (pcData.length > 4064) {
throw new IllegalArgumentException();
}
if (null == this.pcProcData) {
LongDataReturn<byte[], byte[]> stringStringLongDataReturn = api.SYD_SM3_Hash_LongData(pcData, 1, null);
this.pcProcData = stringStringLongDataReturn.getProcData();
} else {
LongDataReturn<byte[], byte[]> stringStringLongDataReturn = api.SYD_SM3_Hash_LongData(pcData, 2, pcProcData);
this.pcProcData = stringStringLongDataReturn.getProcData();
}
}
public byte[] digest() {
if (is_finished) {
throw new SydApiException(0x8007);
}
this.is_finished = true;
if (null == pcProcData) {
LongDataReturn<byte[], byte[]> stringStringLongDataReturn = api.SYD_SM3_Hash_LongData(new byte[0], 0, null);
return stringStringLongDataReturn.getData();
} else {
LongDataReturn<byte[], byte[]> stringStringLongDataReturn = api.SYD_SM3_Hash_LongData(new byte[0], 3, pcProcData);
return stringStringLongDataReturn.getData();
}
}
}