首页 > 代码库 > 社保系列2——文件系统
社保系列2——文件系统
卡片允许在可用空间内建立自己的文件系统。支持多层目录结构。在同层目录中文件不能有相同的ID(标识符)。
数据文件中数据元以记录方式或二进制方式存储,文件结构及引用方式由文件的用途决定。除目录文件外,数据文件的内容和布局在《社会保障(个人)卡规范》第6部分:应用数据结构中说明,也可由发卡方补充定义。
1. 文件类型
三种专用文件(DF)类型:
? MF:根目录,是整个文件系统的根,同属应用环境类。MF下可以有EF(基本文件)、SF(安全文件)、DDF(目录文件)、ADF(应用文件);
? DDF:目录文件,用于定义一个应用环境,它是应用的集合。DDF下可以有ADF、子DDF、EF、SF、公钥文件和私钥文件等结构。
? ADF:应用文件,用于定义具体应用。ADF下可以有EF、SF、公钥文件和私钥文件。
一个AEF包含有一个或多个原始BER-TLV数据对象(记录结构的AEF),或一个非结构化的纯数据元(透明结构的AEF)。在选择了某一应用后,AEF既能通过其文件标识符进行查询,也可以通过其短文件标识符(SFI)进行查询。记录结构的AEF具有如下属性:记录的长度是固定的或是可变的;记录的组织结构是线形结构或循环结构。
四种基本文件(EF)类型:
? 透明文件:文件数据是通过连续空间中的字节地址进行存取。
? 记录文件:数据以固定长度格式记录在文件中,文件内最多可以容纳255条记录。以明文方式存取时,最大记录长度可以为255个字节。记录文件有以下几种形式:
1) 线性定长记录文件:同一文件内的所有记录都是等长度的。
2) 线性变长记录文件:同一文件内的每个记录的长度可以不相等。
3) 循环定长记录文件:同一文件内的所有记录都是等长度的。支持对文件中的记录循环存取。
? 交易文件:该类文件为特定格式文件。通过交易命令对这类文件进行操作。 交易文件有以下几种形式:
1) 个人帐户文件:完成帐户划入和医疗消费交易。执行帐户划入交易前须提交用户口令。适用于社保环境。
2) 电子存折文件:完成圈存、消费等交易。执行交易命令前须提交用户口令。适用于金融环境。
3) 电子钱包文件:完成圈存和消费交易。执行圈存交易前须提交用户口令。适用于金融环境。
? 安全文件类型(SF):
1) 安全文件:该文件只能写入不能读出。文件内可存放密钥或口令。
2. 文件查询
依照其类型,文件可以通过文件名、文件标识符或SFI进行查询。
1) 文件名查询:卡中的任何ADF或DDF可通过其DF名查询,ADF的DF名对应其AID,每个DF名在给定的卡中应是唯一的。
2) 文件标识符查询:卡中的任何ADF、DDF或AEF可通过其文件标识符查询,每个DF的文件标识符在给定的卡中应是唯一的,AEF的文件标识符在一个给定的应用中必须是唯一的。
3) SFI查询:SFI用于选择AEF。对给定应用中的任何AEF,可以通过SFI(5位代码,取值范围从1~30)查询。SFI的编码在每个用到它的命令中描述。 在一个给定的应用中SFI应是唯一的。专用SFI的使用由应用决定。
3. 目录文件
社会保障系统目录文件是一个线性文件,用5到15的短文件标识符(SFI)标识。该目录文件附属于DDF,目录文件的SFI包含在DDF文件控制信息中。目录文件可以使用“READRECORD”命令进行读取。目录文件中一个记录可以包含几个入口地址,但一个入口地址不能跨越多个记录存储。社会保障系统目录文件的每一个入口地址都是一个应用模板(61标记)。
在IC卡中社会保障系统外的其他目录是可选的,且不限制它们存在的数量。其中每个目录的位置由包括在每个DDF中的FCI的目录SFI数据对象指定。如果不存在目录文件,则认为社会保障卡中包含了《社会保障(个人)卡规范》所定义的所有应用。
DDF目录入口地址格式如下:
标志 | 长度 | 值 | 存在状态 |
‘4F’ | 5-16 | DDF名称 | M |
ADF目录入口地址格式如下:
标志 | 长度 | 值 | 存在状态 |
‘4F’ | 5-16 | ADF名称(AID) | M |
‘50’ | 1-16 | 应用标签 | M |
终端可以通过使用社保环境目录文件来确定卡片所支持的应用。终端正确使用社保目录文件的步骤如下:
1) 终端进入社会保障系统环境后,如果目录文件不存在,转至步骤5);如果目录文件存在,则进入目录文件。
2) 终端从第一条记录开始,连续读目录中的所有记录,直到卡返回‘6A83’,表示所需记录序号已不存在。在执行“READ RECORD”命令查找第一个记录时,如果卡回送SW1 SW2=‘6A83’,则表示目录为空,转至步骤5)。
3) 如果目录中某个ADF名与终端支持的一个应用名相符,则将该应用列入最终应用选择的“候选名单”中。
4) 如果目录中出现一个指向DDF的入口地址,且该DDF的名称至少与一个终端所支持的AID的前几位匹配(例如:一个名为D156123456的DDF可与一个名为D15612345678的AID匹配),则终端选择该DDF。使用所选DDF的文件控制信息(FCI)中的目录短文件标识符(SFI)读出目录并按步骤3处理,之后终端继续回到上一个目录处理。
5) 当终端处理完社会保障系统环境目录的列表后,所有能够按此方式找到的ADF就确定了,查找完毕。
6) 终端也可以采用其他方式寻找卡内其他的专用应用(例如用AID找出本地特有的或非社会保障应用的专用选择方式),但不在本规范范围之内。