一种EMV协议库中数据的存储方法技术

技术编号:26730545 阅读:20 留言:0更新日期:2020-12-15 14:31
本发明专利技术公开了一种EMV协议库中数据的存储方法,所述存储方法把EMV协议中定义的TLV数据分为第一TLV数据和第二TLV数据来分别存储;所述第一TLV数据为常用的或运行前已知的TLV数据;所述第二TLV数据为不常用的TLV数据或发卡行专用的TLV数据或未知的TLV数据;定义第一类型用于表示第一TLV数据的不可变部分,定义第二类型用于表示第一TLV数据的可变部分,定义第三类型用于表示第三TLV数据。优点是:采用本发明专利技术中的存储方法,能够快速的访问EMV协议库中的TLV数据,节约了协议运行时间;能够最大限度的节约内存并防止内存的碎片化;能够使用统一的代码访问TLV数据的属性。

【技术实现步骤摘要】
一种EMV协议库中数据的存储方法
本专利技术涉及数据存储领域,尤其涉及一种EMV协议库中数据的存储方法。
技术介绍
随着银行IC卡的普及,这就要求作为主要的收单设备的POS必需具备读取IC卡的能力。而要能够正确的发起IC卡的交易;因此,除了必要的硬件和相应的驱动外,必须要POS机上的软件能够正确实现EMV协议库的相关协议。EMV协议库中协议的实现软件除了要求正确的实现EMV协议外,还要求协议软件运行快速,以保证提高用户的支付体验;然而,很多POS机内存都比较少,因此要求EMV模块也尽量少的占用内存;但是在EMV协议库中有大量的来自发卡行终端本身配置以及读取卡片的数据;因此,如何存储这些数据则成为EMV库需要解决的关键问题。
技术实现思路
本专利技术的目的在于提供一种EMV协议库中数据的存储方法,从而解决现有技术中存在的前述问题。为了实现上述目的,本专利技术采用的技术方案如下:一种EMV协议库中数据的存储方法,所述EMV协议库中存储的数据采用TLV格式定义,即为TLV数据;所述存储方法把EMV协议中定义的TLV数据分为第一TLV数据和第二TLV数据来分别存储;所述第一TLV数据为常用的或运行前已知的TLV数据;所述第二TLV数据为不常用的TLV数据或发卡行专用的TLV数据或未知的TLV数据;对第一TLV数据的存储具体包括如下步骤;定义第一类型用于表示第一TLV数据的不可变部分,所述第一TLV数据的不可变部分包括其最大长度、TAG值、属性、内容格式和来源;定义第二类型用于表示第一TLV数据的可变部分,所述第一TLV数据的可变部分包括实际数据和实际数据长度;根据第一类型和第二类型,定义两个有序的列表,即第一数组和第二数组,所述第一数组中的每个成员为第一类型,所述第二数组中的每个成员为第二类型,所述第一数组和第二数组中的每个成员都按照TLV数据中的TAG值大小升序排列;对第二TLV数据的存储具体包括如下步骤;定义第三类型,所述第三类型用于表示第三TLV数据;根据第三类型定义有序的列表,即第三数组,所述第三数组的每个成员为第三类型,所述第三数组中的每个成员都按照数据获得的时间先后排列放置。优选的,所述第一类型中包含如下成员,MaxLen;用于表示第一TLV数据的最大可能长度;Tag;用于使用整数表示第一TLV数据的具体TAG值;Attr;用于使用位图表示第一TLV数据的属性,所述位图中每一位代表一个属性;Fmt;用于使用二进制数表示第一TLV数据的内容格式,所述内容格式包括数字、字母数字和特殊字符;Src;用于表示第一TLV数据的来源,来源包括来自终端、来自卡片或来自发卡行。优选的,所述第二类型中包含如下成员,DataLen;用于表示第一TLV数据的实际数据长度;Data;用于表示第一TLV数据的实际数据。优选的,对TLV数据存储后,需要对TLV数据进行相应操作,所述操作包括设置和读取;具体可以通过索引和TAG值查找这两种方式进行TLV数据的设置和读取。优选的,索引仅适用于访问第一类型,即索引TLV数据在第一数组中的排列序号。优选的,通过TAG值查找进行TLV数据的读取具体包括如下内容,A1、根据TLV数据的TAG值在第一数组中用折半查找法搜索对应的TLV数据,若未找到对应的TLV数据,则进入步骤A2;否则,进入步骤A3;A2、根据TLV数据的TAG值在第三数组中按顺序查找对应的TLV数据,若未找到对应的TLV数据,则反馈查找错误代码;否则,进入步骤A3;A3、返回找到的对应TLV数据的数据长度及数据。优选的,通过TAG值查找进行TLV数据的设置具体包括如下内容,B1、根据TLV数据的TAG值在第一数组中用折半查找法搜索对应的TLV数据的索引,若未找到,则进入步骤B2;否则,进入步骤B3;B2、检查第三数组中存储的TLV数据个数是否达到了数组长度,若是,则返回溢出错误;否则把新的TLV数据添加第三数组的最后,第三数组的数组长度加一,并进入步骤B3;B3、检查新的TLV数据的来源,若其来源和索引所对应的TLV数据的来源不一致,则返回非法操作,设置流程结束;否则,进入步骤B4;B4、若新的TLV数据的来源为卡片,且此TLV数据已经设置过,则检查此TLV数据是否可以重新设置,若否,则返回非法操作,设置流程结束;否则,进入步骤B5;B5、根据步骤B1找到的索引把新的TLV数据设置到第二数组中,完成TLV数据的设置。本专利技术的有益效果是:1、采用本专利技术中的存储方法,能够快速的访问EMV协议库中的TLV数据,节约了协议运行时间。2、能够最大限度的节约内存并防止内存的碎片化。3、能够使用统一的代码访问TLV数据的属性。附图说明图1是本专利技术实施例中存储方法的流程图。具体实施方式为了使本专利技术的目的、技术方案及优点更加清楚明白,以下结合附图,对本专利技术进行进一步详细说明。应当理解,此处所描述的具体实施方式仅仅用以解释本专利技术,并不用于限定本专利技术。一种EMV协议库中数据的存储方法,所述EMV协议库中存储的数据采用TLV格式定义,即为TLV数据;所述存储方法把EMV协议中定义的TLV数据分为第一TLV数据和第二TLV数据来分别存储;所述第一TLV数据为常用的或运行前已知的TLV数据;所述第二TLV数据为不常用的TLV数据或发卡行专用的TLV数据或未知的TLV数据;对第一TLV数据的存储具体包括如下步骤;定义第一类型用于表示第一TLV数据的不可变部分,所述第一TLV数据的不可变部分包括其最大长度、TAG值、属性、内容格式和来源;定义第二类型用于表示第一TLV数据的可变部分,所述第一TLV数据的可变部分包括实际数据和实际数据长度;根据第一类型和第二类型,定义两个有序的列表,即第一数组和第二数组,所述第一数组中的每个成员为第一类型,所述第二数组中的每个成员为第二类型,所述第一数组和第二数组中的每个成员都按照TLV数据中的TAG值大小升序排列;对第二TLV数据的存储具体包括如下步骤;定义第三类型,所述第三类型用于表示第三TLV数据;根据第三类型定义有序的列表,即第三数组,所述第三数组的每个成员为第三类型,所述第三数组中的每个成员都按照数据获得的时间先后排列放置。本实施例中,所述TLV数据中T是指TAG,指明数据的类型和内容;L(length)是指数据的长度;V(Value)是数据的值。本实施例中,所述第一类型中包含如下成员,MaxLen;用于表示第一TLV数据的最大可能长度;Tag;用于使用整数表示第一TLV数据的具体TAG值;Attr;用于使用位图表示第一TLV数据的属性,所述位图中每一位代表一个属性;Fmt;用于使用二进制数表示第一TLV数据的内容格式,所述内容格式包括数字、字母数字和特殊字符;...

