a7firm/src/sega/a7/TraceDataInfoRead.java

34 lines
1.4 KiB
Java

package sega.a7;
import javacard.framework.Util;
import javacard.security.MessageDigest;
public class TraceDataInfoRead extends AuthCommand {
private static final short RECV_PACKET_SIZE = 46;
private static final byte AUTH_LEVEL = 2;
private static final short PARAM_SIZE = 62;
public TraceDataInfoRead(short cmd, AppData data, MakePacket packet, MessageDigest sha1, HmacSha1 hmacSha1,
Crypt crypt) {
super(cmd, RECV_PACKET_SIZE, PARAM_SIZE, AUTH_LEVEL, data, packet, sha1, hmacSha1, crypt);
}
public short core(byte[] data, short dataOffset, short dataLength) {
byte[] ee_traceDataInfo = this.m_ee_data.getTraceDataInfo_ee();
byte[] ramD_encTraceDataInfo = this.m_ee_data.getGeneralBuffer_ramD();
if (ramD_encTraceDataInfo.length < ee_traceDataInfo.length)
return AppConfig.A7_FAIL;
short ramD_encSize = encData(ee_traceDataInfo, (short) 0, (short) ee_traceDataInfo.length,
ramD_encTraceDataInfo, (short) 0);
if (ee_traceDataInfo.length > (short) ramD_encSize)
return AppConfig.A7_FAIL;
this.m_ramD_outDataInfo[0] = 0;
this.m_ramD_outDataInfo[1] = ramD_encSize;
Util.arrayCopyNonAtomic(ramD_encTraceDataInfo, this.m_ramD_outDataInfo[0], this.m_ramD_outData,
this.m_ramD_outDataInfo[0], this.m_ramD_outDataInfo[1]);
return AppConfig.A7_SUCCESS;
}
}