49 lines
1.6 KiB
Java
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();
|
|
}
|
|
}
|
|
}
|
|
|