【技术保护点】
1.一种EMV协议库中数据的存储方法,所述EMV协议库中存储的数据采用TLV格式定义,即为TLV数据;其特征在于:所述存储方法把EMV协议中定义的TLV数据分为第一TLV数据和第二TLV数据来分别存储;所述第一TLV数据为常用的或运行前已知的TLV数据;所述第二TLV数据为不常用的TLV数据或发卡行专用的TLV数据或未知的TLV数据;/n对第一TLV数据的存储具体包括如下步骤;/n定义第一类型用于表示第一TLV数据的不可变部分,所述第一TLV数据的不可变部分包括其最大长度、TAG值、属性、内容格式和来源;/n定义第二类型用于表示第一TLV数据的可变部分,所述第一TLV数据的可变部分包括实际数据和实际数据长度;/n根据第一类型和第二类型,定义两个有序的列表,即第一数组和第二数组,所述第一数组中的每个成员为第一类型,所述第二数组中的每个成员为第二类型,所述第一数组和第二数组中的每个成员都按照TLV数据中的TAG值大小升序排列;/n对第二TLV数据的存储具体包括如下步骤;/n定义第三类型,所述第三类型用于表示第三TLV数据;根据第三类型定义有序的列表,即第三数组,所述第三数组的每个成员为第三类型,所述第三数组中的每个成员都按照数据获得的时间先后排列放置。/n...

