[go: up one dir, main page]

CN106127084B - 一种金融终端、安全处理器及安全处理器的工作方法 - Google Patents

一种金融终端、安全处理器及安全处理器的工作方法 Download PDF

Info

Publication number
CN106127084B
CN106127084B CN201610453728.9A CN201610453728A CN106127084B CN 106127084 B CN106127084 B CN 106127084B CN 201610453728 A CN201610453728 A CN 201610453728A CN 106127084 B CN106127084 B CN 106127084B
Authority
CN
China
Prior art keywords
character
safe processor
module
data
card
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
CN201610453728.9A
Other languages
English (en)
Other versions
CN106127084A (zh
Inventor
陆舟
于华章
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Feitian Technologies Co Ltd
Original Assignee
Feitian Technologies Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Feitian Technologies Co Ltd filed Critical Feitian Technologies Co Ltd
Priority to CN201610453728.9A priority Critical patent/CN106127084B/zh
Publication of CN106127084A publication Critical patent/CN106127084A/zh
Application granted granted Critical
Publication of CN106127084B publication Critical patent/CN106127084B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/70Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer
    • G06F21/71Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure computing or processing of information
    • GPHYSICS
    • G07CHECKING-DEVICES
    • G07FCOIN-FREED OR LIKE APPARATUS
    • G07F19/00Complete banking systems; Coded card-freed arrangements adapted for dispensing or receiving monies or the like and posting such transactions to existing accounts, e.g. automatic teller machines

Landscapes

  • Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • Theoretical Computer Science (AREA)
  • Finance (AREA)
  • Business, Economics & Management (AREA)
  • Mathematical Physics (AREA)
  • Accounting & Taxation (AREA)
  • Computer Security & Cryptography (AREA)
  • Software Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Financial Or Insurance-Related Operations Such As Payment And Settlement (AREA)

Abstract

本发明公开一种金融终端、安全处理器及安全处理器的工作方法,该金融终端包括安全处理器和卡槽,所述安全处理器与所述卡槽连接,所述安全处理器硬件包括电平转换电路和短路保护电路,所述电平转换电路和短路保护电路用于实现所述金融终端的电气特性;所述安全处理器用于实现金融终端与卡片之间的数据通讯。本发明的技术方案采用安全处理器内置的7816保护接口,将电气相关的功能用安全处理器内部软件代码来实现,降低了金融终端的成本、缩小体积并提高了产品的可维护性,使终端设计的结构更简单、高集成化,还提高了产品的稳定性以及简化生产工艺。

Description

一种金融终端、安全处理器及安全处理器的工作方法
技术领域
本发明涉及信息安全领域,尤其涉及一种金融终端、安全处理器及安全处理器的工作方法。
背景技术
在现有技术中,金融终端中的安全处理器通过专用7816芯片与卡槽连接,7816芯片上有电平转换电路和短路保护电路;如图1所示,当接触卡插入卡槽后,金融终端上电之后主控模块对接触卡进行控制操作。由于7816芯片对应的协议流程较为复杂,要实现金融终端与接触卡的通信,成本较高。
发明内容
本发明的目的是为了克服现有技术的不足,提供一种金融终端、安全处理器及安全处理器的工作方法。
本发明提供了一种金融终端,包括安全处理器和卡槽,所述安全处理器与所述卡槽连接,所述安全处理器硬件包括电平转换电路和短路保护电路,所述电平转换电路和短路保护电路用于实现所述金融终端的电气特性;所述安全处理器用于实现金融终端与卡片之间的数据通讯。
其中,上述金融终端还包括液晶屏,所述液晶屏与所述安全处理器连接。
其中,上述金融终端还包括键盘,所述键盘与所述安全处理器连接。
本发明还提供了一种金融终端上的安全处理器的工作方法,包括:
步骤S1:当所述安全处理器检测到卡槽中有IC卡插入时,所述安全处理器向所述IC卡发送上电复位指令,并等待接收所述IC卡返回的复位应答数据;
步骤S2:当所述安全处理器接收到复位应答数据后,判断上电复位是否成功,是则执行步骤S3,否则执行步骤S6;
步骤S3:所述安全处理器向所述IC卡发送选择应用环境指令,并判断是否接收到所述IC卡返回的正确选择应答,是则执行步骤S4,否则报错;
步骤S4:所述安全处理器向所述IC卡发送数据交互指令,并判断是否接收到所述IC卡返回的正确交互应答,是则执行步骤S5,否则报错;
步骤S5:所述安全处理器判断本次操作是否完成,是则执行步骤S6,否则返回步骤S4;
步骤S6:所述安全处理器对所述IC卡执行下电操作,当检测到所述IC卡被拔出时返回步骤S1。
其中,所述步骤S1之前还包括:
步骤b1:所述安全处理器将卡槽中与IC卡相关的引脚进行初始化配置;
步骤b2:所述安全处理器设置通讯参数的缺省值;
步骤b3:所述安全处理器根据所述通讯参数计算时序控制参数:
步骤b4:所述安全处理器启动冷复位时序;
步骤b5:所述安全处理器使能UART接收中断,准备接收IC卡发送的复位应答数据。
其中,所述步骤b5还包括:开启接收中断;
所述方法包括:
步骤c1:当所述安全处理器检测到接收中断时,保存接收到的字符;
步骤c2:所述安全处理器判断所述接收到的字符的类型;如为初始字符则执行步骤c3;如为格式字符则执行步骤c5;如为接口字符则执行步骤c10;如为历史字符则执行步骤c20;如为校验字符则执行步骤c24;
步骤c3:所述安全处理器设置等待定时器,将接收状态机设为接收格式字符;
步骤c4:所述安全处理器判断初始字符的逻辑方向是否错误,是则将所述金融终端状态机设置为参数无效,执行步骤c25,否则直接执行步骤c25;
步骤c5:所述安全处理器判断是否保存有第一组接口字符,是则执行步骤c6,否则执行步骤c7;
步骤c6:所述安全处理器将所述接收状态机设为接收接口字符,执行步骤c25;
步骤c7:所述安全处理器判断是否保存有历史字符,是则执行步骤c8,否则执行步骤c9;
步骤c8:所述安全处理器将所述接收状态机设为接收历史字符,记录历史字符的数量,执行步骤c25;
步骤c9:所述安全处理器将所述接收状态机设为接收额外字符,设置等待定时器,执行步骤c25;
步骤c10:所述安全处理器将第一个协议组作为当前协议组;
步骤c11:所述安全处理器根据当前协议组最后一个接口字符计算下一组字符的接口字符数量;
步骤c12:所述安全处理器通过当前协议本组最后一个接口字符判断是否还有下一组接口字符,是则执行步骤c13;否则执行步骤c14;
步骤c13:所述安全处理器将参与计算应答数据的校验值的字符数自加1,执行步骤c14;
步骤c14:所述安全处理器判断是否已经接收到最后一个接口字符,是则执行步骤c15,否则将下一个协议组作为当前协议组,返回步骤c11;
步骤c15:所述安全处理器判断是否已计录历史字符数量,是则执行步骤c16,否则执行步骤c17;
步骤c16:所述安全处理器更新历史字符数量,将所述接收状态机设置为接收历史字符,执行步骤c25;
步骤c17:所述安全处理器判断是否计算应答数据的检验值,是则执行步骤c18,否则执行步骤c19;
步骤c18:所述安全处理器将所述接收状态机设置为接收校验字符,执行步骤c25;
步骤c19:所述安全处理器将所述接收状态机设置为接收额外字符,设置等待定时器,执行步骤c25;
步骤c20:所述安全处理器判断所有的历史字符是否都已接收完毕,是则执行步骤c25,否则执行步骤c21;
步骤c21:所述安全处理器判断是否需要执行数据校验,是则执行步骤c22,否则执行步骤c23;
步骤c22:所述安全处理器将所述接收状态机设置为接收校验字符,执行步骤c25;
步骤c23:所述安全处理器将所述接收状态机设置为接收额外字符,执行步骤c25;
步骤c24:所述安全处理器将所述接收状态机设置为接收额外字符,设置字符等待时间,执行步骤c25;
步骤c25:所述安全处理器判断所述金融终端状态机,如为接收完成则执行步骤c26,如为参数无效则直接退出接收中断,如为其他则执行步骤c28;
步骤c26:所述安全处理器判断接收参数过程中是否出错,是则调用接收异常处理函数进行操作,操作完成后退出接收中断,否则执行步骤c27;
步骤c27:所述安全处理器将所述金融终端状态机设置为空闲状态,并解析接收到的复位应答数据,解析完成后退出接收中断;
步骤c28:所述安全处理器重新向所述IC卡发命令,并重新设置等待定时器,退出接收中断。
其中,所述步骤b5还包括:开启时钟定时器超时中断;
所述方法还包括:当所述安全处理器检测到时钟定时器超时中断时,所述安全处理器关闭时钟定时器,将所述金融终端状态机设置为接收超时,退出时钟定时器超时中断。
其中,所述步骤b5还包括:开启奇偶校验错误中断;
所述方法还包括:当所述安全处理器检测到奇偶校验错误中断时,所述安全处理器将所述卡槽上与IC卡的复位引脚相关的引脚设为低电平,将所述金融终端状态机设为奇偶检验错误,将所述IC卡的时钟信号关闭,退出奇偶校验错误中断。
其中,所述步骤b5还包括:开启等待定时器中断;
所述方法还包括:当所述安全处理器检测到等待定时器中断时,所述安全处理器判断是否接收到多余字符,是则执行步骤f1,否则执行步骤f2;
步骤f1:所述安全处理器将所述金融终端状态机设置为块保护时间错误,执行步骤f2;
步骤f2:所述安全处理器关闭接收中断,将接收状态机设置为接收完成,退出等待定时器中断。
其中,所述步骤c20具体包括:所述安全处理器根据所述格式字符计算得到历史字符的个数,判断所述历史字符的个数是否等于预设值,是则历史字符都已接收完毕,否则历史字符未接收完毕。
其中,所述步骤S2包括:
步骤e1:所述安全处理器等待接收初始字符,并设置第一接收定时器;
步骤e2:所述安全处理器判断是否接收到初始字符,是则执行步骤e3,否则给上位机返回复位应答数据接收超时信息;
步骤e3:所述安全处理器判断所述接收到的初始字符是否为第一预设值,是则执行步骤e6,否则执行步骤e4;
步骤e4:所述安全处理器判断所述接收到的初始字符是否为第二预设值,是则执行步骤e5,否则给上位机返回复位应答数据接收出错信息;
步骤e5:所述安全处理器将字符传输的逻辑约定设置为反向约定,执行步骤e7;
步骤e6:所述安全处理器将字符传输的逻辑约定设置为正向约定,执行步骤e7;
步骤e7:所述安全处理器将所述接收到的初始字符保存到复位应答数据缓存区中,等待接收格式字符,并设定第二接收定时器;
步骤e8:所述安全处理器判断在所述第二定时器的设定时间内是否接收到格式字符,是则执行步骤e9,否则给上位机返回复位应答数据接收超时信息;
步骤e9:所述安全处理器根据设置好的逻辑约定转换格式字符,并将转换后的格式字符保存到所述复位应答数据缓存区中,根据格式字符计算历史字符长度并保存,将所述复位应答数据缓存区中的第一个协议组作为当前协议组;
步骤e10:所述安全处理器判断所述复位应答数据缓存区中的数据的长度是否超过预设长度,是则执行步骤e18,否则将当前协议组中的第一个接口字符作为当前接口字符,执行步骤e11;
步骤e11:所述安全处理器判断当前接口字符是否超出当前协议组中的接口字符长度,是则执行步骤e12,否则执行步骤e14;
步骤e12:所述安全处理器将所述复位应答数据缓冲区中的下一个协议组作为当前协议组,获取当前协议组中的第四个接口字符作为当前接口字符;
步骤e13:所述安全处理器判断所述复位应答数据缓存区中的数据的长度是否超过预设长度,是则执行步骤e18,否则返回步骤e11;
步骤e14:所述安全处理器通过所述格式字符判断当前协议组的接口字符组中是否存在接口字符,是则执行步骤e15,否则执行步骤e17;
步骤e15:所述安全处理器判断在所述第一预设时间内是否收到接口字符,是则执行步骤e16,否则给上位机返回复位应答数据接收超时信息;
步骤e16:所述安全处理器根据设置好的逻辑约定进行接口字符转换,并将转换后的接口字符保存到所述复位应答数据缓存区中,执行步骤e17;
步骤e17:所述安全处理器将当前协议组中的下一个接口字符作为当前接口字符,返回步骤e11;
步骤e18:所述安全处理器根据所述历史字符长度判断是否接收完所有的历史字符,是则执行步骤e21,否则执行步骤e19;
步骤e19:所述安全处理器判断在所述第一预设时间内是否收到历史字符,是则执行步骤e20,否则给上位机返回复位应答数据接收超时信息;
步骤e20:所述安全处理器根据设置好的逻辑约定进行历史字符转换,将转换后的历史字符保存到所述复位应答数据缓存区中;
步骤e21:所述安全处理器遍历所述复位应答数据缓存区中每个协议组中的第四接口字符,查询是否存在T=1协议,是则执行步骤e22,否则给上位机返回复位应答数据接收成功信息;
步骤e22:所述安全处理器判断在所述第一预设时间内是否接收到校验字符,是则执行步骤e23,否则给上位机返回复位应答数据接收超时信息;
步骤e23:所述安全处理器根据设置好的逻辑约定进行校验字符转换;并将转换后的校验字符保存到所述复位应答数据缓存区中,给所述上位机返回复位应答数据接收成功信息。
其中,所述步骤S4包括:
步骤d1:所述安全处理器根据复位应答数据设定位持续时间;
步骤d2:所述安全处理器判断所述IC卡是否已插入且处于激活状态,是则执行步骤d3,否则给上位机返回所述IC卡无响应信息;
步骤d3:所述安全处理器判断发送的数据交互指令是否为PPS指令,是则执行步骤d4,否则执行步骤d7;
步骤d4:所述安全处理器判断所述ATR缓冲区中是否有预设接口字符,是则执行步骤d5,否则给所述上位机返回指令取消信息;
步骤d5:所述安全处理器与IC卡进行PPS参数协商操作,并判断协商操作是否成功,是则执行步骤d6,否则对所述IC卡进行下电操作,并给上位机返回错误信息;
步骤d6:所述安全处理器使用协商成功的参数开始与IC卡进行通讯,执行步骤d7;
步骤d7:所述安全处理器设置将要发送的APDU指令;
步骤d8:所述安全处理器将所述要发送的APDU指令发送给所述IC卡,并判断是否发送成功,是则执行步骤d9,否则给所述上位机返回错误码;
步骤d9:安全处理器设置工作等待时间;
步骤d10:所述安全处理器判断在所述工作等待时间内是否收到所述IC卡发送的第一个过程字,是则执行步骤d11,否则给所述上位机返回错误码;
步骤d11:所述安全处理器判断接收到的所述第一个过程字是否等于第一预设数据,是则执行步骤d12,否则执行步骤d13;
步骤d12:所述安全处理器丢弃接收到的所述第一个过程字,并重新设定所述工作等待时间,等待接收后续字符,返回步骤d10;
步骤d13:所述安全处理器判断接收到的第一个过程字是否为第二预设数据,是则执行步骤d14,否则执行步骤d17;
步骤d14:所述安全处理器保存接收到的所述第一个过程字,并重新设定所述工作等待时间,等待接收第二个过程字;
步骤d15:所述安全处理器判断在所述工作等待时间内是否接收到第二个过程字,是则执行步骤d16,否则给所述上位机返回错误码;
步骤d16:所述安全处理器保存所述第二个过程字,给所述上位机返回操作成功信息;
步骤d17:所述安全处理器判断接收到的第一过程字是否为INS字符,是则执行步骤d18,否则执行步骤d24;
步骤d18:所述安全处理器判断是否还有数据需要继续发送给所述IC卡,是则执行步骤d19,否则返回步骤d9;
步骤d19:所述安全处理器判断发送给所述IC卡指令中的le是否为0,是则执行步骤d20,否则执行步骤d22;
步骤d20:所述安全处理器判断在预设时间内是否接收到所述IC卡返回的应答数据,是则执行步骤d21,否则给所述上位机返回错误信息;
步骤d21:所述安全处理器保存IC卡返回的应答数据,给所述上位机返回操作成功信息;
步骤d22:所述安全处理器判断所述工作等待时间内是否接收到IC卡发送的指定长度的数据,是则执行步骤d23,否则给所述上位机返回错误信息;
步骤d23:所述安全处理器保存所述IC卡返回的指令长度的应答数据,给所述上位机返回操作成功信息;
步骤d24:所述安全处理器判断接收到的第一过程字是否为INS的补码,是则执行步骤d25,否则给所述上位机返回错误信息;
步骤d25:所述安全处理器判断是否还有数据继续发送给所述IC卡,是则执行步骤d26,否则执行步骤d27;
步骤d26:所述安全处理器给所述IC卡发送一个字节的数据,返回步骤d9;
步骤d27:所述安全处理器判断是否接收到所述IC卡返回的一个字节数据,是则执行步骤d28,否则给所述上位机返回错误信息;
步骤d28:所述安全处理器保存所述IC卡返回的一个字节数据,返回步骤d9。
其中,所述步骤d7具体包括:
步骤d71:所述安全处理器判断将要发送的APDU指令的类型,如为第一预设命令则执行步骤d72,如为第二预设命令则执行步骤d73,如为第三预设命令则执行步骤d74,如为其他则执行步骤d75;
步骤d72:所述安全处理器将所述要发送的APDU指令中的P3设置为0x00,发送数据总长度设置为5个字节,Le设为0,执行步骤d8;
步骤d73:所述安全处理器将所述要发送的APDU指令中的P3设置为0x00,发送数据总长度设置为与Le相同,执行步骤d8;
步骤d74:所述安全处理器将所述要发送的APDU指令中的P3设置为0x00,执行步骤d8;
步骤d75:所述安全处理器将所述要发送的APDU指令中的Le设置为APDU数据域长度-1,执行步骤d8。
其中,所述方法还包括:
步骤p1:所述安全处理器在应用层将金融终端状态机设置为操作等待状态;
步骤p2:所述安全处理器在应用层判断当前通讯协议是否为T=1,是则执行T=1的数据传送,执行步骤p3,否则执行T=0的数据传送,执行步骤p3;
步骤p3:所述安全处理器判断所述金融终端状态机是否为操作等待状态,是则返回步骤p3,否则执行步骤p4;
步骤p4:所述安全处理器在传输层判断发送的数据长度是否大于IC卡的信息域空间,是则执行步骤p5,否则执行步骤p6;
步骤p5:所述安全处理器将链接标志位置位,根据所述IC卡的信息域空间将命令数据分割为多组数据发送给终端数据链路层,执行步骤p7;
步骤p6:所述安全处理器清除链接标志位,将所有的命令数据通过一组数据发送给终端数据链路层,执行步骤p7;
步骤p7:所述安全处理器在所述数据链路层把需要传送的字符数据封装成一帧数据块;
步骤p8:所述安全处理器将封装好的数据块发送给物理层;
步骤p9:所述安全处理器在所述物理层验证接收到的数据块的合法性,如合法则执行步骤p10,否则给所述上位机返回错误码,结束;
步骤p10:所述安全处理器通过I/O口将数据块发送给所述IC卡。
其中,所述方法还包括:
步骤q1:当所述安全处理器检测到中断时判断中断类型,如为定时器中断则执行步骤q2,如为发送缓冲器中断则执行步骤q3,如为字符发送完成中断则执行步骤q6,如为字符接收完成中断则执行步骤q9;
步骤q2:所述安全处理器向所述IC卡发送数据块,并使能发送完成中断,退出定时器中断;
步骤q3:所述安全处理器判断当前数据块中是否还有数据未发送完毕,是则执行步骤q4,否则执行步骤q5;
步骤q4:所述安全处理器更新未发送完成的数据字符个数,重新设定块保护时间,准备发送下一个数据字符,退出发送缓冲器中断;
步骤q5:所述安全处理器关闭字符发送完成中断,关闭定时器中断,退出发送缓冲器中断;
步骤q6:所述安全处理器判断数据块中的所有字符是否都已发送完成,是则执行步骤q7,否则执行步骤q8;
步骤q7:所述安全处理器重新设定块保护时间和块等待时间,退出字符发送完成中断;
步骤q8:所述安全处理器在数据块的最后一个字符开始时,开启定时器中断,退出字符发送完成中断;
步骤q9:所述安全处理器将接收到的数据块头中的数据存入接收缓存区中;
步骤q10:所述安全处理器判断块保护时间是否符合要求,是则执行步骤q11,否则执行步骤q15;
步骤q11:所述安全处理器判断数据块头是否接收完毕,是则执行步骤q12,否则执行步骤q14;
步骤q12:所述安全处理器将接收到的数据域的数据存入接收缓存区,并判断接收状态机是否为接收完成状态,是则执行步骤q13,否则退出字符接收完成中断;
步骤q13:所述安全处理器清除金融终端状态机的操作等待状态,退出字符接收完成中断;
步骤q14:所述安全处理器将接收到的数据域中的数据存入接收缓存区,将接收状态机设置为接收完成状态,关闭接收中断,退出字符接收完成中断;
步骤q15:所述安全处理器判断接收缓存区中的数据的长度是否不超过预设长度,是则执行步骤q16,否则执行步骤q17;
步骤q16:所述安全处理器关闭等待定时器,将接收状态机设为接收完成,清除所述金融终端状态机的操作等待状态,调用硬件异常处理函数,退出字符接收完成中断;
步骤q17:所述安全处理器关闭等待定时器然后重新开启,退出字符接收完成中断。
本发明又提供了一种金融终端上的安全处理器,包括:
第一检测模块,用于检测卡槽中是否有IC卡插入;
接收模块,用于接收所述IC卡返回的复位应答数据;
第一判断模块,用于当所述接收模块接收到复位应答数据后,判断上电复位是否成功,是则触发发送模块,否则触发下电模块;
所述第二判断模块,用于判断是否接收到所述IC卡返回的正确选择应答,是则触发发送模块,否则触发报错模块;
所述第三判断模块,用于判断是否接收到所述IC卡返回的正确交互应答,是则触发第四判断模块,否则触发报错模块;
所述报错模块,用于当所述第二判断模块和所述第三判断模块判断为否时报错;
所述第四判断模块,用于当所述第三判断模块判断为是时判断本次操作是否完成,是则触发下电模块,否则触发所述发送模块;
所述下电模块,用于当第一判断模块判断为否和第四判断模块判断是时对所述IC卡执行下电操作,触发所述第一检测模块;
所述发送模块,用于当所述第一检测模块检测到卡槽中有IC卡插入时向所述IC卡发送上电复位指令,当所述第一判断模块判断为是时向所述IC卡发送选择应用环境指令;当所述第二判断模块判断为是和所述第四判断模块判断为否时向所述IC卡发送数据交互指令。
其中,所述安全处理器还包括:
第一设置模块,用于将卡槽中与IC卡相关的引脚进行初始化配置;设置通讯参数的缺省值;
第一计算模块,用于根据所述通讯参数计算时序控制参数:
启动模块,用于启动冷复位时序;
第一使能模块,用于使能UART接收中断,准备接收IC卡发送的复位应答数据。
其中,所述安全处理器还包括:
第一开启模块,用于开启接收中断;
第二检测模块,用于检测是否有中断;
第一保存模块,用于当所述第二检测模块检测到接收中断时,保存接收到的字符;
第五判断模块,用于判断所述接收到的字符的类型;如为初始字符则触发第二设置模块;如为格式字符则触发第七判断模块;如为接口字符则触发作为模块;如为历史字符则触发第十三判断模块;如为校验字符则触发第十一设置模块;
所述第二设置模块,用于设置等待定时器,将接收状态机设为接收格式字符;
第六判断模块,用于判断初始字符的逻辑方向是否错误,是则将所述金融终端状态机设置为参数无效,触发第十五判断模块,否则触发第十五判断模块;
所述第七判断模块,用于判断是否保存有第一组接口字符,是则触发第三设置模块,否则触发第八判断模块;
所述第三设置模块,用于将所述接收状态机设为接收接口字符,触发第十五判断模块;
所述第八判断模块,用于判断是否保存有历史字符,是则触发第四设置模块,否则触发第五设置模块;
所述第四设置模块,用于将所述接收状态机设为接收历史字符,记录历史字符的数量,触发第十五判断模块;
所述第五设置模块,用于将所述接收状态机设为接收额外字符,设置等待定时器,触发第十五判断模块;
作为模块,用于将第一个协议组作为当前协议组;
第二计算模块,用于根据当前协议组最后一个接口字符计算下一组字符的接口字符数量;
第九判断模块,用于通过当前协议本组最后一个接口字符判断是否还有下一组接口字符,是则触发第三计算模块;否则触发第十判断模块;
所述第三计算模块,用于将参与计算应答数据的校验值的字符数自加1,触发第十判断模块;
所述第十判断模块,用于判断是否已经接收到最后一个接口字符,是则触发第十一判断模块,否则将下一个协议组作为当前协议组,触发第二计算模块;
所述第十一判断模块,用于判断是否已计录历史字符数量,是则触发第六设置模块,否则触发第十二判断模块;
所述第六设置模块,用于更新历史字符数量,将所述接收状态机设置为接收历史字符,触发第十五判断模块;
所述第十二判断模块,用于判断是否计算应答数据的检验值,是则触发第七设置模块,否则触发第八设置模块;
所述第七设置模块,用于将所述接收状态机设置为接收校验字符,触发第十五判断模块;
所述第八设置模块,用于将所述接收状态机设置为接收额外字符,设置等待定时器,触发第十五判断模块;
所述第十三判断模块,用于判断所有的历史字符是否都已接收完毕,是则触发第十五判断模块,否则触发第十四判断模块;
所述第十四判断模块,用于判断是否需要执行数据校验,是则触发第九设置模块,否则触发第十设置模块;
所述第九设置模块,用于将所述接收状态机设置为接收校验字符,触发第十五判断模块;
所述第十设置模块,用于将所述接收状态机设置为接收额外字符,触发第十五判断模块;
所述第十一设置模块,用于将所述接收状态机设置为接收额外字符,设置字符等待时间,触发第十五判断模块;
所述第十五判断模块,用于判断所述金融终端状态机,如为接收完成则触发第十六判断模块,如为参数无效则直接退出接收中断,如为其他则触发第十二设置模块;
所述第十六判断模块,用于判断接收参数过程中是否出错,是则调用接收异常处理函数进行操作,操作完成后退出接收中断,否则触发设置解析模块;
所述设置解析模块,用于将所述金融终端状态机设置为空闲状态,并解析接收到的复位应答数据,解析完成后退出接收中断;
所述第十二设置模块,用于重新设置等待定时器,退出接收中断。
其中,所述第一开启模块还用于开启时钟定时器超时中断;
所述安全处理器还包括关闭设置模块,用于当所述第二检测模块检测到时钟定时器超时中断时,关闭时钟定时器,将所述金融终端状态机设置为接收超时,退出时钟定时器超时中断。
其中,所述第一开启模块还用于开启奇偶校验错误中断;
所述安全处理器还包括第十三设置模块:用于当所述第二检测模块检测到奇偶校验错误中断时,将所述卡槽上与IC卡的复位引脚相关的引脚设为低电平,将所述金融终端状态机设为奇偶检验错误,将所述IC卡的时钟信号关闭,退出奇偶校验错误中断。
其中,所述第一开启模块还用于开启等待定时器中断;
所述安全处理器还包括第十七判断模块:用于当所述第二检测模块检测到等待定时器中断时,判断是否接收到多余字符,是则触发第十四设置模块,否则触发第十五设置模块;
所述第十四设置模块,用于将所述金融终端状态机设置为块保护时间错误,触发第十五设置模块;
所述第十五设置模块,用于关闭接收中断,将接收状态机设置为接收完成,退出等待定时器中断。
其中,所述第十三判断模块具体用于根据所述格式字符计算得到历史字符的个数,判断所述历史字符的个数是否等于预设值,是则历史字符都已接收完毕,否则历史字符未接收完毕。
其中,所述第二判断模块包括:
第一设置子模块,用于设置第一接收定时器;
第一判断子模块,用于判断是否接收到初始字符,是则触发第二判断子模块,否则触发所述发送模块给上位机返回复位应答数据接收超时信息;
所述第二判断子模块,用于判断所述接收到的初始字符是否为第一预设值,是则触发第三设置子模块,否则触发第三判断子模块;
所述第三判断子模块,用于判断所述接收到的初始字符是否为第二预设值,是则触发第二设置子模块,否则触发所述发送模块给所述上位机返回复位应答数据接收出错信息;
所述第二设置子模块,用于将字符传输的逻辑约定设置为反向约定,触发第一保存设定子模块;
所述第三设置子模块,用于将字符传输的逻辑约定设置为正向约定,触发第一保存设定子模块;
所述第一保存设定子模块,用于将所述接收到的初始字符保存到复位应答数据缓存区中,并设定第二接收定时器;
第四判断子模块,用于判断在所述第二定时器的设定时间内是否接收到格式字符,是则触发第一转换保存子模块,否则触发所述发送模块给所述上位机返回复位应答数据接收超时信息;
所述第一转换保存子模块,用于根据设置好的逻辑约定转换格式字符,并将转换后的格式字符保存到所述复位应答数据缓存区中,根据格式字符计算历史字符长度并保存,将所述复位应答数据缓存区中的第一个协议组作为当前协议组;
第五判断子模块,用于判断所述复位应答数据缓存区中的数据的长度是否超过预设长度,是则触发第九判断子模块,否则将当前协议组中的第一个接口字符作为当前接口字符,执行触发第六判断子模块;
所述第六判断子模块,用于判断当前接口字符是否超出当前协议组中的接口字符长度,是则触发第一获取子模块,否则触发第八判断子模块;
所述第一获取子模块,用于将所述复位应答数据缓冲区中的下一个协议组作为当前协议组,获取当前协议组中的第四个接口字符作为当前接口字符;
第七判断子模块,判断所述复位应答数据缓存区中的数据的长度是否超过预设长度,是则触发第九判断子模块,否则触发所述第六判断子模块;
所述第八判断子模块,用于通过所述格式字符判断当前协议组的接口字符组中是否存在接口字符,是则触发第八判断子模块,否则触发第一作为子模块;
所述第八判断子模块,用于判断在所述第一预设时间内是否收到接口字符,是则触发所述第二转换保存子模块,否则触发所述发送模块给所述上位机返回复位应答数据接收超时信息;
所述第二转换保存子模块,用于根据设置好的逻辑约定进行接口字符转换,并将转换后的接口字符保存到所述复位应答数据缓存区中,触发第一作为子模块;
所述第一作为子模块,用于将当前协议组中的下一个接口字符作为当前接口字符,触发所述第六判断子模块;
所述第九判断子模块,用于根据所述历史字符长度判断是否接收完所有的历史字符,是则触发查询子模块,否则触发第十判断子模块;
所述第十判断子模块,用于判断在所述第一预设时间内是否收到历史字符,是则触发第三转换保存子模块,否则触发所述发送模块给所述上位机返回复位应答数据接收超时信息;
所述第三转换保存子模块,用于根据设置好的逻辑约定进行历史字符转换,将转换后的历史字符保存到所述复位应答数据缓存区中;
所述查询子模块,用于遍历所述复位应答数据缓存区中每个协议组中的第四接口字符,查询是否存在T=1协议,是则触发第十一判断子模块,否则触发所述发送模块给所述上位机返回复位应答数据接收成功信息;
所述第十一判断子模块,用于判断在所述第一预设时间内是否接收到校验字符,是则触发第四转换保存子模块,否则触发所述发送模块给所述上位机返回复位应答数据接收超时信息;
所述第四转换保存子模块,用于根据设置好的逻辑约定进行校验字符转换;并将转换后的校验字符保存到所述复位应答数据缓存区中,触发所述发送模块给所述上位机返回复位应答数据接收成功信息。
其中,所述第三判断模块包括:
第四设置子模块,用于根据复位应答数据设置位持续时间;
第十二判断子模块,用于判断所述IC卡是否已插入且处于激活状态,是则触发第十三判断子模块,否则触发所述发送模块给所述上位机返回IC卡无响应信息;
所述第十三判断子模块,用于判断发送的数据交互指令是否为PPS指令,是则触发第十四判断子模块,否则第五设置子模块;
所述第十四判断子模块,用于判断所述ATR缓冲区中是否有预设接口字符,是则触发第十五判断子模块,否则触发所述发送模块给所述上位机返回指令取消信息;
所述第十五判断子模块,用于与IC卡进行PPS参数协商操作,并判断协商操作是否成功,是则触发通讯子模块,否则触发所述下电模块对IC卡进行下电操作,并触发所述发送模块给上位机返回错误信息;
所述通讯子模块,用于使用协商成功的参数开始与IC卡进行通讯,触发设置子模块;
所述第五设置子模块,用于设置将要发送的APDU指令;
第十六判断子模块,用于当所述发送模块将所述要发送的APDU指令发送给所述IC卡后,判断所述APDU指令是否发送成功,是则触发第六设置子模块,否则触发所述发送模块给所述上位机返回错误码;
所述第六设置子模块,设置工作等待时间;
第十七判断子模块,用于判断在所述工作等待时间内是否收到所述IC卡发送的第一个过程字,是则触发第十八判断子模块,否则触发所述发送模块给所述上位机返回错误码;
所述第十八判断子模块,用于判断接收到的所述第一个过程字是否等于第一预设数据,是则触发丢弃设定子模块,否则触发第十九判断子模块;
所述丢弃设定子模块,用于丢弃接收到的所述第一个过程字,并重新设定所述工作等待时间,等待接收后续字符,触发所述第十七判断子模块;
所述第十九判断子模块,用于判断接收到的第一个过程字是否为第二预设数据,是则触发第二保存设定子模块,否则触发第二十一判断子模块;
所述第二保存设定子模块,用于保存接收到的所述第一个过程字,并重新设定所述工作等待时间;
第二十判断子模块,用于判断在所述工作等待时间内是否接收到第二个过程字,是则触发第一保存子模块,否则触发所述发送模块给所述上位机返回错误码;
所述第一保存子模块,保存所述第二个过程字,触发所述发送模块给所述上位机返回操作成功信息;
所述第二十一判断子模块,用于判断接收到的第一过程字是否为INS字符,是则触发第二十二判断子模块,否则触发第二十六判断子模块;
所述第二十二判断子模块,用于判断是否还有数据需要继续发送给所述IC卡,是则触发第二十三判断子模块,否则触发所述第六设置子模块;
所述触发第二十三判断子模块,用于判断发送给所述IC卡指令中的le是否为0,是则触发第二十四判断子模块,否则触发第二十五判断子模块;
所述第二十四判断子模块,用于判断在预设时间内是否接收到所述IC卡返回的应答数据,是则触发第二保存子模块,否则触发所述发送模块给所述上位机返回错误信息;
所述第二保存子模块,用于保存所述IC卡返回的应答数据,给所述上位机返回操作成功信息;
所述第二十五判断子模块,用于判断所述工作等待时间内是否接收到IC卡发送的指定长度的数据,是则触发第三保存子模块,否则触发所述发送模块给所述上位机返回错误信息;
所述第三保存子模块,用于保存所述IC卡返回的指令长度的应答数据,触发所述发送模块给所述上位机返回操作成功信息;
所述第二十六判断子模块,用于判断接收到的第一过程字是否为INS的补码,是则触发第二十七判断子模块,否则触发所述发送模块给所述上位机返回错误信息;
所述触发第二十七判断子模块,用于判断是否还有数据继续发送给所述IC卡,是则触发发送模块给所述IC卡发送一个字节的数据,触发所述第六设置子模块,否则触发第二十八判断子模块;
所述触发第二十八判断子模块,用于判断是否接收到所述IC卡返回的一个字节数据,是则触发第四保存子模块,否则触发所述发送模块给所述上位机返回错误信息;
所述第四保存子模块,用于保存所述IC卡返回的一个字节数据,触发所述第六设置子模块。
其中,所述第五设置子模块包括:
第一判断单元,用于判断将要发送的APDU指令的类型,如为第一预设命令则触发第一设置单元,如为第二预设命令则触发第二设置单元,如为第三预设命令则触发第三设置单元,如为其他则触发第四设置单元;
所述第一设置单元用于将所述要发送的APDU指令中的P3设置为0x00,发送数据总长度设置为5个字节,Le设为0;
所述第二设置单元用于将所述要发送的APDU指令中的P3设置为0x00,发送数据总长度设置为与Le相同;
所述第三设置单元用于将所述要发送的APDU指令中的P3设置为0x00;
所述第四设置单元用于将所述要发送的APDU指令中的Le设置为APDU数据域长度-1。
其中,所述安全处理器还包括:
第十七设置模块,用于在应用层将金融终端状态机设置为操作等待状态;
第十八判断模块,用于在应用层判断当前通讯协议是否为T=1,是则执行T=1的数据传送,触发第十九判断模块,否则执行T=0的数据传送,触发第十九判断模块;
所述第十九判断模块,用于判断所述金融终端状态机是否为操作等待状态;
第二十判断模块,用于当所述第十九判断模块判断为否时在传输层判断发送的数据长度是否大于IC卡的信息域空间,是则触发置位发送模块,否则触发清除发送模块;
置位发送模块,用于将链接标志位置位,根据所述IC卡的信息域空间将命令数据分割为多组数据发送给终端数据链路层;
清除发送模块,用于清除链接标志位,将所有的命令数据通过一组数据发送给终端数据链路层;
封装发送模块,用于在所述数据链路层把需要传送的字符数据封装成一帧数据块,并将封装好的数据块发送给物理层;
验证模块,用于在所述物理层验证接收到的数据块的合法性,如合法则触发所述发送模块通过I/O口将数据块发送给所述IC卡,否则触发所述发送模块给所述上位机返回错误码,结束。
其中,所述安全处理器还包括:
第二十一判断模块,用于当检测到中断时判断中断类型,如为定时器中断则触发所述发送模块向所述IC卡发送数据块并触发第二使能模块,如为发送缓冲器中断则触发第二十一判断模块,如为字符发送完成中断则触发第二十二判断模块,如为字符接收完成中断则触发存入模块;
所述第二使能模块,用于使能发送完成中断,退出定时器中断;
所述第二十一判断模块,用于判断当前数据块中是否还有数据未发送完毕,是则触发更新设定模块,否则触发第一关闭模块;
所述更新设定模块,用于更新未发送完成的数据字符个数,重新设定块保护时间,准备发送下一个数据字符,退出发送缓冲器中断;
第一关闭模块:所述安全处理器关闭字符发送完成中断,关闭定时器中断,退出发送缓冲器中断;
所述第二十二判断模块,用于判断数据块中的所有字符是否都已发送完成,是则触发重新设定模块,否则触发第二开启模块;
所述重新设定模块,用于重新设定块保护时间和块等待时间,退出字符发送完成中断;
所述第二开启模块,用于在数据块的最后一个字符开始时,开启定时器中断,退出字符发送完成中断;
所述存入模块,用于将接收到的数据块头中的数据存入接收缓存区中;
第二十三判断模块,用于判断块保护时间是否符合要求,是则触发第二十四判断模块,否则触发第二十五判断模块;
所述第二十四判断模块,用于判断数据块头是否接收完毕,是则触发存入判断模块,否则触发存入设置模块;
所述存入判断模块,用于将接收到的数据域的数据存入接收缓存区,并判断接收状态机是否为接收完成状态,是则触发清除模块,否则退出字符接收完成中断;
所述清除模块,用于清除金融终端状态机的操作等待状态,退出字符接收完成中断;
所述存入设置模块,用于将接收到的数据域中的数据存入接收缓存区,将接收状态机设置为接收完成状态,关闭接收中断,退出字符接收完成中断;
所述第二十五判断模块,用于判断接收缓存区中的数据的长度是否不超过预设长度,是则触发关闭清除模块,否则触发第二关闭模块;
所述关闭清除模块,用于关闭等待定时器,将接收状态机设为接收完成,清除所述金融终端状态机的操作等待状态,调用硬件异常处理函数,退出字符接收完成中断;
所述第二关闭模块,用于关闭等待定时器然后重新开启,退出字符接收完成中断。
本发明与现有技术相比,具有以下优点:
本发明的技术方案采用安全处理器内置的7816保护接口,将电气相关的功能用安全处理器内部软件代码来实现,降低了金融终端的成本、缩小体积并提高了产品的可维护性,使终端设计的结构更简单、高集成化,还提高了产品的稳定性以及简化生产工艺。
附图说明
图1为现有技术中的金融终端的电路图;
图2为本发明实施例一提供的金融终端的电路图;
图3为实施例二提供的一种安全处理器的工作方法流程图;
图4为实施例三提供的一种安全处理器的工作方法流程图;
图5为实施例四提供一种安全处理器通过7816控制器根据复位应答数据判断上电复位操作是否成功的实现方法流程图;
图6为实施例五提供一种安全处理器通过串口根据复位应答数据判断上电复位操作是否成功的实现方法流程图;
图7和图8为实施例六提供一种安全处理器使用应用协议数据单元的数据块交互函数执行交易的实现方法流程图;
图9为实施例七提供一种安全处理器在各个网络层之间接收发送数据的实现方法流程图;
图10为实施例八提供一种安全处理器执行T=1的数据传送的实现方法流程图;
图11为实施例九提供一种金融终端上的安全处理器的方框图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
实施例一
本发明实施例一提供一种金融终端,如图2所示,安全处理器MCU直接与卡槽连接。具体的,在本实施例中,MCU通过八个引脚VCC、RST、CLK、C4、GND、I/O、C8、DET与卡槽的C1、C2、C3、C4、C5、C6、C7、C8连接。其中金融终端的电气特性由安全处理器的内部的电平转换电路和短路保护电路实现,而金融终端相关的逻辑接口由软件代码来设置,传输协议中终端传输层(TTL)、应用层由软件来完成,再将安全处理器MCU的I/O直接连接到卡槽的相关引脚以满足其机械特性的要求,将底层的电气、通讯协议测试集成在安全处理器的内部,即通过安全处理器上的软件代码来实现金融终端与卡片之间的数据通讯。
在本发明实施例中,控制芯片的引脚直接连接到卡槽的引脚处,通过处理器直接访问接触卡。
本实施例中的金融终端还可以包括按键和/或显示屏,均与安全处理器连接。
实施例二
本发明实施例二提供一种安全处理器的工作方法,该安全处理器设置在实施例一中的金融终端中,金融终端与测试系统相连接进行工作,测试系统包括IC卡,如图3所示,本实施例方法包括:
步骤S1:当安全处理器检测到卡槽中有IC卡插入时,安全处理器向IC卡发送上电复位指令,并等待接收IC卡返回的复位应答数据;
步骤S2:当安全处理器接收到复位应答数据后,判断上电复位是否成功,是则执行步骤S3,否则执行步骤S6;
步骤S3:安全处理器向IC卡发送选择应用环境指令,并判断是否接收到IC卡返回的正确选择应答,是则执行步骤S4,否则报错;
步骤S4:安全处理器向IC卡发送数据交互指令,并判断是否接收到IC卡返回的正确交互应答,是则执行步骤S5,否则报错;
在本实施例中,数据交互指令包括外部认证指令,外部认证指令用于IC卡向终端设备发送一个密文,终端设备对该密文进行解密,解密成功则认证通过,解密失败则认证未通过;
步骤S5:安全处理器判断本次操作是否完成,是则执行步骤S6,否则返回步骤S4;
步骤S6:安全处理器对IC卡执行下电操作,当检测到IC卡被拔出时返回步骤S1。
实施例三
本发明实施例三提供一种安全处理器的工作方法,如图4所示,包括:
步骤101:安全处理器查询卡槽中是否有IC卡插入,是则执行步骤102,否则执行步骤101;
在本实施例中,在步骤101之前需进行初始化,有两种实现方式;
(1)第一种方式安全处理器与7816芯片连接,进行初始化具体包括:
步骤a1:安全处理器将卡槽中与IC卡相关的引脚进行初始化配置;
步骤a2:安全处理器将ATR时钟定时器溢出时间设置为第一预设值;
具体的,本实施例中的第一预设值为32400个时钟周期;
步骤a3:安全处理器判断ATR时钟定时器是否溢出,是则执行步骤a4,否则返回步骤a3;
步骤a4:安全处理器将安全处理器中与IC卡的复位引脚相关的引脚设为高电平,开启中断程序,将ATR时钟定时器的溢出时间设置为第二预设值,将接收状态机设置接收初始字符,将金融终端状态机设置为操作等待;
具体的,本实施例中的第二预设值为42000个时钟周期;
步骤a5:安全处理器判断金融终端状态机是否为操作等待状态,是则继续步骤101,否则返回步骤a5;
(2)第二种安全处理器中安全处理器直接与卡槽连接,进行初始化具体包括:
步骤b1:安全处理器将卡槽中与IC卡相关的引脚进行初始化配置;
具体的,本实施例中的步骤b1包括:将卡槽中与IC卡电源引脚相关的引脚禁止供电,即VCC='0';将卡槽中与IC卡复位引脚相关的引脚设为低电平,即RST='0';将卡槽中与IC卡时钟引脚相关的引脚设为低电平,即CLK='0';将卡槽中与IC卡数据引脚相关的引脚设为低电平,即I/O='0';
步骤b2:安全处理器设置通讯参数的缺省值;
具体的,本实施例中的步骤b2包括:设置传输层使用T=0协议;卡片状态设为未上电;设置时钟速率转换因子整数值Fi=1;设置位速率调节因子整数值Di=1;字符传输设为正向逻辑约定;字符的校验使用LRC方式;额外保护时间N=1;工作等待时间整数WI=10;使用格式字符定时器实现ETU计数:即372个CLK增加1个ETU,PWM初始化,准备为IC卡提供时钟;
步骤b3:安全处理器根据通讯参数计算时序控制参数:
具体的,本实施例中的步骤b3包括:通过Fi查表获取时钟速率转换因子F值;通过Di查表获取位速率调节因子D值;T=0协议的字符间的保护时间为2个ETU;通过工作等待时间整数WI和额外保护时间N计算工作等待时间WWT;
步骤b4:安全处理器启动冷复位时序;
具体的,本实施例中的步骤b4包括:向卡槽中与IC卡相关的引脚提供VCC电源;UART初始化,关闭接收中断,根据时钟速率转换因子F值、位速率调节因子D值以及CLK设定通讯波特率,校验模式设为偶校验;数据格式为1个起始位+8个数据位+1个校验位;使能PWM方波输出,向卡槽中与IC卡时钟引脚相关的引脚提供CLK;将卡槽中与IC卡复位引脚RST相关的引脚设为低电平,并保持40000到45000个CLK时钟周期;将卡槽中与IC卡复位引脚RST相关的引脚设为高电平;
步骤b5:安全处理器使能UART接收中断,准备接收IC卡发送的复位应答数据;
在本实施例中,当安全处理器硬件接收到数据时进入UART接收中断,接收IC卡返回的数据,数据接收完成后退出UART接收中断;
在本实施例中,步骤b5中还包括:开启接收中断、时钟定时器超时中断、奇偶校验错误中断、等待定时器中断等中断程序;
步骤102:安全处理器向IC卡发送上电复位指令,并等待接收IC卡返回的复位应答数据;
步骤103:当安全处理器接收到复位应答数据后,判断上电复位是否成功,是则执行步骤104,否则执行步骤107;
在本实施例中,步骤103有两种实现方法,具体的在实施例四和实施例五中进行详述;
步骤104:安全处理器向IC卡发送选择应用环境指令,并判断是否接收到IC卡返回的正确选择应答,是则执行步骤105,否则报错;
步骤105:安全处理器向IC卡发送数据交互指令,并判断是否接收到IC卡返回的正确交互应答,是则执行步骤106,否则报错;
在本实施例中,步骤105有两种实现方法,具体的在实施例四和实施例五中进行详述;
步骤106:安全处理器判断本次操作是否完成,是则执行步骤107,否则返回步骤105;
步骤107:安全处理器对IC卡执行下电操作,当检测到卡槽中的IC卡被拔出时,返回步骤101。
实施例四
本发明实施例四提供一种安全处理器根据复位应答数据判断上电复位操作是否成功的实现方法,如图5所示,包括:
步骤201:当安全处理器检测到中断时,判断中断类型,如为时钟定时器超时中断则执行步骤202,如为奇偶校验错误中断则执行步骤203,如为等待定时器中断则执行步骤204;如为接收中断则执行步骤207;
步骤202:安全处理器关闭时钟定时器,将金融终端状态机设置为接收超时,退出时钟定时器超时中断;
步骤203:安全处理器将卡槽上与IC卡的复位引脚相关的引脚设为低电平,将金融终端状态机设为奇偶检验错误,将IC卡的时钟信号关闭,退出奇偶校验错误中断;
在本实施例中,IC卡的时钟信号用于安全处理器通过卡槽与IC进行通讯,关闭该IC卡的时钟信号后通讯中断;
步骤204:安全处理器判断是否接收到多余字符,是则执行步骤205,否则执行步骤206;
步骤205:安全处理器将金融终端状态机设置为块保护时间错误,执行步骤206;
步骤206:安全处理器关闭接收中断;将接收状态机设置为接收完成,退出等待定时器中断;
步骤207:安全处理器保存接收到的字符,重新设置字符保护时间,执行步骤208;
具体的,在本实施例中,安全处理器重新设置字符保护时间为10190个ETU(英文全称elementary time unit,中文全称:位持续时间);
步骤208:安全处理器判断接收到的字符的类型;如为初始字符则执行步骤209;如为格式字符则执行步骤211;如为接口字符则执行步骤216;如为历史字符则执行步骤226;如为校验字符则执行步骤230;
步骤209:安全处理器将等待定时器设置20180个ETU,将接收状态机设为接收格式字符;
步骤210:安全处理器判断初始字符的逻辑方向是否错误,是则将金融终端状态机设置为参数无效,执行步骤231,否则直接执行步骤231;
步骤211:安全处理器判断是否保存有第一组接口字符,是则执行步骤212,否则执行步骤213;
在本实施例中,格式字符的高四位对应四个接口字符,判断格式字符的高四位中是否全部为0,说明没有第一组接口字符,否则保存有第一组接口字符;
步骤212:安全处理器将接收状态机设为接收接口字符,执行步骤231;
步骤213:安全处理器判断是否保存有历史字符,是则执行步骤214,否则执行步骤215;
步骤214:安全处理器将接收状态机设为接收历史字符,记录历史字符的数量,执行步骤231;
步骤215:安全处理器将接收状态机设为接收额外字符,设置等待定时器为25etu,执行步骤231;
步骤216:安全处理器将第一个协议组作为当前协议组;
步骤217:安全处理器根据当前协议组最后一个接口字符计算下一组字符的接口字符数量;
步骤218:安全处理器通过当前协议本组最后一个接口字符判断是否还有下一组接口字符,是则执行步骤219;否则执行步骤220;
在本实施例中,最后一个接口字符为1个字节的数据,其高四位对应四个接口字符,如高四位全部为0则下一组字符的接口字符不存在;
步骤219:安全处理器将参与计算应答数据的校验值的字符数自加1,执行步骤220;
步骤220:安全处理器判断是否已经接收到最后一个接口字符,是则执行步骤221,否则将下一个协议组作为当前协议组,返回步骤217;
步骤221:安全处理器判断是否已计录历史字符数量,是则执行步骤222,否则执行步骤223;
步骤222:安全处理器更新历史字符数量,将接收状态机设置为接收历史字符,执行步骤231;
步骤223:安全处理器判断是否计算应答数据的检验值,是则执行步骤224,否则执行步骤225;
步骤224:安全处理器将接收状态机设置为接收校验字符,执行步骤231;
步骤225:安全处理器将接收状态机设置为接收额外字符,设置等待定时器的时间为25etu,执行步骤231;
步骤226:安全处理器判断所有的历史字符是否都已接收完毕,是则执行步骤231,否则执行步骤227;
具体的,在本实施例中,安全处理器根据格式字符计算得到历史字符的个数,判断历史字符的个数是否等于预设值,是则历史字符都已接收完毕,否则历史字符未接收完毕;
步骤227:安全处理器判断是否需要执行数据校验,是则执行步骤228,否则执行步骤229;
步骤228:安全处理器将接收状态机设置为接收校验字符,执行步骤231;
步骤229:安全处理器将接收状态机设置为接收额外字符,执行步骤231;
步骤230:安全处理器将接收状态机设置为接收额外字符,执行步骤231;
步骤231:安全处理器判断金融终端状态机,如为接收完成则执行步骤232,如为参数无效则直接退出接收中断,如为其他则执行步骤234;
步骤232:安全处理器判断接收参数过程中是否出错,是则调用接收异常处理函数进行操作,操作完成后退出接收中断,否则执行步骤233;
步骤233:安全处理器将金融终端状态机设置为空闲状态,并解析接收到的复位应答数据,解析完成后退出接收中断;
在本实施例中,复位应答数据包括:初始字符、格式字符、接口字符、历史字符、校验字符;
步骤234:安全处理器重新向IC卡发命令,并重新设置等待定时器,退出接收中断。
实施例五
本发明实施例五提供一种安全处理器根据复位应答数据判断上电复位操作是否成功的实现方法,具体是通过串口实现的,如图6所示,包括:
步骤301:安全处理器等待接收初始字符,并设置第一接收定时器;
具体的,在本实施例中,设置接收定时器包括:设置定时器定时400-400000时钟周期接收初始字符;
在本实施例中,收初始字符为复位应答数据(即ATR)里的数据;
步骤302:安全处理器判断是否接收到初始字符,是则执行步骤303,否则给上位机返回ATR接收超时信息;
步骤303:安全处理器判断接收到的初始字符是否为第一预设值,是则执行步骤306,否则执行步骤304;
在本实施例中,第一预设值具体为0X3B;
步骤304:安全处理器判断接收到的初始字符是否为第二预设值,是则执行步骤305,否则给上位机返回ATR接收出错信息;
在本实施例中,第二预设值具体为0X3F;
步骤305:安全处理器将字符传输的逻辑约定设置为反向约定,执行步骤307;
步骤306:安全处理器将字符传输的逻辑约定设置为正向约定,执行步骤307;
步骤307:安全处理器将接收到的初始字符保存到ATR缓存区中,等待接收格式字符,并设定第二接收定时器;
具体的,在本实施例中,设置第二接收定时器具体为:设置第二定时器控制安全处理器每隔10080etu接收格式字符;
步骤308:安全处理器判断在第二定时器的设定时间内是否接收到格式字符,是则执行步骤309,否则给上位机返回ATR接收超时信息;
步骤309:安全处理器根据设置好的逻辑约定转换格式字符,并将转换后的格式字符保存到ATR缓存区中,根据格式字符计算历史字符长度并保存,将ATR缓存区中的第一个协议组作为当前协议组;
步骤310:安全处理器判断ATR缓存区中的数据的长度是否超过预设长度,是则执行步骤318,否则将当前协议组中的第一个接口字符作为当前接口字符,执行步骤311;
步骤311:安全处理器判断当前接口字符是否超出当前协议组中的接口字符长度,是则执行步骤312,否则执行步骤314;
步骤312:安全处理器将ATR缓冲区中的下一个协议组作为当前协议组,获取当前协议组中的第四个接口字符作为当前接口字符;
具体的,在本实施例中,一个协议组中包含[TA][TB][TC][TD]共四个接口字符,这些接口字符是否存在,是由上个协议组中的TD中的高四位决定;
步骤313:安全处理器判断ATR缓存区中的数据的长度是否超过预设长度,是则执行步骤318,否则返回步骤311;
步骤314:安全处理器通过格式字符判断当前协议组的接口字符中是否存在接口字符,是则执行步骤315,否则执行步骤317;
具体的,在本实施例中,接口字符为[TAi][TBi][TCi][TDi];
步骤315:安全处理器判断在第一预设时间内是否收到接口字符,是则执行步骤316,否则给上位机返回ATR接收超时信息;
具体的,本实施例中的第一预设时间为10080etu;
步骤316:安全处理器根据设置好的逻辑约定进行接口字符转换,并将转换后的接口字符保存到ATR缓存区中,执行步骤317;
步骤317:安全处理器将当前协议组中的下一个接口字符作为当前接口字符,返回步骤311;
步骤318:安全处理器根据历史字符长度判断是否接收完所有的历史字符,是则执行步骤321,否则执行步骤319;
步骤319:安全处理器判断在第一预设时间内是否收到历史字符,是则执行步骤320,否则给上位机返回ATR接收超时信息;
步骤320:安全处理器根据设置好的逻辑约定进行历史字符转换,将转换后的历史字符保存到ATR缓存区中;
步骤321:安全处理器遍历ATR缓存区中每个协议组中的第四接口字符,查询是否存在T=1协议,是则执行步骤322,否则给上位机返回ATR接收成功信息;
在本实施例中,如果第四接口字符的低四位为0001则存在T=1协议;
步骤322:安全处理器判断在第一预设时间内是否接收到校验字符,是则执行步骤323,否则给上位机返回ATR接收超时信息;
步骤323:安全处理器根据设置好的逻辑约定进行校验字符转换;并将转换后的校验字符保存到ATR缓存区中,给上位机返回ATR接收成功信息。
实施例六
本发明实施例六提供一种安全处理器使用应用协议数据单元的数据块交互函数执行交易的实现方法,具体是通过UART模拟7816传输层通讯协议来实现的,如图7和图8所示,本实施例的方法包括:
步骤401:安全处理器根据复位应答(ATR)数据设定位持续时间(ETU),将相关变量初始化;
具体的,在本实施例中,将相关变量初始化包括:设置时钟速率转换因子整数值F;设置位速率调节因子整数值D;字符传输设为正向逻辑约定;字符的校验使用LRC方式;额外保护时间N;工作等待时间整数WI;
步骤402:安全处理器判断IC卡是否已插入且处于激活状态,是则执行步骤403,否则给上位机返回IC卡无响应信息;
步骤403:安全处理器判断发送的APDU指令(数据交互指令)是否为PPS指令,是则执行步骤404,否则执行步骤407;
具体的,在本实施例中,安全处理器判断发送的APDU指令中的CLA是否为0xff,是则发送的APDU指令为PPS指令,否则发送的APDU指令不为PPS指令;
步骤404:安全处理器判断ATR缓冲区中是否有预设接口字符,是则执行步骤405,否则给上位机返回指令取消信息;
在本实施例中,预设接口字符为TA1;
步骤405:安全处理器与IC卡进行PPS参数协商操作,并判断协商操作是否成功,是则执行步骤406,否则对IC卡进行下电操作,并给上位机返回错误信息;
步骤406:安全处理器使用协商成功的参数开始与IC卡进行通讯;
步骤407:安全处理器判断将要发送的APDU指令的类型,如为第一预设命令,是则执行步骤408,如为第二预设命令则执行步骤409,如为第三预设命令则执行步骤410,如为其他则执行步骤411;
在本实施例中,第一预设命令为CASE1、第二预设命令为CASE2、第二预设命令为CASE3;
在本实施例中,步骤407具体为:安全处理器判断发送的APDU指令中的数据域长度,如等于4个字节则发送的APDU指令为CASE1命令,如等于5个字节则发送的APDU指令为CASE2命令,如等于Lc加上5个字节的数值则发送的APDU指令为CASE3命令;
具体的,在本实施例中,步骤408-411为根据不同的预设命令类型设置将要发送的APDU指令;
步骤408:安全处理器将要发送的APDU指令中的P3(Lc)设置为0x00,发送数据总长度设置为5个字节,Le设为0,执行步骤412;
步骤409:安全处理器将要发送的APDU指令中的P3(Lc)设置为0x00,发送数据总长度设置为与Le相同,执行步骤412;
步骤410:安全处理器将要发送的APDU指令中的P3(Lc)设置为0x00,执行步骤412;
步骤411:安全处理器将要发送的APDU指令中的Le设置为APDU数据域长度-1,执行步骤412;
步骤412:安全处理器将要发送的APDU指令发送给IC卡,并判断是否发送成功,是则执行步骤413,否则给上位机返回错误码;
步骤413:安全处理器设置工作等待时间;
具体的,在本实施例中,安全处理器设置工作等待时间=960×D×WI;
步骤414:安全处理器判断在工作等待时间内是否收到IC卡发送的第一个过程字,是则执行步骤415,否则给上位机返回错误码;
步骤415:安全处理器判断接收到的第一个过程字是否等于第一预设数据,是则执行步骤416,否则执行步骤417;
具体的,本实施例中的第一预设数据为0x60;
步骤416:安全处理器丢弃接收到的第一个过程字,并重新设定工作等待时间,等待接收后续字符,返回步骤414;
步骤417:安全处理器判断接收到的第一个过程字是否为第二预设数据,是则执行步骤418,否则执行步骤421;
具体的,本实施例中的第二预设数据为0x6x或0x9x;
步骤418:安全处理器保存接收到的第一个过程字,并重新设定工作等待时间,等待接收第二个过程字,执行步骤419;
具体的,在本实施例中,安全处理器接收到的第一个过程字为SW1;
步骤419:安全处理器判断在工作等待时间内是否接收到第二个过程字,是则执行步骤420,否则给上位机返回错误码;
具体的,在本实施例中,安全处理器接收到的第二个过程字为SW2;
步骤420:安全处理器保存第二个过程字,给上位机返回操作成功信息;
步骤421:安全处理器判断接收到的第一过程字是否为INS字符,是则执行步骤422,否则执行步骤428;
步骤422:安全处理器判断是否还有数据需要继续发送给IC卡,是则执行步骤423,否则返回步骤413;
步骤423:安全处理器判断发送给IC卡指令中的le是否为0,是则执行步骤424,否则执行步骤426;
步骤424:安全处理器判断在预设时间内是否接收到IC卡返回的应答数据,是则执行步骤425,否则给上位机返回错误信息;
步骤425:安全处理器保存IC卡返回的应答数据,给上位机返回操作成功信息;
步骤426:安全处理器判断工作等待时间内是否接收到IC卡发送的指定长度的数据,是则执行步骤427,否则给上位机返回错误信息;
步骤427:安全处理器保存IC卡返回的指令长度的应答数据,给上位机返回操作成功信息;
步骤428:安全处理器判断接收到的第一过程字是否为INS的补码,是则执行步骤429,否则给上位机返回错误信息;
步骤429:安全处理器判断是否还有数据继续发送给IC卡,是则执行步骤430,否则执行步骤431;
步骤430:安全处理器给IC卡发送一个字节的数据,返回步骤413;
步骤431:安全处理器判断是否接收到IC卡返回的一个字节数据,是则执行步骤432,否则给上位机返回错误信息;
步骤432:安全处理器保存IC卡返回的一个字节数据,返回步骤413。
实施例七
本发明实施例七提供一种安全处理器在各个网络层之间接收发送数据的实现方法,网络层包括应用层、传输层、数据链路层、物理层,如图9所示,本实施例的方法包括:
步骤601:安全处理器在应用层将金融终端状态机设置为操作等待状态;
步骤602:安全处理器在应用层判断当前通讯协议是否为T=1,是则执行T=1的数据传送,执行步骤603,否则执行T=0的数据传送,执行步骤603;
具体的,在本实施例中,执行T=1的数据传送在实施例八进行详述;
步骤603:安全处理器判断金融终端状态机是否为操作等待状态,是则返回步骤603,否则执行步骤604;
步骤604:安全处理器在传输层判断发送的数据长度是否大于IC卡的信息域空间,是则执行步骤605,否则执行步骤606;
步骤605:安全处理器将链接标志位置位,根据IC卡的信息域空间将命令数据分割为多组数据发送给终端数据链路层,执行步骤607;
步骤606:安全处理器清除链接标志位,将所有的命令数据通过一组数据发送给终端数据链路层,执行步骤607;
步骤607:安全处理器在数据链路层把需要传送的字符数据封装成一帧数据块;
具体的,在本实施例中,步骤607包括:安全处理器把终端传输层传送过来的数据作为数据块的信息域,在信息域前面添加一个数据块头域,在信息域的结尾处添加一个尾域。数据块头域用来控制数据块的传输,尾域用来对数据块的数据块头域和信息域进行错误校验;
步骤608:安全处理器将封装好的数据块发送给物理层;
步骤609:安全处理器在物理层验证接收到的数据块的合法性,如合法则执行步骤610,如不合法则给上位机返回错误码,结束;
步骤610:安全处理器通过I/O口将数据块发送给IC卡。
实施例八
本发明实施例八提供一种安全处理器执行T=1的数据传送的实现方法,如图10所示,包括:
步骤701:安全处理器检测到中断时判断中断类型,如为定时器中断则执行步骤702,如为发送缓冲器中断则执行步骤703,如为字符发送完成中断则执行步骤706,如为字符接收完成中断则执行步骤709;
步骤702:安全处理器向IC卡发送数据块,并使能发送完成中断,退出定时器中断;
步骤703:安全处理器判断当前数据块中是否还有数据未发送完毕,是则执行步骤704,否则执行步骤705;
具体的,在本实施例中,安全处理器判断未发送完成的数据字符个数是否为0,是则发送完毕,否则为发送完毕;
步骤704:安全处理器更新未发送完成的数据字符个数,重新设定块保护时间,准备发送下一个数据字符,退出发送缓冲器中断;
具体的,在本实施例中,安全处理器更新未发送完成的数据字符个数为:将未发送完成的数据字符个数自减1;
步骤705:安全处理器关闭字符发送完成中断,关闭定时器中断,退出发送缓冲器中断;
步骤706:安全处理器判断数据块中的所有字符是否都已发送完成,是则执行步骤707,否则执行步骤708;
步骤707:安全处理器重新设定块保护时间和块等待时间,退出字符发送完成中断;
步骤708:安全处理器在数据块的最后一个字符开始时,开启定时器中断,退出字符发送完成中断;
步骤709:安全处理器将接收到的数据块头的数据存入接收缓存区中;
步骤710:安全处理器判断块保护时间是否符合要求,是则执行步骤711,否则执行步骤715;
步骤711:安全处理器判断数据块头是否接收完毕,是则执行步骤712,否则执行步骤714;
步骤712:安全处理器将接收到的数据域的数据存入接收缓存区,并判断接收状态机是否为接收完成状态,是则执行步骤713,否则退出字符接收完成中断;
步骤713:安全处理器清除金融终端状态机的操作等待状态,退出字符接收完成中断;
步骤714:安全处理器将接收到的数据域中的数据存入接收缓存区,将接收状态机设置为接收完成状态,关闭接收中断,退出字符接收完成中断;
在本实施例中,当安全处理器的硬件接收到数据时触发接收中断,数据接收完成后退出接收中断;
步骤715:安全处理器判断接收缓存区中的数据的长度是否不超过预设长度,是则执行步骤716,否则执行步骤717;
在本实施例中,预设长度为254个字节;
步骤716:安全处理器关闭等待定时器,将接收状态机设为接收完成,清除金融终端状态机的操作等待状态,调用硬件异常处理函数,退出字符接收完成中断;
具体的,在本实施例中,硬件异常处理函数用来恢复安全处理器状态;等待定时器的计数器不能超出25etu
步骤717:安全处理器关闭等待定时器然后重新开启,退出字符接收完成中断。
实施例九
本发明实施例九提供一种安全处理器,该安全处理器用于实现金融终端与卡片之间数据通讯的安全处理器,如图11所示,该安全处理器包括:
第一检测模块11,用于检测卡槽中是否有IC卡插入;
接收模块12,用于接收IC卡返回的复位应答数据;
第一判断模块13,用于当接收模块12接收到复位应答数据后,判断上电复位是否成功,是则触发发送模块19向IC卡发送选择应用环境指令,否则触发下电模块18;
第二判断模块14,用于判断是否接收到IC卡返回的正确选择应答,是则触发发送模块19向IC卡发送数据交互指令,否则触发报错模块16;
第三判断模块15,用于判断是否接收到IC卡返回的正确交互应答,是则触发第四判断模块17,否则触发报错模块16;
报错模块16,用于当第二判断模块14和第三判断模块15判断为否时报错;
第四判断模块17,用于当第三判断模块15判断为是时判断本次操作是否完成,是则触发下电模块18,否则触发发送模块19继续发送数据交互指令;
下电模块18,用于当第一判断模块13判断为否和第四判断模块17判断是时对IC卡执行下电操作,触发第一检测模块11;
发送模块19,用于当第一检测模块11检测到卡槽中有IC卡插入时向IC卡发送上电复位指令,当第一判断模块13判断为是时向IC卡发送选择应用环境指令;当第二判断模块14判断为是和第四判断模块17判断为否时向IC卡发送数据交互指令。
本实施例中的安全处理器还包括:
第一设置模块,用于将卡槽中与IC卡相关的引脚进行初始化配置;设置通讯参数的缺省值;
第一计算模块,用于根据通讯参数计算时序控制参数:
启动模块,用于启动冷复位时序;
第一使能模块,用于使能UART接收中断,准备接收IC卡发送的复位应答数据。
本实施例的安全处理器还包括:
第一开启模块,用于开启接收中断;
第二检测模块,用于检测是否有中断;
第一保存模块,用于当第二检测模块检测到接收中断时,保存接收到的字符;
第五判断模块,用于判断接收到的字符的类型;如为初始字符则触发第二设置模块;如为格式字符则触发第七判断模块;如为接口字符则触发作为模块;如为历史字符则触发第十三判断模块;如为校验字符则触发第十一设置模块;
第二设置模块,用于设置等待定时器,将接收状态机设为接收格式字符;
第六判断模块,用于判断初始字符的逻辑方向是否错误,是则将金融终端状态机设置为参数无效,触发第十五判断模块,否则触发第十五判断模块;
第七判断模块,用于判断是否保存有第一组接口字符,是则触发第三设置模块,否则触发第八判断模块;
第三设置模块,用于将接收状态机设为接收接口字符,触发第十五判断模块;
第八判断模块,用于判断是否保存有历史字符,是则触发第四设置模块,否则触发第五设置模块;
第四设置模块,用于将接收状态机设为接收历史字符,记录历史字符的数量,触发第十五判断模块;
第五设置模块,用于将接收状态机设为接收额外字符,设置等待定时器,触发第十五判断模块;
作为模块,用于将第一个协议组作为当前协议组;
第二计算模块,用于根据当前协议组最后一个接口字符计算下一组字符的接口字符数量;
第九判断模块,用于通过当前协议本组最后一个接口字符判断是否还有下一组接口字符,是则触发第三计算模块;否则触发第十判断模块;
第三计算模块,用于将参与计算应答数据的校验值的字符数自加1,触发第十判断模块;
第十判断模块,用于判断是否已经接收到最后一个接口字符,是则触发第十一判断模块,否则将下一个协议组作为当前协议组,触发第二计算模块;
第十一判断模块,用于判断是否已计录历史字符数量,是则触发第六设置模块,否则触发第十二判断模块;
第六设置模块,用于更新历史字符数量,将接收状态机设置为接收历史字符,触发第十五判断模块;
第十二判断模块,用于判断是否计算应答数据的检验值,是则触发第七设置模块,否则触发第八设置模块;
第七设置模块,用于将接收状态机设置为接收校验字符,触发第十五判断模块;
第八设置模块,用于将接收状态机设置为接收额外字符,设置等待定时器,触发第十五判断模块;
第十三判断模块,用于判断所有的历史字符是否都已接收完毕,是则触发第十五判断模块,否则触发第十四判断模块;
具体的,在本实施例中,第十三判断模块具体用于根据格式字符计算得到历史字符的个数,判断历史字符的个数是否等于预设值,是则历史字符都已接收完毕,否则历史字符未接收完毕。
第十四判断模块,用于判断是否需要执行数据校验,是则触发第九设置模块,否则触发第十设置模块;
第九设置模块,用于将接收状态机设置为接收校验字符,触发第十五判断模块;
第十设置模块,用于将接收状态机设置为接收额外字符,触发第十五判断模块;
第十一设置模块,用于将接收状态机设置为接收额外字符,设置字符等待时间,触发第十五判断模块;
第十五判断模块,用于判断金融终端状态机,如为接收完成则触发第十六判断模块,如为参数无效则直接退出接收中断,如为其他则触发第十二设置模块;
第十六判断模块,用于判断接收参数过程中是否出错,是则调用接收异常处理函数进行操作,操作完成后退出接收中断,否则触发设置解析模块;
设置解析模块,用于将金融终端状态机设置为空闲状态,并解析接收到的复位应答数据,解析完成后退出接收中断;
第十二设置模块,用于重新设置等待定时器,退出接收中断。
在本实施例中,第一开启模块还用于开启时钟定时器超时中断;
安全处理器还包括关闭设置模块,用于当第二检测模块检测到时钟定时器超时中断时,关闭时钟定时器,将金融终端状态机设置为接收超时,退出时钟定时器超时中断。
在本实施例中,第一开启模块还用于开启奇偶校验错误中断;
安全处理器还包括第十三设置模块:用于当第二检测模块检测到奇偶校验错误中断时,将卡槽上与IC卡的复位引脚相关的引脚设为低电平,将金融终端状态机设为奇偶检验错误,将IC卡的时钟信号关闭,退出奇偶校验错误中断。
在本实施例中,第一开启模块还用于开启等待定时器中断;
安全处理器还包括第十七判断模块:用于当第二检测模块检测到等待定时器中断时,判断是否接收到多余字符,是则触发第十四设置模块,否则触发第十五设置模块;
第十四设置模块,用于将金融终端状态机设置为块保护时间错误,触发第十五设置模块;
第十五设置模块,用于关闭接收中断,将接收状态机设置为接收完成,退出等待定时器中断。
在本实施例中,第二判断模14块包括:
第一设置子模块,用于设置第一接收定时器;
第一判断子模块,用于判断是否接收到初始字符,是则触发第二判断子模块,否则触发发送模块19给上位机返回ATR(复位应答数据)接收超时信息;
第二判断子模块,用于判断接收到的初始字符是否为第一预设值,是则触发第三设置子模块,否则触发第三判断子模块;
第三判断子模块,用于判断接收到的初始字符是否为第二预设值,是则触发第二设置子模块,否则触发发送模块19给上位机返回ATR接收出错信息;
第二设置子模块,用于将字符传输的逻辑约定设置为反向约定,触发第一保存设定子模块;
第三设置子模块,用于将字符传输的逻辑约定设置为正向约定,触发第一保存设定子模块;
第一保存设定子模块,用于将接收到的初始字符保存到ATR缓存区中,并设定第二接收定时器;
第四判断子模块,用于判断在第二定时器的设定时间内是否接收到格式字符,是则触发第一转换保存子模块,否则触发发送模块19给上位机返回ATR接收超时信息;
第一转换保存子模块,用于根据设置好的逻辑约定转换格式字符,并将转换后的格式字符保存到ATR缓存区中,根据格式字符计算历史字符长度并保存,将ATR缓存区中的第一个协议组作为当前协议组;
第五判断子模块,用于判断ATR缓存区中的数据的长度是否超过预设长度,是则触发第九判断子模块,否则将当前协议组中的第一个接口字符作为当前接口字符,执行触发第六判断子模块;
第六判断子模块,用于判断当前接口字符是否超出当前协议组中的接口字符长度,是则触发第一获取子模块,否则触发第八判断子模块;
第一获取子模块,用于将ATR缓冲区中的下一个协议组作为当前协议组,获取当前协议组中的第四个接口字符作为当前接口字符;
第七判断子模块,判断ATR缓存区中的数据的长度是否超过预设长度,是则触发第九判断子模块,否则触发第六判断子模块;
第八判断子模块,用于通过格式字符判断当前协议组的接口字符组中是否存在接口字符,是则触发第八判断子模块,否则触发第一作为子模块;
第八判断子模块,用于判断在第一预设时间内是否收到接口字符,是则触发第二转换保存子模块,否则触发发送模块19给上位机返回ATR接收超时信息;
第二转换保存子模块,用于根据设置好的逻辑约定进行接口字符转换,并将转换后的接口字符保存到ATR缓存区中,触发第一作为子模块;
第一作为子模块,用于将当前协议组中的下一个接口字符作为当前接口字符,触发第六判断子模块;
第九判断子模块,用于根据历史字符长度判断是否接收完所有的历史字符,是则触发查询子模块,否则触发第十判断子模块;
第十判断子模块,用于判断在第一预设时间内是否收到历史字符,是则触发第三转换保存子模块,否则触发发送模块19给上位机返回ATR接收超时信息;
第三转换保存子模块,用于根据设置好的逻辑约定进行历史字符转换,将转换后的历史字符保存到ATR缓存区中;
查询子模块,用于遍历是ATR缓存区中每个协议组中的第四接口字符,查询是否存在T=1协议,是则触发第十一判断子模块,否则触发发送模块19给上位机返回ATR接收成功信息;
第十一判断子模块,用于判断在第一预设时间内是否接收到校验字符,是则触发第四转换保存子模块,否则触发发送模块19给上位机返回ATR接收超时信息;
第四转换保存子模块,用于根据设置好的逻辑约定进行校验字符转换;并将转换后的校验字符保存到ATR缓存区中,触发发送模块19给上位机返回ATR接收成功信息。
在本实施例中,第三判断模块15包括:
第四设置子模块,用于根据复位应答数据设置位持续时间;
第十二判断子模块,用于判断IC卡是否已插入且处于激活状态,是则触发第十三判断子模块,否则触发发送模块19给上位机返回IC卡无响应信息;
第十三判断子模块,用于判断发送的数据交互指令是否为PPS指令,是则触发第十四判断子模块,否则第五设置子模块;
第十四判断子模块,用于判断ATR缓冲区中是否有预设接口字符,是则触发第十五判断子模块,否则触发发送模块19给上位机返回指令取消信息;
第十五判断子模块,用于与IC卡进行PPS参数协商操作,并判断协商操作是否成功,是则触发通讯子模块,否则触发下电模块对IC卡进行下电操作,并触发发送模块19给上位机返回错误信息;
通讯子模块,用于使用协商成功的参数开始与IC卡进行通讯,触发设置子模块;
第五设置子模块,用于设置将要发送的APDU指令;
第十六判断子模块,用于当发送模块19将要发送的APDU指令发送给IC卡后,判断APDU指令是否发送成功,是则触发第六设置子模块,否则触发发送模块19给上位机返回错误码;
第六设置子模块,设置工作等待时间;
第十七判断子模块,用于判断在工作等待时间内是否收到IC卡发送的第一个过程字,是则触发第十八判断子模块,否则触发发送模块19给上位机返回错误码;
第十八判断子模块,用于判断接收到的第一个过程字是否等于第一预设数据,是则触发丢弃设定子模块,否则触发第十九判断子模块;
丢弃设定子模块,用于丢弃接收到的第一个过程字,并重新设定工作等待时间,等待接收后续字符,触发第十七判断子模块;
第十九判断子模块,用于判断接收到的第一个过程字是否为第二预设数据,是则触发第二保存设定子模块,否则触发第二十一判断子模块;
第二保存设定子模块,用于保存接收到的第一个过程字,并重新设定工作等待时间;
第二十判断子模块,用于判断在工作等待时间内是否接收到第二个过程字,是则触发第一保存子模块,否则触发发送模块19给上位机返回错误码;
第一保存子模块,保存第二个过程字,触发发送模块19给上位机返回操作成功信息;
第二十一判断子模块,用于判断接收到的第一过程字是否为INS字符,是则触发第二十二判断子模块,否则触发第二十六判断子模块;
第二十二判断子模块,用于判断是否还有数据需要继续发送给IC卡,是则触发第二十三判断子模块,否则触发第六设置子模块;
触发第二十三判断子模块,用于判断发送给IC卡指令中的le是否为0,是则触发第二十四判断子模块,否则触发第二十五判断子模块;
第二十四判断子模块,用于判断在预设时间内是否接收到IC卡返回的应答数据,是则触发第二保存子模块,否则触发发送模块19给上位机返回错误信息;
第二保存子模块,用于保存IC卡返回的应答数据,给上位机返回操作成功信息;
第二十五判断子模块,用于判断工作等待时间内是否接收到IC卡发送的指定长度的数据,是则触发第三保存子模块,否则触发发送模块19给上位机返回错误信息;
第三保存子模块,用于保存IC卡返回的指令长度的应答数据,触发发送模块19给上位机返回操作成功信息;
第二十六判断子模块,用于判断接收到的第一过程字是否为INS的补码,是则触发第二十七判断子模块,否则触发发送模块19给上位机返回错误信息;
触发第二十七判断子模块,用于判断是否还有数据继续发送给IC卡,是则触发发送模块19给IC卡发送一个字节的数据,触发第六设置子模块,否则触发第二十八判断子模块;
触发第二十八判断子模块,用于判断是否接收到IC卡返回的一个字节数据,是则触发第四保存子模块,否则触发发送模块19给上位机返回错误信息;
第四保存子模块,用于保存IC卡返回的一个字节数据,触发第六设置子模块。
具体的,本实施例中的第五设置子模块包括:
第一判断单元,用于判断将要发送的APDU指令的类型,如为第一预设命令则触发第一设置单元,如为第二预设命令则触发第二设置单元,如为第三预设命令则触发第三设置单元,如为其他则触发第四设置单元;
第一设置单元用于将要发送的APDU指令中的P3设置为0x00,发送数据总长度设置为5个字节,Le设为0;
第二设置单元用于将要发送的APDU指令中的P3设置为0x00,发送数据总长度设置为与Le相同;
第三设置单元用于将要发送的APDU指令中的P3设置为0x00;
第四设置单元用于将要发送的APDU指令中的Le设置为APDU数据域长度-1。
本实施例的安全处理器还包括:
第十七设置模块,用于在应用层将金融终端状态机设置为操作等待状态;
第十八判断模块,用于在应用层判断当前通讯协议是否为T=1,是则执行T=1的数据传送,触发第十九判断模块,否则执行T=0的数据传送,触发第十九判断模块;
第十九判断模块,用于判断金融终端状态机是否为操作等待状态;
第二十判断模块,用于当第十九判断模块判断为否时在传输层判断发送的数据长度是否大于IC卡的信息域空间,是则触发置位发送模块,否则触发清除发送模块;
置位发送模块,用于将链接标志位置位,根据IC卡的信息域空间将命令数据分割为多组数据发送给终端数据链路层;
清除发送模块,用于清除链接标志位,将所有的命令数据通过一组数据发送给终端数据链路层;
封装发送模块,用于在数据链路层把需要传送的字符数据封装成一帧数据块,并将封装好的数据块发送给物理层;
验证模块,用于在物理层验证接收到的数据块的合法性,如合法则触发发送模块通过I/O口将数据块发送给IC卡,否则触发发送模块给上位机返回错误码,结束。
本实施例的安全处理器还包括:
第二十一判断模块,用于当检测到中断时判断中断类型,如为定时器中断则触发发送模块向IC卡发送数据块并触发第二使能模块,如为发送缓冲器中断则触发第二十一判断模块,如为字符发送完成中断则触发第二十二判断模块,如为字符接收完成中断则触发存入模块;
第二使能模块,用于使能发送完成中断,退出定时器中断;
第二十一判断模块,用于判断当前数据块中是否还有数据未发送完毕,是则触发更新设定模块,否则触发第一关闭模块;
更新设定模块,用于更新未发送完成的数据字符个数,重新设定块保护时间,准备发送下一个数据字符,退出发送缓冲器中断;
第一关闭模块:安全处理器关闭字符发送完成中断,关闭定时器中断,退出发送缓冲器中断;
第二十二判断模块,用于判断数据块中的所有字符是否都已发送完成,是则触发重新设定模块,否则触发第二开启模块;
重新设定模块,用于重新设定块保护时间和块等待时间,退出字符发送完成中断;
第二开启模块,用于在数据块的最后一个字符开始时,开启定时器中断,退出字符发送完成中断;
存入模块,用于将接收到的数据块头中的数据存入接收缓存区中;
第二十三判断模块,用于判断块保护时间是否符合要求,是则触发第二十四判断模块,否则触发第二十五判断模块;
第二十四判断模块,用于判断数据块头是否接收完毕,是则触发存入判断模块,否则触发存入设置模块;
存入判断模块,用于将接收到的数据域的数据存入接收缓存区,并判断接收状态机是否为接收完成状态,是则触发清除模块,否则退出字符接收完成中断;
清除模块,用于清除金融终端状态机的操作等待状态,退出字符接收完成中断;
存入设置模块,用于将接收到的数据域中的数据存入接收缓存区,将接收状态机设置为接收完成状态,关闭接收中断,退出字符接收完成中断;
第二十五判断模块,用于判断接收缓存区中的数据的长度是否不超过预设长度,是则触发关闭清除模块,否则触发第二关闭模块;
关闭清除模块,用于关闭等待定时器,将接收状态机设为接收完成,清除金融终端状态机的操作等待状态,调用硬件异常处理函数,退出字符接收完成中断;
第二关闭模块,用于关闭等待定时器然后重新开启,退出字符接收完成中断。
以上所述,仅为本发明较佳的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明公开的技术范围内,可轻易想到的变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应该以权利要求的保护范围为准。

Claims (25)

1.一种金融终端,其特征在于,包括安全处理器和卡槽,所述安全处理器与所述卡槽连接,所述安全处理器硬件包括电平转换电路和短路保护电路,所述电平转换电路和短路保护电路用于实现所述金融终端的电气特性;所述安全处理器用于实现金融终端与卡片之间的数据通讯,
所述安全处理器包括:
第一检测模块,用于检测卡槽中是否有IC卡插入;
接收模块,用于接收所述IC卡返回的复位应答数据;
第一判断模块,用于当所述接收模块接收到复位应答数据后,判断上电复位是否成功,是则触发发送模块,否则触发下电模块;
第二判断模块,用于判断是否接收到所述IC卡返回的正确选择应答,是则触发发送模块,否则触发报错模块;
第三判断模块,用于判断是否接收到所述IC卡返回的正确交互应答,是则触发第四判断模块,否则触发报错模块;
所述报错模块,用于当所述第二判断模块和所述第三判断模块判断为否时报错;
所述第四判断模块,用于当所述第三判断模块判断为是时判断本次操作是否完成,是则触发下电模块,否则触发所述发送模块;
所述下电模块,用于当第一判断模块判断为否和第四判断模块判断是时对所述IC卡执行下电操作,触发所述第一检测模块;
所述发送模块,用于当所述第一检测模块检测到卡槽中有IC卡插入时向所述IC卡发送上电复位指令,当所述第一判断模块判断为是时向所述IC卡发送选择应用环境指令;当所述第二判断模块判断为是和所述第四判断模块判断为否时向所述IC卡发送数据交互指令;
第十七设置模块,用于在应用层将金融终端状态机设置为操作等待状态;
第十八判断模块,用于在应用层判断当前通讯协议是否为T=1,是则执行T=1的数据传送,触发第十九判断模块,否则执行T=0的数据传送,触发第十九判断模块;
所述第十九判断模块,用于判断所述金融终端状态机是否为操作等待状态;
第二十判断模块,用于当所述第十九判断模块判断为否时在传输层判断发送的数据长度是否大于IC卡的信息域空间,是则触发置位发送模块,否则触发清除发送模块;
置位发送模块,用于将链接标志位置位,根据所述IC卡的信息域空间将命令数据分割为多组数据发送给终端数据链路层;
清除发送模块,用于清除链接标志位,将所有的命令数据通过一组数据发送给终端数据链路层;
封装发送模块,用于在所述数据链路层把需要传送的字符数据封装成一帧数据块,并将封装好的数据块发送给物理层;
验证模块,用于在所述物理层验证接收到的数据块的合法性,如合法则触发所述发送模块通过I/O口将数据块发送给所述IC卡,否则触发所述发送模块给上位机返回错误码,结束。
2.如权利要求1所述的金融终端,其特征在于,还包括液晶屏,所述液晶屏与所述安全处理器连接。
3.如权利要求1所述的金融终端,其特征在于,还包括键盘,所述键盘与所述安全处理器连接。
4.如权利要求1所述的安全处理器的工作方法,其特征在于,包括:
步骤S1:当所述安全处理器检测到卡槽中有IC卡插入时,所述安全处理器向所述IC卡发送上电复位指令,并等待接收所述IC卡返回的复位应答数据;
步骤S2:当所述安全处理器接收到复位应答数据后,判断上电复位是否成功,是则执行步骤S3,否则执行步骤S6;
步骤S3:所述安全处理器向所述IC卡发送选择应用环境指令,并判断是否接收到所述IC卡返回的正确选择应答,是则执行步骤S4,否则报错;
步骤S4:所述安全处理器向所述IC卡发送数据交互指令,并判断是否接收到所述IC卡返回的正确交互应答,是则执行步骤S5,否则报错;
步骤S5:所述安全处理器判断本次操作是否完成,是则执行步骤S6,否则返回步骤S4;
步骤S6:所述安全处理器对所述IC卡执行下电操作,当检测到所述IC卡被拔出时返回步骤S1;
所述方法还包括:
步骤p1:所述安全处理器在应用层将金融终端状态机设置为操作等待状态;
步骤p2:所述安全处理器在应用层判断当前通讯协议是否为T=1,是则执行T=1的数据传送,执行步骤p3,否则执行T=0的数据传送,执行步骤p3;
步骤p3:所述安全处理器判断所述金融终端状态机是否为操作等待状态,是则返回步骤p3,否则执行步骤p4;
步骤p4:所述安全处理器在传输层判断发送的数据长度是否大于IC卡的信息域空间,是则执行步骤p5,否则执行步骤p6;
步骤p5:所述安全处理器将链接标志位置位,根据所述IC卡的信息域空间将命令数据分割为多组数据发送给终端数据链路层,执行步骤p7;
步骤p6:所述安全处理器清除链接标志位,将所有的命令数据通过一组数据发送给终端数据链路层,执行步骤p7;
步骤p7:所述安全处理器在所述数据链路层把需要传送的字符数据封装成一帧数据块;
步骤p8:所述安全处理器将封装好的数据块发送给物理层;
步骤p9:所述安全处理器在所述物理层验证接收到的数据块的合法性,如合法则执行步骤p10,否则给上位机返回错误码,结束;
步骤p10:所述安全处理器通过I/O口将数据块发送给所述IC卡。
5.如权利要求4所述的方法,其特征在于,所述步骤S1之前还包括:
步骤b1:所述安全处理器将卡槽中与IC卡相关的引脚进行初始化配置;
步骤b2:所述安全处理器设置通讯参数的缺省值;
步骤b3:所述安全处理器根据所述通讯参数计算时序控制参数:
步骤b4:所述安全处理器启动冷复位时序;
步骤b5:所述安全处理器使能UART接收中断,准备接收IC卡发送的复位应答数据。
6.如权利要求5所述的方法,其特征在于,所述步骤b5还包括:开启接收中断;
所述方法还包括:
步骤c1:当所述安全处理器检测到接收中断时,保存接收到的字符;
步骤c2:所述安全处理器判断所述接收到的字符的类型;如为初始字符则执行步骤c3;如为格式字符则执行步骤c5;如为接口字符则执行步骤c10;如为历史字符则执行步骤c20;如为校验字符则执行步骤c24;
步骤c3:所述安全处理器设置等待定时器,将接收状态机设为接收格式字符;
步骤c4:所述安全处理器判断初始字符的逻辑方向是否错误,是则将所述金融终端状态机设置为参数无效,执行步骤c25,否则直接执行步骤c25;
步骤c5:所述安全处理器判断是否保存有第一组接口字符,是则执行步骤c6,否则执行步骤c7;
步骤c6:所述安全处理器将所述接收状态机设为接收接口字符,执行步骤c25;
步骤c7:所述安全处理器判断是否保存有历史字符,是则执行步骤c8,否则执行步骤c9;
步骤c8:所述安全处理器将所述接收状态机设为接收历史字符,记录历史字符的数量,执行步骤c25;
步骤c9:所述安全处理器将所述接收状态机设为接收额外字符,设置等待定时器,执行步骤c25;
步骤c10:所述安全处理器将第一个协议组作为当前协议组;
步骤c11:所述安全处理器根据当前协议组最后一个接口字符计算下一组字符的接口字符数量;
步骤c12:所述安全处理器通过当前协议本组最后一个接口字符判断是否还有下一组接口字符,是则执行步骤c13;否则执行步骤c14;
步骤c13:所述安全处理器将参与计算应答数据的校验值的字符数自加1,执行步骤c14;
步骤c14:所述安全处理器判断是否已经接收到最后一个接口字符,是则执行步骤c15,否则将下一个协议组作为当前协议组,返回步骤c11;
步骤c15:所述安全处理器判断是否已计录历史字符数量,是则执行步骤c16,否则执行步骤c17;
步骤c16:所述安全处理器更新历史字符数量,将所述接收状态机设置为接收历史字符,执行步骤c25;
步骤c17:所述安全处理器判断是否计算应答数据的检验值,是则执行步骤c18,否则执行步骤c19;
步骤c18:所述安全处理器将所述接收状态机设置为接收校验字符,执行步骤c25;
步骤c19:所述安全处理器将所述接收状态机设置为接收额外字符,设置等待定时器,执行步骤c25;
步骤c20:所述安全处理器判断所有的历史字符是否都已接收完毕,是则执行步骤c25,否则执行步骤c21;
步骤c21:所述安全处理器判断是否需要执行数据校验,是则执行步骤c22,否则执行步骤c23;
步骤c22:所述安全处理器将所述接收状态机设置为接收校验字符,执行步骤c25;
步骤c23:所述安全处理器将所述接收状态机设置为接收额外字符,执行步骤c25;
步骤c24:所述安全处理器将所述接收状态机设置为接收额外字符,设置字符等待时间,执行步骤c25;
步骤c25:所述安全处理器判断所述金融终端状态机,如为接收完成则执行步骤c26,如为参数无效则直接退出接收中断,如为其他则执行步骤c28;
步骤c26:所述安全处理器判断接收参数过程中是否出错,是则调用接收异常处理函数进行操作,操作完成后退出接收中断,否则执行步骤c27;
步骤c27:所述安全处理器将所述金融终端状态机设置为空闲状态,并解析接收到的复位应答数据,解析完成后退出接收中断;
步骤c28:所述安全处理器重新向所述IC卡发命令,并重新设置等待定时器,退出接收中断。
7.如权利要求6所述的方法,其特征在于,所述步骤b5还包括:开启时钟定时器超时中断;
所述方法还包括:当所述安全处理器检测到时钟定时器超时中断时,所述安全处理器关闭时钟定时器,将所述金融终端状态机设置为接收超时,退出时钟定时器超时中断。
8.如权利要求6所述的方法,其特征在于,所述步骤b5还包括:开启奇偶校验错误中断;
所述方法还包括:当所述安全处理器检测到奇偶校验错误中断时,所述安全处理器将所述卡槽上与IC卡的复位引脚相关的引脚设为低电平,将所述金融终端状态机设为奇偶检验错误,将所述IC卡的时钟信号关闭,退出奇偶校验错误中断。
9.如权利要求6所述的方法,其特征在于,所述步骤b5还包括:开启等待定时器中断;
所述方法还包括:当所述安全处理器检测到等待定时器中断时,所述安全处理器判断是否接收到多余字符,是则执行步骤f1,否则执行步骤f2;
步骤f1:所述安全处理器将所述金融终端状态机设置为块保护时间错误,执行步骤f2;
步骤f2:所述安全处理器关闭接收中断,将接收状态机设置为接收完成,退出等待定时器中断。
10.如权利要求6所述的方法,其特征在于,所述步骤c20具体包括:
所述安全处理器根据所述格式字符计算得到历史字符的个数,判断所述历史字符的个数是否等于预设值,是则历史字符都已接收完毕,否则历史字符未接收完毕。
11.如权利要求5所述的方法,其特征在于,所述步骤S2包括:
步骤e1:所述安全处理器等待接收初始字符,并设置第一接收定时器;
步骤e2:所述安全处理器判断是否接收到初始字符,是则执行步骤e3,否则给上位机返回复位应答数据接收超时信息;
步骤e3:所述安全处理器判断所述接收到的初始字符是否为第一预设值,是则执行步骤e6,否则执行步骤e4;
步骤e4:所述安全处理器判断所述接收到的初始字符是否为第二预设值,是则执行步骤e5,否则给上位机返回复位应答数据接收出错信息;
步骤e5:所述安全处理器将字符传输的逻辑约定设置为反向约定,执行步骤e7;
步骤e6:所述安全处理器将字符传输的逻辑约定设置为正向约定,执行步骤e7;
步骤e7:所述安全处理器将所述接收到的初始字符保存到复位应答数据缓存区中,等待接收格式字符,并设定第二接收定时器;
步骤e8:所述安全处理器判断在所述第二定时器的设定时间内是否接收到格式字符,是则执行步骤e9,否则给上位机返回复位应答数据接收超时信息;
步骤e9:所述安全处理器根据设置好的逻辑约定转换格式字符,并将转换后的格式字符保存到所述复位应答数据缓存区中,根据格式字符计算历史字符长度并保存,将所述复位应答数据缓存区中的第一个协议组作为当前协议组;
步骤e10:所述安全处理器判断所述复位应答数据缓存区中的数据的长度是否超过预设长度,是则执行步骤e18,否则将当前协议组中的第一个接口字符作为当前接口字符,执行步骤e11;
步骤e11:所述安全处理器判断当前接口字符是否超出当前协议组中的接口字符长度,是则执行步骤e12,否则执行步骤e14;
步骤e12:所述安全处理器将所述复位应答数据缓冲区中的下一个协议组作为当前协议组,获取当前协议组中的第四个接口字符作为当前接口字符;
步骤e13:所述安全处理器判断所述复位应答数据缓存区中的数据的长度是否超过预设长度,是则执行步骤e18,否则返回步骤e11;
步骤e14:所述安全处理器通过所述格式字符判断当前协议组的接口字符组中是否存在接口字符,是则执行步骤e15,否则执行步骤e17;
步骤e15:所述安全处理器判断在所述第一预设时间内是否收到接口字符,是则执行步骤e16,否则给上位机返回复位应答数据接收超时信息;
步骤e16:所述安全处理器根据设置好的逻辑约定进行接口字符转换,并将转换后的接口字符保存到所述复位应答数据缓存区中,执行步骤e17;
步骤e17:所述安全处理器将当前协议组中的下一个接口字符作为当前接口字符,返回步骤e11;
步骤e18:所述安全处理器根据所述历史字符长度判断是否接收完所有的历史字符,是则执行步骤e21,否则执行步骤e19;
步骤e19:所述安全处理器判断在所述第一预设时间内是否收到历史字符,是则执行步骤e20,否则给上位机返回复位应答数据接收超时信息;
步骤e20:所述安全处理器根据设置好的逻辑约定进行历史字符转换,将转换后的历史字符保存到所述复位应答数据缓存区中;
步骤e21:所述安全处理器遍历所述复位应答数据缓存区中每个协议组中的第四接口字符,查询是否存在T=1协议,是则执行步骤e22,否则给上位机返回复位应答数据接收成功信息;
步骤e22:所述安全处理器判断在所述第一预设时间内是否接收到校验字符,是则执行步骤e23,否则给上位机返回复位应答数据接收超时信息;
步骤e23:所述安全处理器根据设置好的逻辑约定进行校验字符转换;并将转换后的校验字符保存到所述复位应答数据缓存区中,给所述上位机返回复位应答数据接收成功信息。
12.如权利要求4所述的方法,其特征在于,所述步骤S4包括:
步骤d1:所述安全处理器根据复位应答数据设定位持续时间;
步骤d2:所述安全处理器判断所述IC卡是否已插入且处于激活状态,是则执行步骤d3,否则给上位机返回所述IC卡无响应信息;
步骤d3:所述安全处理器判断发送的数据交互指令是否为PPS指令,是则执行步骤d4,否则执行步骤d7;
步骤d4:所述安全处理器判断ATR缓冲区中是否有预设接口字符,是则执行步骤d5,否则给所述上位机返回指令取消信息;
步骤d5:所述安全处理器与IC卡进行PPS参数协商操作,并判断协商操作是否成功,是则执行步骤d6,否则对所述IC卡进行下电操作,并给上位机返回错误信息;
步骤d6:所述安全处理器使用协商成功的参数开始与IC卡进行通讯,执行步骤d7;
步骤d7:所述安全处理器设置将要发送的APDU指令;
步骤d8:所述安全处理器将所述要发送的APDU指令发送给所述IC卡,并判断是否发送成功,是则执行步骤d9,否则给所述上位机返回错误码;
步骤d9:安全处理器设置工作等待时间;
步骤d10:所述安全处理器判断在所述工作等待时间内是否收到所述IC卡发送的第一个过程字,是则执行步骤d11,否则给所述上位机返回错误码;
步骤d11:所述安全处理器判断接收到的所述第一个过程字是否等于第一预设数据,是则执行步骤d12,否则执行步骤d13;
步骤d12:所述安全处理器丢弃接收到的所述第一个过程字,并重新设定所述工作等待时间,等待接收后续字符,返回步骤d10;
步骤d13:所述安全处理器判断接收到的第一个过程字是否为第二预设数据,是则执行步骤d14,否则执行步骤d17;
步骤d14:所述安全处理器保存接收到的所述第一个过程字,并重新设定所述工作等待时间,等待接收第二个过程字;
步骤d15:所述安全处理器判断在所述工作等待时间内是否接收到第二个过程字,是则执行步骤d16,否则给所述上位机返回错误码;
步骤d16:所述安全处理器保存所述第二个过程字,给所述上位机返回操作成功信息;
步骤d17:所述安全处理器判断接收到的第一过程字是否为INS字符,是则执行步骤d18,否则执行步骤d24;
步骤d18:所述安全处理器判断是否还有数据需要继续发送给所述IC卡,是则执行步骤d19,否则返回步骤d9;
步骤d19:所述安全处理器判断发送给所述IC卡指令中的le是否为0,是则执行步骤d20,否则执行步骤d22;
步骤d20:所述安全处理器判断在预设时间内是否接收到所述IC卡返回的应答数据,是则执行步骤d21,否则给所述上位机返回错误信息;
步骤d21:所述安全处理器保存IC卡返回的应答数据,给所述上位机返回操作成功信息;
步骤d22:所述安全处理器判断所述工作等待时间内是否接收到IC卡发送的指定长度的数据,是则执行步骤d23,否则给所述上位机返回错误信息;
步骤d23:所述安全处理器保存所述IC卡返回的指令长度的应答数据,给所述上位机返回操作成功信息;
步骤d24:所述安全处理器判断接收到的第一过程字是否为INS的补码,是则执行步骤d25,否则给所述上位机返回错误信息;
步骤d25:所述安全处理器判断是否还有数据继续发送给所述IC卡,是则执行步骤d26,否则执行步骤d27;
步骤d26:所述安全处理器给所述IC卡发送一个字节的数据,返回步骤d9;
步骤d27:所述安全处理器判断是否接收到所述IC卡返回的一个字节数据,是则执行步骤d28,否则给所述上位机返回错误信息;
步骤d28:所述安全处理器保存所述IC卡返回的一个字节数据,返回步骤d9。
13.如权利要求12所述的方法,其特征在于,所述步骤d7具体包括:
步骤d71:所述安全处理器判断将要发送的APDU指令的类型,如为第一预设命令则执行步骤d72,如为第二预设命令则执行步骤d73,如为第三预设命令则执行步骤d74,如为其他则执行步骤d75;
步骤d72:所述安全处理器将所述要发送的APDU指令中的P3设置为0x00,发送数据总长度设置为5个字节,Le设为0,执行步骤d8;
步骤d73:所述安全处理器将所述要发送的APDU指令中的P3设置为0x00,发送数据总长度设置为与Le相同,执行步骤d8;
步骤d74:所述安全处理器将所述要发送的APDU指令中的P3设置为0x00,执行步骤d8;
步骤d75:所述安全处理器将所述要发送的APDU指令中的Le设置为APDU数据域长度-1,执行步骤d8。
14.如权利要求4所述的方法,其特征在于,还包括:
步骤q1:当所述安全处理器检测到中断时判断中断类型,如为定时器中断则执行步骤q2,如为发送缓冲器中断则执行步骤q3,如为字符发送完成中断则执行步骤q6,如为字符接收完成中断则执行步骤q9;
步骤q2:所述安全处理器向所述IC卡发送数据块,并使能发送完成中断,退出定时器中断;
步骤q3:所述安全处理器判断当前数据块中是否还有数据未发送完毕,是则执行步骤q4,否则执行步骤q5;
步骤q4:所述安全处理器更新未发送完成的数据字符个数,重新设定块保护时间,准备发送下一个数据字符,退出发送缓冲器中断;
步骤q5:所述安全处理器关闭字符发送完成中断,关闭定时器中断,退出发送缓冲器中断;
步骤q6:所述安全处理器判断数据块中的所有字符是否都已发送完成,是则执行步骤q7,否则执行步骤q8;
步骤q7:所述安全处理器重新设定块保护时间和块等待时间,退出字符发送完成中断;
步骤q8:所述安全处理器在数据块的最后一个字符开始时,开启定时器中断,退出字符发送完成中断;
步骤q9:所述安全处理器将接收到的数据块头中的数据存入接收缓存区中;
步骤q10:所述安全处理器判断块保护时间是否符合要求,是则执行步骤q11,否则执行步骤q15;
步骤q11:所述安全处理器判断数据块头是否接收完毕,是则执行步骤q12,否则执行步骤q14;
步骤q12:所述安全处理器将接收到的数据域的数据存入接收缓存区,并判断接收状态机是否为接收完成状态,是则执行步骤q13,否则退出字符接收完成中断;
步骤q13:所述安全处理器清除金融终端状态机的操作等待状态,退出字符接收完成中断;
步骤q14:所述安全处理器将接收到的数据域中的数据存入接收缓存区,将接收状态机设置为接收完成状态,关闭接收中断,退出字符接收完成中断;
步骤q15:所述安全处理器判断接收缓存区中的数据的长度是否不超过预设长度,是则执行步骤q16,否则执行步骤q17;
步骤q16:所述安全处理器关闭等待定时器,将接收状态机设为接收完成,清除所述金融终端状态机的操作等待状态,调用硬件异常处理函数,退出字符接收完成中断;
步骤q17:所述安全处理器关闭等待定时器然后重新开启,退出字符接收完成中断。
15.如权利要求1所述的安全处理器,其特征在于,包括:
第一检测模块,用于检测卡槽中是否有IC卡插入;
接收模块,用于接收所述IC卡返回的复位应答数据;
第一判断模块,用于当所述接收模块接收到复位应答数据后,判断上电复位是否成功,是则触发发送模块,否则触发下电模块;
第二判断模块,用于判断是否接收到所述IC卡返回的正确选择应答,是则触发发送模块,否则触发报错模块;
第三判断模块,用于判断是否接收到所述IC卡返回的正确交互应答,是则触发第四判断模块,否则触发报错模块;
所述报错模块,用于当所述第二判断模块和所述第三判断模块判断为否时报错;
所述第四判断模块,用于当所述第三判断模块判断为是时判断本次操作是否完成,是则触发下电模块,否则触发所述发送模块;
所述下电模块,用于当第一判断模块判断为否和第四判断模块判断是时对所述IC卡执行下电操作,触发所述第一检测模块;
所述发送模块,用于当所述第一检测模块检测到卡槽中有IC卡插入时向所述IC卡发送上电复位指令,当所述第一判断模块判断为是时向所述IC卡发送选择应用环境指令;当所述第二判断模块判断为是和所述第四判断模块判断为否时向所述IC卡发送数据交互指令;
第十七设置模块,用于在应用层将金融终端状态机设置为操作等待状态;
第十八判断模块,用于在应用层判断当前通讯协议是否为T=1,是则执行T=1的数据传送,触发第十九判断模块,否则执行T=0的数据传送,触发第十九判断模块;
所述第十九判断模块,用于判断所述金融终端状态机是否为操作等待状态;
第二十判断模块,用于当所述第十九判断模块判断为否时在传输层判断发送的数据长度是否大于IC卡的信息域空间,是则触发置位发送模块,否则触发清除发送模块;
置位发送模块,用于将链接标志位置位,根据所述IC卡的信息域空间将命令数据分割为多组数据发送给终端数据链路层;
清除发送模块,用于清除链接标志位,将所有的命令数据通过一组数据发送给终端数据链路层;
封装发送模块,用于在所述数据链路层把需要传送的字符数据封装成一帧数据块,并将封装好的数据块发送给物理层;
验证模块,用于在所述物理层验证接收到的数据块的合法性,如合法则触发所述发送模块通过I/O口将数据块发送给所述IC卡,否则触发所述发送模块给上位机返回错误码,结束。
16.如权利要求15所述的安全处理器,其特征在于,还包括:
第一设置模块,用于将卡槽中与IC卡相关的引脚进行初始化配置;设置通讯参数的缺省值;
第一计算模块,用于根据所述通讯参数计算时序控制参数:
启动模块,用于启动冷复位时序;
第一使能模块,用于使能UART接收中断,准备接收IC卡发送的复位应答数据。
17.如权利要求16所述的安全处理器,其特征在于,还包括:
第一开启模块,用于开启接收中断;
第二检测模块,用于检测是否有中断;
第一保存模块,用于当所述第二检测模块检测到接收中断时,保存接收到的字符;
第五判断模块,用于判断所述接收到的字符的类型;如为初始字符则触发第二设置模块;如为格式字符则触发第七判断模块;如为接口字符则触发作为模块;如为历史字符则触发第十三判断模块;如为校验字符则触发第十一设置模块;
所述第二设置模块,用于设置等待定时器,将接收状态机设为接收格式字符;
第六判断模块,用于判断初始字符的逻辑方向是否错误,是则将所述金融终端状态机设置为参数无效,触发第十五判断模块,否则触发第十五判断模块;
所述第七判断模块,用于判断是否保存有第一组接口字符,是则触发第三设置模块,否则触发第八判断模块;
所述第三设置模块,用于将所述接收状态机设为接收接口字符,触发第十五判断模块;
所述第八判断模块,用于判断是否保存有历史字符,是则触发第四设置模块,否则触发第五设置模块;
所述第四设置模块,用于将所述接收状态机设为接收历史字符,记录历史字符的数量,触发第十五判断模块;
所述第五设置模块,用于将所述接收状态机设为接收额外字符,设置等待定时器,触发第十五判断模块;
作为模块,用于将第一个协议组作为当前协议组;
第二计算模块,用于根据当前协议组最后一个接口字符计算下一组字符的接口字符数量;
第九判断模块,用于通过当前协议本组最后一个接口字符判断是否还有下一组接口字符,是则触发第三计算模块;否则触发第十判断模块;
所述第三计算模块,用于将参与计算应答数据的校验值的字符数自加1,触发第十判断模块;
所述第十判断模块,用于判断是否已经接收到最后一个接口字符,是则触发第十一判断模块,否则将下一个协议组作为当前协议组,触发第二计算模块;
所述第十一判断模块,用于判断是否已计录历史字符数量,是则触发第六设置模块,否则触发第十二判断模块;
所述第六设置模块,用于更新历史字符数量,将所述接收状态机设置为接收历史字符,触发第十五判断模块;
所述第十二判断模块,用于判断是否计算应答数据的检验值,是则触发第七设置模块,否则触发第八设置模块;
所述第七设置模块,用于将所述接收状态机设置为接收校验字符,触发第十五判断模块;
所述第八设置模块,用于将所述接收状态机设置为接收额外字符,设置等待定时器,触发第十五判断模块;
所述第十三判断模块,用于判断所有的历史字符是否都已接收完毕,是则触发第十五判断模块,否则触发第十四判断模块;
所述第十四判断模块,用于判断是否需要执行数据校验,是则触发第九设置模块,否则触发第十设置模块;
所述第九设置模块,用于将所述接收状态机设置为接收校验字符,触发第十五判断模块;
所述第十设置模块,用于将所述接收状态机设置为接收额外字符,触发第十五判断模块;
所述第十一设置模块,用于将所述接收状态机设置为接收额外字符,设置字符等待时间,触发第十五判断模块;
所述第十五判断模块,用于判断所述金融终端状态机,如为接收完成则触发第十六判断模块,如为参数无效则直接退出接收中断,如为其他则触发第十二设置模块;
所述第十六判断模块,用于判断接收参数过程中是否出错,是则调用接收异常处理函数进行操作,操作完成后退出接收中断,否则触发设置解析模块;
所述设置解析模块,用于将所述金融终端状态机设置为空闲状态,并解析接收到的复位应答数据,解析完成后退出接收中断;
所述第十二设置模块,用于重新设置等待定时器,退出接收中断。
18.如权利要求17所述的安全处理器,其特征在于,所述第一开启模块还用于开启时钟定时器超时中断;
所述安全处理器还包括关闭设置模块,用于当所述第二检测模块检测到时钟定时器超时中断时,关闭时钟定时器,将所述金融终端状态机设置为接收超时,退出时钟定时器超时中断。
19.如权利要求17所述的安全处理器,其特征在于,所述第一开启模块还用于开启奇偶校验错误中断;
所述安全处理器还包括第十三设置模块:用于当所述第二检测模块检测到奇偶校验错误中断时,将所述卡槽上与IC卡的复位引脚相关的引脚设为低电平,将所述金融终端状态机设为奇偶检验错误,将所述IC卡的时钟信号关闭,退出奇偶校验错误中断。
20.如权利要求17所述的安全处理器,其特征在于,所述第一开启模块还用于开启等待定时器中断;
所述安全处理器还包括第十七判断模块:用于当所述第二检测模块检测到等待定时器中断时,判断是否接收到多余字符,是则触发第十四设置模块,否则触发第十五设置模块;
所述第十四设置模块,用于将所述金融终端状态机设置为块保护时间错误,触发第十五设置模块;
所述第十五设置模块,用于关闭接收中断,将接收状态机设置为接收完成,退出等待定时器中断。
21.如权利要求17所述的安全处理器,其特征在于,所述第十三判断模块具体用于根据所述格式字符计算得到历史字符的个数,判断所述历史字符的个数是否等于预设值,是则历史字符都已接收完毕,否则历史字符未接收完毕。
22.如权利要求16所述的安全处理器,其特征在于,所述第二判断模块包括:
第一设置子模块,用于设置第一接收定时器;
第一判断子模块,用于判断是否接收到初始字符,是则触发第二判断子模块,否则触发所述发送模块给上位机返回复位应答数据接收超时信息;
所述第二判断子模块,用于判断所述接收到的初始字符是否为第一预设值,是则触发第三设置子模块,否则触发第三判断子模块;
所述第三判断子模块,用于判断所述接收到的初始字符是否为第二预设值,是则触发第二设置子模块,否则触发所述发送模块给所述上位机返回复位应答数据接收出错信息;
所述第二设置子模块,用于将字符传输的逻辑约定设置为反向约定,触发第一保存设定子模块;
所述第三设置子模块,用于将字符传输的逻辑约定设置为正向约定,触发第一保存设定子模块;
所述第一保存设定子模块,用于将所述接收到的初始字符保存到复位应答数据缓存区中,并设定第二接收定时器;
第四判断子模块,用于判断在所述第二定时器的设定时间内是否接收到格式字符,是则触发第一转换保存子模块,否则触发所述发送模块给所述上位机返回复位应答数据接收超时信息;
所述第一转换保存子模块,用于根据设置好的逻辑约定转换格式字符,并将转换后的格式字符保存到所述复位应答数据缓存区中,根据格式字符计算历史字符长度并保存,将所述复位应答数据缓存区中的第一个协议组作为当前协议组;
第五判断子模块,用于判断所述复位应答数据缓存区中的数据的长度是否超过预设长度,是则触发第九判断子模块,否则将当前协议组中的第一个接口字符作为当前接口字符,执行触发第六判断子模块;
所述第六判断子模块,用于判断当前接口字符是否超出当前协议组中的接口字符长度,是则触发第一获取子模块,否则触发第八判断子模块;
所述第一获取子模块,用于将所述复位应答数据缓冲区中的下一个协议组作为当前协议组,获取当前协议组中的第四个接口字符作为当前接口字符;
第七判断子模块,判断所述复位应答数据缓存区中的数据的长度是否超过预设长度,是则触发第九判断子模块,否则触发所述第六判断子模块;
所述第八判断子模块,用于通过所述格式字符判断当前协议组的接口字符组中是否存在接口字符,是则触发第八判断子模块,否则触发第一作为子模块;
所述第八判断子模块,用于判断在所述第一预设时间内是否收到接口字符,是则触发第二转换保存子模块,否则触发所述发送模块给所述上位机返回复位应答数据接收超时信息;
所述第二转换保存子模块,用于根据设置好的逻辑约定进行接口字符转换,并将转换后的接口字符保存到所述复位应答数据缓存区中,触发第一作为子模块;
所述第一作为子模块,用于将当前协议组中的下一个接口字符作为当前接口字符,触发所述第六判断子模块;
所述第九判断子模块,用于根据所述历史字符长度判断是否接收完所有的历史字符,是则触发查询子模块,否则触发第十判断子模块;
所述第十判断子模块,用于判断在所述第一预设时间内是否收到历史字符,是则触发第三转换保存子模块,否则触发所述发送模块给所述上位机返回复位应答数据接收超时信息;
所述第三转换保存子模块,用于根据设置好的逻辑约定进行历史字符转换,将转换后的历史字符保存到所述复位应答数据缓存区中;
所述查询子模块,用于遍历所述复位应答数据缓存区中每个协议组中的第四接口字符,查询是否存在T=1协议,是则触发第十一判断子模块,否则触发所述发送模块给所述上位机返回复位应答数据接收成功信息;
所述第十一判断子模块,用于判断在所述第一预设时间内是否接收到校验字符,是则触发第四转换保存子模块,否则触发所述发送模块给所述上位机返回复位应答数据接收超时信息;
所述第四转换保存子模块,用于根据设置好的逻辑约定进行校验字符转换;并将转换后的校验字符保存到所述复位应答数据缓存区中,触发所述发送模块给所述上位机返回复位应答数据接收成功信息。
23.如权利要求15所述的安全处理器,其特征在于,所述第三判断模块包括:
第四设置子模块,用于根据复位应答数据设置位持续时间;
第十二判断子模块,用于判断所述IC卡是否已插入且处于激活状态,是则触发第十三判断子模块,否则触发所述发送模块给所述上位机返回IC卡无响应信息;
所述第十三判断子模块,用于判断发送的数据交互指令是否为PPS指令,是则触发第十四判断子模块,否则第五设置子模块;
所述第十四判断子模块,用于判断ATR缓冲区中是否有预设接口字符,是则触发第十五判断子模块,否则触发所述发送模块给所述上位机返回指令取消信息;
所述第十五判断子模块,用于与IC卡进行PPS参数协商操作,并判断协商操作是否成功,是则触发通讯子模块,否则触发所述下电模块对IC卡进行下电操作,并触发所述发送模块给上位机返回错误信息;
所述通讯子模块,用于使用协商成功的参数开始与IC卡进行通讯,触发设置子模块;
所述第五设置子模块,用于设置将要发送的APDU指令;
第十六判断子模块,用于当所述发送模块将所述要发送的APDU指令发送给所述IC卡后,判断所述APDU指令是否发送成功,是则触发第六设置子模块,否则触发所述发送模块给所述上位机返回错误码;
所述第六设置子模块,设置工作等待时间;
第十七判断子模块,用于判断在所述工作等待时间内是否收到所述IC卡发送的第一个过程字,是则触发第十八判断子模块,否则触发所述发送模块给所述上位机返回错误码;
所述第十八判断子模块,用于判断接收到的所述第一个过程字是否等于第一预设数据,是则触发丢弃设定子模块,否则触发第十九判断子模块;
所述丢弃设定子模块,用于丢弃接收到的所述第一个过程字,并重新设定所述工作等待时间,等待接收后续字符,触发所述第十七判断子模块;
所述第十九判断子模块,用于判断接收到的第一个过程字是否为第二预设数据,是则触发第二保存设定子模块,否则触发第二十一判断子模块;
所述第二保存设定子模块,用于保存接收到的所述第一个过程字,并重新设定所述工作等待时间;
第二十判断子模块,用于判断在所述工作等待时间内是否接收到第二个过程字,是则触发第一保存子模块,否则触发所述发送模块给所述上位机返回错误码;
所述第一保存子模块,保存所述第二个过程字,触发所述发送模块给所述上位机返回操作成功信息;
所述第二十一判断子模块,用于判断接收到的第一过程字是否为INS字符,是则触发第二十二判断子模块,否则触发第二十六判断子模块;
所述第二十二判断子模块,用于判断是否还有数据需要继续发送给所述IC卡,是则触发第二十三判断子模块,否则触发所述第六设置子模块;
所述触发第二十三判断子模块,用于判断发送给所述IC卡指令中的le是否为0,是则触发第二十四判断子模块,否则触发第二十五判断子模块;
所述第二十四判断子模块,用于判断在预设时间内是否接收到所述IC卡返回的应答数据,是则触发第二保存子模块,否则触发所述发送模块给所述上位机返回错误信息;
所述第二保存子模块,用于保存所述IC卡返回的应答数据,给所述上位机返回操作成功信息;
所述第二十五判断子模块,用于判断所述工作等待时间内是否接收到IC卡发送的指定长度的数据,是则触发第三保存子模块,否则触发所述发送模块给所述上位机返回错误信息;
所述第三保存子模块,用于保存所述IC卡返回的指令长度的应答数据,触发所述发送模块给所述上位机返回操作成功信息;
所述第二十六判断子模块,用于判断接收到的第一过程字是否为INS的补码,是则触发第二十七判断子模块,否则触发所述发送模块给所述上位机返回错误信息;
所述触发第二十七判断子模块,用于判断是否还有数据继续发送给所述IC卡,是则触发发送模块给所述IC卡发送一个字节的数据,触发所述第六设置子模块,否则触发第二十八判断子模块;
所述触发第二十八判断子模块,用于判断是否接收到所述IC卡返回的一个字节数据,是则触发第四保存子模块,否则触发所述发送模块给所述上位机返回错误信息;
所述第四保存子模块,用于保存所述IC卡返回的一个字节数据,触发所述第六设置子模块。
24.如权利要求23所述的安全处理器,其特征在于,所述第五设置子模块包括:
第一判断单元,用于判断将要发送的APDU指令的类型,如为第一预设命令则触发第一设置单元,如为第二预设命令则触发第二设置单元,如为第三预设命令则触发第三设置单元,如为其他则触发第四设置单元;
所述第一设置单元用于将所述要发送的APDU指令中的P3设置为0x00,发送数据总长度设置为5个字节,Le设为0;
所述第二设置单元用于将所述要发送的APDU指令中的P3设置为0x00,发送数据总长度设置为与Le相同;
所述第三设置单元用于将所述要发送的APDU指令中的P3设置为0x00;
所述第四设置单元用于将所述要发送的APDU指令中的Le设置为APDU数据域长度-1。
25.如权利要求15所述的安全处理器,其特征在于,还包括:
第二十一判断模块,用于当检测到中断时判断中断类型,如为定时器中断则触发所述发送模块向所述IC卡发送数据块并触发第二使能模块,如为发送缓冲器中断则触发第二十一判断模块,如为字符发送完成中断则触发第二十二判断模块,如为字符接收完成中断则触发存入模块;
所述第二使能模块,用于使能发送完成中断,退出定时器中断;
所述第二十一判断模块,用于判断当前数据块中是否还有数据未发送完毕,是则触发更新设定模块,否则触发第一关闭模块;
所述更新设定模块,用于更新未发送完成的数据字符个数,重新设定块保护时间,准备发送下一个数据字符,退出发送缓冲器中断;
第一关闭模块:所述安全处理器关闭字符发送完成中断,关闭定时器中断,退出发送缓冲器中断;
所述第二十二判断模块,用于判断数据块中的所有字符是否都已发送完成,是则触发重新设定模块,否则触发第二开启模块;
所述重新设定模块,用于重新设定块保护时间和块等待时间,退出字符发送完成中断;
所述第二开启模块,用于在数据块的最后一个字符开始时,开启定时器中断,退出字符发送完成中断;
所述存入模块,用于将接收到的数据块头中的数据存入接收缓存区中;
第二十三判断模块,用于判断块保护时间是否符合要求,是则触发第二十四判断模块,否则触发第二十五判断模块;
所述第二十四判断模块,用于判断数据块头是否接收完毕,是则触发存入判断模块,否则触发存入设置模块;
所述存入判断模块,用于将接收到的数据域的数据存入接收缓存区,并判断接收状态机是否为接收完成状态,是则触发清除模块,否则退出字符接收完成中断;
所述清除模块,用于清除金融终端状态机的操作等待状态,退出字符接收完成中断;
所述存入设置模块,用于将接收到的数据域中的数据存入接收缓存区,将接收状态机设置为接收完成状态,关闭接收中断,退出字符接收完成中断;
所述第二十五判断模块,用于判断接收缓存区中的数据的长度是否不超过预设长度,是则触发关闭清除模块,否则触发第二关闭模块;
所述关闭清除模块,用于关闭等待定时器,将接收状态机设为接收完成,清除所述金融终端状态机的操作等待状态,调用硬件异常处理函数,退出字符接收完成中断;
所述第二关闭模块,用于关闭等待定时器然后重新开启,退出字符接收完成中断。
CN201610453728.9A 2016-06-21 2016-06-21 一种金融终端、安全处理器及安全处理器的工作方法 Active CN106127084B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201610453728.9A CN106127084B (zh) 2016-06-21 2016-06-21 一种金融终端、安全处理器及安全处理器的工作方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201610453728.9A CN106127084B (zh) 2016-06-21 2016-06-21 一种金融终端、安全处理器及安全处理器的工作方法

Publications (2)

Publication Number Publication Date
CN106127084A CN106127084A (zh) 2016-11-16
CN106127084B true CN106127084B (zh) 2018-09-25

Family

ID=57471288

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201610453728.9A Active CN106127084B (zh) 2016-06-21 2016-06-21 一种金融终端、安全处理器及安全处理器的工作方法

Country Status (1)

Country Link
CN (1) CN106127084B (zh)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN109726604B (zh) * 2018-12-27 2022-04-15 艾体威尔电子技术(北京)有限公司 一种接触卡与终端之间的数据交换通信方法

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101523417A (zh) * 2005-03-26 2009-09-02 普莱瓦西斯公司 电子金融事务处理卡和方法
CN202049561U (zh) * 2011-05-18 2011-11-23 东华大学 一种金融ic卡终端
CN103413244A (zh) * 2013-07-29 2013-11-27 北京握奇数据系统有限公司 一种移动安全金融终端和金融交易方法

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10580014B2 (en) * 2014-06-12 2020-03-03 Avaya Inc. System and method for payment card industry compliance

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101523417A (zh) * 2005-03-26 2009-09-02 普莱瓦西斯公司 电子金融事务处理卡和方法
CN202049561U (zh) * 2011-05-18 2011-11-23 东华大学 一种金融ic卡终端
CN103413244A (zh) * 2013-07-29 2013-11-27 北京握奇数据系统有限公司 一种移动安全金融终端和金融交易方法

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
ISO7816传输协议详尽中文版;zorangebai;《https://wenku.baidi.com/view/555a761ea8114431b90dd85e.html》;20111230;第2-35页 *
多功能互联网金融个人终端的研究与设计;张腾 等;《信息安全与通信保密》;20131110;参见对比文件1第105-107页 *

Also Published As

Publication number Publication date
CN106127084A (zh) 2016-11-16

Similar Documents

Publication Publication Date Title
US6769622B1 (en) System and method for simulating universal serial bus smart card device connected to USB host
EP2706699B1 (en) User terminal and payment system
CN107195131A (zh) 一种模拟硬件设备的方法及装置
CN109688150A (zh) 一种多平台账号互通方法及装置
CN114491973B (zh) 一种虚端子回路校核方法、装置和终端设备
CN108334346A (zh) 一种业务控制流程的开发方法及装置
CN106127084B (zh) 一种金融终端、安全处理器及安全处理器的工作方法
US12430520B2 (en) Method for testing POS machine, test terminal and non-transitory computer readable storage medium
CN107704258A (zh) Uboot升级方法、系统及终端设备
CN107463380A (zh) 消息处理方法、装置及电子设备
JPH03134709A (ja) 命令リストプログラムがリレーはしご形線図として表現できるかどうかを判定する方法
CN111367398A (zh) 一种熄屏显示控制方法、装置及计算机可读存储介质
CN105654003B (zh) 一种ic卡到位检测方法及装置
US8819449B2 (en) Event counter in a system adapted to the JavaCard language
CN105278812B (zh) 一种界面调整方法及终端
CN107729136A (zh) 一种基于fpga的处理优先级配置方法及装置
CN107196767A (zh) 证书申请方法及装置
CN111752845B (zh) 一种调试工具及其调试方法和系统
CN112835836B (zh) 一种主机与智能卡信息交互的方法及装置
CN114745257A (zh) 数据帧调试方法、装置、设备及存储介质
CN102541673A (zh) 一种cpu取指令异常的安全处理方法和电路
CN110320992B (zh) 一种配置管理功耗的方法
CN102542226A (zh) 一种应用终端访问智能卡的安全访问实现方法
CN106021106B (zh) 一种进程控制方法及用户终端
CN116302949B (zh) 基于mfc框架的三自惯组地面测试系统及方法、存储介质和设备

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant
OL01 Intention to license declared
OL01 Intention to license declared