【问题标题】:how does OPSystem.setATRHistBytes works in GlobalPlatform compatible cards?OPSystem.setATRHistBytes 如何在 GlobalPlatform 兼容卡中工作?
【发布时间】:2020-08-24 13:30:52
【问题描述】:

引自 GP2.1.1 API 文档:

setATRHistBytes
public static boolean setATRHistBytes(byte[] baBuffer,
                                      short sOffset,
                                      byte bLength)
This method sets the historical bytes of the ATR (Answer To Reset) string. The sequence of bytes will be visible on a subsequent power-up or reset.

Notes:

    This method shall not be invoked from the Applet.install() method.
    
The OPEN locates the entry of the current applet context in the Open Platform Registry and verifies that the application has the "default selected" privilege.
    The OPEN is responsible for updating the length of historical bytes in Format Character T0 of the ATR.

    Parameters:

    baBuffer - the source byte array containing the ATR historical bytes. Must be a global array.
    sOffset - offset of the ATR historical bytes within source byte array.
    bLength - the number of historical bytes.

    Returns:
    true if ATR bytes set, false otherwise.

问题 1:GP 是否强制默认选择小程序以更改 ATR Hist 字节?

问题 2:GP 是否仅更改冷重置 ATR?还是暖重置 ATR 也发生了变化?

问题 3:我如何才能收到我的卡的热重置 ATR?有什么命令吗?它是特定于读者的吗?

【问题讨论】:

    标签: smartcard javacard globalplatform


    【解决方案1】:

    关于1:我以前从未使用过这个命令,但是在阅读时:

    OPEN 在 GlobalPlatform Registry 中定位当前小程序上下文的条目,并 验证应用程序是否具有默认选定权限。

    我认为任何兼容的实现都必须以这种方式处理它。是否有理由不相信这一点,或者您是否问大多数供应商是否忽略了这一点?由于历史部分包含与默认选择的应用程序相关的信息(例如,卡有 MF、如何读取 EF.DR、默认应用程序的 AID、发行者所在的国家/地区……),因此检查此权限是有意义的。这在今天可能不适用于多应用智能卡世界。

    关于 2:正如名称“历史字节”所示,只有 ATR 的这一部分被更改。时钟速度等其他部分可能在冷 ATR 和暖 ATR 之间有所不同。

    关于3:查看PC/SC命令SCardConnect。请参阅SCARD_RESET_CARDSCARD_UNPOWER_CARD

    【讨论】:

      【解决方案2】:

      问题 1:GP 是否强制默认选择小程序以更改 ATR Hist 字节?

      不,Applet 需要具有此权限#5(或“GP v2.2 中的“Card Reset 权限,请参见表 11-7”)才能更改它。它是在安装期间设置的 [并使 Selectable] . 基本上开机时需要默认选择, 否则不能改变ATR历史字节. 对于多用途卡这可能是个问题, 虽然你可以说这是ISO 7816-4和协议的限制而不是比 Java Card / 全球平台。

      全球平台规范 v2.2 的 2 个片段:

      Default Selected 权限被重新定义为 Card Reset 权限以修改历史字节。应用程序能够拒绝显式选择,例如因为它不支持当前的卡 I/O 接口,并允许通过 OPEN 进行的(部分)选择过程继续进行。为了提供向后兼容性,如果该权限尚未授予另一个应用程序,则该权限会赋予隐式可选择性。

      需要权限的存在。如果一个应用程序只是被安装并且不能通过相同的INSTALL 命令选择,则不能设置卡重置权限。

      问题 2:GP 是否只更改 Cold Reset ATR?还是暖重置 ATR 也会发生变化?

      通常两者都会更改,并且大多数平台至少会将它们初始化为相同的值。注意只有历史字节被改变,这通常表示卡的类型,而不是通信参数(速度、超时值等)

      问题 3:我如何才能收到我的卡的热重置 ATR?有什么命令吗?它是特定于读者的吗?

      通常您只需执行重置而不关闭电源。这当然可以使用诸如SCardReconnect 之类的标准命令来完成,但我不确定其他工具。通常,您只需执行重置,而对于冷重启,您只需移除卡、读卡器,或者实际上只是移除电源。

      通常您不会期望冷重启或热重启之间有区别,但当然可以为两者使用不同的 ATR(从有关几种 Java Card 芯片的专有信息中了解)。供应商通常有一种设置完整 ATR 的方法,只要有足够的权限和专有命令知识。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-11-20
        • 2011-04-16
        • 2011-09-30
        • 1970-01-01
        • 2020-07-11
        相关资源
        最近更新 更多