【技术特征摘要】
1.一种EMV协议库中数据的存储方法,所述EMV协议库中存储的数据采用TLV格式定义,即为TLV数据;其特征在于:所述存储方法把EMV协议中定义的TLV数据分为第一TLV数据和第二TLV数据来分别存储;所述第一TLV数据为常用的或运行前已知的TLV数据;所述第二TLV数据为不常用的TLV数据或发卡行专用的TLV数据或未知的TLV数据;
对第一TLV数据的存储具体包括如下步骤;
定义第一类型用于表示第一TLV数据的不可变部分,所述第一TLV数据的不可变部分包括其最大长度、TAG值、属性、内容格式和来源;
定义第二类型用于表示第一TLV数据的可变部分,所述第一TLV数据的可变部分包括实际数据和实际数据长度;
根据第一类型和第二类型,定义两个有序的列表,即第一数组和第二数组,所述第一数组中的每个成员为第一类型,所述第二数组中的每个成员为第二类型,所述第一数组和第二数组中的每个成员都按照TLV数据中的TAG值大小升序排列;
对第二TLV数据的存储具体包括如下步骤;
定义第三类型,所述第三类型用于表示第三TLV数据;根据第三类型定义有序的列表,即第三数组,所述第三数组的每个成员为第三类型,所述第三数组中的每个成员都按照数据获得的时间先后排列放置。


2.根据权利要求1所述的EMV协议库中数据的存储方法,其特征在于:所述第一类型中包含如下成员,
MaxLen;用于表示第一TLV数据的最大可能长度;
Tag;用于使用整数表示第一TLV数据的具体TAG值;
Attr;用于使用位图表示第一TLV数据的属性,所述位图中每一位代表一个属性;
Fmt;用于使用二进制数表示第一TLV数据的内容格式,所述内容格式包括数字、字母数字和特殊字符;
Src;用于表示第一TLV数据的来源,来源包括来自终端、来自卡片或来自发卡行。


3.根据权利要求1所述的EMV协议库中数据的存储方法,其特征在于:所述第二类型中包含如下成员,
DataLen;用于表示第一TLV数据的实际数...

【专利技术属性】
技术研发人员:刘福标祁兵
申请(专利权)人:艾体威尔电子技术北京有限公司
类型:发明
国别省市:北京;11

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1