原创 操作卡片文件命令--写记录(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条评论)

登录后参与讨论
我要评论
0
10
关闭 站长推荐上一条 /2 下一条