原创 操作卡片文件命令--创建文件(CREATE FILE)

2008-12-7 22:46 6420 9 9 分类: 软件与OS
  1、命令功能描述

    创建文件命令是在当前文件的空间内创建新的文件,包括MF文件、DF文件和EF文件,根据COS内文件结构实现的不同,创建文件命令的实现有很大的差异。

    创建文件命令执行成功以后,如果创建的是DF文件,将DF文件作为当前文件,如果创建的是EF文件,当前文件不变。如果创建失败,当前文件保存不变。

    这一命令的实现,实质上就是新文件描述块的建立和文件的注册。新文件描述块的部分内容由COS来维护填写,部分内容由外部给出。

    创建MF在卡片传输密钥的安全控制下完成,其他文件的创建都必须在当前文件的安全控制下进行。

  2、命令报文格式

    命令的APDU内容如下所示。

      代码              值
       CLA                 0x80
       INS                 0xE0
       P1                  0x00
       P2                  0x00
       Lc                  Data域字节数
       Data                文件描述符
       Le                  无

    其中,Data域包含了那些需要用户输入的文件描述块的信息,例如长度、FID等等。由于对于不同的文件有不同的信息组合,为了统一接口的格式,一般选择要求用户输入全部文件描述块。

  3、响应报文数据

    响应报文数据为空。

  4、响应报文状态码

    此命令执行成功的状态码为0x9000。
    对于异常情况,IC卡可能回送的错误码如下所示:

       SW1     SW2      含义
       0x65     0x81        内存错误
       0x67     0x00        Lc错误
       0x69     0x82        安全条件不满足
       0x69     0x85        使用条件不满足
       0x6A     0x80        数据域参数不正确
       0x6A     0x84        文件空间不足
       0x6A     0x86        P1、P2不正确
       0x6A     0x89        文件已存在,或者文件名冲突
       0x6D     0x00        INS错误
       0x6E     0x00        CLA错误

  5、命令实现的其他要求

    根据COS文件结构的不同,创建文件操作的实现过程也不尽相同。例如,如果在创建文件过程中同时还进行了其他的存储区读写操作的话,为了保证数据的完整性,在创建文件阶段所有的写操作要求安全保护等。

  6、命令实现说明

    在DF创建时,必须在父DF(创建MF除外)的DIR文件中记录响应的信息。如果是创建DDF,可以同时在新的DDF下创建DIR文件,DIR文件的SFI在MF的文件描述块中已经给出。

  7、命令使用示例

   (1)预设环境

    假设目前为白卡,进行卡片的初始化,建立MF、MF下的DIR文件和一个ADF。

   (2)命令报文

    创建MF的APDU:

    80 E0 00 00 10 3F 00 38 00 40 00 00 00 56 78 00 01 00 00 00 00

    其中:
    * 80 表示CREATE FILE命令的CLA。
    * E0 表示CREATE FILE命令的INS。
    * 00 表示CREATE FILE命令的P1。
    * 00 表示CREATE FILE命令的P2。
    * 10 表示CREATE FILE命令数据域的长度。
    * 3F00 表示MF的FID
    * 38 表示文件类型,标识是DF。
    * 00 表示文件目前状态,默认为00。
    * 4000 表示MF文件的大小,通过取卡片EEPROM区所有剩余空间的大小。
    * 0000 表示空间区指针,MF刚建立阶段,空闲指针为0。
    * 56 表示在MF下建立新的文件的安全控制条件。
    * 78 表示在MF下删除文件的安全控制条件。
    * 00 表示安全托管控制设置为本级管理。
    * 01 表示MF下DIR文件的SFI。
    * 00 表示MF对应的应用类型,是一个普通应用卡。
    * 00 表示MF是一个DDF。
    * 00 00 是保留字节。

    在MF下创建DIR文件的APDU:

    80 E0 00 00 10 3F 01 04 00 02 00 00 00 0F F0 00 00 00 00 00 00

    其中:
    * 80 表示CREATE FILE命令的CLA。
    * E0 表示CREATE FILE命令的INS。
    * 00 表示CREATE FILE命令的P1。
    * 00 表示CREATE FILE命令的P2。
    * 10 表示CREATE FILE命令数据域的长度。
    * 3F01 表示DIR的FID
    * 04 表示DIR文件类型。
    * 00 表示DIR文件目前状态,默认为0x00。
    * 0200 表示DIR文件的大小。
    * 0000 表示DIR文件的内部指针,起始值为0。
    * 0F 表示DIR文件的读取权限,通常没有限制。
    * F0 表示外部对DIR文件的修改权限,通常被禁止。
    * 00 00 00 00 00 00 是保留字节。

    在MF下创建ADF的APDU:

    80 E0 00 00 10 4F 00 38 00 10 00 00 00 12 23 00 00 01 01 00 00

    其中:
    * 80 表示CREATE FILE命令的CLA。
    * E0 表示CREATE FILE命令的INS。
    * 00 表示CREATE FILE命令的P1。
    * 00 表示CREATE FILE命令的P2。
    * 10 表示CREATE FILE命令数据域的长度。
    * 4F00 表示MF的FID
    * 38 表示文件类型,标识是DF。
    * 00 表示文件目前状态。
    * 1000 表示ADF数据空间的大小。
    * 0000 表示ADF内部空闲空间起始位置,刚建立时文件空闲起始位置为0。
    * 12 表示在ADF下建立文件的安全控制。
    * 23 表示在ADF下删除文件的安全控制。
    * 00 表示ADF的安全控制全部由本级控制。
    * 00 保留字节。
    * 01 表示ADF对应的应用类型为金融应用。
    * 01 表示该DF文件是ADF文件。
    * 00 00 是保留字节。

   (3)CREATE FILE响应报文

    卡片处理以后,CREATE FILE的响应报文为空。常见的返回状态码参考第4、。
PARTNER CONTENT

文章评论0条评论)

登录后参与讨论
EE直播间
更多
我要评论
0
9
关闭 站长推荐上一条 /3 下一条