原创
操作卡片文件命令--写记录(UPDATE RECORD)
2008-10-20 13:25
4032
10
10
分类:
软件与OS
1、命令功能描述
写记录命令用于写记录文件的记录内容,包括两类操作,一是对原有记录的修改,二是添加新的记录。
对记录文件写操作前需要满足记录文件描述块中关于写操作的安全控制的要求。
2、命令报文格式
命令的APDU内容如下所示:
代码 值
CLA 0x00
INS 0xDC
P1 记录标识符
P2 应用控制参数
Lc DATA域的数据长度
Data 记录体
Le 不存在
其中:
* P1表示要修改的记录标识符,如果P1为0xFF表示进行添加新的记录操作。
* P2高5字节表示记录文件的SFI。
* P2的低3字节含义定义如下所示:
B1 B2 B3 含义
1 0 0 更新P1指定标识符的记录
0 0 0 更新具有P1指定标识符的第一个记录
0 0 1 更新具有P1指定标识符的最后一个记录
0 1 0 更新具有P1指定标识符的下一个记录
0 1 1 更新具有P1指定标识符的上一个记录
3、响应报文数据
响应报文数据为空。
4、响应报文状态码
此命令执行成功的状态码为0x9000。
对于异常情况,IC卡可能回送的错误码如下所示:
SW1 SW2 含义
0x65 0x81 存储区写错误,更新失败
0x67 0x00 长度错误(Lc域不存在)
0x69 0x81 命令和文件格式不相容
0x69 0x82 不满足安全状态
0x69 0x85 使用条件不满足
0x69 0x86 不满足命令执行条件(当前EF错误)
0x6A 0x81 不支持此功能
0x6A 0x82 文件没有找到
0x6A 0x83 记录没有找到
0x6A 0x84 文件内存储空间不足
0x6A 0x86 P1、P2不正确
0x6D 0x00 INS错误
0x6E 0x00 CLA错误
0x93 0x03 应用永久锁定
5、命令实现的其他要求
一次写记录操作只能够对一条记录进行更新。
6、命令实现说明
对于不同类型的记录文件,实现的手段都不相同。
实现过程中需要注意记录指针的动态维护,特别是环形记录文件逻辑位置和物理位置常常都不相符。
如果是添加文件操作,定长记录文件和变长记录文件都不能无限制的添加,需要检查记录空间的大小是否能够容纳新的记录,包括记录数据内容和记录标志位。
7、命令使用示例
(1)预设环境
假设有环形记录文件,SFI为0x06,记录长度为0x10,总记录条数为0x05。
(2)命令报文
更新第3条记录的APDU:
00 DC 03 30 10 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F 10
其中:
* 00 表示UPDATE RECORD 命令的CLA。
* DC 表示UPDATE RECORD 命令的INS。
* 03 表示UPDATE RECORD 命令的P1,即第3条记录。
* 30 表示UPDATE RECORD 命令的P2,高5字节0x06表示文件的SFI,低3字节0x00表示更新P1标识的第1条记录。
* 10 表示UPDATE RECORD 命令的Lc,即更新数据的长度。
* 0102030405060708090A0B0C0D0E0F10表示更新的数据内容。
(3)UPDATE RECORD 响应报文
卡片处理以后,UPDATE RECORD 的响应报文可以根据应用的具体情况决定。
文章评论(0条评论)
登录后参与讨论