我尝试使用Windows Phone 8.1中新的Windows.Devices.SmartCards命名空间从智能卡中提取ATR(我使用的是Silverlight)。
我正在调用方法GetAnswerToResetAsync,这会响应一个COM对象,它转换为一个14字节的数组(在我的例子中)。我们使用Android的开发人员使用名为GetHistoricalBytes的东西,这会产生20个难题的ATR。
是否有其他人有过使用此方法的经验,并且有人知道我们应该从中获得哪些信息。我还期望有效载荷要大得多,所以也许我寻求的信息不在这个电话中。我查看了GetIdAsync,但是用卡响应并不支持此功能。
答案 0 :(得分:0)
Android + getHistoricalBytes()表明您使用的是非接触式智能卡(ISO / IEC 14443 Type A)。通过非接触式接口,智能卡没有ATR(因为没有像接触界面那样的重置过程)。相反,当读卡器以防冲突序列选择卡时,卡具有ATS(选择答案)。 ATS和ATR具有结构相似性,但不传达相同的信息。
您在Windows上获得的ATR取决于您访问该卡的方式:
如果您通过联系人界面访问该卡,您将获得该卡的真实ATR。根据卡的不同,您可以通过读取基本文件EF.ATR在非接触式界面上查询相同的信息。
如果通过非接触式接口访问该卡,您可能会获得由PC / SC层生成的模拟ATR。对于ISO / IEC 14443-4 A类非接触式智能卡,模拟ATR应包含从字节4开始的ATS的历史字节。(您可以在PC / SC规范的第3部分中找到映射的描述)