首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >OPSystem.setATRHistBytes是如何在GlobalPlatform兼容卡中工作的?

OPSystem.setATRHistBytes是如何在GlobalPlatform兼容卡中工作的?
EN

Stack Overflow用户
提问于 2020-08-24 13:30:52
回答 2查看 113关注 0票数 1

请参阅GP2.1.1API文档:

代码语言:javascript
复制
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是否强制applet是默认的-为更改ATR字节选择的?

问题2: GP是否只改变冷复位ATR?还是暖气复位的ATR也变了?

问题3:我如何接收我的卡的热重置ATR?有什么命令吗?是针对读者的吗?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2020-08-25 13:46:51

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

不,Applet需要拥有这个特权#5 (或GP v2.2中的卡重置特权,请参阅表11-7)才能更改它。它是在安装期间设置的,并使其可选。基本上,它需要在启动时被默认选择,否则它无法更改ATR历史字节。对于多用途卡来说,这可能是一个问题,尽管您可以说这是ISO 7816-4和协议的限制,而不是Java Card / Global平台。

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

默认选择的特权被重新定义为卡片重置特权,以修改历史字节。应用程序能够拒绝显式选择,例如,因为它不支持当前的卡I/O接口,并且允许(部分)选择过程通过打开继续。为了提供向后兼容性,如果未将特权授予另一个应用程序,则该特权将提供隐式可选性。必须有特权者在场。如果仅安装应用程序而不能使用相同的INSTALL命令进行选择,则无法设置卡重置特权。问题2: GP是否只改变冷复位ATR?或者热重置ATR也会改变?

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

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

一般情况下,您只需执行重置而不关机。这当然可以使用标准命令(如SCardReconnect )来完成,但我不确定其他工具。通常,您只需执行重置,对于冷重新启动,您只需删除卡,读取器,实际上,仅仅是力量。

通常,您不会期望冷的或温暖的重新启动之间会有区别,但当然可以使用不同的ATR来实现这两种情况(从有关几个Java Card芯片的专有信息中了解)。供应商通常有一种方法来设置完整的ATR,给出足够的特权和专有命令的知识。

票数 1
EN

Stack Overflow用户

发布于 2020-08-24 23:02:38

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

OPEN定位GlobalPlatform注册表中当前applet上下文的条目,并验证该应用程序是否具有默认的所选特权。

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

关于2:因为名称“历史字节”表示只更改了ATR的这一部分。其他部分,如时钟的速度,可能是不同的冷和温暖的ATR。

关于3:查看PC/SC命令SCardConnect。见SCARD_RESET_CARDSCARD_UNPOWER_CARD

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/63562074

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档