分类: 嵌入式
2012-12-06 14:16:20
1. 应用选择
1.1 应用选择概述
应用选择是卡片复位之后、在第一个应用功能之前执行的处理过程。
1.2 用于应用选择的IC卡数据
1.2.1 支付系统应用标识符编码
应用标识符(AID)的结构符合ISO/IEC 7816-5,包括两个部分:
1. 注册应用提供商标识符(RID)(长度为5字节),唯一地标识应用提供商,并根据ISO/IEC 7816-5分配。
2. 最长为11字节的可选域,由应用提供商定义。这个域被称为“专有应用标识符扩展码(PIX)”,可包含应用提供商定义的长度为0到11字节的值。该域的含义只对应于特定的RID,不同RID下的PIX不需要唯一。
1.2.2 支付系统环境结构
在IC卡上,支付系统环境起始于一个名为“1PAY.SYS.DDF01”的目录定义文件(DDF)。该DDF在IC卡上是否存在是可选的,但如果存在,则应遵守本规范的相关规定。如果这个DDF存在,那么这个DDF被映射到卡中的某个DF,这个DF可以是MF,也可以不是。和所有的DDF一样,该DDF也应该包含一个支付系统目录。该DDF的文件控制信息(FCI)中至少要包含第7章中对所有DDF定义的信息,另外,还可以包括语言选择(标识‘5F2D’)和发卡行代码表索引(标识‘9F11’)。
首选语言和发卡行代码表索引是可选的数据项,
1.2.3 支付系统目录编码
支付系统目录中的每一个记录都是一个结构数据对象,其值由如下所示的一个或多个目录的入口组成。
每个记录的格式参见表41:
标签 ‘70’ | 数据域长度 (L) | 标识符 ‘61’ | 目录入口1长度 | 目录入口1 (ADF或 DDF) | …… | 标识符 ‘61’ | 目录入口n 长度 | 目录入口n (ADF或DDF) |
表 41 - PSE 目录记录格式
支付系统目录中的每一个入口都是一个应用模板(标签‘61’),它包含表42或表43所示的信息。
标签 | 长度 | 值 | 存在方式 | |
‘9D’ | 5-16 | DDF名称 | M | |
‘73’ | 变长 | 目录自定义模板 | O10 | |
‘XXXX’ (第3册规定的标识符) | 变长 | 应用提供商、发卡行或IC卡供应商增加的1个或多个附加(专用)数据元。 | O |
表 42 - DDF目录入口格式
标签 | 长度 | 值 | 存在方式 | |
‘4F’ | 5-16 | ADF名称(AID) | M | |
‘50’ | 1-16 | 应用标签 | M | |
‘9F12’ | 1-16 | 应用优先名称 | O | |
‘87’ | 1 | 应用优先权标识符 | O | |
‘73’ | 变长 | 目录自定义模板 | O10 | |
‘XXXX’ (第3卷规定的标识符) | 变长 | 应用提供商、发行商或IC卡供应商增加的1个或多个附加(专用)数据元。 | O |
表 43 - ADF目录入口格式
1.3 建立候选列表
终端应该维护一个终端所支持的应用及其所对应的应用标识符(AID)列表。本节描述了两种应用选择过程。如果卡内不存在PSE,则应使用AID列表
1.3.1 终端应用与IC卡应用的匹配
终端是通过比较IC卡和其本身的应用AID来确定IC卡上的哪些应用是可用的。
在某些情况下,终端只有在IC卡上的AID和其本身的AID的长度和值都相同的时才支持此IC卡应用。这种情况限制了IC卡上至多只有一个匹配的ADF。
在另一些情况下,终端支持IC卡上AID的开始部分与完整的终端AID相同的应用。这允许IC卡可以通过给对应的AID增加唯一的信息而使多个ADF与终端应用匹配。
1.3.2 使用支付系统目录
如果终端选择支持使用支付系统目录方法进行应用选择,它应该遵循本节所描述的过程来确定卡所支持的应用。图14是如下逻辑描述的流程图。
下面是终端使用目录方法的步骤:
1. 终端通过使用选择(SELECT)命令(参见第7章)来选择文件名为‘1PAY.SYS.DDF01’的支付系统环境而开始,由此建立支付系统环境并进入初始目录。
如果卡被锁定或者选择(SELECT)命令不支持(这两种情况都会回送状态码SW1 SW2 = ‘6A81’),终端必须中断选择过程。
如果IC卡上没有PSE,那么IC卡应该对PSE的选择(SELECT)命令回送状态码‘6A82’ (文件没有找到)。在这种情况下,终端必须使用8.3.3节所描述的使用应用列表的方式。
如果PSE被锁定,IC卡应该回送状态码‘6283’。在这种情况下,终端应该使用8.3.3节所描述的使用应用列表的方式。
如果IC卡回送状态码SW1 SW2 = ‘9000’,终端则转入步骤2。
如果卡回送其他状态码SW1 SW2,终端应该使用8.3.3节所描述的使用应用列表的方式。
2. 终端使用卡片返回的FCI中的目录SFI,从目录的第1条记录开始,连续读取后续记录,直到卡回送状态码SW1 SW2 = ‘6A83’,表示所请求的记录序号已不存在 (如果读记录(READ RECORD)命令中记录号大于文件的最后一条记录号时,卡应该回送状态码‘6A83’) 。如果在执行读记录(READ RECORD)命令查找第1个记录时,卡回送状态码‘6A83’,则表示目录入口为空,转到下面的步骤6。
对于目录中的每一条记录,终端从第一个目录入口地址开始顺序执行步骤3到步骤5所描述的过程。如果记录中不包含目录入口,终端应处理下一个目录记录。
3. 如果该入口对应某一ADF,且ADF名与终端支持的一个应用相匹配(如8.3.1节定义),则将该应用列入最终应用选择的“候选列表”中。
4. 如果该入口对应一个DDF,则终端将中断当前的目录记录处理过程,使用该DDF的名称选择该DDF。新的目录将使用步骤2到步骤5的过程进行读出和处理,完成新的目录处理后,终端将回到前一个被中断的目录处理的位置继续处理下一个入口。
5. 当终端处理完成第一个目录(PSE)中最后一个记录中的所有入口后,所有能够按此方法找到的ADF就确定了,查找和产生候选列表的工作完成。如果发现了至少一个匹配的AID,终端将继续处理8.3.4节所描述的处理过程。
6. 如果步骤1到步骤5中没有发现与终端支持的应用所匹配的目录入口,终端应该使用8.3.3节所描述的使用应用列表的方式来寻找匹配的应用。
图 14 – 使用目录方法的终端逻辑
1.1.1 使用AID列表
如果卡片或终端有一方不支持PSE方法或者终端使用PSE目录没有找到匹配的应用,那么终端应使用它所支持的应用列表的方法建立候选列表。图15是如下逻辑描述的流程图。
终端执行以下步骤:
1. 终端使用其列表中的第一个AID11作为文件名发出选择(SELECT)命令。
2. 如果卡被锁定或者选择(SELECT)命令不支持导致选择(SELECT)命令失败(IC卡回送状态码SW1 SW2 = ‘6A81’), 终端将中断选择过程。
3. 如果选择(SELECT)命令执行成功(SW1 SW2 = ‘9000’或‘6283’),终端应比较AID和卡返回的FCI中的DF名。DF名应该同AID相同(包括长度),或者DF名以AID为开始并且长度大于AID。如果DF名比AID长,卡将进行部分名称选择处理。如果DF名同AID相同,终端应进入到步骤4。如果进行了部分名称选择,终端应进入步骤6。如果终端返回其它状态,应进入步骤5。
4. 如果选择(SELECT)命令成功(SW1 SW2 = ‘9000’),终端应将所选择文件的FCI信息添加到候选列表中12并进入步骤5。如果应用已锁定(SW1 SW2 = ‘6283’),终端应直接进入步骤5而不将DF名添加到候选列表。
5. 终端使用其列表中的下一个AID发出另一个选择(SELECT)命令,回到步骤3。如果列表中没有剩余的AID,那么候选列表建立完成,终端按照8.3.4节的规定进行后续处理。
6. 对应于AID列表,终端还保存了表明卡是否允许有多个应用匹配的应用选择标识。终端在选择应用时会检查该指示符。如果指示符表明只允许单个应用匹配,那么终端将不会把文件添加到候选列表,而是进入步骤7。
如果允许多应用匹配,那么部分名称匹配即可。
如果应用没有锁定(SW1 SW2 = ‘9000’),终端将会添加FCI信息到候选列表,然后进入步骤7。
如果允许多应用匹配但是应用已锁定(SW1 SW2 ≠ ‘9000’),则终端应直接进入步骤7而不将FCI信息添加到候选列表。
7. 终端使用与之前相同的命令数据,但将命令中的P2参数设置为02(“选择下一个”),重复发出选择(SELECT)命令,然后回到步骤3。
图 15 – 使用终端中的应用列表
1.1.2 最终选择
当终端确定了卡与终端共同支持的应用列表之后,就进行如下处理:
1. 如果没有共同支持的应用,交易终止。
2. 如果只有一个共同支持的应用,则终端检查该应用的应用优先级标识符的b8位。如果b8 = ‘0’,则终端选择该应用。如果b8 = ‘1’并且终端提供持卡人的确认功能,终端即请求持卡人确认。如持卡人确认,则选择该应用。如果终端不提供持卡人的确认功能,或终端请求确认而持卡人拒绝,则终端终止该交易过程。
3. 如果有多个共同支持的应用,则可以按照步骤4中的描述显示列表供持卡人选择,或者按照步骤5的描述自动完成选择。步骤4是首选的方法。
4. 如果向持卡人显示列表,则该列表应该按照级别优先的顺序排列,高优先级的应用应该在前。如果卡上没有指定应用的优先顺序,则以终端的应用优先顺序为准,如果终端也没有指定应用的优先顺序,则按照应用在卡中出现的顺序为准。如果出现多个应用有相同的优先级,或某个入口缺少应用优先级标识符的情况,也可采用类似的方法。也就是说,在这种情况下,终端可以使用自己的优先顺序,也可以按卡上应用出现的的顺序将有重复优先级或没有优先级的应用显示出来。
5. 终端可以无需持卡人的介入而直接选择应用。在这种情况下,终端从共同支持的应用列表中选择优先级别最高的应用。如果终端不提供持卡人对选择的应用确认,则那些不经过持卡人确认就不能选择的应用(应用优先级标识符的b8=‘1’)应从可选列表从删除。
一旦终端或持卡人确定了待执行的应用,则该应用应被选中。终端向该应用发出选择(SELECT)命令(按照第7章进行编码,使用建立候选列表时得到的ADF名称(如果采用目录方式)或者FCI中的DF名(如果采用应用列表方式)作为数据域)。如果命令回送的状态码SW1 SW2 ≠ ‘9000’,则此应用应该从候选列表中删除,然后回到步骤1。如果持卡人选择或确认了某个应用,而随后该应用又因为应用锁定或其它原因被从候选列表中删除,则应用不能在没有持卡人确认的情况下被选中。
在任何情况下,终端应该在适当的时候提示持卡人相关动作的完成。