java smartCard I / O安全通道

时间:2014-06-30 08:35:20

标签: java smartcard

我目前尝试编写有关JavaCard applet的测试。我使用JUnit和javax.smartcardio将我的所有命令发送到smartCard。 但我需要打开一个安全通道才能使我的测试之一正常运行。 经过两天对文档和实验的重新研究,我无法找到打开此安全通道的方法。有没有人对smartcardio API有所了解?还是其他愿意这样做的API?

//TODO: need secure channel
    byte[] header = {(byte)0x02, (byte)0x01, (byte)0x01}; //tag + length
    ByteArrayOutputStream outputStream = new ByteArrayOutputStream();
    outputStream.write(header);
    outputStream.write(Value.SN.getBytes());
    byte[] excpectedRes = outputStream.toByteArray();
    // not a secure channel at all
    ResponseAPDU answer = channel.transmit(new CommandAPDU(0x84, 0xCA, 0x02, 0x01, Value.Emptydata));
    nameTest = "Test Select Serial number " + answer.toString();
    CheckSW(0x90, 00, answer);
    CheckResult(excpectedRes, result);

这是我的代码,我总是得到0x69 0x82答案(安全状态不满意)

由于

1 个答案:

答案 0 :(得分:0)

这里的问题是您正在尝试发送需要身份验证的Get Data命令,这意味着您应该在使用Get data命令之前运行initialize updateexternal authenticate

如果您只是想测试代码是否正常工作,可以选择MF进行测试,APDU是 A0 A4 00 00 02 3F00将返回9F XX