发明内容
为了解决主机程序无法访问使用非PC/SC驱动程序驱动的智能密钥装置的问题,本发明实施例提出了一种访问终端智能密钥装置的方法,所述方法包括以下步骤:
主机设备接口程序中包含虚拟驱动设备程序,主机在开机时接收所述虚拟驱动设备程序报告的驱动设备的种类,并加载所述驱动设备的驱动程序,在终端设备接口程序中包含非PC/SC规范的智能密钥装置驱动程序,所述方法包括以下步骤:
步骤A:终端监测程序监测到智能密钥装置与终端建立了连接,发送消息给主机设备接口程序;
步骤B:所述主机设备接口程序将所述消息发送给主机程序;
步骤C:所述主机程序收到所述消息后,通过所述主机设备接口程序发送驱动指令给终端设备接口程序;
步骤D:所述终端设备接口程序根据所述驱动指令对所述智能密钥装置进行操作,并将操作结果发送给所述主机设备接口程序,所述主机设备接口程序将该结果发送给所述主机程序;
步骤E:重复执行步骤C和步骤D,直到所述主机程序完成工作。
所述终端监测程序通过消息机制监测终端是否有智能密钥装置插拔事件信息,如果有,则发送消息通知给所述主机。
所述主机设备接口程序内置在主机的系统程序中。
所述主机设备接口程序为一个动态库。
所述主机设备接口程序为虚拟的驱动程序。
所述主机设备接口程序为一个独立的可执行程序。
所述终端设备接口程序能够访问不符合PC/SC规范的智能密钥装置。
本发明实施例还提供了一种访问终端智能密钥装置的系统,所述系统包括主机端、终端和智能密钥装置,所述主机端包括主机程序模块和主机设备接口模块,所述终端包括终端设备接口模块和监测模块;
所述主机程序模块用于向终端分配资源、发送驱动指令、处理终端返回的结果和撤销分配给终端的资源;
所述主机设备接口模块用于虚拟出驱动设备,转发和传送所述主机程序模块发送的驱动指令;
所述终端设备接口模块用于与主机端进行通信,读取智能密钥装置内的数据和向主机端返回读取出的数据;
所述监测模块用于监测终端是否有智能密钥装置插拔事件信息,如果有,则发送消息通知给主机端;
所述智能密钥装置是非PC/SC规范的智能密钥装置或使用私有驱动程序来驱动的智能密钥装置。
所述主机设备接口模块包括虚拟驱动单元和主机通信单元,所述终端设备接口模块包括终端通信单元和驱动单元;
所述虚拟驱动单元用于虚拟出一个驱动设备,向所述主机程序模块报告驱动设备的种类,接收所述主机程序模块发送的驱动指令,并将驱动指令发送给所述主机通信单元;
所述主机通信单元用于与所述终端通信单元进行通信,接收所述虚拟驱动单元发送的驱动指令,并将驱动指令发送给所述终端通信单元;
所述终端通信单元用于与所述主机通信单元进行通信,接收所述主机通信单元发送的驱动指令,接收智能密钥装置内的数据和所述监测模块发送的指令;
所述驱动单元用于驱动非PC/SC规范的智能密钥装置,并读取智能密钥装置内的数据。
有益效果:由于虚拟驱动单元虚拟出一个驱动设备,并向主机报告驱动设备的种类,所以主机能够访问使用非PC/SC规范的智能密钥装置,而且主机程序不用作任何修改,主机程序仍然是直接访问主机的驱动程序,主机程序的任务没有任何改变。
具体实施方式
下面结合附图和具体实施例对本发明作进一步说明,但不作为对本发明的限定。
参见图1,本发明实施例一种访问终端智能密钥装置的方法具体包括以下步骤:
步骤101:主机程序向主机虚拟驱动设备程序发送驱动指令,读取智能密钥装置中的数据。
步骤102:主机虚拟驱动设备程序将驱动指令发送给主机通信程序。
步骤103:主机通信程序将收到的驱动指令通过网络发送给终端通信程序。
步骤104:终端通信程序将驱动指令发送给终端驱动程序。
步骤105:终端驱动程序通过USB协议读取连接在终端上的智能密钥装置中的数据。
终端收到驱动指令时,终端处理器从驱动程序存储器中调出驱动程序,驱动程序将驱动指令转换为硬件描述指令,终端驱动程序将硬件描述指令通过USB协议发送给智能密钥装置,智能密钥装置微处理器执行硬件描述指令内容,并将执行结果返回给终端。终端驱动程序可以读取非PC/SC规范的智能密钥装置。
步骤106:从智能密钥装置中读取的数据通过USB协议发送给终端通信程序。
步骤107:终端通信程序将智能密钥装置中的数据通过网络发送给主机通信程序。
步骤108:主机通信程序将智能密钥装置中的数据存储在数据存储器中。
步骤109:数据存储器通过数据总线将智能密钥装置中的数据发送给主机程序。
步骤110:主机程序处理智能密钥装置中的数据,并判断工作是否完成,如果是,则执行步骤111,否则执行步骤101。
步骤111:主机程序待机。
另外,当智能密钥装置与终端连接和断开时,主机也会与终端进行通信。
1.智能密钥装置与终端建立连接,主机与终端进行通信包括以下具体步骤,参见图2:
步骤201:主机开机,操作系统加载所有驱动程序,向主机虚拟驱动设备程序发送询问指令,询问驱动设备种类。
步骤202:主机虚拟驱动设备程序向主机返回驱动设备的描述信息。
步骤203:主机收到描述信息,获知驱动设备的种类,并加载该驱动设备的驱动程序。
步骤204:终端监测程序监测到智能密钥装置连接到终端的消息。
步骤205:终端监测程序将智能密钥装置连接到终端的消息发送给终端通信程序。
步骤206:终端通信程序通过网络将智能密钥装置连接到终端的消息发送给主机通信程序。
步骤207:主机通信程序将收到的智能密钥装置连接到终端的消息发送给主机程序。
2.智能密钥装置与终端断开连接,主机与终端进行通信包括以下具体步骤,参见图3:
步骤301:智能密钥装置从终端上被拔出。
步骤302:终端监测程序将智能密钥装置与终端断开连接的消息发送给终端通信程序。
步骤303:终端通信程序通过网络将智能密钥装置与终端断开连接的消息发送给主机通信程序。
步骤304:主机通信程序将收到的智能密钥装置与终端断开连接的消息发送给主机程序。
步骤305:主机程序收到智能密钥装置与终端断开连接的消息后,撤销分配给终端的资源。
参见图4,本发明实施例还提供了一种访问终端智能密钥装置的系统,系统包括主机端、终端和智能密钥装置,主机端包括主机程序模块和主机设备接口模块,终端包括终端设备接口模块和监测模块;
主机程序模块用于向终端分配资源、发送驱动指令、处理终端返回的结果和撤销分配给终端的资源;
主机设备接口模块用于虚拟出驱动设备,转发和传送主机程序模块发送的驱动指令;
终端设备接口模块用于与主机端进行通信,读取智能密钥装置内的数据和向主机端返回读取出的数据;
监测模块用于监测终端是否有智能密钥装置插拔事件信息,如果有,则发送消息通知给主机端;
智能密钥装置是非PC/SC规范的智能密钥装置或使用私有驱动程序来驱动的智能密钥装置。
主机设备接口模块包括虚拟驱动单元和主机通信单元,终端设备接口模块包括终端通信单元和驱动单元;
虚拟驱动单元用于虚拟出一个驱动设备,向主机程序模块报告驱动设备的种类,接收主机程序模块发送的驱动指令,并将驱动指令发送给主机通信单元;
主机通信单元用于与终端通信单元进行通信,接收虚拟驱动单元发送的驱动指令,并将驱动指令发送给终端通信单元;
终端通信单元用于与主机通信单元进行通信,接收主机通信单元发送的驱动指令,接收智能密钥装置内的数据和监测模块发送的指令;
驱动单元用于驱动非PC/SC规范的智能密钥装置,并读取智能密钥装置内的数据。
以上所述的实施例只是本发明较优选的具体实施方式的一种,本领域的技术人员在本发明技术方案范围内进行的通常变化和替换都应包含在本发明的保护范围内。