90 lines
2.5 KiB
Java
90 lines
2.5 KiB
Java
package com.sunyard.sge.database;
|
|
|
|
import com.sunyard.sge.EntityCache;
|
|
|
|
import java.nio.ByteBuffer;
|
|
import java.util.ArrayList;
|
|
import java.util.Arrays;
|
|
import java.util.List;
|
|
|
|
public class SydApiSM4 {
|
|
|
|
private SydApi4Database api;
|
|
// private phHandle
|
|
byte[] pcData;
|
|
int iDataLen;
|
|
String[] pcOutData;
|
|
//多余出的字节长度
|
|
int piOutDataLen;
|
|
int key;
|
|
int endeFlag;
|
|
int ret = 0, i = 0;
|
|
int decloopnum = 0;
|
|
// int tmpdatalen = MAX_LIN * 8;
|
|
int alltmpdatalen = 0;
|
|
EntityCache entityCache = new EntityCache();
|
|
int k = 0;
|
|
byte[] bytes = new byte[k];
|
|
ByteBuffer byteBuffer;
|
|
|
|
|
|
|
|
public SydApiSM4(SydApi4Database api, int key, int endeFlag) {
|
|
this.api = api;
|
|
this.key = key;
|
|
this.endeFlag = endeFlag;
|
|
}
|
|
|
|
public byte[] update(int iKeyIndex, byte[] pcData, int iPkgNum, int iFlag) {
|
|
int plength = pcData.length;
|
|
byte[] pcDatas = pcData;
|
|
if (piOutDataLen == 0) {
|
|
if (iFlag == 1) {
|
|
if (plength < 16) {
|
|
int falg = piOutDataLen;
|
|
piOutDataLen += plength;
|
|
bytes = new byte[piOutDataLen];
|
|
System.arraycopy(pcData,0,bytes,falg,pcData.length);
|
|
throw new IllegalArgumentException();
|
|
}
|
|
int index = plength % 16;
|
|
int findex = plength - index;
|
|
if (index != 0) {
|
|
pcDatas = Arrays.copyOf(pcData, findex);
|
|
int falg = piOutDataLen;
|
|
piOutDataLen += plength-findex;
|
|
bytes = new byte[piOutDataLen];
|
|
System.arraycopy(pcData,findex,bytes,falg,plength-findex);
|
|
}
|
|
byte[] bytes = api.SYD_SM4_LongData(iKeyIndex, pcDatas, iPkgNum, iFlag);
|
|
return bytes;
|
|
} else {
|
|
|
|
}
|
|
|
|
} else {
|
|
int combinationLength = piOutDataLen+ plength;
|
|
if (iFlag==1){
|
|
if (combinationLength<16){
|
|
piOutDataLen = piOutDataLen+combinationLength;
|
|
int falg = piOutDataLen;
|
|
bytes = new byte[piOutDataLen];
|
|
|
|
throw new IllegalArgumentException();
|
|
}
|
|
}
|
|
}
|
|
|
|
|
|
// byte[] bytes = api.SYD_SM4_LongData(iKeyIndex, pcData, iPkgNum, iFlag);
|
|
|
|
return null;
|
|
}
|
|
|
|
//
|
|
// public finish(){
|
|
// api.SYD_SM4_LongData();
|
|
// }
|
|
|
|
}
|