我有一个JavaCard,可以调用JCSystem.getAvailableMemory(MEMORY_TYPE_PERSISTENT)并从我的小程序中返回它,但如果它超过32767个字节,我想要一个确切值。
发布于 2014-01-23 18:03:01
带GP 2.2 + ETSI支持的Javac卡
如果您的卡支持Global Platform 2.2和ETSI,则可以使用GET DATA命令。
GP卡规范2.2第11.3节规定
Tag ‘FF21’: Extended Card Resources Information available for Card Content Management, as defined in ETSI TS 102 226.在ETSI 102.226 8.2.1.7.2节中:
命令执行成功后,GET DATA response data字段应按照GlobalPlatform 4中的定义进行编码。命令消息的参考控制参数P1和P2中引用的TLV编码数据对象的值为:
Length Description Value
1 Number of installed application tag '81'
1 Number of installed application length X
X Number of installed application
1 Free non volatile memory tag '82'
1 Free non volatile memory length Y
Y Free non volatile memory
1 Free volatile memory tag '83'
1 Free volatile memory length Z
Z Free volatile memory此命令响应不限于TLV值,因为它使用的是short格式,这意味着您可以检查大于32767字节的空闲内存
发布于 2011-07-29 19:09:34
通常,不可能使用标准Java card API从卡中获得确切的空闲内存大小。因为大多数Java卡甚至不支持整数,所以您可以从API方法获得的最大值是32767 (有符号短整型的上限)。
如果幸运的话,卡/OS制造商可能会提供一些专有的API方法。我见过恩智浦JCOP卡的一些专有API,但如果空闲内存超过签名短内存的上限,它们中没有一个能够获得。
https://stackoverflow.com/questions/6837079
复制相似问题