PBOC2.0培训课件二:应用选择、初始化、读数据

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

1.应用选择(M)
卡片的文件结构
IC 卡操作系统(COS)的文件系统是三层的物理结构,即由主控文件(MF,Master File)、专有文件(DF,Dedicated File)和基本文件(EF,Elementary File)组成一个类似于DOS的层次结构。

MF主控文件是整个文件系统的根。

通过个人化建立起来的主控文件包括文件控制参数和文件安全属性等信息。

DIR文件就一个AEF文件(亦即EF),通过Read Record命令读到
一个ADF是一个应用或者是一组应用(贷记,借记,电子现金)
EF基本文件存储了各种应用的数据和管理信息
卡片支持的应用选择方式:1.目录选择(可选) 2.AID选择(必须)
目录选择法:
在IC卡上,支付系统环境起始于一个名为“1PAY.SYS.DDF01”的目录定义文件(DDF)。

支付系统目录是一个线性EF文件,用1到10的短文件标识符(SFI)标识。

从记录号1开始读直到返回6a83,
该目录附属于DDF,目录的SFI包含在DDF的文件控制信息中。

支付系统目录中的每一个记录都是一个结构数据对象,其值由如下所示的一个或多个
目录的入口组成。

每个记录的格式:
BuildListByDDF(char *DDF)
{
选择PSE(DDF);
读取SFI
While(读SFI中的记录不返回6A83)
{
If(取tag70成功)
{
If(取tag61成功)
{
If(取到的入口是4F )
{
对比终端AID,如果一致(部分匹配或完全匹配),就加入候选列表;
}
else If(取到的入口是9D)
{
BuildListByDDF(9D的DDF值);//注意这里递归
}
}
}

实例命令:
C:00A404000E315041592E5359532E4444463031
R: 6F 15
84 0E 31 50 41 59 2E 53 59 53 2E 44 44 46 30 31
A5 03
88 01 01
90 00
C:00b2010c00
R: 70 28 61 26 4F 08 A0 00 00 03 33 01 01 01 50 0A 50 42 4F 43 20 44 45 42 49 54 9F 12 0A 50 42 4F 43 20 44 45 42 49 54 87 01 01 90 00
C:00a4040008 A0 00 00 03 33 01 01 01
R:6F 45 84 08 A0 00 00 03 33 01 01 01 A5 39 87 01 01 5F 2D 02 7A 68 50 0A 50 42 4F 43
20 44 45 42 49 54 9F 11 01 01 9F 12 0A 50 42 4F 43 20 44 45 42 49 54 9F 38 09 9F 7A 01
9F 02 06 5F 2A 02 BF 0C 05 9F 4D 02 0B 0A 90 00
AID选择法
AID=RID(5B)+PIX(最大11B)
终端按照终端应用列表中包含的每个应用都向卡片发送一个SELECT命令。

如果卡片响应表示卡也支持该应用,则终端把该应用加入到候选列表。

步骤:卡片收到终端发来选择(SELECT)命令,命令包括终端支持的应用列表中的AID。

卡片检查是否卡片中有匹配的AID 应用(卡片AID 长度可以长于终端AID,但仍然认为匹配)。

AID匹配的例子
——如果AID 匹配,卡片响应选择(SELECT)命令指明卡片支持此应用(SW1 SW2=“9000”);
——如果卡片找不到匹配的AID,卡片响应状态字SW1 SW2=“6A82”指明应用没找到;
——如果卡片锁定或不支持选择(SELECT)命令,卡片响应状态字SW1 SW2=“6A81”指明交易应被中止
——如果匹配的卡片AID 长度比终端AID 长,卡片在选择(SELECT)命令响应信息中返回完整的AID 给终端。

如果两者的AID相同,也返回完整的AID给终端。

——卡片接收终端发来的第 2 个选择(SELECT)命令,参数P2 设置为“02”表明卡片要选择有同样AID 的下一个应用;
——卡片选择下一个应用并在选择(SELECT)命令响应中提供这一应用给终端;
——当卡片不再有应用有此AID,卡片响应“6A82”表明所有匹配的应用都已经选择。

实例命令:
C:00a4040008 A0 00 00 03 33 01 01 01
R:6F 45 84 08 A0 00 00 03 33 01 01 01 A5 39 87 01 01 5F 2D 02 7A 68 50 0A 50 42 4F 43
20 44 45 42 49 54 9F 11 01 01 9F 12 0A 50 42 4F 43 20 44 45 42 49 54 9F 38 09 9F 7A 01
9F 02 06 5F 2A 02 BF 0C 05 9F 4D 02 0B 0A 90 00
C:00a4040007 A0 00 00 03 33 01 01
R:6F 45 84 08 A0 00 00 03 33 01 01 01 A5 39 87 01 01 5F 2D 02 7A 68 50 0A 50 42 4F 43
20 44 45 42 49 54 9F 11 01 01 9F 12 0A 50 42 4F 43 20 44 45 42 49 54 9F 38 09 9F 7A 01
9F 02 06 5F 2A 02 BF 0C 05 9F 4D 02 0B 0A 90 00
2.应用初始化(M)
PDOL:
9F 38 09
9F 7A 01 电子现金指示器(0-不支持1-支持)
9F 02 06 授权金额
5F 2A 02 货币代码
C:80A80000Lc 80Lc+Data
R:80 Lc+AIP(2B)+AFL(4B一组)
00a4040008A000000333010101
80 12
7C 00
08 01 02 00
10 01 04 01用于静态数据认证的记录数
20 01 03 00
28 01 01 00
90 00
3.读应用数据(M)
08 01 02 00
08 SFI
01~02
00
10 01 04 01存放认证用静态数据记录的个数
20 01 03 00
28 01 01 00
SFI+记录号范围+是否用于数据认证
静态数据认证:
第一步,
CA(认证中心)公钥+发卡行公钥证书+RSA算法= 发卡行公钥
第二步,
发卡行公钥+签名的静态应用数据+RSA算法= 数据A
数据A主要包括两部分重要的数据, 一部分我把它叫做数据A1, 另外一部分叫哈希结果A.第三步,
A1+终端在读数据阶段读到的需要参与认证的静态数据+Hash算法= 哈希结果B。

相关文档
最新文档