/// <summary>
/// 初始化,转换命令为ApduCommad
/// </summary>
/// <param name="cmdData"></param>
public ApduCommand(byte[] cmdData)
{
//命令长度最少4字节
if (cmdData.Length < 4)
{
Msg = "命令长度小于4";
IsPass = false;
return;
}
//设置固定字段的值
CLA = cmdData[0];
INS = cmdData[1];
P1 = cmdData[2];
P2 = cmdData[3];
CmdNote = ApduMsgHelper.GetSendCmdNote(CLA, INS);
if (cmdData.Length == 5)
{
//只有5字节,则最后一个是LE..
LE = cmdData[4];
//LE不能大于136
if (LE > 136)
{
CmdNote += $"-LE长度超过限制{LE}-";
}
return;
}
if (cmdData.Length > 4)
{
//如果有LC,则判断Data的长度是否符合LC
if (cmdData[4] > 0)
{
LC = cmdData[4];
if (cmdData.Length < LC + 4)
{
Msg = "LC 长度错误:" + LC;
IsPass = false;
return;
}
//取出Data并赋值
Data = new byte[LC];
Array.Copy(cmdData, 5, Data, 0, LC);
}
else
{
}
}
}