一种终端和智能卡协商选择应用的方法和装置制造方法

文档序号:6632092阅读:181来源:国知局
一种终端和智能卡协商选择应用的方法和装置制造方法
【专利摘要】本发明公开一种终端和智能卡协商选择应用的方法及装置,该方法包括:终端获取短文件标识,初始化当前记录号;根据短文件标识和当前记录号发送读记录指令,接收第二应答数据,若第二应答数据中的应用目录文件与预设的应用序列号匹配,则更新应用候选列表;终端获取应用序列号列表中的第一个应用序列号作为当前应用序列号;根据当前应用序列号发送第二选择指令,接收第三应答数据,若第三应答数据中的专用文件名与当前应用序列号匹配,则更新应用候选列表,终端在应用候选列表中获取一个应用的信息,发送第四选择指令,接收第五应答数据,若第五应答数据符合第一预设要求,则选择应用成功,保存所述第五应答数据中的处理选项数据对象列表,结束。
【专利说明】一种终端和智能卡协商选择应用的方法和装置

【技术领域】
[0001]本发明涉及信息安全领域,尤其涉及一种终端和智能卡协商选择应用的方法和装置。

【背景技术】
[0002]应用是终端与智能卡进行交互的前提,应用定义了终端与智能卡交互过程中所需要的数据、步骤、安全策略以及结果成功与失败的准则,因此在终端与智能卡进行交互之前需要选择应用。随着智能卡技术的发展,智能卡的类型也越来越多,但终端不能预知智能卡的类型,导致终端和智能卡难以协商选择应用。


【发明内容】

[0003]本发明的目的是为了克服现有技术的不足,提供一种终端和智能卡协商选择应用的方法和装置,既支持终端和智能卡根据目录选择功能协商选择应用,也支持终端和智能卡根据应用序列号列表选择功能协商选择应用,兼容性好,易于维护。
[0004]本发明提供一种终端和智能卡协商选择应用的方法,包括:
[0005]步骤S1:所述终端获取所述智能卡中的短文件标识,初始化应用候选列表和当前记录号;
[0006]步骤S2:所述终端根据所述短文件标识和当前记录号向所述智能卡发送读记录指令,接收所述智能卡根据所述读记录指令返回的第二应答数据,根据所述第二应答数据判断是否已读取完所述智能卡中的记录,是则执行步骤S3,否则执行步骤S4 ;
[0007]步骤S3:所述终端判断所述应用候选列表是否为空,是则执行步骤S5,否则执行步骤S8 ;
[0008]步骤S4:所述终端判断所述第二应答数据中的应用目录文件与预设的应用序列号列表中的应用序列号是否匹配,是则根据所述第二应答数据中的应用信息更新所述应用候选列表,更新当前记录号,返回步骤S2,否则更新当前记录号,返回步骤S2 ;
[0009]步骤S5:所述终端获取预设的应用序列号列表中的第一个应用序列号作为当前应用序列号;
[0010]步骤S6:所述终端根据当前应用序列号向智能卡发送第二选择指令,接收所述智能卡根据所述第二选择指令返回的第三应答数据,判断所述第三应答数据中的专用文件名是否与当前应用序列号匹配,是则根据所述第三应答数据更新所述应用候选列表,执行步骤S7,否则执行步骤S7;
[0011]步骤S7:所述终端判断所述应用序列号列表中的当前应用序列号之后是否存在应用序列号,是则更新当前应用序列号,返回步骤S6,否则执行步骤S8 ;
[0012]步骤S8:所述终端根据所述应用候选列表判断是否与所述智能卡有共同支持的应用,是则执行步骤S9,否则结束;
[0013]步骤S9:所述终端按照预设规则选择一个应用,再根据确定的应用在所述应用候选列表中获取所述应用的信息,根据获取到的信息中的应用序列号,向所述智能卡发送第四选择指令,接收所述智能卡根据所述第四选择指令返回的第五应答数据,判断所述第五应答数据是否符合第一预设要求,是则选择应用成功,保存所述第五应答数据中的处理选项数据对象列表,结束流程,否则在所述应用候选列表中删除获取到的所述应用的信息,返回步骤S8。
[0014]本发明又提供一种终端和智能卡协商选择应用的方法,包括:
[0015]步骤S1:所述终端初始化应用候选列表,获取预设的应用序列号列表中的第一个应用序列号作为当前应用序列号;
[0016]步骤S2:所述终端根据当前应用序列号向智能卡发送第二选择指令,接收所述智能卡根据所述第二选择指令返回的第三应答数据,判断所述第三应答数据中的专用文件名是否与当前应用序列号匹配,是则根据所述第三应答数据更新所述应用候选列表,执行步骤S3,否则执行步骤S3;
[0017]步骤S3:所述终端判断所述应用序列号列表中的当前应用序列号之后是否存在应用序列号,是则更新当前应用序列号,返回步骤S2,否则执行步骤S4 ;
[0018]步骤S4:所述终端判断所述应用候选列表是否为空,是则执行步骤S5,否则执行步骤S9 ;
[0019]步骤S5:所述终端获取所述智能卡中的短文件标识,初始化当前记录号;
[0020]步骤S6:所述终端根据所述短文件标识和当前记录号向所述智能卡发送读记录指令,接收智能卡根据所述读记录指令返回的第二应答数据,根据所述第二应答数据判断是否已读取完所述智能卡中的记录,是则执行步骤S8,否则执行步骤S7 ;
[0021]步骤S7:所述终端判断所述第二应答数据中的应用目录文件与预设的应用序列号列表中的应用序列号是否匹配,是则根据所述第二应答数据中的应用信息更新所述应用候选列表,更新当前记录号,返回步骤S6,否则更新当前记录号,返回步骤S6 ;
[0022]步骤S8:所述终端根据所述应用候选列表判断是否与所述智能卡有共同支持的应用,是则执行步骤S9,否则结束;
[0023]步骤S9:所述终端按照预设规则选择一个应用,再根据确定的应用在所述应用候选列表中获取所述应用的信息,根据获取到的信息中的应用序列号,向所述智能卡发送第四选择指令,接收所述智能卡根据所述第四选择指令返回的第五应答数据,判断所述第五应答数据是否符合第一预设要求,是则选择应用成功,保存所述第五应答数据中的处理选项数据对象列表,结束流程,否则在应用候选列表中删除获取到的所述应用的信息,返回步骤S8。
[0024]本发明又提供一种终端和智能卡协商选择应用的装置,包括:第一初始模块、发送模块、接收模块、第一判断模块、第二判断模块、第三判断模块、第一更新模块、第二初始模块、第四判断模块、第五判断模块、第十判断模块、第一获取模块、第六判断模块、存储模块和删除模块;
[0025]所述第一初始模块,用于获取所述智能卡中的短文件标识,初始化应用候选列表和当前记录号;
[0026]所述发送模块,用于根据所述第一初始模块获取的所述短文件标识和当前记录号向所述智能卡发送读记录指令;还用于根据当前应用序列号向所述智能卡发送第二选择指令;还用于根据获取到的应用序列号,向所述智能卡发送第四选择指令;
[0027]所述接收模块,用于接收所述智能卡根据所述发送模块发送的所述读记录指令返回的第二应答数据;还用于接收所述智能卡根据所述发送模块发送的所述第二选择指令返回的第三应答数据;还用于接收所述智能卡根据所述发送模块发送的所述第四选择指令返回的第五应答数据;
[0028]所述第一判断模块,用于根据所述接收模块接收到的所述第二应答数据判断是否已读取完所述智能卡中的记录;
[0029]所述第二判断模块,用于在所述第一判断模块判断为是时,判断所述应用候选列表是否为空;
[0030]所述第三判断模块,用于在所述第一判断模块判断为否时,判断所述接收模块接收到的所述第二应答数据中的应用目录文件与预设的应用序列号列表中的应用序列号是否匹配;
[0031]所述第一更新模块,用于在所述第三判断模块判断为是时,根据所述接收模块接收到的所述第二应答数据中的应用信息更新所述应用候选列表,更新当前记录号;还用于在所述第三判断模块判断为否时,更新当前记录号;
[0032]所述第二初始模块,用于在所述第二判断模块判断为是时,获取预设的应用序列号列表中的第一个应用序列号作为当前应用序列号;
[0033]所述第四判断模块,用于判断所述接收模块接收到的所述第三应答数据中的专用文件名是否与当前应用序列号匹配;
[0034]所述第一更新模块,还用于在所述第四判断模块判断为是时,根据所述接收模块接收到的所述第三应答数据更新所述应用候选列表;
[0035]所述第五判断模块,用于在所述第四判断模块判断为否,或者所述第一更新模块根据所述第三应答数据更新所述应用候选列表后,判断所述应用序列号列表中的当前应用序列号之后是否存在应用序列号,是则更新当前应用序列号;
[0036]所述第十判断模块,用于根据所述应用候选列表判断是否与所述智能卡有共同支持的应用;
[0037]所述第一获取模块,用于在所述第八判断模块判断为是时,按照预设规则选择一个应用,再根据确定的应用在所述应用候选列表中获取所述应用的信息;
[0038]所述第六判断模块,用于判断所述接收模块接收到的所述第五应答数据是否符合第一预设要求;
[0039]所述存储模块,用于在所述第六判断模块判断为是时,保存所述接收模块接收到的所述第五应答数据中的处理选项数据对象列表;
[0040]所述删除模块,用于在所述第六判断模块判断为否时,在所述应用候选列表中删除获取到的所述应用的信息。
[0041]本发明与现有技术相比,具有以下优点:
[0042]本发明提供的一种终端和智能卡协商选择应用的方法和装置,既支持终端和智能卡根据目录选择功能协商选择应用,也支持终端和智能卡根据应用序列号列表选择功能协商选择应用,兼容性好;对于多应用的智能卡,若智能卡中增加一个应用,相应地,终端中只需在应用序列号列表中增加该应用的序列号即可,升级快,不需要修改终端内核,易于维护。

【专利附图】

【附图说明】
[0043]图1是本发明实施例1提供的一种终端和智能卡协商选择应用的方法的流程图;
[0044]图2至图4是本发明实施例2提供的一种终端和智能卡协商选择应用的方法的流程图;
[0045]图5是本发明实施例3提供的一种终端和智能卡协商选择应用的方法的流程图;
[0046]图6至图8是本发明实施例4提供的一种终端和智能卡协商选择应用的方法的流程图;
[0047]图9是本发明实施例5提供的一种终端和智能卡协商选择应用的装置的模块图。

