2014-06-30 35 views
-1

我目前尝试写关于JavaCard小应用程序的测试。我使用JUnit和javax.smartcardio将所有命令发送到智能卡。 但我需要打开一个安全通道才能让我的一个测试正常运行。 经过两天对文档和实验的严格审查,我无法找到打开此安全通道的方法。有人有智能卡API的线索吗?或者其他API愿意这样做?java智能卡I/O安全通道

//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); 

这是我的代码,我总是得到一个0×69为0x82答案(安全状态不被满足)

感谢

+0

请详细说明您的问题或发布您的非工作代码...解释问题出在哪里 –

+0

@AuuragSharma代码例程完成。 probeleme是我的频道是一个简单的javax.smartcardio.CardChannel –

回答

0

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

如果你只是想测试你的代码工作或没有,你可以用选择MF测试和APDU是
A0 A4 00 00 02 3F00将返回9F XX

+0

@ user2194553你验证了这一点吗? –

+0

是的,但它是送我一个6A 86 我现在发送我的研究这个http://secinfo.msi.unilim.fr/opal/ Librairie这似乎正在做我想要的 –