转-操作卡片文件命令--写二进制(UPDATE BINARY)

1、命令功能描述

写二进制命令用于更新二进制文件的全部或部分内容。

每次更新内容在256Byte以内,如果需要更新超过256Byte的内容的话,需要通过多次操作完成。

对二进制文件写操作前需要满足二进制文件描述块中关于写操作的安全控制的要求。

2、命令报文格式

命令的APDU内容如下所示:

[b] 代码 值[/b]
CLA 0x00
INS 0xD6
P1 应用控制参数
P2 应用控制参数
Lc DATA域的数据长度
Data 要更新的新的数据内容
Le 不存在

其中:

* 如果P1的最高位b8为1时,b6和b7位必须为0,b5-b1位表示待更新的EF文件的SFI;这时P2表示要更新数据起始位置在文件中的偏移量。
* 如果P1的最高位为0时,P1的后7位和P2相连共同组成了一个超过256的整数,表示待更新数据块的起始位置在文件中的偏移量,可以用于超过256Byte文件的读取。
* 在DATA域中只包含要更新的纯数据内容。

3、响应报文数据

响应报文数据为空。

4、响应报文状态码

此命令执行成功的状态码为0x9000。

对于异常情况,IC卡可能回送的错误码如下所示:

[b] SW1 SW2 含义[/b]
0x65 0x81 存储区写错误,修改失败
0x67 0x00 Lc域为空
0x69 0x81 命令和文件格式不相容
0x69 0x85 命令临时锁定,使用条件不满足
0x69 0x86 不满足命令执行条件(当前EF错误)
0x6A 0x81 不支持此功能
0x6A 0x82 文件没有找到
0x6A 0x86 P1、P2不正确
0x6B 0x00 偏移地址错误
0x6D 0x00 INS错误
0x6E 0x00 CLA错误
0x93 0x03 应用永久锁定

5、命令实现的其他要求

如果卡片不支持大文件的读写操作,可以不实现超过256Byte数据操作。

为了加强安全控制,可以选择采用带MAC的命令格式,这里CLA为0x04,DATA域为该更新的新数据内容加上4Byte的MAC。

6、命令实现说明

如果支持大文件读写操作的话,对文件的写操作将通过一个命令链来完成,命令链的第一条命令中将给出文件的SFI,并且只能对小于256Byte的区域进行写操作,后续命令可以操作超过256Byte部分,不需要继续给出文件的SFI。为了实现这样的功能
,在写操作第一条命令成功执行以后,卡片需要记下操作的文件的SFI,也就是维护一个当前EF的标志。对当前EF标志最关键的地方在于不继续对该EF操作时,必须将标志清除掉。

7、命令使用示例

(1)预设环境

假设有二进制文件,SFI为0x05,总长度为0x400。

(2)命令报文

写文件前5Byte的APDU:

00 D6 05 00 05 01 02 03 04 05

其中:

* 00 表示UPDATE BINARY命令的CLA。
* D6 表示UPDATE BINARY命令的INS。
* 05 表示UPDATE BINARY命令的P1,为要更新文件的SFI。
* 00 表示UPDATE BINARY命令的P2。
* 05 表示UPDATE BINARY命令的Lc,即更新的数据长度为5Byte。
* 0102030405 表示更新以后的数据。

更新文件从0x150开始的5Byte的APDU:

00 D6 81 50 05 01 02 03 04 05

其中:

* 00 表示UPDATE BINARY命令的CLA。
* D6 表示UPDATE BINARY命令的INS。
* 81 表示UPDATE BINARY命令的P1,高位1表示P1 P2组成偏移量。
* 50 表示UPDATE BINARY命令的P2,P1、P2组成偏移量0x150。
* 05 表示UPDATE BINARY命令的Lc,即更新的数据长度为0x30Byte。
* 0102030405表示更新以后的数据。

(3)UPDATE BINARY响应报文

卡片处理以后,UPDATE BINARY的响应报文可以根据应用的具体情况决定。
转自http://blog.ednchina.com/thinkker/172042/message.aspx
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值