我正在尝试将数据文件从 JC 2.2.2 卡发送到主机应用程序。所有文件都小于 256 字节。但是数据需要加密和签名(用于安全消息传递),如下所示。将 MAC 添加到加密数据后,某些文件的长度会超过 256 个字节。但是我使用的是扩展长度,所以我认为一次发送超过 256 个字节不会有问题。如果生成的密码加 MAC 小于 256 字节,则程序运行良好。下面是一段将响应 apdu 发送到主机的代码。
Util.arrayCopyNonAtomic(file, offset, buffer, (short)0, file.length);
respLength = secureCrypto.wrapResponseAPDU(ssc, apdu, buffOfset, file.length);
apdu.setOutgoing();
apdu.setOutgoingLength(respLength); // 0x6F00 error occurs during the execution of this line
apdu.sendBytesLong(buffer, (short)0, respLength);
卡详情:
Terminal found : 2
PC/SC terminal OMNIKEY CardMan 5x21 0
PC/SC terminal OMNIKEY CardMan 5x21-CL 0
ATR: 13 bytes
Card Info : PC/SC card in OMNIKEY CardMan 5x21-CL 0, protocol T=1, state OK
在主机端,我收到 0x6F00 错误代码。并且我跟踪了程序,发现错误发生在apdu.setOutgoingLenght(respLength)的执行过程中。此外,我的小程序类实现了 ExtendedLength 接口。请提供任何有用的信息