【具体实施方式】
[0048]下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
[0049]本方法应用于包括认证设备、客户端与认证中心的系统中。
[0050]实施例1
[0051]本发明的实施例1提供了一种终端和智能卡协商选择应用的方法,如图1所示,包括:
[0052]步骤S1:终端获取智能卡中的短文件标识,初始化应用候选列表和当前记录号;
[0053]步骤S2:终端根据短文件标识和当前记录号向智能卡发送读记录指令,接收智能卡根据读记录指令返回的第二应答数据,根据第二应答数据判断是否已读取完智能卡中的记录,是则执行步骤S3,否则执行步骤S4 ;
[0054]步骤S3:终端判断应用候选列表是否为空,是则执行步骤S5,否则执行步骤S9 ;
[0055]步骤S4:终端判断第二应答数据中的应用目录文件与预设的应用序列号列表中的应用序列号是否匹配,是则根据第二应答数据中的应用信息更新应用候选列表,更新当前记录号,返回步骤S2,否则更新当前记录号,返回步骤S2 ;
[0056]步骤S5:终端获取预设的应用序列号列表中的第一个应用序列号作为当前应用序列号;
[0057]步骤S6:终端根据当前应用序列号向智能卡发送第二选择指令,接收智能卡根据第二选择指令返回的第三应答数据,判断第三应答数据中的专用文件名是否与当前应用序列号匹配,是则根据第三应答数据更新应用候选列表,执行步骤S7,否则执行步骤S7 ;
[0058]步骤S7:终端判断应用序列号列表中的当前应用序列号之后是否存在应用序列号,是则更新当前应用序列号,返回步骤S6,否则执行步骤S8 ;
[0059]步骤S8:终端根据应用候选列表判断是否与智能卡有共同支持的应用,是则执行步骤S9,否则结束;
[0060]步骤S9:终端按照预设规则选择一个应用,再根据确定的应用在应用候选列表中获取应用的信息,根据获取到的信息中的应用序列号,向智能卡发送第四选择指令,接收智能卡根据第四选择指令返回的第五应答数据,判断第五应答数据是否符合第一预设要求,是则选择应用成功,保存第五应答数据中的处理选项数据对象列表,结束流程,否则在应用候选列表中删除获取到的应用的信息,返回步骤S8。
[0061]实施例2
[0062]本发明的实施例2提供了一种终端和智能卡协商选择应用的方法,如图2至图4所示,包括:
[0063]步骤101:终端根据预设的专用文件名向智能卡发送第一选择指令;
[0064]例如,第一选择指令为:00A4 04 00 OE 31 50 41 59 2E 53 59 53 2E 44 4446 30 31 ;其中,31 50 41 59 2E 53 59 53 2E 44 44 46 30 31 为预设的 DF(DedicatedFile,专用文件)名;
[0065]步骤102:终端接收智能卡根据第一选择指令返回的第一应答数据,根据第一应答数据判断智能卡是否被锁定或不支持该指令,是则选择应用失败,结束,否则执行步骤103 ;
[0066]具体地,终端判断第一应答数据是否为0x6A81,是则确定智能卡被锁定或不支持该指令,否则确定智能卡未被锁定且支持该指令;
[0067]步骤103:终端判断第一应答数据是否符合第二预设要求,是则执行步骤104,否则执行步骤116 ;
[0068]具体地,终端判断第一应答数据中是否存在0x9000且数据格式正确,是则确定第一应答数据符合第二预设要求,否则确定第一应答数据不符合第二预设要求;
[0069]本实施例中,第一应答数据不符合第二预设要求包括:智能卡没有目录选择功能,智能卡中的目录选择功能被锁定,第一应答数据中的文件控制信息格式错误,第一应答数据中缺少必要的数据;例如,必要的数据包括以0x6F、0x84、0xA5或0x88为标签的数据;
[0070]例如,本实施例中,第一应答数据为:6F 2F 84 OE 31 50 41 59 2E 53 59 53 2E44 44 46 30 31 A5 ID 88 01 01 5F 2D 08 65 73 65 6E 66 72 64 65 9F 11 01 01 BFOC 08 85 06 12 34 56 78 9A BC 90 00 ;其中,最后2个字节为0x9000,确定第一应答数据正确;第一应答数据中,0x6F为文件控制信息模板的标签,0x2F为文件控制信息模板的长度,0x84为DF名的标签,其后的一个字节OxOE为DF名的长度,其后的31 50 41 59 2E53 59 53 2E 44 44 46 30 31 为 DF (Dedicated File,专用文件)名的内容,0xA5 为文件控制信息的标签,其后的一个字节OxlD为文件控制信息的长度,其后的88 01 01 5F 2D08 65 73 65 6E 66 72 64 65 9F 11 01 01 BF OC 08 85 06 12 34 56 78 9A BC 为文件控制信息的内容,其中0x88为SFI(Short File Identifier,短文件标识)的标签,其后的一个字节0x01为SFI名的长度,其后的0x01为SFI的值,9F 11为发行方代码表索引的标签,其后的一个字节0x01为发行方代码表索引的长度,其后的0x01为发行方代码表索引的值;
[0071]步骤104:终端初始化应用候选列表;
[0072]具体地,终端初始化应用候选列表为清空应用候选列表;
[0073]步骤105:终端判断第一应答数据中是否存在正确的短文件标识,是则初始化当前记录号,执行步骤106,否则执行步骤116 ;
[0074]具体地,终端判断第一应答数据中是否存在第一标签值,不存在则确定第一应答数据中不存在SFI (Short File Identifier,短文件标识),存在则确定第一应答数据中存在SFI,获取第一标签值之后的SFI的值,继续判断获取到的SFI的值是否在第一范围内,是则确定第一应答数据中存在正确的SFI,否则确定第一应答数据中不存在正确的SFI ;优选地,当前记录号的初始值为I;
[0075]例如,第一标签值为0x88,第一范围为0x01至OxOA ;获取0x88之后的SFI的值为0x01,则SFI在第一范围内;
[0076]步骤106:终端根据短文件标识和当前记录号向智能卡发送读记录指令;
[0077]例如,终端根据SFI和当前记录号向智能卡发送第一读记录指令00 B2 01 OC00,智能卡根据第一读记录指令返回的数据为6C 57,终端从该数据中得到记录长度0x57,终端再根据SFI和记录长度向智能卡发送第二读记录指令00 B2 01 OC 57;
[0078]步骤107:终端接收智能卡根据读记录指令返回的第二应答数据,根据第二应答数据判断是否已读取完智能卡中的记录,是则执行步骤108,否则执行步骤109 ;
[0079]具体地,终端判断第二应答数据是否为0x6A83,是则已读取完智能卡中的记录,否则未读取完智能卡中的记录;
[0080]步骤108:终端判断应用候选列表是否为空,是则执行步骤116,否则执行步骤129 ;
[0081]步骤109:终端判断第二应答数据是否符合第三预设要求,是则执行步骤110,否则初始化应用候选列表,执行步骤116 ;
[0082]具体地,终端判断第二应答数据中是否存在0x9000且数据格式正确,是则确定第二应答数据符合第三预设要求,否则确定第二应答数据不符合第三预设要求;
[0083]本实施例中,第二应答数据不符合第三预设要求包括:第二应答数据格式错误,缺少应用目录名、应用标签等;
[0084]例如,本实施例中,第二应答数据为:70 55 61 14 4F 07 AO 00 00 00 99 90 9050 06 4E 4F 4E 45 4D 56 87 01 81 61 28 4F 07 AO 00 00 00 03 10 10 50 OA 56 49
5341 43 52 45 44 49 54 87 01 82 9F 12 OD 43 52 45 44 49 54 4F 44 45 56 49 5341 61 13 4F 08 AO 00 00 00 03 10 10 03 50 04 41 50 50 33 87 01 03 90 00,其中,最后2个字节为0x9000,确定第二应答数据正确;
[0085]步骤110:终端判断第二应答数据中是否存在入口标识,是则执行步骤111,否则更新当前记录号,返回步骤106 ;
[0086]具体地,终端判断第一应答数据中是否存在第二标签值,是则确定第二应答数据中存在入口标识,否则确定第二应答数据中不存在入口标识;
[0087]例如,入口标识即第二标签值为0x61 ;
[0088]步骤111:终端获取第二应答数据中的第一个入口标识作为当前入口标识;
[0089]例如,终端在第二应答数据中从前向后查找第二标签值0x61,在第3个字节查找到0x61,则将第3个字节的0x61作为当前入口标识;该入口标识与下一个入口标识之间的数据为该入口标识的应用信息;
[0090]例如,当前入口标识,即第3个字节的0x61之后的应用信息为:14 4F 07 AO 00
0000 99 90 90 50 06 4E 4F 4E 45 4D 56 87 01 81,其中,0x14 为该应用信息的长度,0x4F为ADF(Applicat1n Directory File,应用目录文件)的标签,其后的一个字节0x07为ADF名的长度,其后的AO 00 00 00 99 90 90为ADF的内容,0x50为应用标签的标签,其后的一个字节0x06为应用标签的长度,其后的4E 4F 4E 45 4D 56为应用标签的内容,0x87为应用优先级指示符的标签,其后的一个字节0x01为应用优先级指示符的长度,其后的0x87为应用优先级指示符的内容,该应用信息中无应用优先名;
[0091]步骤112:终端判断当前入口标识之后的应用目录文件与预设的应用序列号列表中的应用序列号是否完整匹配,是则根据当前入口标识之后的应用信息更新应用候选列表,执行步骤115,否则执行步骤113 ;
[0092]具体地,终端判断是否能够在预设的应用序列号列表中查找到与当前入口标识之后的ADF完全相同的应用序列号,是则确定当前入口标识之后中的ADF与应用序列号列表中的应用序列号完整匹配,否则确定当前入口标识之后中的ADF不与应用序列号列表中的应用序列号完整匹配;更新应用候选列表为:终端将当前入口标识之后的应用信息中的应用标签、应用优先级指示符、应用优先名和ADF即应用序列号存储到应用候选列表中;
[0093]例如,本实施例中,更新应用候选列表为:终端将4F 07 A0 00 00 00 99 90 9050 06 4E 4F 4E 45 4D 56 87 01 81添加到应用候选列表中;
[0094]本实施例中,更新应用候选列表之前还可以包括:初始化应用候选列表;
[0095]步骤113:终端根据预设的应用序列号列表中与当前入口标识之后的应用目录文件对应的应用选择指示器,判断是否允许当前入口标识之后的应用目录文件与应用序列号列表中的应用序列号部分匹配,是则执行步骤114,否则执行步骤115 ;
[0096]步骤114:终端判断当前入口标识之后的应用目录文件与应用序列号列表中的应用序列号是否部分匹配,是则根据当前入口标识之后的应用信息更新应用候选列表,执行步骤115,否则直接执行步骤115 ;
[0097]具体地,终端判断是否能够在应用序列号列表中查找到与当前入口标识之后的ADF的预设部分相同的应用序列号,是则确定当前入口标识之后的ADF与应用序列号列表中的应用序列号部分匹配,否则确定当前入口标识之后的ADF不与应用序列号列表中的应用序列号部分匹配;例如,ADF的预设部分为ADF的前7个字节,若当前入口标识之后的ADF为A0 00 00 00 03 10 10 03,应用序列号列表中的应用序列号为A0 00 00 00 03 1010,则确定当前入口标识之后的ADF与应用序列号列表中的应用序列号部分匹配;更新应用候选列表为:终端将当前入口标识之后的应用信息中的应用标签、应用优先级指示符、应用优先名和ADF即应用序列号存储到应用候选列表中;
[0098]本实施例中,更新应用候选列表之前还可以包括:初始化应用候选列表;
[0099]步骤115:终端判断当前入口标识之后是否还存在入口标识,是则更新当前入口标识,返回步骤112,否则更新当前记录号,返回步骤106 ;
[0100]具体地,终端在当前入口标识后查找第二标签值,判断是否能够查找到第二标签值,是则确定当前入口标识之后还存在入口标识,否则确定当前入口标识之后不存在入口标识;更新当前入口标识为将当前入口标识的后一个入口标识作为当前入口标识;优选地,更新当前记录号为将当前记录号自加1;
[0101]例如,本实施例中,第二应答数据中还包括2个入口标识,分别为:
[0102]第25个字节为0x61,该入口标识之后的应用信息为:28 4F 07 A0 00 00 00 0310 10 50 0A 56 49 53 41 43 52 45 44 49 54 87 01 82 9F 12 0D 43 52 45 44 49 544F 44 45 56 49 53 41 ;其中,0x28为该应用信息的长度,0x4F为ADF的标签,其后的一个字节0x07为ADF名的长度,其后的AO 00 00 00 03 10 10为ADF的内容,0x50为应用标签的标签,其后的一个字节OxOA为应用标签的长度,其后的56 49 53 41 43 52 45 44 4954为应用标签的内容,0x87为应用优先级指示符的标签,其后的一个字节0x01为应用优先级指示符的长度,其后的0x82为应用优先级指示符的内容,9F 12为应用优先名的标签,其后的一个字节OxOD为应用优先名的长度,其后的43 52 45 44 49 54 4F 44 45 56 49 5341为应用优先名的内容;
[0103]第67个字节为0x61,该入口标识之后的应用信息为:13 4F 08 AO 00 00 00 0310 10 03 50 04 41 50 50 33 87 01 03,其中,0x13为该应用信息的长度,0x4F为ADF的标签,其后的一个字节0x08为ADF名的长度,其后的AO 00 00 00 03 10 10 03为ADF的内容,0x50为应用标签的标签,其后的一个字节0x04为应用标签的长度,其后的41 50 5033为应用标签的内容,0x87为应用优先级指示符的标签,其后的一个字节0x01为应用优先级指示符的长度,其后的03为应用优先级指示符的内容,该应用信息中无应用优先名;
[0104]步骤116:终端初始化应用候选列表,获取预设的应用序列号列表中的第一个应用序列号作为当前应用序列号;
[0105]例如,当前应用序列号为AO 00 00 00 03 10 10;
[0106]步骤117:终端根据当前应用序列号向智能卡发送第二选择指令;
[0107]例如,第二选择指令为00 A4 04 00 07 AO 00 00 00 03 10 10 ;
[0108]步骤118:终端接收智能卡根据第二选择指令返回的第三应答数据,判断第三应答数据是否符合第五预设要求,是则执行步骤119,否则执行步骤127 ;
[0109]具体地,终端判断第三应答数据中是否存在0x9000且数据格式正确,是则确定第三应答数据符合第五预设要求,否则确定第三应答数据不符合第五预设要求;
[0110]本实施例中,第三应答数据不符合第五预设要求包括:状态码不为0x9000或0x6283,文件控制信息格式错误;第三应答数据中缺少必要的数据;例如,必要的数据包括以0x6F、0x84、0xA5为标签的数据;
[0111]例如,本实施例中,第三应答数据为6F 32 84 07 AO 00 00 00 03 10 10 A5 2787 01 01 9F 38 12 9F IA 02 9F 33 03 9F 40 05 9F IB 04 9F 09 02 9F 35 01 5F 2D08 65 73 65 6E 66 72 64 65 9F 11 01 01 90 00 ;其中,最后 2 个字节为 0x9000,确定第三应答数据正确;0x84为DF名的标签,其后的一个字节0x07为DF名的长度,其后的AO 00
0000 03 10 10为DF名的内容,其后的一个字节0xA5为文件控制信息的标签,0x27为文件控制信息的长度,其后的 87 01 01 9F 38 12 9F IA 02 9F 33 03 9F 40 05 9F IB 049F 09 02 9F 35 01 5F 2D 08 65 73 65 6E 66 72 64 65 9F 11 01 01 为文件控制信息的内容;
[0112]步骤119:终端判断第三应答数据中的专用文件名是否与当前应用序列号完全匹配,是则执行步骤120,否则执行步骤121 ;
[0113]例如,本实施例中,DF名与当前应用序列号均为AO 00 00 00 03 10 10,则DF名与当前应用序列号完全匹配,执行步骤121 ;
[0114]若第三应答数据为6F 33 84 08 AO 00 00 00 03 10 10 00 A5 27 87 01 01 9F38 12 9F IA 02 9F 33 03 9F 40 05 9F IB 04 9F 09 02 9F 35 01 5F 2D 08 65 73 656E 66 72 64 65 9F 11 Ol 01 90 00 ;其中,0x84为DF名的标签,其后的一个字节0x08为DF名的长度,其后的AO 00 00 00 03 10 10 00为DF名的内容,其后的一个字节0xA5为文件控制信息的标签,0x27为文件控制信息的长度,其后的87 01 01 9F 38 12 9F IA
029F 33 03 9F 40 05 9F IB 04 9F 09 02 9F 35 01 5F 2D 08 65 73 65 6E 66 72 6465 9F 11 01 01为文件控制信息的内容,则DF名与当前应用序列号不完全匹配,执行步骤122 ;
[0115]步骤120:终端根据第三应答数据判断应用是否被锁定,是则执行步骤127,否则根据第三应答数据中的文件控制信息更新应用候选列表,执行步骤127 ;
[0116]具体地,终端判断第三应答数据是否为0x6283,是则确定应用被锁定,否则确定应用未被锁定;更新应用候选列表为:终端将文件控制信息中的应用标签、应用优先级指示符和第三应答数据中的DF名即应用序列号存储到应用候选列表中;
[0117]例如,第三应答数据中的文件控制信息为87 01 01 9F 38 12 9F IA 02 9F 33
039F 40 05 9F IB 04 9F 09 02 9F 35 01 5F 2D 08 65 73 65 6E 66 72 64 65 9F 11
0101,其中,0x87为应用优先级指示符的标签,其后的一个字节0x01为应用优先级指示符的长度,其后的0x01为应用优先级指示符的内容,9F 38为TOOL (Processing Opt1ns DataObject List,处理选项数据对象列表)的标签,其后的一个字节0x12为TOOL的长度,其后的 9F IA 02 9F 33 03 9F 40 05 9F IB 04 9F 09 02 9F 35 01 为 PDOL 的内容,9F 11 为发行方代码表索引的标签,其后的一个字节0x01为发行方代码表索引的长度,其后的0x01为发行方代码表索引的值;更新应用候选列表为:终端将84 08 AO 00 00 00 03 10 10
0087 01 01添加到应用候选列表中;
[0118]本实施例中,更新应用候选列表之前还可以包括:初始化应用候选列表;
[0119]步骤121:终端根据预设的应用序列号列表中与当前应用序列号对应的应用选择指示器,判断是否允许第三应答数据中的专用文件名与当前应用序列号部分匹配,是则执行步骤122,否则执行步骤127 ;
[0120]步骤122:终端判断第三应答数据中的专用文件名与当前应用序列号是否部分匹配,是则执行步骤123,否则执行步骤127 ;
[0121]具体地,终端判断第三应答数据中的专用文件名的预设部分与当前应用序列号是否相同,是则确定专用文件名与当前应用序列号部分匹配,否则确定专用文件名不与当前应用序列号部分匹配;例如,专用文件名的预设部分为专用文件名的前7个字节,若专用文件名为AO 00 00 00 03 10 10 00,当前应用序列号为AO 00 00 00 03 10 10,则确定专用文件名与当前应用序列号部分匹配;
[0122]步骤123:终端根据第三应答数据判断应用是否被锁定,是则执行步骤124,否则根据第三应答数据中的文件控制信息更新应用候选列表,执行步骤124 ;
[0123]具体地,终端判断第三应答数据是否为0x6283,是则确定应用被锁定,否则确定应用未被锁定;
[0124]具体地,更新应用候选列表为:终端将文件控制信息中的应用标签、应用优先级指示符和第三应答数据中的DF名存储到应用候选列表中;其中,DF名作为应用序列号进行存储;
[0125]例如,第三应答数据中的文件控制信息为87 01 01 9F 38 12 9F IA 02 9F 33039F 40 05 9F IB 04 9F 09 02 9F 35 01 5F 2D 08 65 73 65 6E 66 72 64 65 9F 11
0101,其中,0x87为应用优先级指示符的标签,其后的一个字节0x01为应用优先级指示符的长度,其后的0x01为应用优先级指示符的内容,9F 38为TOOL (Processing Opt1ns DataObject List,处理选项数据对象列表)的标签,其后的一个字节0x12为TOOL的长度,其后的 9F IA 02 9F 33 03 9F 40 05 9F IB 04 9F 09 02 9F 35 01 为 PDOL 的内容,9F 11 为发行方代码表索引的标签,其后的一个字节0x01为发行方代码表索引的长度,其后的0x01为发行方代码表索引的值;更新应用候选列表为:终端将84 08 AO 00 00 00 03 10 1000 87 01 01添加到应用候选列表中;
[0126]本实施例中,更新应用候选列表之前还可以包括:初始化应用候选列表;
[0127]步骤124:终端根据当前应用序列号向智能卡发送第三选择指令,接收智能卡根据第三选择指令返回的第四应答数据;
[0128]例如,第三选择指令为00 A4 04 02 07 AO 00 00 00 03 10 10,
[0129]步骤125:终端判断第四应答数据是否符合第四预设要求,是则执行步骤126,否则执行步骤127 ;
[0130]步骤126:终端根据第四应答数据判断应用是否被锁定,是则返回步骤124,否则根据第四应答数据中的文件控制信息更新应用候选列表,返回步骤124 ;
[0131]具体地,终端判断第四应答数据是否为0x6283,是则确定应用被锁定,否则确定应用未被锁定;更新应用候选列表为:终端将文件控制信息中的应用标签、应用优先级指示符和第四应答数据中的DF名存储到应用候选列表中;其中,DF名作为应用序列号进行存储;
[0132]例如,第四应答数据为6F 33 84 08 AO 00 00 00 03 10 10 01 A5 27 87 01 019F 38 12 9F IA 02 9F 33 03 9F 40 05 9F IB 04 9F 09 02 9F 35 01 5F 2D 08 65 73
656E 66 72 64 65 9F 11 01 01 90 00,其中,0x84为DF名的标签,其后的一个字节0x08为DF名的长度,其后的AO 00 00 00 03 10 10 01为DF名的内容,其后的一个字节0xA5为文件控制信息的标签,0x27为文件控制信息的长度,其后的87 01 01 9F 38 12 9F IA 029F 33 03 9F 40 05 9F IB 04 9F 09 02 9F 35 01 5F 2D 08 65 73 65 6E 66 72 64 659F 11 01 01为文件控制信息的内容,其中,0x87为应用优先级指示符的标签,其后的一个字节0x01为应用优先级指示符的长度,其后的0x01为应用优先级指示符的内容,9F 38为PDOL (Processing Opt1ns Data Object List,处理选项数据对象列表)的标签,其后的一个字节0x12 为 PDOL 的长度,其后的 9F IA 02 9F 33 03 9F 40 05 9F IB 04 9F 09 02 9F35 01为TOOL的内容,9F 11为发行方代码表索引的标签,其后的一个字节0x01为发行方代码表索引的长度,其后的0x01为发行方代码表索引的值;更新应用候选列表为:终端将84 08 AO 00 00 00 03 10 10 01 87 01 01添加到应用候选列表中;
[0133]本实施例中,更新应用候选列表之前还可以包括:初始化应用候选列表;
[0134]步骤127:终端判断应用序列号列表中的当前应用序列号之后是否存在应用序列号,是则更新当前应用序列号,返回步骤117,否则执行步骤128 ;
[0135]步骤128:终端根据应用候选列表判断是否与智能卡有共同支持的应用,是则执行步骤129,否则结束;
[0136]具体地,终端判断应用候选列表中是否存储有应用信息,是则确定与智能卡有共同支持的应用,否则确定与智能卡没有共同支持的应用;
[0137]例如,应用候选列表为:4F07 AO 00 00 00 99 90 90 50 06 4E 4F 4E 45 4D56 87 01 81 4F 07 AO 00 00 00 03 10 10 50 OA 56 49 53 41 43 52 45 44 49 54 87
0182 9F 12 OD 43 52 45 44 49 54 4F 44 45 56 49 53 41 4F 08 AO 00 00 00 03 1010 03 50 04 41 50 50 33 87 01 03 ;该应用候选列表中包括3个应用的应用信息,分别为:第一个应用 4F 07 AO 00 00 00 99 90 90 50 06 4E 4F 4E 45 4D 56 87 01 81,第二个应用 4F 07 AO 00 00 00 03 10 10 50 OA 56 49 53 41 43 52 45 44 49 54 87 01 829F 12 OD 43 52 45 44 49 54 4F 44 45 56 49 53 41,第三个应用 4F 08 AO 00 00 0003 10 10 03 50 04 41 50 50 33 87 01 03 ;
[0138]步骤129:终端判断是否仅有一个与智能卡有共同支持或相互支持的应用,是则执行步骤130,否则执行步骤133 ;
[0139]步骤130:终端根据应用候选列表中的应用优先级指示符,判断该应用是否需要用户进行确认,是则执行步骤131,否则选择该应用,执行步骤137 ;
[0140]具体地,终端判断应用优先级指示符是否符合第一预设格式,是则确定该应用需要用户进行确认,否则确定该应用不需要用户进行确认;
[0141]优选地,第一预设格式为应用优先级指示符的最高位为I ;
[0142]例如,第一个应用的应用优先级指示符为0x81,应用优先级指示符的最高位为1,则确定该应用需要用户进行确认;第二个应用的应用优先级指示符为0x82,应用优先级指示符的最高位为1,则确定该应用需要用户进行确认;第三个应用的应用优先级指示符为0x03,应用优先级指示符的最高位不为1,则确定该应用不需要用户进行确认;
[0143]步骤131:终端判断是否支持用户确认,是则执行步骤132,否则结束;
[0144]步骤132:终端显示该应用,判断是否在预设时间内接收到触发,是则选择该应用,执行步骤137,否则结束;
[0145]步骤133:终端显示应用候选列表;
[0146]具体地,若应用优先级指示符存在且应用的优先级不同,则以应用优先级指示符优先级从高到低显示应用候选列表;若应用优先级指示符存在且应用的优先级相同,则以自定义优先顺序或智能卡给出的优先顺序显示应用候选列表;若应用优先级指示符不存在的应用,则以自定义优先顺序或智能卡给出的优先顺序显示应用候选列表;
[0147]例如,第一个应用的应用优先级指示符为0x81,第二个应用的应用优先级指示符为0x82,第三个应用的应用优先级指示符为0x03,则先显示第一个应用的应用信息,再显示第二个应用的应用信息,最后显示第三个应用的应用信息;第一个应用的应用标签为4E4F 4E 45 4D 56,则显示NONEMV ;第二个应用的应用标签为56 49 53 41 43 52 45 44 4954,应用优先名为43 52 45 44 49 54 4F 44 45 56 49 53 41,由于发行方代码表索引的值为0x01,则终端不显示应用标签,显示应用优先名,即显示CREDITODEVISA ;第三个应用的应用标签为41 50 50 33,则显示APP3;
[0148]步骤134:终端判断是否支持用户确认,是则执行步骤135,否则执行步骤136 ;
[0149]步骤135:终端判断是否在预设时间内接收到触发,是则根据触发选择对应的应用,执行步骤137,否则结束;
[0150]步骤136:终端根据应用优先级指示符,选择不需要用户进行确认的应用中优先级最闻的应用,执行步骤137 ;
[0151]优选地,不需要用户进行确认的应用的应用优先级指示符的最高位为O ;
[0152]例如,本实施例中,第三个应用的应用优先级指示符为03,应用优先级指示符的最高位为0,则确定该应用不需要用户进行确认;
[0153]该步骤还包括,终端删除应用候选列表中需要用户进行确认的应用;
[0154]优选地,终端删除应用优先级指示符为第一预设格式的应用;
[0155]步骤137:终端根据与选择的应用对应的应用序列号,向智能卡发送第四选择指令;
[0156]例如,本实施例中,用户选择第一个应用,则终端获取与用户选择的应用对应的应用序列号,即应用序列号为AO 00 00 00 99 90 90 ;则第四选择指令为00 A4 04 00 07 AO
0000 00 99 90 90 ;
[0157]步骤138:终端接收智能卡根据第四选择指令返回的第五应答数据,判断第五应答数据是否正确,是则执行步骤139,否则在应用候选列表中删除选择的应用,返回步骤128 ;
[0158]例如,第五应答数据为6F 3A 84 07 AO 00 00 00 99 90 90 A5 2F 50 06 4E 4F4E 45 4D 56 87 01 81 9F 38 12 9F IA 02 9F 33 03 9F 40 05 9F IB 04 9F 09 02 9F35 01 5F 2D 08 65 73 65 6E 66 72 64 65 9F 11 01 01 90 00,其中,最后 2 个字节为0x9000,确定第五应答数据正确;0x84为DF名的标签,其后的一个字节0x07为DF名的长度,其后的AO 00 00 00 99 90 90为DF名的内容,其后的一个字节0xA5为文件控制信息的标签,0x2F为文件控制信息的长度,其后的50 06 4E 4F 4E 45 4D 56 87 01 81 9F 38
129F IA 02 9F 33 03 9F 40 05 9F IB 04 9F 09 02 9F 35 01 5F 2D 08 65 73 65 6E
6672 64 65 9F 11 01 01的内容,其中,0x50为应用标签的标签,其后的一个字节0x06为应用标签的长度,其后的4E 4F 4E 45 4D 56为应用标签的内容,0x87为应用优先级指示符的标签,其后的一个字节0x01为应用优先级指示符的长度,其后的0x81为应用优先级指示符的内容,9F 38为TOOL的标签,其后的一个字节0x12为TOOL的长度,其后的9F IA 029F 33 03 9F 40 05 9F IB 04 9F 09 02 9F 35 01 为 PDOL 的内容;
[0159]步骤139:终端判断第四选择指令中的应用序列号是否与第五应答数据中的专用文件名完全匹配,是则选择应用成功,保存第五应答数据中的处理选项数据对象列表,结束流程,否则在应用候选列表中删除选择的应用,返回步骤128 ;
[0160]例如,第四选择指令中的AID与第五应答数据中的DF名均为AO 00 00 00 99 9090,则终端保存第五应答数据中的TOOL:9F IA 02 9F 33 03 9F 40 05 9F IB 04 9F 09
029F 35 01,应用选择结束;
[0161]本实施例中,若终端选择应用成功,则终端和智能卡分别设置相同的应用作为当前应用,即当前应用为第四选择指令中的应用序列号对应的应用。
[0162]本实施例中提供的一种终端和智能卡协商选择应用的方法,既支持终端和智能卡根据目录选择功能协商选择应用,也支持终端和智能卡根据应用序列号列表选择功能协商选择应用,兼容性好;对于多应用的智能卡,若智能卡中增加一个应用,相应地,终端中只需在应用序列号列表中增加该应用的序列号即可,升级快,不需要修改终端内核,易于维护。
[0163]实施例3
[0164]本发明的实施例3提供了一种终端和智能卡协商选择应用的方法,如图5所示,包括:
[0165]步骤s1:终端初始化应用候选列表,获取预设的应用序列号列表中的第一个应用序列号作为当前应用序列号;
[0166]步骤s2:终端根据当前应用序列号向智能卡发送第二选择指令,接收智能卡根据第二选择指令返回的第三应答数据,判断第三应答数据中的专用文件名是否与当前应用序列号匹配,是则根据第三应答数据更新应用候选列表,执行步骤s3,否则执行步骤s3 ;
[0167]步骤s3:终端判断应用序列号列表中的当前应用序列号之后是否存在应用序列号,是则更新当前应用序列号,返回步骤s2,否则执行步骤s4 ;
[0168]步骤s4:终端判断应用候选列表是否为空,是则执行步骤s5,否则执行步骤s9 ;
[0169]步骤s5:终端获取智能卡中的短文件标识,初始化当前记录号;
[0170]步骤s6:终端根据短文件标识和当前记录号向智能卡发送读记录指令,接收智能卡根据读记录指令返回的第二应答数据,根据第二应答数据判断是否已读取完智能卡中的记录,是则执行步骤s8,否则执行步骤s7 ;
[0171]步骤s7:终端判断第二应答数据中的应用目录文件与预设的应用序列号列表中的应用序列号是否匹配,是则根据第二应答数据中的应用信息更新应用候选列表,更新当前记录号,返回步骤s6,否则更新当前记录号,返回步骤s6 ;
[0172]步骤s8:终端根据应用候选列表判断是否与智能卡有共同支持的应用,是则执行步骤s9,否则结束;
[0173]步骤s9:终端选择一个应用,再根据确定的应用在应用候选列表中获取应用的信息,根据获取到的信息中的应用序列号,向智能卡发送第四选择指令,接收智能卡根据第四选择指令返回的第五应答数据,判断第五应答数据是否符合第一预设要求,是则选择应用成功,保存第五应答数据中的处理选项数据对象列表,结束流程,否则在应用候选列表中删除获取到的应用的信息,返回步骤s8。
[0174]实施例4
[0175]本发明的实施例4提供了一种终端和智能卡协商选择应用的方法,如图6至图8所示,包括:
[0176]步骤201:终端初始化应用候选列表,获取预设的应用序列号列表中的第一个应用序列号作为当前应用序列号;
[0177]例如,当前应用序列号为A0 00 00 00 03 10 10;
[0178]步骤202:终端根据当前应用序列号向智能卡发送第二选择指令;
[0179]例如,第二选择指令为00 A4 04 00 07 A0 00 00 00 03 10 10 ;
[0180]步骤203:终端接收智能卡根据第二选择指令返回的第三应答数据,根据第三应答数据判断智能卡是否被锁定或不支持指令,是则选择应用失败,结束,否则执行步骤204 ;
[0181]具体地,终端判断第三应答数据是否为0x6A81,是则确定智能卡是否被锁定或不支持,否则确定智能卡未被锁定且支持指令;
[0182]步骤204:终端判断第三应答数据是否符合第五预设要求,是则执行步骤205,否则执行步骤213 ;
[0183]具体地,终端判断第三应答数据中是否存在0x9000且数据格式正确,是则确定第三应答数据符合第五预设要求,否则确定第三应答数据不符合第五预设要求;
[0184]本实施例中,第三应答数据不符合第五预设要求包括:状态码不为0x9000或0x6283,文件控制信息格式错误;第三应答数据中缺少必要的数据;例如,必要的数据包括以0x6F、0x84、0xA5为标签的数据;
[0185]例如,本实施例中,第三应答数据为6F 32 84 07 AO 00 00 00 03 10 10 A5 2787 01 01 9F 38 12 9F IA 02 9F 33 03 9F 40 05 9F IB 04 9F 09 02 9F 35 01 5F 2D08 65 73 65 6E 66 72 64 65 9F 11 01 01 90 00 ;其中,最后 2 个字节为 0x9000,确定第三应答数据正确;0x84为DF名的标签,其后的一个字节0x07为DF名的长度,其后的AO 00
0000 03 10 10为DF名的内容,其后的一个字节0xA5为文件控制信息的标签,0x27为文件控制信息的长度,其后的 87 01 01 9F 38 12 9F IA 02 9F 33 03 9F 40 05 9F IB 049F 09 02 9F 35 01 5F 2D 08 65 73 65 6E 66 72 64 65 9F 11 01 01 为文件控制信息的内容;
[0186]步骤205:终端判断第三应答数据中的专用文件名是否与当前应用序列号完全匹配,是则执行步骤206,否则执行步骤207 ;
[0187]例如,本实施例中,DF名与当前应用序列号均为AO 00 00 00 03 10 10 JUDFg
与当前应用序列号完全匹配,执行步骤206 ;
[0188]若第三应答数据为6F 33 84 08 AO 00 00 00 03 10 10 00 A5 27 87 01 01 9F38 12 9F IA 02 9F 33 03 9F 40 05 9F IB 04 9F 09 02 9F 35 01 5F 2D 08 65 73 656E 66 72 64 65 9F 11 01 01 90 00 ;其中,0x84为DF名的标签,其后的一个字节0x08为DF名的长度,其后的AO 00 00 00 03 10 10 00为DF名的内容,其后的一个字节0xA5为文件控制信息的标签,0x27为文件控制信息的长度,其后的87 01 01 9F 38 12 9F IA
029F 33 03 9F 40 05 9F IB 04 9F 09 02 9F 35 01 5F 2D 08 65 73 65 6E 66 72 6465 9F 11 01 01为文件控制信息的内容,则DF名与当前应用序列号不完全匹配,执行步骤207 ;
[0189]步骤206:终端根据第三应答数据判断应用是否被锁定,是则执行步骤213,否则根据第三应答数据中的文件控制信息更新应用候选列表,执行步骤213 ;
[0190]具体地,终端判断第三应答数据是否为0x6283,是则确定应用被锁定,否则确定应用未被锁定;更新应用候选列表为:终端将文件控制信息中的应用标签、应用优先级指示符和第三应答数据中的DF名即应用序列号存储到应用候选列表中;
[0191]例如,第三应答数据中的文件控制信息为87 01 01 9F 38 12 9F IA 02 9F 33
039F 40 05 9F IB 04 9F 09 02 9F 35 01 5F 2D 08 65 73 65 6E 66 72 64 65 9F 11
0101,其中,0x87为应用优先级指示符的标签,其后的一个字节0x01为应用优先级指示符的长度,其后的0x01为应用优先级指示符的内容,9F 38为PDOL(Processing Opt1ns DataObject List,处理选项数据对象列表)的标签,其后的一个字节0x12为TOOL的长度,其后的 9F IA 02 9F 33 03 9F 40 05 9F IB 04 9F 09 02 9F 35 01 为 PDOL 的内容,9F 11 为发行方代码表索引的标签,其后的一个字节0x01为发行方代码表索引的长度,其后的0x01为发行方代码表索引的值;更新应用候选列表为:终端将84 08 AO 00 00 00 03 10 1000 87 01 01添加到应用候选列表中;
[0192]本实施例中,更新应用候选列表之前还可以包括:初始化应用候选列表;
[0193]步骤207:终端根据预设的应用序列号列表中与当前应用序列号对应的应用选择指示器,判断是否允许第三应答数据中的专用文件名与当前应用序列号部分匹配,是则执行步骤208,否则执行步骤213 ;
[0194]步骤208:终端判断第三应答数据中的专用文件名与当前应用序列号是否部分匹配,是则执行步骤209,否则执行步骤213 ;
[0195]具体地,终端判断第三应答数据中的专用文件名的预设部分与当前应用序列号是否相同,是则确定专用文件名与当前应用序列号部分匹配,否则确定专用文件名不与当前应用序列号部分匹配;例如,专用文件名的预设部分为专用文件名的前7个字节,若专用文件名为AO 00 00 00 03 10 10 00,当前应用序列号为AO 00 00 00 03 10 10,则确定专用文件名与当前应用序列号部分匹配;
[0196]步骤209:终端根据第三应答数据判断应用是否被锁定,是则执行步骤210,否则根据第三应答数据中的文件控制信息更新应用候选列表,执行步骤210 ;
[0197]具体地,终端判断第三应答数据是否为0x6283,是则确定应用被锁定,否则确定应用未被锁定;
[0198]具体地,更新应用候选列表为:终端将文件控制信息中的应用标签、应用优先级指示符和第三应答数据中的DF名存储到应用候选列表中;其中,DF名作为应用序列号进行存储;
[0199]例如,第三应答数据中的文件控制信息为87 01 01 9F 38 12 9F IA 02 9F 33
039F 40 05 9F IB 04 9F 09 02 9F 35 01 5F 2D 08 65 73 65 6E 66 72 64 65 9F 11
0101,其中,0x87为应用优先级指示符的标签,其后的一个字节0x01为应用优先级指示符的长度,其后的0x01为应用优先级指示符的内容,9F 38为PDOL(Processing Opt1ns DataObject List,处理选项数据对象列表)的标签,其后的一个字节0x12为TOOL的长度,其后的 9F IA 02 9F 33 03 9F 40 05 9F IB 04 9F 09 02 9F 35 01 为 PDOL 的内容,9F 11 为发行方代码表索引的标签,其后的一个字节0x01为发行方代码表索引的长度,其后的0x01为发行方代码表索引的值;更新应用候选列表为:终端将84 08 AO 00 00 00 03 10 1000 87 01 01添加到应用候选列表中;
[0200]本实施例中,更新应用候选列表之前还可以包括:初始化应用候选列表;
[0201]步骤210:终端根据当前应用序列号向智能卡发送第三选择指令,接收智能卡根据第三选择指令返回的第四应答数据;
[0202]例如,第三选择指令为00 A4 04 02 07 AO 00 00 00 03 10 10,
[0203]步骤211:终端判断第四应答数据是否符合第四预设要求,是则执行步骤212,否则执行步骤213 ;
[0204]步骤212:终端根据第四应答数据判断应用是否被锁定,是则返回步骤210,否则根据第四应答数据中的文件控制信息更新应用候选列表,返回步骤210 ;
[0205]具体地,终端判断第四应答数据是否为0x6283,是则确定应用被锁定,否则确定应用未被锁定;更新应用候选列表为:终端将文件控制信息中的应用标签、应用优先级指示符和第四应答数据中的DF名存储到应用候选列表中;其中,DF名作为应用序列号进行存储;
[0206]例如,第四应答数据为6F 33 84 08 A0 00 00 00 03 10 10 01 A5 27 87 01 019F 38 12 9F 1A 02 9F 33 03 9F 40 05 9F 1B 04 9F 09 02 9F 35 01 5F 2D 08 65 7365 6E 66 72 64 65 9F 11 01 01 90 00,其中,0x84为DF名的标签,其后的一个字节0x08为DF名的长度,其后的A0 00 00 00 03 10 10 01为DF名的内容,其后的一个字节0xA5为文件控制信息的标签,0x27为文件控制信息的长度,其后的87 01 01 9F 38 12 9F 1A 029F 33 03 9F 40 05 9F 1B 04 9F 09 02 9F 35 01 5F 2D 08 65 73 65 6E 66 72 64 659F 11 01 01为文件控制信息的内容,其中,0x87为应用优先级指示符的标签,其后的一个字节0x01为应用优先级指示符的长度,其后的0x01为应用优先级指示符的内容,9F 38为PDOL (Processing Opt1ns Data Object List,处理选项数据对象列表)的标签,其后的一个字节 0x12 为 PD0L 的长度,其后的 9F 1A 02 9F 33 03 9F 40 05 9F 1B 04 9F 09 02 9F35 01为TOOL的内容,9F 11为发行方代码表索引的标签,其后的一个字节0x01为发行方代码表索引的长度,其后的0x01为发行方代码表索引的值;更新应用候选列表为:终端将84 08 A0 00 00 00 03 10 10 01 87 01 01添加到应用候选列表中;
[0207]本实施例中,更新应用候选列表之前还可以包括:初始化应用候选列表;
[0208]步骤213:终端判断应用序列号列表中的当前应用序列号之后是否存在应用序列号,是则更新当前应用序列号,返回步骤202,否则执行步骤214 ;
[0209]步骤214:终端判断应用候选列表中是否存在应用信息,是则执行步骤229,否则执行步骤215 ;
[0210]步骤215:终端根据预设的专用文件名向智能卡发送第一选择指令;
[0211]例如,第一选择指令为:00A4 04 00 0E 31 50 41 59 2E 53 59 53 2E 44 4446 30 31 ;其中,31 50 41 59 2E 53 59 53 2E 44 44 46 30 31 为预设的 DF (DedicatedFile,专用文件)名;
[0212]步骤216:终端接收智能卡根据第一选择指令返回的第一应答数据,判断第一应答数据是否符合第二预设要求,是则执行步骤217,否则选择应用失败,结束;
[0213]具体地,终端判断第一应答数据中是否存在0x9000且数据格式正确,是则确定第一应答数据符合第二预设要求,否则确定第一应答数据不符合第二预设要求;
[0214]本实施例中,第一应答数据不符合第二预设要求包括:智能卡没有目录选择功能,智能卡中的目录选择功能被锁定,第一应答数据中的文件控制信息格式错误,第一应答数据中缺少必要的数据;例如,必要的数据包括以0x6F、0x84、0xA5或0x88为标签的数据;
[0215]例如,本实施例中,第一应答数据为:6F 2F 84 0E 31 50 41 59 2E 53 59 53 2E44 44 46 30 31 A5 ID 88 01 01 5F 2D 08 65 73 65 6E 66 72 64 65 9F 11 01 01 BF0C 08 85 06 12 34 56 78 9A BC 90 00 ;其中,最后2个字节为0x9000,确定第一应答数据正确;第一应答数据中,0x6F为文件控制信息模板的标签,0x2F为文件控制信息模板的长度,0x84为DF名的标签,其后的一个字节ΟχΟΕ为DF名的长度,其后的31 50 41 59 2Ε53 59 53 2Ε 44 44 46 30 31 为 DF (Dedicated File,专用文件)名的内容,0xA5 为文件控制信息的标签,其后的一个字节OxlD为文件控制信息的长度,其后的88 01 01 5F 2D 08
6573 65 6E 66 72 64 65 9F 11 01 01 BF 0C 08 85 06 12 34 56 78 9A BC 为文件控制信息的内容,其中0x88为SFI (Short File Identifier,短文件标识)的标签,其后的一个字节0x01为SFI名的长度,其后的0x01为SFI的值,9F 11为发行方代码表索引的标签,其后的一个字节OxOl为发行方代码表索引的长度,其后的0x01为发行方代码表索引的值;
[0216]步骤217:终端初始化应用候选列表;
[0217]具体地,终端初始化应用候选列表为清空应用候选列表;
[0218]步骤218:终端判断第一应答数据中是否存在正确的短文件标识,是则初始化当前记录号,执行步骤219,否则选择应用失败,结束;
[0219]具体地,终端判断第一应答数据中是否存在第一标签值,否则确定第一应答数据中不存在SFI,是则确定第一应答数据中存在SFI,获取第一标签值之后的SFI的值,继续判断获取到的SFI的值是否在第一范围内,是则确定第一应答数据中存在正确的SFI,否则确定第一应答数据中不存在正确的SFI ;优选地,当前记录号的初始值为I ;
[0220]例如,第一标签值为0x88,第一范围为0x01至OxOA ;获取0x88之后的SFI的值为0x01,则SFI在第一范围内;
[0221]步骤219:终端根据短文件标识和当前记录号向智能卡发送读记录指令;
[0222]例如,终端根据SFI和当前记录号向智能卡发送第一读记录指令00 B2 01 OC00,智能卡根据第一读记录指令返回的数据为6C 57,终端从该数据中得到记录长度0x57,终端再根据SFI和记录长度向智能卡发送第二读记录指令00 B2 01 OC 57;
[0223]步骤220:终端接收智能卡根据读记录指令返回的第二应答数据,根据第二应答数据判断是否已读取完智能卡中的记录,是则执行步骤221,否则执行步骤222 ;
[0224]具体地,终端判断第二应答数据是否为0x6A83,是则已读取完智能卡中的记录,否则未读取完智能卡中的记录;
[0225]步骤221:终端判断应用候选列表是否为空,是则选择应用失败,结束,否则执行步骤229 ;
[0226]步骤222:终端判断第二应答数据是否符合第三预设要求,是则执行步骤223,否则选择应用失败,结束;
[0227]具体地,终端判断第二应答数据中是否存在0x9000且数据格式正确,是则确定第二应答数据符合第三预设要求,否则确定第二应答数据不符合第三预设要求;
[0228]本实施例中,第二应答数据不符合第三预设要求包括:第二应答数据格式错误,缺少应用目录名、应用标签等;
[0229]例如,本实施例中,第二应答数据为:70 55 61 14 4F 07 AO 00 00 00 99 90 9050 06 4E 4F 4E 45 4D 56 87 01 81 61 28 4F 07 AO 00 00 00 03 10 10 50 OA 56 4953 41 43 52 45 44 49 54 87 01 82 9F 12 OD 43 52 45 44 49 54 4F 44 45 56 49 5341 61 13 4F 08 AO 00 00 00 03 10 10 03 50 04 41 50 50 33 87 01 03 90 00,其中,最后2个字节为0x9000,确定第二应答数据正确;
[0230]步骤223:终端判断第二应答数据中是否存在入口标识,是则执行步骤224,否则更新当前记录号,返回步骤219 ;
[0231]具体地,终端判断第一应答数据中是否存在第二标签值,是则确定第二应答数据中存在入口标识,否则确定第二应答数据中不存在入口标识;
[0232]例如,入口标识即第二标签值为0x61 ;
[0233]步骤224:终端获取第二应答数据中的第一个入口标识作为当前入口标识;
[0234]例如,终端在第二应答数据中从前向后查找第二标签值0x61,在第3个字节查找到0x61,则将第3个字节的0x61作为当前入口标识;该入口标识与下一个入口标识之间的数据为该入口标识的应用信息;
[0235]例如,当前入口标识,即第3个字节的0x61之后的应用信息为:14 4F 07 AO 0000 00 99 90 90 50 06 4E 4F 4E 45 4D 56 87 01 81,其中,0x14 为该应用信息的长度,0x4F为ADF(Applicat1n Directory File,应用目录文件)的标签,其后的一个字节0x07为ADF名的长度,其后的AO 00 00 00 99 90 90为ADF的内容,0x50为应用标签的标签,其后的一个字节0x06为应用标签的长度,其后的4E 4F 4E 45 4D 56为应用标签的内容,0x87为应用优先级指示符的标签,其后的一个字节0x01为应用优先级指示符的长度,其后的0x87为应用优先级指示符的内容,该应用信息中无应用优先名;
[0236]步骤225:终端判断当前入口标识之后的应用目录文件与预设的应用序列号列表中的应用序列号是否完整匹配,是则根据当前入口标识之后的应用信息更新应用候选列表,执行步骤228,否则执行步骤226 ;
[0237]具体地,终端判断是否能够在预设的应用序列号列表中查找到与当前入口标识之后的ADF (应用目录文件)完全相同的应用序列号,是则确定当前入口标识之后中的ADF与应用序列号列表中的应用序列号完整匹配,否则确定当前入口标识之后中的ADF不与应用序列号列表中的应用序列号完整匹配;更新应用候选列表为:终端将当前入口标识之后的应用信息中的应用标签、应用优先级指示符、应用优先名和ADF即应用序列号存储到应用候选列表中;
[0238]例如,本实施例中,更新应用候选列表为:终端将4F 07 AO 00 00 00 99 90 9050 06 4E 4F 4E 45 4D 56 87 01 81添加到应用候选列表中;
[0239]本实施例中,更新应用候选列表之前还可以包括:初始化应用候选列表;
[0240]步骤226:终端根据预设的应用序列号列表中与当前入口标识之后的应用目录文件对应的应用选择指示器,判断是否允许当前入口标识之后的应用目录文件与应用序列号列表中的应用序列号部分匹配,是则执行步骤227,否则执行步骤228 ;
[0241]步骤227:终端判断当前入口标识之后的应用目录文件与应用序列号列表中的应用序列号是否部分匹配,是则根据当前入口标识之后的应用信息更新应用候选列表,执行步骤228,否则直接执行步骤228 ;
[0242]具体地,终端判断是否能够在应用序列号列表中查找到与当前入口标识之后的ADF的预设部分相同的应用序列号,是则确定当前入口标识之后的ADF与应用序列号列表中的应用序列号部分匹配,否则确定当前入口标识之后的ADF不与应用序列号列表中的应用序列号部分匹配;例如,ADF的预设部分为ADF的前7个字节,若当前入口标识之后的ADF为AO 00 00 00 03 10 10 03,应用序列号列表中的应用序列号为AO 00 00 00 03 1010,则确定当前入口标识之后的ADF与应用序列号列表中的应用序列号部分匹配;更新应用候选列表为:终端将当前入口标识之后的应用信息中的应用标签、应用优先级指示符、应用优先名和ADF即应用序列号存储到应用候选列表中;
[0243]本实施例中,更新应用候选列表之前还可以包括:初始化应用候选列表;
[0244]步骤228:终端判断当前入口标识之后是否还存在入口标识,是则更新当前入口标识,返回步骤225,否则更新当前记录号,返回步骤219 ;
[0245]具体地,终端在当前入口标识后查找第二标签值,判断是否能够查找到当前入口标识,是则确定当前入口标识之后还存在入口标识,否则确定当前入口标识之后不存在入口标识;更新当前入口标识为将当前入口标识的后一个入口标识作为当前入口标识;优选地,更新当前记录号为将当前记录号自加I;
[0246]例如,本实施例中,第二应答数据中还包括2个入口标识,分别为:
[0247]第25个字节为0x61,该入口标识之后的应用信息为:28 4F 07 AO 00 00 00 0310 10 50 OA 56 49 53 41 43 52 45 44 49 54 87 01 82 9F 12 OD 43 52 45 44 49 544F 44 45 56 49 53 41 ;其中,0x28为该应用信息的长度,0x4F为ADF的标签,其后的一个字节0x07为ADF名的长度,其后的AO 00 00 00 03 10 10为ADF的内容,0x50为应用标签的标签,其后的一个字节OxOA为应用标签的长度,其后的56 49 53 41 43 52 45 44 49
54为应用标签的内容,0x87为应用优先级指示符的标签,其后的一个字节0x01为应用优先级指示符的长度,其后的0x82为应用优先级指示符的内容,9F 12为应用优先名的标签,其后的一个字节OxOD为应用优先名的长度,其后的43 52 45 44 49 54 4F 44 45 56 49 5341为应用优先名的内容;
[0248]第67个字节为0x61,该入口标识之后的应用信息为:13 4F 08 AO 00 00 00 0310 10 03 50 04 41 50 50 33 87 01 03,其中,0x13为该应用信息的长度,0x4F为ADF的标签,其后的一个字节0x08为ADF名的长度,其后的AO 00 00 00 03 10 10 03为ADF的内容,0x50为应用标签的标签,其后的一个字节0x04为应用标签的长度,其后的41 50 5033为应用标签的内容,0x87为应用优先级指示符的标签,其后的一个字节0x01为应用优先级指示符的长度,其后的03为应用优先级指示符的内容,该应用信息中无应用优先名;
[0249]步骤229:终端判断是否仅有一个与智能卡有共同支持或相互支持的应用,是则执行步骤230,否则执行步骤233 ;
[0250]该步骤之前还包括:终端根据应用候选列表判断是否与智能卡有共同支持的应用,是则执行步骤229,否则结束;
[0251]例如,应用候选列表为:4F07 AO 00 00 00 99 90 90 50 06 4E 4F 4E 45 4D56 87 01 81 4F 07 AO 00 00 00 03 10 10 50 OA 56 49 53 41 43 52 45 44 49 54 8701 82 9F 12 OD 43 52 45 44 49 54 4F 44 45 56 49 53 41 4F 08 AO 00 00 00 03 1010 03 50 04 41 50 50 33 87 01 03 ;该应用候选列表中包括3个应用的应用信息,分别为:第一个应用 4F 07 AO 00 00 00 99 90 90 50 06 4E 4F 4E 45 4D 56 87 01 81,第二个应用 4F 07 AO 00 00 00 03 10 10 50 OA 56 49 53 41 43 52 45 44 49 54 87 01 829F 12 OD 43 52 45 44 49 54 4F 44 45 56 49 53 41,第三个应用 4F 08 AO 00 00 0003 10 10 03 50 04 41 50 50 33 87 01 03 ;
[0252]步骤230:终端根据应用候选列表中的应用优先级指示符,判断该应用是否需要用户进行确认,是则执行步骤231,否则选择该应用,执行步骤237 ;
[0253]具体地,终端判断应用优先级指示符是否符合第一预设格式,是则确定该应用需要用户进行确认,否则确定该应用不需要用户进行确认;
[0254]优选地,第一预设格式为应用优先级指示符的最高位为I ;
[0255]例如,第一个应用的应用优先级指示符为0x81,应用优先级指示符的最高位为1,则确定该应用需要用户进行确认;第二个应用的应用优先级指示符为0x82,应用优先级指示符的最高位为1,则确定该应用需要用户进行确认;第三个应用的应用优先级指示符为0x03,应用优先级指示符的最高位不为1,则确定该应用不需要用户进行确认;
[0256]步骤231:终端判断是否支持用户确认,是则执行步骤232,否则结束;
[0257]步骤232:终端显示该应用,判断是否在预设时间内接收到触发,是则选择该应用,执行步骤237,否则结束;
[0258]步骤233:终端显示应用候选列表;
[0259]具体地,若应用优先级指示符存在且应用的优先级不同,则以应用优先级指示符优先级从高到低显示应用候选列表;若应用优先级指示符存在且应用的优先级相同,则以自定义优先顺序或智能卡给出的优先顺序显示应用候选列表;若应用优先级指示符不存在的应用,则以自定义优先顺序或智能卡给出的优先顺序显示应用候选列表;
[0260]例如,第一个应用的应用优先级指示符为0x81,第二个应用的应用优先级指示符为0x82,第三个应用的应用优先级指示符为0x03,则先显示第一个应用的应用信息,再显示第二个应用的应用信息,最后显示第三个应用的应用信息;第一个应用的应用标签为4E4F 4E 45 4D 56,则显示NONEMV ;第二个应用的应用标签为56 49 53 41 43 52 45 44 4954,应用优先名为43 52 45 44 49 54 4F 44 45 56 49 53 41,由于发行方代码表索引的值为0x01,则终端不显示应用标签,显示应用优先名,即显示CREDITODEVISA ;第三个应用的应用标签为41 50 50 33,则显示APP3;
[0261]步骤234:终端判断是否支持用户确认,是则执行步骤235,否则执行步骤236 ;
[0262]步骤235:终端判断是否在预设时间内接收到触发,是则根据触发选择对应的应用,执行步骤237,否则结束;
[0263]步骤236:终端根据应用优先级指示符,选择不需要用户进行确认的应用中优先级最高的应用,执行步骤237 ;
[0264]优选地,不需要用户进行确认的应用的应用优先级指示符的最高位为O ;
[0265]例如,本实施例中,第三个应用的应用优先级指示符为03,应用优先级指示符的最高位为0,则确定该应用不需要用户进行确认;
[0266]该步骤还包括,终端删除应用候选列表中需要用户进行确认的应用;
[0267]优选地,终端删除应用优先级指示符为第一预设格式的应用;
[0268]步骤237:终端根据与选择的应用对应的应用序列号,向智能卡发送第四选择指令;
[0269]例如,本实施例中,用户选择第一个应用,则终端获取与用户选择的应用对应的应用序列号,即应用序列号为AO 00 00 00 99 90 90 ;则第四选择指令为00 A4 04 00 07 AO00 00 00 99 90 90 ;
[0270]步骤238:终端接收智能卡根据第四选择指令返回的第五应答数据,判断第五应答数据是否正确,是则执行步骤239,否则在应用候选列表中删除选择的应用,执行步骤240 ;
[0271]例如,第五应答数据为6F 3A 84 07 AO 00 00 00 99 90 90 A5 2F 50 06 4E 4F4E 45 4D 56 87 01 81 9F 38 12 9F IA 02 9F 33 03 9F 40 05 9F IB 04 9F 09 02 9F35 01 5F 2D 08 65 73 65 6E 66 72 64 65 9F 11 01 01 90 00,其中,最后 2 个字节为0x9000,确定第五应答数据正确;0x84为DF名的标签,其后的一个字节0x07为DF名的长度,其后的AO 00 00 00 99 90 90为DF名的内容,其后的一个字节0xA5为文件控制信息的标签,0x2F为文件控制信息的长度,其后的50 06 4E 4F 4E 45 4D 56 87 01 81 9F 3812 9F 1A 02 9F 33 03 9F 40 05 9F 1B 04 9F 09 02 9F 35 01 5F 2D 08 65 73 65 6E
6672 64 65 9F 11 01 01的内容,其中,0x50为应用标签的标签,其后的一个字节0x06为应用标签的长度,其后的4E 4F 4E 45 4D 56为应用标签的内容,0x87为应用优先级指示符的标签,其后的一个字节0x01为应用优先级指示符的长度,其后的0x81为应用优先级指示符的内容,9F 38为TOOL的标签,其后的一个字节0x12为TOOL的长度,其后的9F 1A 029F 33 03 9F 40 05 9F 1B 04 9F 09 02 9F 35 01 为 PD0L 的内容;
[0272]步骤239:终端判断第四选择指令中的应用序列号是否与第五应答数据中的专用文件名完全匹配,是则选择应用成功,保存第五应答数据中的处理选项数据对象列表,结束流程,否则在应用候选列表中删除选择的应用,执行步骤240 ;
[0273]例如,第四选择指令中的AID与第五应答数据中的DF名均为A0 00 00 00 99 9090,则终端保存第五应答数据中的TOOL:9F ΙΑ 02 9F 33 03 9F 40 05 9F IB 04 9F 0902 9F 35 01,选择应用成功,结束流程;
[0274]本实施例中,若终端选择应用成功,则终端和智能卡分别设置相同的应用作为当前应用,即当前应用为第四选择指令中的应用序列号对应的应用;
[0275]步骤240:终端根据应用候选列表判断是否与智能卡有共同支持的应用,是则返回步骤229,否则结束。
[0276]本实施例中提供的一种终端和智能卡协商选择应用的方法,既支持终端和智能卡根据目录选择功能协商选择应用,也支持终端和智能卡根据应用序列号列表选择功能协商选择应用,兼容性好;对于多应用的智能卡,若智能卡中增加一个应用,相应地,终端中只需在应用序列号列表中增加该应用的序列号即可,升级快,不需要修改终端内核,易于维护。
[0277]实施例5
[0278]本发明的实施例5提供了一种终端和智能卡协商选择应用的装置,如图9所示,包括:第一初始模块301、发送模块302、接收模块303、第一判断模块304、第二判断模块305、第三判断模块306、第一更新模块307、第二初始模块308、第四判断模块309、第五判断模块310、第一获取模块311、第六判断模块312、存储模块313、删除模块314和第十判断模块315 ;
[0279]第一初始模块301,用于获取智能卡中的短文件标识,初始化应用候选列表和当前记录号;
[0280]发送模块302,用于根据第一初始模块301获取的短文件标识和当前记录号向智能卡发送读记录指令;
[0281]接收模块303,用于接收智能卡根据发送模块302发送的读记录指令返回的第二应答数据;
[0282]第一判断模块304,用于根据接收模块303接收到的第二应答数据判断是否已读取完智能卡中的记录;
[0283]第二判断模块305,用于在第一判断模块304判断为是时,判断应用候选列表是否为空;
[0284]第三判断模块306,用于在第一判断模块304判断为否时,判断接收模块303接收到的第二应答数据中的应用目录文件与预设的应用序列号列表中的应用序列号是否匹配;
[0285]第一更新模块307,用于在第三判断模块306判断为是时,根据接收模块303接收到的第二应答数据中的应用信息更新应用候选列表,更新当前记录号;在第三判断模块306判断为否时,更新当前记录号;
[0286]第二初始模块308,用于获取预设的应用序列号列表中的第一个应用序列号作为当前应用序列号;
[0287]发送模块302,还用于根据当前应用序列号向智能卡发送第二选择指令;
[0288]接收模块303,还用于接收智能卡根据发送模块302发送的第二选择指令返回的第三应答数据;
[0289]第四判断模块309,用于判断接收模块303接收到的第三应答数据中的专用文件名是否与当前应用序列号匹配;
[0290]第一更新模块307,还用于在第四判断模块309判断为是时,根据接收模块303接收到的第三应答数据更新应用候选列表;
[0291]第五判断模块310,用于在第四判断模块309判断为否,或者第一更新模块307根据第三应答数据更新应用候选列表后,判断应用序列号列表中的当前应用序列号之后是否存在应用序列号,是则更新当前应用序列号;
[0292]第十判断模块315,用于根据应用候选列表判断是否与智能卡有共同支持的应用;
[0293]第一获取模块311,用于在第十判断模块315判断为是时,按照预设规则选择一个应用,再根据确定的应用在应用候选列表中获取应用的信息;
[0294]发送模块302,还用于根据获取到的信息中的应用序列号,向智能卡发送第四选择指令;
[0295]接收模块303,还用于接收智能卡根据发送模块302发送的第四选择指令返回的第五应答数据;
[0296]第六判断模块312,用于判断接收模块303接收到的第五应答数据是否符合第一预设要求;
[0297]存储模块313,用于在第六判断模块312判断为是时,保存接收模块303接收到的第五应答数据中的处理选项数据对象列表;
[0298]删除模块314,用于在第六判断模块312判断为否时,在应用候选列表中删除获取到的应用的信息。
[0299]第一初始模块301包括第一判断单元和第二判断单元;
[0300]发送模块302,还用于根据预设的专用文件名向智能卡发送第一选择指令;
[0301]接收模块303,还用于接收智能卡根据发送模块302发送的第一选择指令返回的第一应答数据;
[0302]第一判断单元,用于判断接收模块303接收到的第一应答数据是否符合第二预设要求;
[0303]第二判断单元,用于在第一判断单元判断为是时,判断第一应答数据中是否存在正确的短文件标识,是则获取短文件标识。
[0304]第一初始模块301还包括第三判断单元,用于根据接收模块303接收到的第一应答数据判断智能卡是否被锁定或不支持该指令。
[0305]第二判断单元具体用于,在第一判断单元判断为是时,判断第一应答数据中是否存在第一标签值,如存在第一标签值则获取第一标签值之后的短文件标识的值,继续判断获取到的短文件标识的值是否在第一范围内,如所述短文件标识的值在第一范围内则获取短文件标识。
[0306]发送模块302用于根据第一初始模块301获取的短文件标识和当前记录号向智能卡发送读记录指令,包括:
[0307]发送模块302用于根据短文件标识和当前记录号向智能卡发送第一读记录指令;
[0308]接收模块303还用于接收智能卡根据发送模块302发送的第一读记录指令返回的数据;
[0309]发送模块302还用于从接收模块303接收的返回的数据中,得到记录长度,再根据短文件标识和记录长度向智能卡发送第二读记录指令。
[0310]装置还包括第七判断模块,用于判断接收模块303接收到的第二应答数据是否符合第三预设要求,否则初始化应用候选列表。
[0311]第三判断模块306包括:第四判断单元、第一获取单元、第五判断单元、第六判断单元、第七判断单元、第八判断单元;
[0312]第四判断单元,用于判断接收模块303接收到的第二应答数据中是否存在入口标识;
[0313]第一更新模块307,还用于在第四判断单元判断为否时,更新当前记录号;
[0314]第一获取单元,用于在第四判断单元判断为是时,获取第二应答数据中的第一个入口标识作为当前入口标识;
[0315]第五判断单元,用于判断当前入口标识之后的应用目录文件与预设的应用序列号列表中的应用序列号是否完整匹配;
[0316]第一更新模块307,还用于在第五判断单元判断为是时,根据当前入口标识之后的应用信息更新应用候选列表
[0317]第六判断单元,用于在第五判断单元判断为否时,根据应用序列号列表中与当前入口标识之后的应用目录文件对应的应用选择指示器,判断是否允许当前入口标识之后的应用目录文件与应用序列号列表中的应用序列号部分匹配;
[0318]第七判断单元,用于在第六判断单元判断为是时,判断当前入口标识之后的应用目录文件与应用序列号列表中的应用序列号是否部分匹配;
[0319]第一更新模块307,还用于在第七判断单元判断为是时,根据当前入口标识之后的应用信息更新应用候选列表;
[0320]第八判断单元,用于判断当前入口标识之后是否还存在入口标识;
[0321]第一更新模块307,还用于在第八判断单元判断为是时,更新当前入口标识;在第八判断单元判断为否时,更新当前记录号。
[0322]第四判断单元具体用于,判断第二应答数据中是否存在第二标签值,是则确定第二应答数据中存在入口标识,否则确定第二应答数据中不存在入口标识。
[0323]第五判断单元具体用于,判断是否能够在预设的应用序列号列表中查找到与当前入口标识之后中的应用目录文件完全相同的应用序列号,是则确定当前入口标识之后中的应用目录文件与应用序列号列表中的应用序列号完整匹配,否则确定当前入口标识之后中的应用目录文件不与应用序列号列表中的应用序列号完整匹配。
[0324]第七判断单元具体用于,判断是否能够在应用序列号列表中查找到与当前入口标识之后的应用目录文件的预设部分相同的应用序列号,是则确定当前入口标识之后的应用目录文件与应用序列号列表中的应用序列号部分匹配,否则确定当前入口标识之后的应用目录文件不与应用序列号列表中的应用序列号部分匹配。
[0325]第一更新模块307还用于根据当前入口标识之后的应用信息更新应用候选列表,具体为:第一更新模块307还用于将当前入口标识之后的应用信息中的应用优先级指示符和应用目录文件存储到应用候选列表中。
[0326]第四判断模块309包括:第八判断单元、第九判断单元、第十判断单元、第i^一判断单元;
[0327]第八判断单元,用于判断接收模块303接收到的第三应答数据中的专用文件名是否与当前应用序列号完整匹配;
[0328]第一更新模块307,还用于在第八判断单元判断为是时,根据接收模块303接收到的第三应答数据更新应用候选列表;
[0329]第九判断单元,用于在第八判断单元判断为否时,根据应用序列号列表中与当前应用序列号对应的应用选择指示器,判断是否允许第三应答数据中的专用文件名与当前应用序列号部分匹配;
[0330]第十判断单元,用于在第九判断单元判断为是时,判断第三应答数据中的专用文件名与当前应用序列号是否部分匹配;
[0331]第一更新模块307,还用于在第十判断单元判断为是时,根据接收模块303接收到的第三应答数据更新应用候选列表;
[0332]发送模块302,还用于根据当前应用序列号向智能卡发送第三选择指令;
[0333]接收模块303,还用于接收智能卡根据发送模块302发送的第三选择指令返回的第四应答数据;
[0334]第十一判断单元,用于判断接收模块303接收到的第四应答数据是否符合第四预设要求;
[0335]第一更新模块307,还用于在第十一判断单元判断为是时,根据第四应答数据更新应用候选列表。
[0336]第四判断模块309还包括第十二判断单元,用于判断接收模块303接收到的第三应答数据是否符合第五预设要求。
[0337]第八判断单元具体用于,判断第三应答数据中的专用文件名是否与当前应用序列号完全相同,是则确定第三应答数据中的专用文件名与当前应用序列号完整匹配,否则确定第三应答数据中的专用文件名不与当前应用序列号完整匹配。
[0338]第四判断模块309还包括第十三判断单元,用于根据接收模块303接收到的第三应答数据判断智能卡中与专用文件名对应的应用是否被锁定。
[0339]第十判断单元具体用于,判断第三应答数据中的专用文件名的预设部分与当前应用序列号是否相同,是则确定专用文件名与当前应用序列号部分匹配,否则确定专用文件名不与当前应用序列号部分匹配。
[0340]第四判断模块309还包括第十四判断单元,用于根据接收模块303接收到的第四应答数据判断智能卡中与专用文件名对应的应用是否被锁定。
[0341]第一更新模块307用于根据第三应答数据更新应用候选列表,具体为:第一更新模块307用于将第三应答数据中的专用文件名和第三应答数据中的文件控制信息中的应用优先级指示符存储到应用候选列表中;
[0342]第一更新模块307用于根据第四应答数据更新应用候选列表,具体为:第一更新模块307用于将第四应答数据中的专用文件名和第四应答数据中的文件控制信息中的应用优先级指示符存储到应用候选列表中。
[0343]装置还包括第八判断模块,用于判断应用候选列表中仅有一个与智能卡有共同支持或相互支持的应用。
[0344]当第八判断模块判断出应用候选列表中仅有一个与智能卡有共同支持或相互支持的应用时,第一获取模块311包括:第十五判断单元、第十六判断单元和第十七判断单元;
[0345]第十五判断单元,用于根据应用候选列表中的应用优先级指示符,判断应用候选列表中的应用是否需要用户进行确认,否则选择应用,获取与应用对应的信息;
[0346]第十六判断单元,用于在第十五判断单元判断为是时,判断是否支持用户确认;
[0347]第十七判断单元,用于在第十六判断单元判断为是时,显示应用,判断是否在预设时间内接收到触发,是则选择应用,获取与应用对应的信息。
[0348]第十五判断单元具体用于判断应用优先级指示符是否符合第一预设格式,是则确定应用需要用户进行确认,否则确定应用不需要用户进行确认,选择应用,获取应用的信肩、O
[0349]当第八判断模块判断出应用候选列表中有至少两个与智能卡有共同支持或相互支持的应用时,第一获取模块311包括:显示单元、第十八判断单元、第十九判断单元和第二获取单元;
[0350]显示单元,用于显示应用候选列表;
[0351]第十八判断单元,用于判断是否支持用户确认;
[0352]第十九判断单元,用于在第十八判断单元判断为是时,判断是否在预设时间内接收到触发,否则结束;
[0353]第二获取单元,用于在第十八判断单元判断为否时,根据应用优先级指示符,获取不需要用户进行确认的应用中优先级最高的应用的信息;在第十九判断单元判断为是时,根据触发获取对应的应用的信息。
[0354]第一删除模块311还用于删除应用候选列表中需要用户进行确认的应用。
[0355]装置还包括第九判断模块,用于判断第四选择指令中的应用序列号是否与接收模块303接收到的第五应答数据中的专用文件名完整匹配。
[0356]以上所述,仅为本发明较佳的【具体实施方式】,但本发明的保护范围并不局限于此,任何熟悉本【技术领域】的技术人员在本发明公开的技术范围内,可轻易想到的变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应该以权利要求的保护范围为准。
【权利要求】
1.一种终端和智能卡协商选择应用的方法,其特征在于,所述方法包括: 步骤51:所述终端获取所述智能卡中的短文件标识,初始化应用候选列表和当前记录号; 步骤32:所述终端根据所述短文件标识和当前记录号向所述智能卡发送读记录指令,接收所述智能卡根据所述读记录指令返回的第二应答数据,根据所述第二应答数据判断是否已读取完所述智能卡中的记录,是则执行步骤33,否则执行步骤34 ; 步骤33:所述终端判断所述应用候选列表是否为空,是则执行步骤35,否则执行步骤88 ; 步骤54:所述终端判断所述第二应答数据中的应用目录文件与预设的应用序列号列表中的应用序列号是否匹配,是则根据所述第二应答数据中的应用信息更新所述应用候选列表,更新当前记录号,返回步骤32,否则更新当前记录号,返回步骤52 ; 步骤35:所述终端获取预设的应用序列号列表中的第一个应用序列号作为当前应用序列号; 步骤36:所述终端根据当前应用序列号向智能卡发送第二选择指令,接收所述智能卡根据所述第二选择指令返回的第三应答数据,判断所述第三应答数据中的专用文件名是否与当前应用序列号匹配,是则根据所述第三应答数据更新所述应用候选列表,执行步骤37,否则执行步骤37 ; 步骤37:所述终端判断所述应用序列号列表中的当前应用序列号之后是否存在应用序列号,是则更新当前应用序列号,返回步骤36,否则执行步骤38 ; 步骤38:所述终端根据所述应用候选列表判断是否与所述智能卡有共同支持的应用,是则执行步骤39,否则结束; 步骤39:所述终端按照预设规则选择一个应用,再根据确定的应用在所述应用候选列表中获取所述应用的信息,根据获取到的信息中的应用序列号,向所述智能卡发送第四选择指令,接收所述智能卡根据所述第四选择指令返回的第五应答数据,判断所述第五应答数据是否符合第一预设要求,是则选择应用成功,保存所述第五应答数据中的处理选项数据对象列表,结束流程,否则在所述应用候选列表中删除获取到的所述应用的信息,返回步骤38。
2.根据权利要求1所述的方法,其特征在于,所述终端获取所述智能卡中的短文件标识,包括: 步骤31-1:所述终端根据预设的专用文件名向所述智能卡发送第一选择指令,接收所述智能卡根据所述第一选择指令返回的第一应答数据; 步骤31-2:所述终端判断所述第一应答数据是否符合第二预设要求,是则执行步骤31-3,否则执行步骤35 ; 步骤31-3:所述终端判断所述第一应答数据中是否存在正确的短文件标识,是则获取所述短文件标识,否则执行步骤35。
3.根据权利要求2所述的方法,其特征在于,所述步骤31-2之前包括:所述终端根据所述第一应答数据判断所述智能卡是否被锁定或不支持该指令,是则选择应用失败,结束,否则执行步骤31-2。
4.根据权利要求2所述的方法,其特征在于,所述终端判断所述第一应答数据中是否存在正确的短文件标识,具体为:所述终端判断所述第一应答数据中是否存在第一标签值,如存在第一标签值则获取所述第一标签值之后的短文件标识的值,继续判断获取到的短文件标识的值是否在第一范围内,是则所述第一应答数据中存在正确的短文件标识,否则所述第一应答数据中不存在正确的短文件标识,如不存在第一标签值则所述第一应答数据中不存在正确的短文件标识。
5.根据权利要求1所述的方法,其特征在于,所述终端根据所述短文件标识和当前记录号向所述智能卡发送读记录指令,包括:所述终端根据所述短文件标识和当前记录号向智能卡发送第一读记录指令,所述终端接收所述智能卡根据所述第一读记录指令返回的数据,并从中得到记录长度,所述终端根据所述短文件标识和所述记录长度向所述智能卡发送第二读记录指令。
6.根据权利要求1所述的方法,其特征在于,所述步骤S4之前包括:所述终端判断所述第二应答数据是否符合第三预设要求,是则执行步骤S4,否则初始化所述应用候选列表,执行步骤S5。
7.根据权利要求1所述的方法,其特征在于,所述步骤S4具体为: 步骤S4-1:所述终端判断所述第二应答数据中是否存在入口标识,是则执行步骤S4-2,否则更新当前记录号,返回步骤S2 ; 步骤S4-2:所述终端获取所述第二应答数据中的第一个入口标识作为当前入口标识; 步骤S4-3:所述终端判断当前入口标识之后的应用目录文件与所述预设的应用序列号列表中的应用序列号是否完整匹配,是则根据当前入口标识之后的应用信息更新所述应用候选列表,执行步骤S4-6,否则执行步骤S4-4 ; 步骤S4-4:所述终端根据所述应用序列号列表中与当前入口标识之后的应用目录文件对应的应用选择指示器,判断是否允许当前入口标识之后的应用目录文件与所述应用序列号列表中的应用序列号部分匹配,是则执行步骤S4-5,否则执行步骤S4-6 ; 步骤S4-5:所述终端判断当前入口标识之后的应用目录文件与所述应用序列号列表中的应用序列号是否部分匹配,是则根据当前入口标识之后的应用信息更新所述应用候选列表,执行步骤S4-6,否则直接执行步骤S4-6 ; 步骤S4-6:所述终端判断当前入口标识之后是否还存在入口标识,是则更新当前入口标识,返回步骤S4-3,否则更新当前记录号,返回步骤S2。
8.根据权利要求7所述的方法,其特征在于,所述终端判断所述第二应答数据中是否存在入口标识,具体为:所述终端判断所述第二应答数据中是否存在第二标签值,是则确定所述第二应答数据中存在入口标识,否则确定所述第二应答数据中不存在入口标识。
9.根据权利要求7所述的方法,其特征在于,所述终端判断当前入口标识之后的应用目录文件与所述预设的应用序列号列表中的应用序列号是否完整匹配,具体为:所述终端判断是否能够在所述预设的应用序列号列表中查找到与当前入口标识之后中的应用目录文件完全相同的应用序列号,是则确定当前入口标识之后中的应用目录文件与应用序列号列表中的应用序列号完整匹配,否则确定当前入口标识之后中的应用目录文件不与应用序列号列表中的应用序列号完整匹配。
10.根据权利要求7所述的方法,其特征在于,所述终端判断当前入口标识之后的应用目录文件与所述应用序列号列表中的应用序列号是否部分匹配,具体为:所述终端判断是否能够在所述应用序列号列表中查找到与当前入口标识之后的应用目录文件的预设部分相同的应用序列号,是则确定当前入口标识之后的应用目录文件与应用序列号列表中的应用序列号部分匹配,否则确定当前入口标识之后的应用目录文件不与应用序列号列表中的应用序列号部分匹配。
11.根据权利要求7所述的方法,其特征在于,所述根据当前入口标识之后的应用信息更新所述应用候选列表,具体为:所述终端将当前入口标识之后的应用信息中的应用优先级指示符和应用目录文件存储到所述应用候选列表中。
12.根据权利要求1所述的方法,其特征在于,所述步骤35之前还包括:所述终端初始化应用候选列表。
13.根据权利要求1所述的方法,其特征在于,所述终端判断所述第三应答数据中的专用文件名是否与当前应用序列号匹配,是则根据所述第三应答数据更新所述应用候选列表,执行步骤37,否则执行步骤37,包括: 步骤36-1:所述终端判断所述第三应答数据中的专用文件名是否与当前应用序列号完整匹配,是则执行步骤36-2,否则执行步骤36-3 ; 步骤36-2:所述终端根据所述第三应答数据更新所述应用候选列表,执行步骤37 ; 步骤36-3:所述终端根据所述应用序列号列表中与当前应用序列号对应的应用选择指示器,判断是否允许所述第三应答数据中的专用文件名与当前应用序列号部分匹配,是则执行步骤36-4,否则执行步骤37 ; 步骤36-4:所述终端判断所述第三应答数据中的专用文件名与当前应用序列号是否部分匹配,是则执行步骤36-5,否则执行步骤37 ; 步骤36-5:所述终端根据所述第三应答数据更新所述应用候选列表,执行步骤56-6 ; 步骤56-6:所述终端根据当前应用序列号向所述智能卡发送第三选择指令,接收所述智能卡根据所述第三选择指令返回的第四应答数据; 步骤36-7:所述终端判断所述第四应答数据是否符合第四预设要求,是则步骤36-8,否则执行步骤37 ; 步骤36-8:所述终端根据所述第四应答数据更新所述应用候选列表,返回步骤56-6。
14.根据权利要求13所述的方法,其特征在于,所述步骤36-1之前包括:所述终端判断所述第三应答数据是否符合第五预设要求,是则执行步骤36-1,否则执行步骤37。
15.根据权利要求13所述的方法,其特征在于,所述终端判断所述第三应答数据中的专用文件名是否与当前应用序列号完整匹配,具体为:所述终端判断所述第三应答数据中的专用文件名是否与当前应用序列号完全相同,是则确定所述第三应答数据中的专用文件名与当前应用序列号完整匹配,否则确定所述第三应答数据中的专用文件名不与当前应用序列号完整匹配。
16.根据权利要求13所述的方法,其特征在于,所述步骤36-2之前包括:所述终端根据所述第三应答数据判断所述智能卡中与所述专用文件名对应的应用是否被锁定,是则执行步骤37,否则执行步骤36-2。
17.根据权利要求13所述的方法,其特征在于,所述终端判断所述第三应答数据中的专用文件名与当前应用序列号是否部分匹配,具体为:所述终端判断所述第三应答数据中的专用文件名的预设部分与当前应用序列号是否相同,是则确定所述专用文件名与当前应用序列号部分匹配,否则确定所述专用文件名不与当前应用序列号部分匹配。
18.根据权利要求13所述的方法,其特征在于,所述步骤S6-5之前包括:所述终端根据所述第三应答数据判断所述智能卡中与所述专用文件名对应的应用是否被锁定,是则执行步骤S6-6,否则执行步骤S6-5。
19.根据权利要求13所述的方法,其特征在于,所述步骤S6-8之前包括:所述终端根据所述第四应答数据判断所述智能卡中与所述专用文件名对应的应用是否被锁定,是则返回步骤S6-6,否则执行步骤S6-8。
20.根据权利要求13所述的方法,其特征在于,所述终端根据所述第三应答数据更新所述应用候选列表,具体为:所述终端将所述第三应答数据中的专用文件名和所述第三应答数据中的所述文件控制信息中的应用优先级指示符存储到所述应用候选列表中; 所述终端根据所述第四应答数据更新所述应用候选列表,具体为:所述终端将所述第四应答数据中的专用文件名和所述第四应答数据中的所述文件控制信息中的应用优先级指示符存储到所述应用候选列表中。
21.根据权利要求1所述的方法,其特征在于,当所述终端判断出所述应用候选列表中仅有一个与所述智能卡有共同支持或相互支持的应用时,所述终端按照预设规则选择一个应用,再根据确定的应用在所述应用候选列表中获取所述应用的信息,具体为: 步骤S9-1:所述终端根据所述应用候选列表中的应用优先级指示符,判断所述应用候选列表中的应用是否需要用户进行确认,是则执行步骤S9-2,否则选择所述应用,获取与所述应用对应的信息; 步骤S9-2:所述终端判断是否支持用户确认,是则执行步骤S9-3,否则结束; 步骤S9-3:所述终端显示所述应用,判断是否在预设时间内接收到触发,是则选择所述应用,获取与所述应用对应的信息,否则结束。
22.根据权利要求21所述的方法,其特征在于,所述终端根据所述应用候选列表中的应用优先级指示符,判断所述应用候选列表中的应用是否需要用户进行确认,具体为:所述终端判断所述应用优先级指示符是否符合第一预设格式,是则确定所述应用需要用户进行确认,否则确定所述应用不需要用户进行确认。
23.根据权利要求1所述的方法,其特征在于,当所述终端判断出所述应用候选列表中有至少两个与所述智能卡有共同支持或相互支持的应用时,所述终端按照预设规则选择一个应用,再根据确定的应用在所述应用候选列表中获取所述应用的信息,具体为: 步骤S9-4:所述终端显示所述应用候选列表; 步骤S9-5:所述终端判断是否支持用户确认,是则执行步骤S9-6,否则执行步骤S9-7 ; 步骤S9-6:所述终端判断是否在预设时间内接收到触发,是则根据触发获取对应的应用的信息,否则结束; 步骤S9-7:所述终端根据所述应用优先级指示符,获取不需要用户进行确认的应用中优先级最高的应用的信息。
24.根据权利要求23所述的方法,其特征在于,所述步骤S9-7还包括:所述终端删除所述应用候选列表中需要用户进行确认的应用。
25.根据权利要求1所述的方法,其特征在于,所述步骤S9判断所述第五应答数据符合第一预设要求与选择应用成功之间还包括:所述终端判断所述第四选择指令中的应用序列号是否与所述第五应答数据中的专用文件名完整匹配,是则选择应用成功,保存所述第五应答数据中的处理选项数据对象列表,结束,否则在所述应用候选列表中删除获取到的所述应用的信息,返回步骤58。
26.根据权利要求1所述的方法,其特征在于,所述选择应用成功具体为:所述终端和所述智能卡分别设置相同的应用作为当前应用。
27.—种终端和智能卡协商选择应用的方法,其特征在于,所述方法包括: 步骤51:所述终端初始化应用候选列表,获取预设的应用序列号列表中的第一个应用序列号作为当前应用序列号; 步骤32:所述终端根据当前应用序列号向智能卡发送第二选择指令,接收所述智能卡根据所述第二选择指令返回的第三应答数据,判断所述第三应答数据中的专用文件名是否与当前应用序列号匹配,是则根据所述第三应答数据更新所述应用候选列表,执行步骤33,否则执行步骤33 ; 步骤33:所述终端判断所述应用序列号列表中的当前应用序列号之后是否存在应用序列号,是则更新当前应用序列号,返回步骤32,否则执行步骤34 ; 步骤34:所述终端判断所述应用候选列表是否为空,是则执行步骤35,否则执行步骤89 ; 步骤35:所述终端获取所述智能卡中的短文件标识,初始化当前记录号; 步骤36:所述终端根据所述短文件标识和当前记录号向所述智能卡发送读记录指令,接收智能卡根据所述读记录指令返回的第二应答数据,根据所述第二应答数据判断是否已读取完所述智能卡中的记录,是则执行步骤38,否则执行步骤37 ; 步骤37:所述终端判断所述第二应答数据中的应用目录文件与预设的应用序列号列表中的应用序列号是否匹配,是则根据所述第二应答数据中的应用信息更新所述应用候选列表,更新当前记录号,返回步骤36,否则更新当前记录号,返回步骤36 ; 步骤38:所述终端根据所述应用候选列表判断是否与所述智能卡有共同支持的应用,是则执行步骤39,否则结束; 步骤39:所述终端按照预设规则选择一个应用,再根据确定的应用在所述应用候选列表中获取所述应用的信息,根据获取到的信息中的应用序列号,向所述智能卡发送第四选择指令,接收所述智能卡根据所述第四选择指令返回的第五应答数据,判断所述第五应答数据是否符合第一预设要求,是则选择应用成功,保存所述第五应答数据中的处理选项数据对象列表,结束流程,否则在应用候选列表中删除获取到的所述应用的信息,返回步骤880
28.根据权利要求27所述的方法,其特征在于,所述终端判断所述第三应答数据中的专用文件名是否与当前应用序列号匹配,是则根据所述第三应答数据更新所述应用候选列表,执行步骤33,否则执行步骤33,包括: 步骤52-1:所述终端判断所述第三应答数据中的专用文件名是否与当前应用序列号完整匹配,是则执行步骤32-2,否则执行步骤32-3 ; 步骤32-2:所述终端根据所述第三应答数据更新所述应用候选列表,执行步骤33 ; 步骤32-3:所述终端根据所述应用序列号列表中与当前应用序列号对应的应用选择指示器,判断是否允许所述第三应答数据中的专用文件名与当前应用序列号部分匹配,是则执行步骤32-4,否则执行步骤33 ; 步骤32-4:所述终端判断所述第三应答数据中的专用文件名与当前应用序列号是否部分匹配,是则执行步骤32-5,否则执行步骤53 ; 步骤32-5:所述终端根据所述第三应答数据更新所述应用候选列表,执行步骤32-6 ; 步骤32-6:所述终端根据当前应用序列号向所述智能卡发送第三选择指令,接收所述智能卡根据所述第三选择指令返回的第四应答数据; 步骤32-7:所述终端判断所述第四应答数据是否符合第四预设要求,是则步骤32-8,否则执行步骤33 ; 步骤32-8:所述终端根据所述第四应答数据更新所述应用候选列表,返回步骤32-6。
29.根据权利要求28所述的方法,其特征在于,所述步骤32-1之前包括:所述终端判断所述第三应答数据是否符合第五预设要求,是则执行步骤32-1,否则执行步骤33。
30.根据权利要求28所述的方法,其特征在于,所述终端判断所述第三应答数据中的专用文件名是否与当前应用序列号完整匹配,具体为:所述终端判断所述第三应答数据中的专用文件名是否与当前应用序列号完全相同,是则确定所述第三应答数据中的专用文件名与当前应用序列号完整匹配,否则确定所述第三应答数据中的专用文件名不与当前应用序列号完整匹配。
31.根据权利要求28所述的方法,其特征在于,所述步骤32-2之前包括:所述终端根据所述第三应答数据判断所述智能卡中与所述专用文件名对应的应用是否被锁定,是则执行步骤33,否则执行步骤32-2。
32.根据权利要求28所述的方法,其特征在于,所述终端判断所述第三应答数据中的专用文件名与当前应用序列号是否部分匹配,具体为:所述终端判断所述第三应答数据中的专用文件名的预设部分与当前应用序列号是否相同,是则确定所述专用文件名与当前应用序列号部分匹配,否则确定所述专用文件名不与当前应用序列号部分匹配。
33.根据权利要求28所述的方法,其特征在于,所述步骤32-5之前包括:所述终端根据所述第三应答数据判断所述智能卡中与所述专用文件名对应的应用是否被锁定,是则执行步骤32-6,否则执行步骤32-5。
34.根据权利要求28所述的方法,其特征在于,所述步骤32-8之前包括:所述终端根据所述第四应答数据判断所述智能卡中与所述专用文件名对应的应用是否被锁定,是则返回步骤32-6,否则执行步骤32-8。
35.根据权利要求28所述的方法,其特征在于,所述终端根据所述第三应答数据更新所述应用候选列表,具体为:所述终端将所述第三应答数据中的专用文件名和所述第三应答数据中的所述文件控制信息中的应用优先级指示符存储所述到应用候选列表中; 所述终端根据所述第四应答数据更新所述应用候选列表,具体为:所述终端将所述第四应答数据中的专用文件名和所述第四应答数据中的所述文件控制信息中的应用优先级指示符存储到所述应用候选列表中。
36.根据权利要求27所述的方法,其特征在于,所述终端获取所述智能卡中的短文件标识,包括: 步骤35-1:所述终端根据预设的专用文件名向所述智能卡发送第一选择指令,接收所述智能卡根据所述第一选择指令返回的第一应答数据,; 步骤35-2:所述终端判断所述第一应答数据是否符合第二预设要求,是则执行步骤35-3,否则结束; 步骤35-3:所述终端判断所述第一应答数据中是否存在正确的短文件标识,是则获取所述短文件标识,否则结束。
37.根据权利要求36所述的方法,其特征在于,所述步骤35-2之前包括:所述终端根据所述第一应答数据判断所述智能卡是否被锁定或不支持该指令,是则选择应用失败,结束,否则执行步骤35-2。
38.根据权利要求36所述的方法,其特征在于,所述终端判断所述第一应答数据中是否存在正确的短文件标识,具体为:所述终端判断所述第一应答数据中是否存在第一标签值,如存在第一标签值则获取所述第一标签值之后的短文件标识的值,继续判断获取到的短文件标识的值是否在第一范围内,是则所述第一应答数据中存在正确的短文件标识,否则所述第一应答数据中不存在正确的短文件标识,如不存在第一标签值则确定所述第一应答数据中不存在正确的短文件标识。
39.根据权利要求27所述的方法,其特征在于,所述终端根据所述短文件标识和当前记录号向所述智能卡发送读记录指令,包括:所述终端根据所述短文件标识和当前记录号向智能卡发送第一读记录指令,所述终端接收所述智能卡根据所述第一读记录指令返回的数据,并从中得到记录长度,所述终端根据所述短文件标识和所述记录长度向所述智能卡发送第二读记录指令。
40.根据权利要求27所述的方法,其特征在于,所述步骤37之前包括:所述终端判断所述第二应答数据是否符合第三预设要求,是则执行步骤37,否则结束。
41.根据权利要求29所述的方法,其特征在于,所述步骤37具体为: 步骤37-1:所述终端判断所述第二应答数据中是否存在入口标识,是则执行步骤87-2,否则更新当前记录号,返回步骤36 ; 步骤37-2:所述终端获取所述第二应答数据中的第一个入口标识作为当前入口标识; 步骤37-3:所述终端判断当前入口标识之后的应用目录文件与所述预设的应用序列号列表中的应用序列号是否完整匹配,是则根据当前入口标识之后的应用信息更新所述应用候选列表,执行步骤37-6,否则执行步骤37-4 ; 步骤37-4:所述终端根据所述应用序列号列表中与当前入口标识之后的应用目录文件对应的应用选择指示器,判断是否允许当前入口标识之后的应用目录文件与所述应用序列号列表中的应用序列号部分匹配,是则执行步骤37-5,否则执行步骤37-6 ; 步骤37-5:所述终端判断当前入口标识之后的应用目录文件与所述应用序列号列表中的应用序列号是否部分匹配,是则根据当前入口标识之后的应用信息更新所述应用候选列表,执行步骤37-6,否则直接执行步骤37-6 ; 步骤37-6:所述终端判断当前入口标识之后是否还存在入口标识,是则更新当前入口标识,返回步骤37-3,否则更新当前记录号,返回步骤36。
42.根据权利要求41所述的方法,其特征在于,所述终端判断所述第二应答数据中是否存在入口标识,具体为:所述终端判断所述第二应答数据中是否存在第二标签值,是则确定所述第二应答数据中存在入口标识,否则确定所述第二应答数据中不存在入口标识。
43.根据权利要求41所述的方法,其特征在于,所述终端判断当前入口标识之后的应用目录文件与所述预设的应用序列号列表中的应用序列号是否完整匹配,具体为:所述终端判断是否能够在所述预设的应用序列号列表中查找到与当前入口标识之后中的应用目录文件完全相同的应用序列号,是则确定当前入口标识之后中的应用目录文件与应用序列号列表中的应用序列号完整匹配,否则确定当前入口标识之后中的应用目录文件不与应用序列号列表中的应用序列号完整匹配。
44.根据权利要求41所述的方法,其特征在于,所述终端判断当前入口标识之后的应用目录文件与所述应用序列号列表中的应用序列号是否部分匹配,具体为:所述终端判断是否能够在所述应用序列号列表中查找到与当前入口标识之后的应用目录文件的预设部分相同的应用序列号,是则确定当前入口标识之后的应用目录文件与应用序列号列表中的应用序列号部分匹配,否则确定当前入口标识之后的应用目录文件不与应用序列号列表中的应用序列号部分匹配。
45.根据权利要求41所述的方法,其特征在于,所述根据当前入口标识之后的应用信息更新所述应用候选列表,具体为:所述终端将当前入口标识之后的应用信息中的应用优先级指示符和应用目录文件存储到所述应用候选列表中。
46.根据权利要求27所述的方法,其特征在于,所述步骤35之前还包括:所述终端初始化应用候选列表。
47.根据权利要求27所述的方法,其特征在于,当所述终端判断出所述应用候选列表中仅有一个与所述智能卡有共同支持或相互支持的应用时,所述终端按照预设规则选择一个应用,再根据确定的应用在所述应用候选列表中获取所述应用的信息,具体为: 步骤39-1:所述终端根据所述应用候选列表中的应用优先级指示符,判断所述应用候选列表中的应用是否需要用户进行确认,是则执行步骤39-2,否则选择所述应用,获取与所述应用对应的信息; 步骤39-2:所述终端判断是否支持用户确认,是则执行步骤39-3,否则结束; 步骤39-3:所述终端显示所述应用,判断是否在预设时间内接收到触发,是则选择所述应用,获取与所述应用对应的信息,否则结束。
48.根据权利要求47所述的方法,其特征在于,所述终端根据所述应用候选列表中的应用优先级指示符,判断所述应用候选列表中的应用是否需要用户进行确认,具体为:所述终端判断所述应用优先级指示符是否符合第一预设格式,是则确定所述应用需要用户进行确认,否则确定所述应用不需要用户进行确认。
49.根据权利要求27所述的方法,其特征在于,当所述终端判断出所述应用候选列表中有至少两个与所述智能卡有共同支持或相互支持的应用时,所述终端按照预设规则选择一个应用,再根据确定的应用在所述应用候选列表中获取所述应用的信息,具体为: 步骤39-4:所述终端显示所述应用候选列表; 步骤39-5:所述终端判断是否支持用户确认,是则执行步骤39-6,否则执行步骤89-7 ; 步骤39-6:所述终端判断是否在预设时间内接收到触发,是则根据触发获取对应的应用的信息,否则结束; 步骤39-7:所述终端根据所述应用优先级指示符,获取不需要用户进行确认的应用中优先级最高的应用的信息。
50.根据权利要求49所述的方法,其特征在于,所述步骤39-7还包括:所述终端删除所述应用候选列表中需要用户进行确认的应用。
51.根据权利要求27所述的方法,其特征在于,所述步骤39判断所述第五应答数据符合第一预设要求与选择应用成功之间还包括:所述终端判断所述第四选择指令中的应用序列号是否与所述第五应答数据中的专用文件名完整匹配,是则选择应用成功,保存所述第五应答数据中的处理选项数据对象列表,结束流程,否则在所述应用候选列表中删除获取到的所述应用的信息,返回步骤38。
52.根据权利要求27所述的方法,其特征在于,所述选择应用成功具体为:所述终端和所述智能卡分别设置相同的应用作为当前应用。
53.一种终端和智能卡协商选择应用的装置,其特征在于,包括:第一初始模块、发送模块、接收模块、第一判断模块、第二判断模块、第三判断模块、第一更新模块、第二初始模块、第四判断模块、第五判断模块、第十判断模块、第一获取模块、第六判断模块、存储模块和删除模块; 所述第一初始模块,用于获取所述智能卡中的短文件标识,初始化应用候选列表和当前记录号; 所述发送模块,用于根据所述第一初始模块获取的所述短文件标识和当前记录号向所述智能卡发送读记录指令;还用于根据当前应用序列号向所述智能卡发送第二选择指令;还用于根据获取到的应用序列号,向所述智能卡发送第四选择指令; 所述接收模块,用于接收所述智能卡根据所述发送模块发送的所述读记录指令返回的第二应答数据;还用于接收所述智能卡根据所述发送模块发送的所述第二选择指令返回的第三应答数据;还用于接收所述智能卡根据所述发送模块发送的所述第四选择指令返回的第五应答数据; 所述第一判断模块,用于根据所述接收模块接收到的所述第二应答数据判断是否已读取完所述智能卡中的记录; 所述第二判断模块,用于在所述第一判断模块判断为是时,判断所述应用候选列表是否为空; 所述第三判断模块,用于在所述第一判断模块判断为否时,判断所述接收模块接收到的所述第二应答数据中的应用目录文件与预设的应用序列号列表中的应用序列号是否匹配; 所述第一更新模块,用于在所述第三判断模块判断为是时,根据所述接收模块接收到的所述第二应答数据中的应用信息更新所述应用候选列表,更新当前记录号;还用于在所述第三判断模块判断为否时,更新当前记录号; 所述第二初始模块,用于在所述第二判断模块判断为是时,获取预设的应用序列号列表中的第一个应用序列号作为当前应用序列号; 所述第四判断模块,用于判断所述接收模块接收到的所述第三应答数据中的专用文件名是否与当前应用序列号匹配; 所述第一更新模块,还用于在所述第四判断模块判断为是时,根据所述接收模块接收到的所述第三应答数据更新所述应用候选列表; 所述第五判断模块,用于在所述第四判断模块判断为否,或者所述第一更新模块根据所述第三应答数据更新所述应用候选列表后,判断所述应用序列号列表中的当前应用序列号之后是否存在应用序列号,是则更新当前应用序列号; 所述第十判断模块,用于根据所述应用候选列表判断是否与所述智能卡有共同支持的应用; 所述第一获取模块,用于在所述第十判断模块判断为是时,按照预设规则选择一个应用,再根据确定的应用在所述应用候选列表中获取所述应用的信息; 所述第六判断模块,用于判断所述接收模块接收到的所述第五应答数据是否符合第一预设要求; 所述存储模块,用于在所述第六判断模块判断为是时,保存所述接收模块接收到的所述第五应答数据中的处理选项数据对象列表; 所述删除模块,用于在所述第六判断模块判断为否时,在所述应用候选列表中删除获取到的所述应用的信息。
54.根据权利要求53所述的装置,其特征在于,所述第一初始模块包括第一判断单元和第二判断单元; 所述发送模块,还用于根据预设的专用文件名向所述智能卡发送第一选择指令; 所述接收模块,还用于接收所述智能卡根据所述发送模块发送的所述第一选择指令返回的第一应答数据; 所述第一判断单元,用于判断所述接收模块接收到的所述第一应答数据是否符合第二预设要求; 所述第二判断单元,用于在所述第一判断单元判断为是时,判断所述第一应答数据中是否存在正确的短文件标识,是则获取所述短文件标识。
55.根据权利要求54所述的装置,其特征在于,所述第一初始模块还包括第三判断单元,用于根据所述接收模块接收到的所述第一应答数据判断所述智能卡是否被锁定或不支持该指令。
56.根据权利要求54所述的装置,其特征在于,所述第二判断单元具体用于,在所述第一判断单元判断为是时,判断所述第一应答数据中是否存在第一标签值,如存在第一标签值则获取所述第一标签值之后的短文件标识的值,继续判断获取到的短文件标识的值是否在第一范围内,如所述短文件标识的值在第一范围内则获取所述短文件标识。
57.根据权利要求53所述的装置,其特征在于,所述发送模块用于根据所述第一初始模块获取的所述短文件标识和当前记录号向所述智能卡发送读记录指令,包括: 所述发送模块用于根据所述短文件标识和当前记录号向智能卡发送第一读记录指令; 所述接收模块还用于接收所述智能卡根据所述发送模块发送的所述第一读记录指令返回的数据; 所述发送模块还用于从所述接收模块接收的所述返回的数据中,得到记录长度,再根据所述短文件标识和所述记录长度向所述智能卡发送第二读记录指令。
58.根据权利要求53所述的装置,其特征在于,所述装置还包括第七判断模块,用于判断所述接收模块接收到的所述第二应答数据是否符合第三预设要求,否则初始化所述应用候选列表。
59.根据权利要求53所述的装置,其特征在于,所述第三判断模块包括:第四判断单元、第一获取单元、第五判断单元、第六判断单元、第七判断单元、第八判断单元; 所述第四判断单元,用于判断所述接收模块接收到的所述第二应答数据中是否存在入口标识; 所述第一获取单元,用于在所述第四判断单元判断为是时,获取所述第二应答数据中的第一个入口标识作为当前入口标识; 所述第五判断单元,用于判断当前入口标识之后的应用目录文件与预设的应用序列号列表中的应用序列号是否完整匹配; 所述第六判断单元,用于在所述第五判断单元判断为否时,根据所述应用序列号列表中与当前入口标识之后的应用目录文件对应的应用选择指示器,判断是否允许当前入口标识之后的应用目录文件与应用序列号列表中的应用序列号部分匹配; 所述第七判断单元,用于在所述第六判断单元判断为是时,判断当前入口标识之后的应用目录文件与所述应用序列号列表中的应用序列号是否部分匹配; 所述第八判断单元,用于判断当前入口标识之后是否还存在入口标识; 所述第一更新模块,还用于在所述第四判断单元判断为否时,更新当前记录号;还用于在所述第五判断单元判断为是时,根据当前入口标识之后的应用信息更新所述应用候选列表;还用于在所述第七判断单元判断为是时,根据当前入口标识之后的应用信息更新所述应用候选列表;还用于在所述第八判断单元判断为是时,更新当前入口标识;在所述第八判断单元判断为否时,更新当前记录号。
60.根据权利要求59所述的装置,其特征在于,所述第四判断单元具体用于,判断所述第二应答数据中是否存在第二标签值,是则确定所述第二应答数据中存在入口标识,否则确定所述第二应答数据中不存在入口标识。
61.根据权利要求59所述的装置,其特征在于,所述第五判断单元具体用于,判断是否能够在所述预设的应用序列号列表中查找到与当前入口标识之后中的应用目录文件完全相同的应用序列号,是则确定当前入口标识之后中的应用目录文件与应用序列号列表中的应用序列号完整匹配,否则确定当前入口标识之后中的应用目录文件不与应用序列号列表中的应用序列号完整匹配。
62.根据权利要求59所述的装置,其特征在于,所述第七判断单元具体用于,判断是否能够在所述应用序列号列表中查找到与当前入口标识之后的应用目录文件的预设部分相同的应用序列号,是则确定当前入口标识之后的应用目录文件与应用序列号列表中的应用序列号部分匹配,否则确定当前入口标识之后的应用目录文件不与应用序列号列表中的应用序列号部分匹配。
63.根据权利要求59所述的装置,其特征在于,所述第一更新模块还用于根据当前入口标识之后的应用信息更新所述应用候选列表,具体为:所述第一更新模块还用于将当前入口标识之后的应用信息中的应用优先级指示符和应用目录文件存储到应用候选列表中。
64.根据权利要求53所述的装置,其特征在于,所述第四判断模块包括:第八判断单元、第九判断单元、第十判断单元、第十一判断单元; 所述第八判断单元,用于判断所述接收模块接收到的所述第三应答数据中的专用文件名是否与当前应用序列号完整匹配; 所述第九判断单元,用于在所述第八判断单元判断为否时,根据所述应用序列号列表中与当前应用序列号对应的应用选择指示器,判断是否允许所述第三应答数据中的专用文件名与当前应用序列号部分匹配; 所述第十判断单元,用于在所述第九判断单元判断为是时,判断所述第三应答数据中的专用文件名与当前应用序列号是否部分匹配; 所述发送模块,还用于根据当前应用序列号向所述智能卡发送第三选择指令; 所述接收模块,还用于接收所述智能卡根据所述发送模块发送的所述第三选择指令返回的第四应答数据; 所述第十一判断单元,用于判断所述接收模块接收到的所述第四应答数据是否符合第四预设要求; 所述第一更新模块,还用于在所述第八判断单元判断为是时,根据所述接收模块接收到的所述第三应答数据更新所述应用候选列表;还用于在所述第十判断单元判断为是时,根据所述接收模块接收到的所述第三应答数据更新所述应用候选列表;还用于在所述第十一判断单元判断为是时,根据所述第四应答数据更新所述应用候选列表。
65.根据权利要求64所述的装置,其特征在于,所述第四判断模块还包括第十二判断单元,用于判断所述接收模块接收到的所述第三应答数据是否符合第五预设要求。
66.根据权利要求64所述的装置,其特征在于,所述第八判断单元具体用于,判断所述第三应答数据中的专用文件名是否与当前应用序列号完全相同,是则确定所述第三应答数据中的专用文件名与当前应用序列号完整匹配,否则确定所述第三应答数据中的专用文件名不与当前应用序列号完整匹配。
67.根据权利要求64所述的装置,其特征在于,所述第四判断模块还包括第十三判断单元,用于根据所述接收模块接收到的所述第三应答数据判断所述智能卡中与所述专用文件名对应的应用是否被锁定。
68.根据权利要求64所述的装置,其特征在于,所述第十判断单元具体用于,判断所述第三应答数据中的专用文件名的预设部分与当前应用序列号是否相同,是则确定所述专用文件名与当前应用序列号部分匹配,否则确定所述专用文件名不与当前应用序列号部分匹配。
69.根据权利要求64所述的装置,其特征在于,所述第四判断模块还包括第十四判断单元,用于根据所述接收模块接收到的所述第四应答数据判断所述智能卡中与所述专用文件名对应的应用是否被锁定。
70.根据权利要求64所述的装置,其特征在于,所述第一更新模块用于根据所述第三应答数据更新所述应用候选列表,具体为:所述第一更新模块用于将所述第三应答数据中的专用文件名和所述第三应答数据中的所述文件控制信息中的应用优先级指示符存储到所述应用候选列表中; 所述第一更新模块用于根据所述第四应答数据更新所述应用候选列表,具体为:所述第一更新模块用于将所述第四应答数据中的专用文件名和所述第四应答数据中的所述文件控制信息中的应用优先级指示符存储到所述应用候选列表中。
71.根据权利要求64所述的装置,其特征在于,所述装置还包括第八判断模块,用于判断所述应用候选列表中仅有一个与所述智能卡有共同支持或相互支持的应用。
72.根据权利要求53所述的装置,其特征在于,当所述第八判断模块判断出所述应用候选列表中仅有一个与所述智能卡有共同支持或相互支持的应用时,所述第一获取模块包括:第十五判断单元、第十六判断单元和第十七判断单元; 所述第十五判断单元,用于根据所述应用候选列表中的应用优先级指示符,判断所述应用候选列表中的应用是否需要用户进行确认,否则选择所述应用,获取与所述应用对应的信息; 所述第十六判断单元,用于在所述第十五判断单元判断为是时,判断是否支持用户确认; 所述第十七判断单元,用于在所述第十六判断单元判断为是时,显示所述应用,判断是否在预设时间内接收到触发,是则选择所述应用,获取与所述应用对应的信息。
73.根据权利要求72所述的装置,其特征在于,所述第十五判断单元具体用于判断所述应用优先级指示符是否符合第一预设格式,是则确定所述应用需要用户进行确认,否则确定所述应用不需要用户进行确认,选择所述应用,获取所述应用的信息。
74.根据权利要求71所述的装置,其特征在于,当所述第八判断模块判断出所述应用候选列表中有至少两个与所述智能卡有共同支持或相互支持的应用时,所述第一获取模块包括:显示单元、第十八判断单元、第十九判断单元和第二获取单元; 所述显示单元,用于显示所述应用候选列表; 所述第十八判断单元,用于判断是否支持用户确认; 所述第十九判断单元,用于在所述第十八判断单元判断为是时,判断是否在预设时间内接收到触发,否则结束; 所述第二获取单元,用于在所述第十八判断单元判断为否时,根据所述应用优先级指示符,获取不需要用户进行确认的应用中优先级最高的应用的信息;在所述第十九判断单元判断为是时,根据触发获取对应的应用的信息。
75.根据权利要求74所述的装置,其特征在于,所述第一删除模块还用于删除所述应用候选列表中需要用户进行确认的应用。
76.根据权利要求53所述的装置,其特征在于,所述装置还包括第九判断模块,用于判断所述第四选择指令中的应用序列号是否与所述接收模块接收到的所述第五应答数据中的专用文件名完整匹配。
【文档编号】G06K7/00GK104407845SQ201410591616
【公开日】2015年3月11日 申请日期:2014年10月29日 优先权日:2014年10月29日
【发明者】陆舟, 于华章 申请人:飞天诚信科技股份有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1