CN106060128B - 一种浏览器访问智能密钥设备的方法及装置 - Google Patents

一种浏览器访问智能密钥设备的方法及装置 Download PDF

Info

Publication number
CN106060128B
CN106060128B CN201610353656.0A CN201610353656A CN106060128B CN 106060128 B CN106060128 B CN 106060128B CN 201610353656 A CN201610353656 A CN 201610353656A CN 106060128 B CN106060128 B CN 106060128B
Authority
CN
China
Prior art keywords
data
websocket
browser
cipher key
module
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
CN201610353656.0A
Other languages
English (en)
Other versions
CN106060128A (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 CN201610353656.0A priority Critical patent/CN106060128B/zh
Publication of CN106060128A publication Critical patent/CN106060128A/zh
Application granted granted Critical
Publication of CN106060128B publication Critical patent/CN106060128B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/02Protocols based on web technology, e.g. hypertext transfer protocol [HTTP]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L69/00Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
    • H04L69/16Implementation or adaptation of Internet protocol [IP], of transmission control protocol [TCP] or of user datagram protocol [UDP]
    • H04L69/161Implementation details of TCP/IP or UDP/IP stack architecture; Specification of modified or new header fields
    • H04L69/162Implementation details of TCP/IP or UDP/IP stack architecture; Specification of modified or new header fields involving adaptations of sockets based mechanisms
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L63/00Network architectures or network communication protocols for network security
    • H04L63/08Network architectures or network communication protocols for network security for authentication of entities
    • H04L63/0853Network architectures or network communication protocols for network security for authentication of entities using an additional device, e.g. smartcard, SIM or a different communication terminal

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Computer Security & Cryptography (AREA)
  • Information Transfer Between Computers (AREA)

Abstract

本发明提供一种浏览器访问智能密钥设备的方法及装置,该方法包括:模拟服务器接收浏览器发送来的第一数据,当判断出第一数据符合第一WebSocket预设格式时,解析第一数据得到通讯参数,根据得到的通讯参数查找并调用智能密钥设备的驱动接口,驱动接口发送相应指令给智能密钥设备并接收智能密钥设备返回的操作结果,模拟服务器将驱动接口接收到的操作结果组织得到符合第一WebSocket预设格式的第二数据,将第二数据返回给浏览器。本发明的技术方案,摒弃了控件作为媒介访问智能密钥设备的传统方法,能够有效的兼容新型浏览器,进行基于浏览器访问智能密钥设备进行身份认证、修改信息等一系列操作。

Description

一种浏览器访问智能密钥设备的方法及装置
技术领域
本发明涉及通信领域,尤其涉及一种浏览器访问智能密钥设备的方法及装置。
背景技术
信息技术高速发展的今天,网络已成为生活中的重要角色,随之而来的,通过智能密钥设备,例如USB Key,进行基于浏览器的信息识别、身份认证等安全事项也成为了备受关注的重中之重。伴随着浏览器的推陈出新,IE10、firefox11、chrome41、safari 6及其以上版本等的新型浏览器不断问世,但是却摒弃了原有的NPAPI、AtiveX等控件的使用,因而基于上述新型浏览器无法使用控件作为媒介来使用智能密钥设备进行身份认证、修改信息等一系列操作。
发明内容
本发明的目的是为了克服现有技术的不足,提供一种浏览器访问智能密钥设备的方法及装置。
一方面,本发明提供了一种浏览器访问智能密钥设备的方法,包括:
步骤S1:模拟服务器接收浏览器发送来的第一数据,判断所述第一数据是否符合第一WebSocket预设格式,是则解析所述第一数据得到通讯参数,执行步骤S2,否则报错,结束;
步骤S2:所述模拟服务器根据所述通讯参数查找并调用智能密钥设备的驱动接口,所述驱动接口发送相应指令给所述智能密钥设备并接收所述智能密钥设备返回的操作结果;
步骤S3:所述模拟服务器将所述驱动接口接收到的操作结果组织得到符合所述第一WebSocket预设格式的第二数据,将所述第二数据返回给所述浏览器。
可选地,所述步骤S1之前,还包括:
步骤a:模拟服务器同浏览器建立WebSocket连接。
所述步骤a,具体为:
步骤a1:所述模拟服务器接收所述浏览器发送来的连接请求,判断所述连接请求是否符合第二WebSocket预设格式,是则根据所述连接请求中的第一参数生成第二参数,根据所述第二参数生成符合所述第二WebSocket预设格式的连接请求应答数据,否则报错,结束;
步骤a2:所述模拟服务器将所述第二WebSocket预设格式的连接请求应答数据发送给所述浏览器,所述WebSocket连接建立成功。
可选地,所述根据所述连接请求中的第一参数生成第二参数,具体为:将所述第一参数与预设全局唯一变量进行拼接得到拼接字符串,根据预设哈希算法对所述拼接字符串进行哈希运算得到哈希值,根据预设编码算法对所述哈希值进行编码得到第二参数。
可选地,所述判断所述连接请求是否符合第二WebSocket预设格式,具体为:所述模拟服务器判断所述连接请求是否为将Http协议头升级为WebSocket协议头形式的连接请求,是则确认所述连接请求符合第二WebSocket预设格式,否则确认所述连接请求不符合第二WebSocket预设格式;
可选地,所述根据所述第二参数生成符合所述第二WebSocket预设格式的连接请求应答数据,具体为:所述模拟服务器根据所述第二参数生成将Http协议头升级为WebSocket协议头形式的连接请求应答数据。
可选地,所述步骤S1中,模拟服务器接收浏览器发送来的第一数据,具体为:所述模拟服务器接收所述浏览器通过所述WebSocket连接发送来的第一数据;
所述步骤S4中,将所述第二数据返回给所述浏览器,具体为:所述模拟服务器将所述第二数据通过所述WebSocket连接返回给所述浏览器。
可选地,所述判断所述第一数据是否符合第一WebSocket预设格式,具体为:所述模拟服务器判断所述第一数据是否符合WebSocket数据帧格式,是则确认所述第一数据符合第一WebSocket预设格式,否则确认所述第一数据不符合第一WebSocket预设格式;
所述步骤S3中,将所述操作结果组织得到符合所述第一WebSocket预设格式的第二数据,具体为:所述模拟服务器将所述操作结果组织得到所述WebSocket数据帧格式的第二数据。
可选地,所述步骤S1中,所述解析所述第一数据得到通讯参数,具体为:所述模拟服务器解析所述第一数据得到数据域,根据预设加密算法对所述数据域进行解密得到编码数据,根据预设编码算法对所述编码数据进行解码得到所述通讯参数;
所述步骤S3中,将所述操作结果组织得到符合所述第一WebSocket预设格式的第二数据,具体为:所述模拟服务器根据所述预设编码算法对所述操作结果进行编码得到编码操作结果,根据所述预设加密算法对所述编码操作结果进行加密得到符合所述第一WebSocket预设格式的第二数据。
可选地,所述步骤S2中,所述模拟服务器根据所述通讯参数查找智能密钥设备的驱动接口,具体为:所述模拟服务器根据所述通讯参数中指定的操作名称和/或模块标识和/或接口标识查找与所述浏览器预先约定的智能密钥设备的驱动函数接口。
可选地,所述步骤S2中,所述模拟服务器根据所述通讯参数查找智能密钥设备的驱动接口,具体为:所述模拟服务器根据所述通讯参数中指定的操作名称,查找相应的预先设定的智能密钥设备的驱动函数接口。
可选地,所述步骤S2中,所述模拟服务器根据所述通讯参数查找并调用智能密钥设备的驱动接口,所述驱动接口发送相应指令给所述智能密钥设备,具体为:
所述模拟服务器根据所述通讯参数查找并调用智能密钥设备的驱动接口,并将所述通讯参数中指定的操作名称传入所述驱动接口,所述驱动接口根据所述操作名称组织相应的操作指令,将所述操作指令发送给所述智能密钥设备;
或者,
所述模拟服务器根据所述通讯参数查找并调用智能密钥设备的驱动接口,所述驱动接口发送预先设定的指令给所述智能密钥设备。
可选地,所述步骤S1之前,还包括:
步骤N:模拟服务器接收浏览器发送来的第三数据,判断所述第三数据是否符合第一WebSocket预设格式,是则解析所述第三数据得到通讯标识,否则报错,结束。
可选地,所述步骤N中,所述解析所述第三数据得到通讯标识之后,还包括:所述模拟服务器创建与所述通讯标识对应的环境,并通过回调预设函数接口通知所述浏览器与所述通讯标识对应的环境创建完成;
所述步骤S1,具体为:模拟服务器接收浏览器发送来的第一数据和所述通讯标识,判断所述第一数据是否符合第一WebSocket预设格式,是则解析所述第一数据得到通讯参数,执行步骤S2,否则报错,结束。
可选地,所述步骤S1中,所述模拟服务器接收浏览器发送来的第一数据和所述通讯标识之后,还包括:所述模拟服务器根据接收到的通讯标识查找与其对应的环境,判断是否查找成功,是则判断所述第一数据是否符合第一WebSocket预设格式,否则报错,结束;
所述步骤S2中,所述模拟服务器根据所述通讯参数查找并调用智能密钥设备的驱动接口,具体为:所述模拟服务器根据所述通讯参数在与所述通讯标识对应的环境中查找并调用智能密钥设备的驱动接口。
可选地,所述模拟服务器创建与所述通讯标识对应的环境,具体为:所述模拟服务器分配存储区,将所述通讯标识与所述环境建立一一对应关系。
可选地,所述步骤S2中,所述驱动接口发送相应指令给所述智能密钥设备并接收所述智能密钥设备返回的操作结果,具体为:所述驱动接口发送相应指令给所述智能密钥设备并接收所述智能密钥设备返回的应答数据;
所述步骤S3中,所述模拟服务器将所述驱动接口接收到的操作结果组织得到符合所述第一WebSocket预设格式的第二数据,具体为:所述模拟服务器解析所述驱动接口接收到的应答数据得到操作结果,将所述操作结果组织得到符合所述第一WebSocket预设格式的第二数据。
可选地,所述步骤S3之后,还包括:
当所述浏览器操作页面未退出且继续访问所述智能密钥设备时,返回步骤S1;
当所述浏览器操作页面退出时,断开所述WebSocket连接。
可选地,所述断开所述WebSocket通连接,具体为:
所述模拟服务器接收到来自所述浏览器的预设断开连接状态码之后,返回断开连接响应给所述浏览器,并断开连接,当所述浏览器接收到所述断开连接响应时,WebSocket连接断开成功;
或者,
所述模拟服务器向所述浏览器发送所述预设断开连接状态码,并断开连接,当所述模拟服务器接收到所述浏览器返回的所述断开连接响应时,WebSocket连接断开成功。
另一方面,本发明还提供了一种浏览器访问智能密钥设备的装置,包括:
第一接收模块,用于接收浏览器发送来的第一数据;
第一判断模块,用于判断所述第一接收模块接收到的第一数据是否符合第一WebSocket预设格式;
第一解析模块,用于当所述第一判断模块判断出所述第一接收模块接收到的第一数据符合第一WebSocket预设格式时,解析所述第一数据得到通讯参数;
报错模块,用于当所述第一判断模块判断出所述第一接收模块接收到的第一数据不符合第一WebSocket预设格式时,报错,结束;
查找调用模块,用于根据所述第一解析模块得到通讯参数查找并调用智能密钥设备的驱动接口;
第一发送模块,用于在所述查找调用模块调用智能密钥设备的驱动接口之后,发送相应指令给所述智能密钥设备;
第二接收模块,用于接收所述智能密钥设备返回的操作结果;
组织模块,用于将所述第二接收模块接收到的操作结果组织得到符合所述第一WebSocket预设格式的第二数据;
第二发送模块,用于将所述组织模块得到的第二数据返回给所述浏览器。
可选地,所述装置还包括:
第一创建模块,用于在所述第一接收模块接收浏览器发送来的第一数据之前,同浏览器建立WebSocket连接。
可选地,所述第一创建模块,具体包括:
接收单元,用于接收所述浏览器发送来的连接请求;
判断单元,用于判断所述接收单元接收到的连接请求是否符合第二WebSocket预设格式;
第一生成单元,用于当所述判断单元判断出所述接收单元接收到的连接请求符合第二WebSocket预设格式时,根据所述连接请求中的第一参数生成第二参数;
第二生成单元,用于根据所述第一生成单元生成的第二参数生成符合所述第二WebSocket预设格式的连接请求应答数据;
报错单元,用于当所述判断单元判断出所述接收单元接收到的连接请求不符合第二WebSocket预设格式时,报错,结束;
发送单元,用于将所述第二生成单元生成的所述第二WebSocket预设格式的连接请求应答数据发送给所述浏览器,所述WebSocket连接建立成功。
可选地,所述第一生成单元,具体用于:将所述第一参数与预设全局唯一变量进行拼接得到拼接字符串,根据预设哈希算法对所述拼接字符串进行哈希运算得到哈希值,根据预设编码算法对所述哈希值进行编码得到第二参数。
可选地,所述判断单元,具体用于:判断所述连接请求是否为将Http协议头升级为WebSocket协议头形式的连接请求,是则确认所述连接请求符合第二WebSocket预设格式,否则确认所述连接请求不符合第二WebSocket预设格式;
可选地,所述第二生成单元,具体用于:根据所述第二参数生成将Http协议头升级为WebSocket协议头形式的连接请求应答数据。
可选地,所述第一接收模块,具体用于:接收所述浏览器通过所述WebSocket连接发送来的第一数据;
所述第二发送模块,具体用于将所述第二接收模块接收到的所述操作结果通过所述WebSocket连接返回给所述浏览器。
可选地,所述第一判断模块,具体用于:在所述第一接收模块接收浏览器发送来的第一数据之后,判断所述第一数据是否符合WebSocket数据帧格式,是则确认所述第一数据符合第一WebSocket预设格式,否则确认所述第一数据不符合第一WebSocket预设格式;
可选地,所述组织模块,具体用于:将所述第二接收模块接收到的操作结果组织得到所述WebSocket数据帧格式的第二数据。
可选地,所述第一解析模块,具体用于:解析所述第一数据得到数据域,根据预设加密算法对所述数据域进行解密得到编码数据,根据预设编码算法对所述编码数据进行解码得到所述通讯参数;
所述组织模块,具体用于:根据所述预设编码算法对所述操作结果进行编码得到编码操作结果,根据所述预设加密算法对所述编码操作结果进行加密得到符合所述第一WebSocket预设格式的第二数据。
可选地,所述查找调用模块,具体用于:根据所述通讯参数中指定的操作名称和/或模块标识和/或接口标识查找与所述浏览器预先约定的智能密钥设备的驱动函数接口。
可选地,所述查找调用模块,具体用于:根据所述通讯参数中指定的操作名称,查找到相应的预先设定的智能密钥设备的驱动函数接口。
可选地,所述查找调用模块,具体用于:根据所述通讯参数查找并调用智能密钥设备的驱动接口,并将所述通讯参数中指定的操作名称传入所述驱动接口;
所述第一发送模块,具体用于:根据所述操作名称组织相应的操作指令,将所述操作指令发送给所述智能密钥设备;
或者,
所述查找调用模块,具体用于:根据所述通讯参数查找并调用智能密钥设备的驱动接口;
所述第一发送模块,具体用于:发送预先设定的指令给所述智能密钥设备。
可选地,所述装置还包括:
第三接收模块,用于在所述第一接收模块接收浏览器发送来的第一数据之前,接收浏览器发送来的第三数据;
第二判断模块,用于判断所述第三接收模块接收到的第三数据是否符合第一WebSocket预设格式;
第二解析模块,用于当所述第二判断模块判断出所述第三接收模块接收到的第三数据符合第一WebSocket预设格式时,解析所述第三数据得到通讯标识;
所述报错模块,还用于当所述第二判断模块判断出所述第三接收模块接收到的第三数据不符合第一WebSocket预设格式时,报错,结束。
可选地,所述装置还包括:
第二创建模块,用于在所述第二解析模块解析所述第三数据得到通讯标识之后,创建与所述通讯标识对应的环境;
调用模块,用于在所述第二创建模块创建与所述通讯标识对应的环境之后,回调预设函数接口通知所述浏览器与所述通讯标识对应的环境创建完成;
所述第一接收模块,具体用于:接收浏览器发送来的第一数据和所述通讯标识。
可选地,所述装置还包括:
第三判断模块,用于在所述第一接收模块接收浏览器发送来的第一数据和所述通讯标识之后,根据接收到的通讯标识查找与其对应的环境,判断是否查找成功;
所述第一判断模块,具体用于当所述第三判断模块判断出查找成功时,判断所述第一数据是否符合第一WebSocket预设格式;
所述报错模块,还用于当所述第三判断模块判断出查找不成功时,报错,结束;
所述查找调用模块,具体用于根据所述第一解析模块得到的通讯参数在与所述通讯标识对应的环境中查找并调用智能密钥设备的驱动接口。
可选地,所述第二创建模块,具体用于:分配存储区,将所述通讯标识与所述环境建立一一对应关系。
可选地,所述第二接收模块,具体用于:接收所述智能密钥设备返回的应答数据;
所述组织模块,具体用于:解析所述第二接收模块接收到的应答数据得到操作结果,将所述操作结果组织得到符合所述第一WebSocket预设格式的第二数据。
可选地,所述装置还包括:断开模块;
所述第一接收模块,还用于在所述第二发送模块将所述第二接收模块接收到的操作结果返回给所述浏览器之后,当所述浏览器操作页面未退出且继续访问所述智能密钥设备时,继续接收所述浏览器发送来的第一数据;
所述断开模块,用于在所述发送模块将所述第二接收模块接收到的操作结果返回给所述浏览器之后,当所述浏览器操作页面退出时,断开所述WebSocket连接。
可选地,所述断开模块,具体用于:
接收到来自所述浏览器的预设断开连接状态码之后,返回断开连接响应给所述浏览器,并断开连接,当所述浏览器接收到所述断开连接响应时,WebSocket连接断开成功;
或者,
向所述浏览器发送所述预设断开连接状态码,并断开连接,当所述模拟服务器接收到所述浏览器返回的所述断开连接响应时,WebSocket连接断开成功。
本发明与现有技术相比,具有以下优点:摒弃了控件作为媒介使用智能密钥设备的传统方法,能够有效的兼容如IE10、firefox 11、chrome41、safari 6及其以上版本的新型浏览器,进行基于浏览器使用智能密钥设备进行身份认证、修改信息等一系列操作。
附图说明
为了更清楚的说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图做简单的介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本发明实施例一提供的一种浏览器访问智能密钥设备的方法流程图;
图2为本发明实施例二提供的一种浏览器访问智能密钥设备的方法中步骤101至步骤120的流程图;
图3为本发明实施例二提供的一种浏览器访问智能密钥设备的方法中步骤121至步骤127的流程图;
图4为本发明实施例三提供的一种浏览器访问智能密钥设备的方法中模拟服务器的工作流程图;
图5为本发明实施例四提供的一种建立WebSocket连接的方法流程图;
图6为本发明实施例五提供的一种浏览器访问智能密钥设备的装置方框图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
在本发明中,浏览器主机内安装有模拟服务器,并且模拟服务器的IP地址和端口号预先设定。
实施例一
本发明实施例一提供一种浏览器访问智能密钥设备的实现方法,如图1所示,包括:
步骤101:模拟服务器接收浏览器发送来的第一数据,判断第一数据是否符合第一WebSocket预设格式,是则解析第一数据得到通讯参数,执行步骤102,否则报错,结束;
在本实施例中,步骤101之前,还包括:
步骤a:模拟服务器与浏览器创建WebSocket连接;
在本实施例中,步骤a具体包括:
步骤a1:模拟服务器接收浏览器发送来的连接请求,判断所述连接请求是否符合第二WebSocket预设格式,是则根据连接请求中的第一参数生成第二参数,根据第二参数生成符合第二WebSocket预设格式的连接请求应答数据,否则报错,结束;
在本实例中,第二WebSocket预设格式,具体为:将Http协议头升级为WebSocket协议头;
例如,在本实施例中,模拟服务器接收到的连接请求为:
GET/chat HTTP/1.1
Host:127.0.0.1:1237
Upgrade:Websocket
Connection:Upgrade
Sec-WebSocket-Key:dGhlIHNhbXBsZSBub25jZQ==
Sec-WebSocket-Version:13
其中,
Host:127.0.0.1:1237,表示模拟服务器的IP地址及端口号;
Upgrade:Websocket,表示连接请求为WebSocket连接请求;
Sec-WebSocket-Key:dGhlIHNhbXBsZSBub25jZQ==,表示第一参数为dGhlIHNhbXBsZSBub25jZQ==;
进一步地,根据连接请求中的第一参数生成第二参数,具体为:将第一参数与预设全局唯一变量进行拼接得到拼接字符串,根据预设哈希算法对得到的拼接字符串进行哈希运算得到哈希值,根据预设编码算法对得到的哈希值进行编码得到第二参数;
优选的,在本实施例中,预设全局唯一变量为258EAFA5-E914-47DA-95CA-C5AB0DC85B11,生成的第二参数为:s3pPLMBiTxaQ9kYGzzhZRbK+xOo=,生成的连接请求应答数据为:
HTTP/1.1 101Switching Protocols
Upgrade:websocket
Connection:Upgrade
Sec-WebSocket-Accept:s3pPLMBiTxaQ9kYGzzhZRbK+xOo=。
步骤a2:模拟服务器将生成的第二WebSocket预设格式的连接请求应答数据发送给浏览器,WebSocket连接创建成功;
在本实施例中,模拟服务器接收浏览器发送来的第一数据,具体为:模拟服务器接收浏览器通过WebSocket连接发送来的第一数据;
进一步地,在本实施例中,模拟服务器判断第一数据是否符合第一WebSocket预设格式,具体为:模拟服务器判断第一数据是否符合WebSocket数据帧格式,是则确认第一数据符合第一WebSocket预设格式,否则确认第一数据不符合第一WebSocket预设格式;
在本实施例中,模拟服务器解析第一数据得到通讯参数,具体为:模拟服务器解析第一数据得到其数据域,根据预设加密算法对得到的数据域进行解密得到编码数据,根据预设编码算法对得到的编码数据进行解码得到通讯参数;
更进一步地,在本实施例中,步骤101之前,还包括:
步骤N:模拟服务器接收浏览器发送来的第三数据,判断第三数据是否符合第一WebSocket预设格式,是则解析第三数据得到通讯标识,否则报错,结束。
在本实施例中,模拟服务器解析第一数据得到通讯标识之后,还包括:模拟服务器创建与通讯标识对应的环境,并通过回调预设函数接口通知浏览器与通讯标识对应的环境已创建完成;
在本实施例中,模拟服务器创建与通讯标识对应的环境,具体为:模拟服务器分配存储区,并将得到的通讯标识与创建的环境建立一一对应关系
步骤101具体为:模拟服务器接收浏览器通过WebSocket通道发送来的第一数据和通讯标识,判断第一数据是否符合第一WebSocket预设格式,是则解析第一数据得到通讯参数,执行步骤102,否则报错,结束;
更加具体地,模拟服务器接收浏览器发送来的第一数据和通讯标识之后,还包括:模拟服务器根据接收到的通讯标识查找与其对应的环境,判断是否查找成功,是则判断第一数据是否符合第一WebSocket预设格式,否则报错,结束。
步骤102:模拟服务器根据通讯参数查找并调用智能密钥设备的驱动接口,驱动接口发送相应指令给智能密钥设备并接收智能密钥设备返回的操作结果;
在本实施例中,模拟服务器根据通讯参数查找智能密钥设备的驱动接口,可以为:模拟服务器根据通讯参数中指定的操作名称和/或模块标识和/或接口标识查找与浏览器预先约定的智能密钥设备的驱动函数接口;
在本实施例中,模拟服务器根据通讯参数查找智能密钥设备的驱动接口,还可以为:模拟服务器根据通讯参数中指定的操作名称,查找相应的预先设定的智能密钥设备的驱动函数接口。
进一步地,在本实施例中,模拟服务器根据通讯参数查找并调用智能密钥设备的驱动接口,所述驱动接口发送相应指令给所述智能密钥设备,可以为:模拟服务器根据通讯参数查找并调用智能密钥设备的驱动接口,并将通讯参数中指定的操作名称传入驱动接口,驱动接口根据操作名称组织相应的操作指令,将得到的操作指令发送给智能密钥设备;
在本实施例中,模拟服务器根据通讯参数查找并调用智能密钥设备的驱动接口,所述驱动接口发送相应指令给所述智能密钥设备,还可以为:模拟服务器根据通讯参数查找并调用智能密钥设备的驱动接口,驱动接口发送预先设定的指令给智能密钥设备;
更进一步地,在本实施例中,驱动接口接收智能密钥设备返回的应答数据还可以为:驱动接口接收智能密钥设备返回的应答数据。
步骤103:模拟服务器将驱动接口接收到的操作结果组织得到符合所述第一WebSocket预设格式的第二数据,将所述第二数据返回给所述浏览器;
具体地,模拟服务器根据预设编码算法将驱动接口接收到的操作结果进行编码,得到编码操作结果,再根据预设加密算法对得到的编码操作结果进行加密得到第一WebSocket预设格式的第二数据,将第二数据通过WebSocket连接返回给浏览器;
进一步地,在本实施例中,当步骤102中驱动接口接收所述智能密钥设备返回的操作结果,具体为驱动接口接收智能密钥设备返回应答数据时,
相应地,步骤103中,所述模拟服务器将所述驱动接口接收到的操作结果组织得到符合第一WebSocket预设格式的第二数据,具体为:所述模拟服务器解析驱动接口接收到的应答数据得到操作结果,并将得到的操作结果组织得到符合所述第一WebSocket预设格式的第二数据。
更进一步地,在本实施例中,步骤103之后,还包括:当浏览器操作页面未退出且继续访问智能密钥设备时,模拟服务器返回步骤101;当浏览器操作页面退出时,断开WebSocket连接,模拟服务器释放存储空间;
在本实施例中,断开WebSocket连接,具体为:
模拟服务器接收到来自浏览器的预设断开连接状态码之后,返回断开连接响应给浏览器,并断开连接,当浏览器接收到断开连接响应时,WebSocket连接断开成功;
或者,
模拟服务器向浏览器发送预设断开连接状态码,并断开连接,当模拟服务器接收到浏览器返回的断开连接响应时,WebSocket连接断开成功。
实施例二
本发明实施例二提供一种浏览器访问智能密钥设备的实现方法,如图2和图3所示,包括:
步骤201:浏览器进入调用智能密钥设备进行操作的页面;
例如:网银登录页面、修改密码页面、签名页面等;
优选地,在本实施例中,以获取智能密钥设备序列号为例进行说明,浏览器进入获取智能密钥设备序列号的页面。
步骤202:浏览器判断本次操作是否为第一次操作,是则执行步骤203,否则执行步骤212;
具体地,浏览器判断WebSocket连接标识是否置位,是则确认本次操作不是第一次操作,否则确认本次操作是第一次操作;
优选地,在本实施例中,当WebSocket连接标识为1时,确认置位,当WebSocket连接标识为0时,确认为置位。
步骤203:浏览器判断模拟服务器是否可用,是则执行步骤204,否则结束;
具体地,浏览器通过“IP地址加端口号”的形式连接模拟服务器的访问地址,当浏览器接收到连接成功信息时,确认模拟服务器可用,当浏览器接收到连接失败信息时,确认模拟服务器不可用,结束;
优选的,预先设定模拟服务器的IP地址为127.0.0.1,端口号为1237;
浏览器连接模拟服务器的访问地址,具体为:ws://127.0.0.1:1237/。
步骤204:浏览器同模拟服务器之间建立WebSocket连接,并判断WebSocket连接是否建立成功,是则执行步骤205,否则结束;
浏览器同模拟服务器之间创建WebSocket连接的过程,详见实施例四,在此不再赘述;
进一步地,当判断WebSocket连接建立成功之后,还包括:浏览器将WebSocket连接标识置位;
具体地,浏览器将WebSocket连接标识置为1。
步骤205:浏览器创建与本次调用智能密钥设备进行操作对应的通讯标识;
在本实施例中,通讯标识为一段字符串,优选地,创建的通讯标识为AD34FC742340BDD3。
步骤206:浏览器根据第一WebSocket预设格式将创建的通讯标识组织得到第三数据,并将得到的第三数据通过WebSocket连接发送给模拟服务器;
在本实施例中,第一WebSocket预设格式具体为WebSocket数据帧格式;
优选地,在本实施例中,得到的第三数据为:81 9c 9b b8 cc 5c e0 9a 98 33 f0dd a2 7e a1 9a 8d 18 a8 8c 8a 1f ac 8c fe 6f af 88 8e 18 df 8b ee 21。
步骤207:模拟服务器接收第三数据并判断其是否正确,是则执行步骤208,否则报错,结束;
具体地,模拟服务器解析接收到的第三数据,判断其是否符合第一WebSocket预设格式,如果是,则确认接收到的第三数据正确,否则,确认接收到的第三数据错误;
在本实施例中,步骤207之前,还包括:模拟服务器判断第三数据是否为分帧数据,如果是,则继续接收,并在接收完成之后,执行步骤207,否则执行步骤207;
具体地,模拟服务器解析接收到的数据帧,当接收到的数据帧以2进制表示时,其第一个字节为1并且第五个字节至第八个字节上的数据转换为16进制表示不为0x0时,确认第三数据未分帧;当接收到的数据帧以2进制表示时,其第一个字节为0并且第五个字节至第八个字节上的数据转换为16进制表示不为0x0时,确认接收到的数据帧为第三数据的起始帧;当接收到的数据帧以2进制表示时,其第一个字节为0并且第五个字节至第八个字节上的数据转换为16进制表示为0x0时,确认接收到的数据帧为第三数据的中间帧;当接收到的数据帧以2进制表示时,其第一个字节为1并且第五个字节至第八个字节上的数据转换为16进制表示为0x0时,确认接收到的数据帧为第三数据的结束帧,第三数据接收完成。
步骤208:模拟服务器解析接收到的第三数据,得到第三数据域;
具体地,模拟服务器解析接收到的第三数据得到第三数据域的长度,根据得到的第三数据域的长度,读取数据得到第三数据域;
在本实施例中,模拟服务器解析接收到的第三数据得到第三数据域的长度,具体为:当第三数据转换成2进制表示时,模拟服务器读取第三数据中第十个字节至第十六个字节上的数据,并将其转换得到无符号整数,判断得到的无符号整数的值的范围,具体地:
当得到的无符号整数的值不大于125时,确认该无符号整数的值即为数据域的长度;
当得到的无符号整数的值为126时,继续读取后面二个字节上的数据并转换得到16位的无符号整数,得到的16位的无符号整数的值即为数据域的长度;
当得到的无符号整数的值为127时,继续读取后面八个字节上的数据并转化得到64位的无符号整数,得到的64位的无符号整数的值即为数据域的长度。
步骤209:模拟服务器对得到的第三数据域进行解密操作,得到第三编码数据;
具体地,模拟服务器根据预设加密算法对得到的第三数据域进行解密,得到第三编码数据;
优选地,预设加密算法为TLS1.2算法,得到的第三编码数据为:
var JsonSend={
Token:"AD34FC742340BDD3"
}。
步骤210:模拟服务器对得到的第三编码数据进行解码操作,得到通讯标识;
具体地,模拟服务器根据预设编码算法对得到的第三编码数据进行解码,得到通讯标识,优选地,在本实施例中,预设编码算法为Base64编码算法,得到的通讯标识为:AD34FC742340BDD3。
步骤211:模拟服务器根据得到的通讯标识,创建与其对应的上下文环境,执行步骤214;
具体地,模拟服务器分配存储区,记录智能密钥设备的类型,提供智能密钥设备的驱动等,并将接收到的通讯标识与创建的上下文环境建立唯一对应关系;
在本实施例中,模拟服务器根据接收到的通讯标识,创建与其对应的上下文环境之后,还包括:模拟服务器通过回调函数接口通知浏览器与通讯标识对应的上下文环境创建完成。
步骤212:浏览器组织调用智能密钥设备的通讯参数,并将其进行编码,得到编码参数;
具体地,浏览器接收到函数接口的通知后,组织调用智能密钥设备的通讯参数,并将组织的通讯参数按照预设格式进行编码,得到编码参数;
例如,当本次调用智能密钥设备进行获取智能密钥设备序列号操作时,优选的,得到的编码参数为:
步骤213:浏览器根据第一WebSocket预设格式将得到的编码参数组织得到第一数据,并将得到的第一数据和通讯标识一同通过WebSocket连接发送给模拟服务器;
优选地,在本实施例中,浏览器根据上述编码参数,得到的第一数据为:81 ee 00ac 5f 98 7b 8e 12 f7 64 d9 33 fd 22 96 7d df 65 d8 0b f7 6b c9 31 d1 6e ca 30b6 64 c0 33 ba 2c 8e 12 fd 74 c4 30 fc 22 96 7d df 65 d8 0b f7 6b c9 31 cb 4e8e 73 ba 44 cd 2b f9 54 d5 2f fd 22 96 7d cb 74 de 36 f6 67 8e 73 ba 50 9d 6ed6 61 c1 3a ba 3a 8e 3a c8 61 df 2c d9 75 d8 30 fb 73 dc 6e a9 5f ed 1d db 68c5 31 f9 2e c8 33 f4 22 d1。
步骤214:模拟服务器等待并接收浏览器发送的通讯标识和第一数据,根据接收到的通讯标识查找与其对应的上下文环境,判断是否查找成功,是则执行步骤215,否则报错,结束;
在本实施例中,当模拟服务器接收到浏览器发送的通讯标识和第一数据时,根据接收到的通讯标识查找与其对应的上下文环境之前,还包括:
模拟服务器判断第一数据是否为分帧数据,如果是,则继续接收,并在接收完成之后,根据接收到的通讯标识查找与其对应的上下文环境,否则根据接收到的通讯标识查找与其对应的上下文环境。
步骤215:模拟服务器判断接收到的第一数据是否正确,是则执行步骤216,否则报错,结束;
具体地,模拟服务器判断接收到的第一数据是否符合第一WebSocket预设格式,如果是,则确认接收到的第一数据正确,否则,确认接收到的第一数据错误。
步骤216:模拟服务器解析接收到的第一数据,得到第一数据域;
具体地,模拟服务器解析接收到的第一数据得到第一数据域的长度,根据得到的第一数据域长度,读取数据得到第一数据域;
在本实施例中,模拟服务器解析接收到的第一数据得到第一数据域的长度的方法同步骤208中所述的得到第三数据域的长度的方法相同。
步骤217:模拟服务器对得到的第一数据域进行解密操作,得到编码数据;
具体地,模拟服务器根据预设算法对得到的第一数据域进行解密操作,得到编码数据;
优选的,在本实施例中,预设算法为TLS1.2算法;得到的编码数据为:
步骤218:模拟服务器对得到的编码数据进行解码操作,得到通讯参数;
具体地,模拟服务器根据预设编码算法对得到的编码数据进行解码操作,得到通讯参数,优选的,预设编码算法为Base64编码算法;
在本实施例中,根据上述得到的编码数据得到的通讯参数具体为:通过GetTokenInfo.dll模块中的GetTokenSN方法,调用P11Name动态库,并通过P11Name动态库中约定的驱动接口来调用智能密钥设备获取智能密钥设备序列号,并且数据类型为字符串;
进一步地,在本实施例中,根据操作系统的不同,P11Name动态库还可以为CSP动态库。
步骤219:模拟服务器根据得到的通讯参数在与通讯标识对应的上下文环境中查找智能密钥设备的驱动接口,并判断是否查找成功,是则执行步骤220,否则报错,结束;
在本实施例中,智能密钥设备的每一个功能对应一个驱动接口;
具体地,模拟服务器根据通讯参数中指定的操作名称和/或模块标识和/或接口标识查找与浏览器预先约定的智能密钥设备的驱动函数接口;
例如,在本实施例中,模拟服务器根据解码得到的上述通讯参数在查找到的上下文环境中通过GetTokenInfo.dll模块中的GetTokenSN方法调用P11Name动态库,查找P11Name动态库中约定的获取序列号驱动函数接口,并判断是否查找到所述获取序列号驱动函数接口,是则执行步骤220,否则报错,结束。
进一步地,在本实例中,通讯参数还可以为本次访问智能密钥设备进行操作的操作名称,模拟服务器根据通讯参数中指定的操作名称,查找到相应的预定设定的驱动函数接口;例如,模拟服务器根据通讯参数中指定的操作名称获取智能密钥设备序列号,查找到预先设定的获取序列号驱动函数接口。
步骤220:模拟服务器调用查找到的智能密钥设备的驱动接口,驱动接口发送相应的指令给智能密钥设备;
具体地,模拟服务器调用查找到的智能密钥设备的驱动,驱动接口发送预先设定的指令给所述智能密钥设备;
例如,在本实施例中,模拟服务器通过调用P11Name动态库中约定的获取序列号驱动函数接口,所述获取序列号驱动函数接口发送预先设定的获取序列号指令给智能密钥设备。
在本实施例中,步骤220还可以为:模拟服务器调用查找到的智能密钥设备的驱动接口,并将通讯参数中指定的操作名称传入驱动接口,驱动接口根据操作名称组织相应的操作指令并发送给智能密钥设备。
步骤221:智能密钥设备接收指令,解析并执行相应操作得到操作结果,根据得到的操作结果生成应答数据并返回给驱动接口;
例如,在本实施例中,智能密钥设备解析接收到的指令,读取其内部保存的序列号,并根据读取到的序列号生成应答数据,通过回调驱动函数接口,将生成的应答数据返回给驱动接口;
进一步地,在本实施例中,步骤221还可以为:
步骤221’:智能密钥设备接收指令,解析并执行相应操作得到操作结果,并将得到的操作结果返回给驱动接口。
步骤222:驱动接口接收智能密钥设备返回的应答数据;
在本实施例中,当步骤221具体为步骤221’时,步骤222具体为:驱动接口接收智能密钥设备返回的操作结果。
步骤223:模拟服务器解析驱动接口接收到的应答数据得到操作结果,并对得到的操作结果进行编码,得到编码操作结果;
具体地,模拟服务器根据预设编码算法将得到的操作结果进行编码操作,得到编码操作结果;
优选的,预设编码算法为Base64编码算法,模拟服务器解析应答数据得到智能密钥设备序列号为210100000001,得到的编码操作结果为:
步骤224:模拟服务器根据第一WebSocket预设格式将得到的编码操作结果组织得到第二数据,并将得到的第二数据通过WebSocket连接发送给浏览器;
优选的,在本实施例中,得到的第二数据为81 e8 fa c2 34 c8 81 e0 79 a7 9eb7 58 ad d8 f8 16 8f 9f b6 60 a7 91 a7 5a 81 94 a4 5b e6 9e ae 58 ea d6 e0 79ad 8e aa 5b ac d8 f8 16 8f 9f b6 60 a7 91 a7 5a 9b b4 e0 18 ea a8 a7 47 bd 96b6 16 f2 cb ee 16 8c 9b b6 55 9c 83 b2 51 ea c0 e0 67 bc 88 ab 5a af d8 ee 168c 9b b6 55 ea c0 e0 06 f9 ca f3 04 f8 ca f2 04 f8 ca f3 16 b5。
步骤225:浏览器等待并接收模拟服务器返回的第二数据,解析第二数据得到第二数据域;
具体地,浏览器解析接收到的第二数据得到第二数据域的长度,根据得到的第二数据域长度,读取数据得到第二数据域。
步骤226:浏览器对得到的第二数据域进行解密操作,得到编码操作结果;
具体地,浏览器根据预设算法对得到的第二数据域进行解密操作,得到编码操作结果,优选的,在本实施例中,预设算法为TLS1.2算法。
步骤227:浏览器对得到的编码操作结果进行解码操作,得到操作结果并显示在操作页面中。
具体地,浏览器根据预设编码算法对得到的编码操作结果进行解码操作,得到调用智能密钥设备进行操作的操作结果,优选的,预设编码算法为Base64编码算法;
在本实施例中,浏览器对得到的编码操作结果进行解码操作得到的智能密钥设备序列号210100000001,并将其显示在操作页面中。
更进一步地,在本实施例中,当本次调用智能密钥设备进行签名操作时,优选的,在步骤212中得到的编码参数为:
根据上述编码参数,在步骤218中,模拟服务器得到的访问智能密钥设备的参数具体为:通过"FT_Sign.dll模块中的SignMessage方法,调用EnterSafe ePassAuto CSP ForABChina v1.0中约定的智能密钥设备的驱动接口,即签名驱动函数接口来调用智能密钥设备对签名数据0200000000000000041001010000000000000000000000000000000200SN010011转入账户号:SV0100139559900000001SN020011转入账户名:SV020004张三SN030009转账金额:SV030006100.00SN040011转出账户号:SV0400139559900000002SN050011转出账户名:SV050004李四DN060005附言:DV060006FTTESTn执行签名操作,并且数据类型为字符串。
步骤219具体为:模拟服务器根据解码得到的上述参数在与通讯标识对应的上下文环境中查找EnterSafe ePassAuto CSP For ABChina v1.0及其约定签名驱动函数接口,并判断是否查找到所述签名驱动函数接口,是则执行步骤220,否则报错,结束。
步骤220具体为:模拟服务器通过调用EnterSafe ePassAuto CSP For ABChinav1.0中约定的签名驱动函数接口,所述签名驱动函数接口根据签名数据发送签名指令给智能密钥设备;
步骤221具体为:智能密钥设备解析接收到的APDU指令,得到签名数据,并根据预设签名算法及私钥对得到的签名数据执行签名操作,当签名操作成功时,得到签名成功结果,根据得到的签名成功结果生成签名成功应答数据,当签名操作失败时,得到签名失败结果,根据得到的签名失败结果生成签名失败应答数据,通过回调签名驱动函数接口,将生成的应答数据返回给签名驱动函数接口,优选的,在本实施例中,签名成功,得到的签名成功结果为8076B6063F4D149CAE8CA4EBA12187E99F4EC9BBCC7092AF0C58814862BCE64DECA80E23334DBA2570CC93B2DA415F1B38340FE67CA135D166D9607596AEC AEC84EF4202D564CD73C383B56115C3CF7F028EEEE7291FFAE0FB106EC35347061702083288CC349947F1DE317C11AB1F8E22EA8AA06802A25827DD273A4892EC18;
步骤222至步骤223具体为:模拟服务器解析签名驱动函数接口接收到的应答数据,得到上述签名成功结果,对得到的签名结果进行编码得到预设格式的编码结果,优选地,得到的编码结果为:
步骤227具体为:浏览器对上述编码操作结果进行解码操作,得到签名成功的操作结果,并在操作页面中显示签名成功;
进一步地,在本实施例中,签名算法及签名密钥均为默认的,预先设定的,在步骤212中组织编码参数时,还可以指定签名算法及签名密钥;
更进一步地,在不指定签名算法及签名密钥时,当所访问的智能密钥设备支持多种签名算法时,浏览器端还可以弹框显示多种签名算法及签名密钥供用户选择,智能密钥设备根据用户选择的签名算法和签名密钥来对签名数据执行签名操作。
在本实施例中,步骤227之后,还包括:当浏览器操作页面未退出且继续访问智能密钥设备时,返回步骤214;当浏览器操作页面退出时,断开WebSocket连接,模拟服务器清空存储区,其中,断开WebSocket连接的过程在实施例四中进行详述。
实施例三
本发明实施例三提供一种浏览器访问智能密钥设备的实现方法中模拟服务器的工作流程,在本实施例中,以获取智能密钥设备序列号为例进行说明,当浏览器判断WebSocket连接建立成功时,浏览器创建与本次访问智能密钥设备相关的通讯标识,并根据第一WebSocket预设格式将创建的通讯标识组织得到第三数据,将得到的第三数据通过WebSocket连接发送给模拟服务器;如图4所示,模拟服务器执行以下操作:
步骤301:模拟服务器等待并接收浏览器发送的第三数据,并在接收到第三数据之后,执行步骤302;
优选的,在本实施例中,接收到的第三数据为:81 9c 9b b8 cc 5c e0 9a 98 33f0 dd a2 7e a1 9a 8d 18 a8 8c 8a 1f ac 8c fe 6f af 88 8e 18 df 8b ee 21。
步骤302:模拟服务器判断接收到的第三数据是否正确,是则执行步骤303,否则报错,结束;
具体地,模拟服务器判断接收到的第三数据是否符合第一WebSocket预设格式,如果是,则确认接收到的第三数据正确,否则,确认接收到的第三数据错误;
在本实施例中,步骤302之前,还包括:模拟服务器判断第三数据是否为分帧数据,如果是,则继续接收,并在接收完成之后,执行步骤302,否则执行步骤302;
具体地,模拟服务器解析接收到的数据帧,当接收到的数据帧以2进制表示时,其第一个字节为1并且第五个字节至第八个字节上的数据转换为16进制表示不为0x0时,确认第三数据未分帧;当接收到的数据帧以2进制表示时,其第一个字节为0并且第五个字节至第八个字节上的数据转换为16进制表示不为0x0时,确认接收到的数据帧为第三数据的起始帧;当接收到的数据帧以2进制表示时,其第一个字节为0并且第五个字节至第八个字节上的数据转换为16进制表示为0x0时,确认接收到的数据帧为第三数据的中间帧;当接收到的数据帧以2进制表示时,其第一个字节为1并且第五个字节至第八个字节上的数据转换为16进制表示为0x0时,确认接收到的数据帧为第三数据的结束帧,第三数据接收完成。
步骤303:模拟服务器解析接收到的第三数据,得到第三数据域;
具体地,模拟服务器解析接收到的第三数据得到第三数据域的长度,根据得到的第三数据域的长度,读取数据得到第三数据域;
在本实施例中,模拟服务器解析接收到的第三数据得到第三数据域的长度,具体为:当第三数据转换成2进制表示时,模拟服务器读取第三数据中第十个字节至第十六个字节上的数据,并将其转换得到无符号整数,判断得到的无符号整数的值的范围,具体地:
当得到的无符号整数的值不大于125时,确认无符号整数的值即为数据域的长度;
当得到的无符号整数的值为126时,继续读取后面二个字节上的数据并转换得到16位的无符号整数,得到的16位的无符号整数的值即为数据域的长度;
当得到的无符号整数的值为127时,继续读取后面八个字节上的数据并转化得到64位的无符号整数,得到的64位的无符号整数的值即为数据域的长度。
步骤304:模拟服务器对得到的第三数据域进行解密操作,得到第三编码数据;
具体地,模拟服务器根据预设加密算法对得到的第三数据域进行解密,得到第三编码数据;
优选的,预设加密算法为TLS1.2算法,得到的第三编码数据为:
var JsonSend={
Token:"AD34FC742340BDD3"
}。
步骤305:模拟服务器对得到的第三编码数据进行解码操作,得到通讯标识;
具体地,模拟服务器根据预设编码算法对得到的第三编码数据进行解码,得到通讯标识,优选地,在本实施例中,预设编码算法为Base64编码算法,得到的通讯标识为:AD34FC742340BDD3;
步骤306:模拟服务器根据得到的通讯标识,创建与其对应的上下文环境;
在本实施例中,模拟服务器根据得到的通讯标识,创建与其对应的上下文环境,具体为:模拟服务器分配存储区,并将得到的通讯标识与其建立唯一对应关系;
在本实施例中,模拟服务器根据接收到的通讯标识,创建与其对应的上下文环境之后,还包括:模拟服务器通过回调函数接口通知浏览器与通讯标识对应的上下文环境创建完成。
步骤307:模拟服务器等待并接收浏览器发送来的通讯标识和第一数据,根据接收到的通讯标识查找与其对应的上下文环境,判断是否查找成功,是则执行步骤308,否则报错,结束;
在本实施例中,当模拟服务器接收到浏览器发送的通讯标识和第一数据时,根据接收到的通讯标识查找与其对应的上下文环境之前,还包括:
模拟服务器判断第一数据是否为分帧数据,如果是,则继续接收,并在接收完成之后,根据接收到的通讯标识查找与其对应的上下文环境,否则根据接收到的通讯标识查找与其对应的上下文环境。
优选地,在本实施例中,接收到的第一数据具体为:81 ee 00 ac 5f 98 7b 8e 12f7 64 d9 33 fd 22 96 7d df 65 d8 0b f7 6b c9 31 d1 6e ca 30 b6 64 c0 33 ba 2c8e 12 fd 74 c4 30 fc 22 96 7d df 65 d8 0b f7 6b c9 31 cb 4e 8e 73 ba 44 cd 2bf9 54 d5 2f fd 22 96 7d cb 74 de 36 f6 67 8e 73 ba 50 9d 6e d6 61 c1 3a ba 3a8e 3a c8 61 df 2c d9 75 d8 30 fb 73 dc 6e a9 5f ed 1d db 68 c5 31 f9 2e c8 33f4 22 d1。
步骤308:模拟服务器判断接收到的第一数据是否正确,是则执行步骤309,否则报错;
具体地,模拟服务器判断接收到的第一数据是否符合第一WebSocket预设格式,如果是,则确认接收到的第一数据正确,否则,确认接收到的第一数据错误。
步骤309:模拟服务器解析接收到的第一数据,得到第一数据域;
具体地,模拟服务器解析接收到的第一数据得到第一数据域的长度,根据得到的第一数据域长度,读取数据得到第一数据域;
在本实施例中,模拟服务器解析接收到的第一数据得到第一数据域的长度的方法同步骤303中所述的得到第三数据域的长度的方法相同。
步骤310:模拟服务器对得到的第一数据域进行解密操作,得到编码数据;
具体地,模拟服务器根据预设算法对得到的第一数据域进行解密操作,得到编码数据;优选的,在本实施例中,预设算法为TLS1.2算法,得到的编码数据为:
步骤311:模拟服务器对得到的编码数据进行解码操作,得到通讯参数;
具体地,模拟服务器根据预设编码算法对得到的编码数据进行解码操作,得到通讯参数,优选的,预设编码算法为Base64编码算法;
在本实施例中,根据上述得到的编码数据得到的通讯参数具体为:通过GetTokenInfo.dll模块中的GetTokenSN方法,调用P11Name动态库,并通过P11Name动态库中约定的驱动接口来调用智能密钥设备获取智能密钥设备序列号,并且数据类型为字符串。
步骤312:模拟服务器根据得到的通讯参数在查找到的上下文环境中查找智能密钥设备的驱动接口,并判断是否查找成功,是则执行步骤313,否则报错,结束;
在本实施例中,智能密钥设备的每一个功能对应一个驱动接口;
具体地,模拟服务器根据通讯参数中指定的操作名称和/或模块标识和/或接口标识查找与浏览器预先约定的智能密钥设备的驱动函数接口;
例如,在本实施例中,模拟服务器根据解码得到的上述通讯参数在查找到的上下文环境中通过GetTokenInfo.dll模块中的GetTokenSN方法调用P11Name动态库,查找P11Name动态库中约定的获取序列号驱动函数接口,并判断是否查找到所述获取序列号驱动函数接口,是则执行步骤313,否则报错,结束。
进一步地,在本实例中,通讯参数还可以为本次访问智能密钥设备进行操作的操作名称,模拟服务器根据通讯参数中指定的操作名称,查找到相应的预先设定的驱动函数接口;例如,模拟服务器根据通讯参数中指定的操作名称获取智能密钥设备序列号,查找到预先设定的获取序列号驱动函数接口。
步骤313:模拟服务器调用查找到的智能密钥设备的驱动接口,驱动接口发送相应的指令给智能密钥设备并接收智能密钥设备返回的应答数据;
具体地,模拟服务器调用查找到的智能密钥设备的驱动接口,驱动接口发送预先设定的指令给所述智能密钥设备;
例如,在本实施例中,模拟服务器通过调用P11Name动态库中约定的获取序列号驱动函数接口,所述获取序列号驱动函数接口发送获取序列号指令给智能密钥设备;
在本实施例中,步骤313还可以为:模拟服务器调用查找到的智能密钥设备的驱动接口,并将通讯参数中指定的操作名称传入驱动接口,驱动接口根据操作名称组织相应的操作指令并发送给所述智能密钥设备。
需要说明地,智能密钥设备接收到指令之后,解析并执行相应操作得到操作结果,并根据得到的操作结果组织得到应答数据,通过回调驱动函数接口,将生成的应答数据返回给驱动接口;
进一步地,智能密钥设备接收到指令之后,还可以为:解析并执行相应操作得到操作结果,并将得到的操作结果返回给驱动接口。
步骤314:模拟服务器解析驱动接口接收到的应答数据得到操作结果,并对得到的操作结果进行编码,得到编码操作结果;
具体地,模拟服务器根据预设编码算法将得到的操作结果进行编码操作,得到编码操作结果;
优选地,预设编码算法为Base64编码算法,模拟服务器解析接收到应答数据,得到智能密钥设备序列号210100000001,得到的编码操作结果为:
进一步地,当步骤313中驱动接口接收智能密钥设备返回的应答数据,具体为:驱动接口接收智能密钥设备返回的操作结果时,
相应地,步骤314具体为:模拟服务器将驱动接口接收到的操作结果进行编码,得到编码操作结果。
步骤315:模拟服务器根据第一WebSocket预设格式将得到的编码操作结果组织得到第二数据,并将得到的第二数据通过WebSocket连接发送给浏览器;
优选地,在本实施例中,得到的第三数据为81 e8 fa c2 34 c8 81 e0 79 a7 9eb7 58 ad d8 f8 16 8f 9f b6 60 a7 91 a7 5a 81 94 a4 5b e6 9e ae 58 ea d6 e0 79ad 8e aa 5b ac d8 f8 16 8f 9f b6 60 a7 91 a7 5a 9b b4 e0 18 ea a8 a7 47 bd 96b6 16 f2 cb ee 16 8c 9b b6 55 9c 83 b2 51 ea c0 e0 67 bc 88 ab 5a af d8 ee 168c 9b b6 55 ea c0 e0 06 f9 ca f3 04 f8 ca f2 04 f8 ca f3 16 b5。
在本实施例中,步骤316之后,还包括:当浏览器操作页面未退出且继续访问智能密钥设备时,返回步骤307;当浏览器操作页面退出时,断开WebSocket连接,模拟服务器清空存储区,其中,断开WebSocket连接的过程在实施例四中进行详述。
实施例四
本发明实施例四提供一种建立WebSocket连接的方法,如图5所示,包括:
步骤401:浏览器进入操作页面,并生成预设长度的随机数;
优选地,在本实施例中,浏览器生成16位的随机数。
步骤402:浏览器根据预设算法对生成的随机数进行编码,得到第一参数;
优选的,在本实施例中,预设算法为Base64编码算法;
步骤403:浏览器根据得到第一参数生成第二WebSocket预设格式的连接请求,并发送给模拟服务器;
优选地,在本实施例中,预先设定模拟服务器的IP地址为127.0.0.1,端口号为1237;
在本实施例中,第二WebSocket预设格式具体为:将Http协议头升级为WebSocket协议头形式的数据;
例如,在本实施例中,生成的连接请求为:
GET/chat HTTP/1.1
Host:127.0.0.1:1237
Upgrade:Websocket
Connection:Upgrade
Sec-WebSocket-Key:dGhlIHNhbXBsZSBub25jZQ==
Sec-WebSocket-Version:13
其中,
Host:127.0.0.1:1237,表示模拟服务器的IP地址及端口号;
Upgrade:Websocket,表示连接请求为WebSocket连接请求;
Sec-WebSocket-Key:dGhlIHNhbXBsZSBub25jZQ==,表示第一参数为dGhlIHNhbXBsZSBub25jZQ==。
步骤404:模拟服务器启动监听,当监听到来自浏览器的连接请求时,判断连接请求是否符合第二WebSocket预设格式,是则执行步骤405,否则报错,结束;
步骤405:模拟服务器将接收到的连接请求中的第一参数与全局唯一变量进行拼接得到第一拼接字符串;
在本实施例中,全局唯一变量预先设定并保存在模拟服务器和浏览器中,例如,预先设定的全局唯一变量为258EAFA5-E914-47DA-95CA-C5AB0DC85B11,得到的第一拼接字符串为dGhlIHNhbXBsZSBub25jZQ==258EAFA5-E914-47DA-95CA-C5AB0DC85B11。
步骤406:模拟服务器根据预设哈希算法对得到的第一拼接字符串进行哈希运算得到第一哈希值;
优选的,在本实施例中,预设哈希算法为SHA-1;
步骤407:模拟服务器根据预设编码算法对得到的第一哈希值进行编码,得到第二参数,根据得到的第二参数生成第二WebSocket预设格式的连接请求应答数据;
优选的,在本实施例中,预设编码算法为Base64编码算法,生成的连接请求应答数据为:
HTTP/1.1 101Switching Protocols
Upgrade:websocket
Connection:Upgrade
Sec-WebSocket-Accept:s3pPLMBiTxaQ9kYGzzhZRbK+xOo=
其中,Sec-WebSocket-Accept:s3pPLMBiTxaQ9kYGzzhZRbK+xOo=表示第二参数为s3pPLMBiTxaQ9kYGzzhZRbK+xOo=。
步骤408:模拟服务器将生成的连接请求应答数据返回给浏览器;
步骤409:浏览器等待接收模拟服务器返回连接请求应答数据,当接收到模拟服务器返回的连接请求应答时,解析得到第二参数;
步骤410:浏览器将第一参数与全局唯一变量进行拼接得到第二拼接字符串。
步骤411:浏览器根据预设哈希算法对得到第二拼接字符串进行哈希运算,得到第二哈希值;
优选的,在本实施例中,预设哈希算法为SHA-1。
步骤412:浏览器根据预设编码算法对得到的第二哈希值进行编码,得到第三参数;
优选的,在本实施例中,预设编码算法为Base64编码算法。
步骤413:浏览器判断第三参数与第二参数是否相同,是则连接成功,结束,否则连接失败,结束。
具体地,在本实施例中,当第三参数与接收到的连接请求应答数据中的第二参数相同时,连接成功,即WebSocket连接建立成功,当第三参数与接收到的连接请求应答数据中的第二参数不同时,连接失败,即WebSocket连接建立失败。
进一步地,在本实施例中,断开WebSocket连接,具体地有如下两种方式:
第一种方式为浏览器主动断开WebSocket连接,包括:
步骤A1:浏览器向模拟服务器发送预设断开连接状态码;
优选的,在本实施例中,预设断开连接状态码为0x08。
步骤A2:模拟服务器接收到来自浏览器的断开连接状态码后,返回断开连接响应给浏览器,并断开连接;
优选的,在本实施例中,模拟服务器返回0给浏览器,并断开连接。
步骤A3:浏览器等待并接收模拟服务器返回的断开连接响应,当接收到模拟服务器返回的断开连接响应时,断开连接成功。
第二种方式为模拟服务器主动断开WebSocket连接,包括:
步骤B1:模拟服务器向浏览器发送预设断开连接状态码;
优选的,在本实施例中,预设断开连接状态码为0x08。
步骤B2:浏览器接收到来自模拟服务器的断开连接状态码后,返回断开连接响应给模拟服务器,并断开连接;
优选的,在本实施例中,浏览器返回0给模拟服务器,并断开连接。
步骤B3:模拟服务器等待并接收浏览器返回的断开连接响应,当接收到浏览器返回的断开连接响应时,断开连接成功。
实施例五
本发明实施例五提供一种浏览器访问智能密钥设备的装置,如图6所示,包括:
第一接收模块501,用于接收浏览器发送来的第一数据;
第一判断模块502,用于判断第一接收模块501接收到的第一数据是否符合第一WebSocket预设格式;
第一解析模块503,用于当第一判断模块502判断出第一接收模块501接收到的第一数据符合第一WebSocket预设格式时,解析第一数据得到通讯参数;
报错模块504,用于当第一判断模块502判断出第一接收模块501接收到的第一数据不符合第一WebSocket预设格式时,报错,结束;
查找调用模块505,用于根据第一解析模块503得到的通讯参数查找并调用智能密钥设备的驱动接口;
第一发送模块506,用于在查找调用模块505调用智能密钥设备的驱动接口之后,发送相应指令给智能密钥设备;
第二接收模块507,用于接收智能密钥设备返回的操作结果;
组织模块508,用于将第二接收模块507接收到的操作结果组织得到符合第一WebSocket预设格式的第二数据;
第二发送模块509,用于将组织模块508得到的第二数据返回给浏览器。
本实施例中的装置,还包括:
第一创建模块,用于在第一接收模块501接收浏览器发送来的第一数据之前,同浏览器建立WebSocket连接。
在本实施例中,第一创建模块,具体包括:
接收单元,用于接收浏览器发送来的连接请求;
判断单元,用于判断接收单元接收到的连接请求是否符合第二WebSocket预设格式;
在本实施例中,判断单元,具体用于:判断连接请求是否为将Http协议头升级为WebSocket协议头形式的连接请求,是则确认连接请求符合第二WebSocket预设格式,否则确认连接请求不符合第二WebSocket预设格式。
第一生成单元,用于当判断单元判断出接收单元接收到的连接请求符合第二WebSocket预设格式时,根据连接请求中的第一参数生成第二参数;
在本实施例中,第一生成单元,具体用于:将第一参数与预设全局唯一变量进行拼接得到拼接字符串,根据预设哈希算法对所述拼接字符串进行哈希运算得到哈希值,根据预设编码算法对哈希值进行编码得到第二参数。
第二生成单元,用于根据第一生成单元生成的第二参数生成符合第二WebSocket预设格式的连接请求应答数据;
报错单元,用于当判断单元判断出接收单元接收到的连接请求不符合第二WebSocket预设格式时,报错,结束;
在本实施例中,第二生成单元,具体用于:根据第二参数生成将Http协议头升级为WebSocket协议头形式的连接请求应答数据。
发送单元,用于将第二生成单元生成的第二WebSocket预设格式的连接请求应答数据发送给浏览器,WebSocket连接建立成功。
进一步地,在本实施例中,第一接收模块501,具体用于:接收浏览器通过WebSocket连接发送来的第一数据;
第二发送模块509,具体用于:将第二接收模块507接收到的操作结果通过WebSocket连接返回给浏览器。
在本实施例中,第一判断模块502,具体用于:在第一接收模块501接收浏览器发送来的第一数据之后,判断第一数据是否符合WebSocket数据帧格式,是则确认第一数据符合第一WebSocket预设格式,否则确认第一数据不符合第一WebSocket预设格式;
组织模块508,具体用于:将第二接收模块507接收到的操作结果组织得到WebSocket数据帧格式的第二数据。
在本实施例中,第一解析模块503,具体用于:解析第一数据得到数据域,根据预设加密算法对得到的数据域进行解密得到编码数据,根据预设编码算法对编码数据进行解码得到通讯参数;
组织模块508,具体用于:根据预设编码算法对操作结果进行编码得到编码操作结果,根据预设加密算法对得到的编码操作结果进行加密得到符合第一WebSocket预设格式的第二数据。
查找调用模块505,具体用于:根据通讯参数中指定的操作名称和/或模块标识和/或接口标识查找与浏览器预先约定的智能密钥设备的驱动函数接口。
在本实施例中,查找调用模块505,还可以用于:根据通讯参数中指定的操作名称,查找到相应的预先设定的智能密钥设备的驱动函数接口。
更进一步地,在本实施例中,查找调用模块505,还可以用于:根据通讯参数查找并调用智能密钥设备的驱动接口,并将通讯参数中指定的操作名称传入驱动接口;
第一发送模块506,具体用于:根据查找调用模块505传入的操作名称组织相应的操作指令,将操作指令发送给智能密钥设备;
或者,
查找调用模块505,具体用于:根据通讯参数查找并调用智能密钥设备的驱动接口;
第一发送模块506,具体用于:发送预先设定的指令给智能密钥设备。
本实施例中的装置,还包括:
第三接收模块,用于在第一接收模块501接收浏览器发送来的第一数据之前,接收浏览器发送来的第三数据;
第二判断模块,用于判断第三接收模块接收到的第三数据是否符合第一WebSocket预设格式;
第二解析模块,用于当第二判断模块判断出第三接收模块接收到的第三数据符合第一WebSocket预设格式时,解析第三数据得到通讯标识;
在本实施例中,报错模块504,还用于当第二判断模块判断出第三接收模块接收到的第三数据不符合第一WebSocket预设格式时,报错,结束。
本实施例中的装置,还包括:
第二创建模块,用于在第二解析模块解析第三数据得到通讯标识之后,创建与通讯标识对应的环境;
调用模块,用于在第二创建模块创建与通讯标识对应的环境之后,回调预设函数接口通知浏览器与通讯标识对应的环境创建完成;
第一接收模块501,具体用于:接收浏览器发送来的第一数据和通讯标识。
本实施例中的装置,还包括:
第三判断模块,用于在第一接收模块接收浏览器发送来的第一数据和通讯标识之后,根据接收到的通讯标识查找与其对应的环境,判断是否查找成功;
第一判断模块502,具体用于当第三判断模块判断出查找成功时,判断第一数据是否符合第一WebSocket预设格式;
报错模块504,还用于当第三判断模块判断出查找不成功时,报错,结束;
查找调用模块505,具体用于根据第一解析模块503得到的通讯参数在与通讯标识对应的环境中查找并调用智能密钥设备的驱动接口。
在本实施例中,第二创建模块,具体用于:分配存储区,将通讯标识与环境建立一一对应关系。
在本实施例中,第二接收模块507,还可以用于:接收智能密钥设备返回的应答数据;
相应地,组织模块508,还可以用于:解析第二接收模块507接收到的应答数据得到操作结果,将得到的操作结果组织得到符合第一WebSocket预设格式的第二数据。
本实施例中的装置,还包括:断开模块;
第一接收模块501,还用于在第二发送模块507将第二接收模块507接收到的操作结果返回给浏览器之后,当浏览器操作页面未退出且继续访问所述智能密钥设备时,继续接收所述浏览器发送来的第一数据;
断开模块,用于在第二发送模块509将第二接收模块507接收到的操作结果返回给浏览器之后,当浏览器操作页面退出时,断开WebSocket连接。
在本实例中,断开模块,具体用于:
接收到来自浏览器的预设断开连接状态码之后,返回断开连接响应给浏览器,并断开连接,当浏览器接收到断开连接响应时,WebSocket连接断开成功;
或者,
向浏览器发送预设断开连接状态码,并断开连接,当模拟服务器接收到浏览器返回的断开连接响应时,WebSocket连接断开成功。
本发明的技术方案,摒弃了控件作为媒介使用智能密钥设备的传统方法,能够有效的兼容如IE10、firefox 11、chrome41、safari 6及其以上版本的浏览器,进行基于浏览器来访问智能密钥设备进行身份认证、修改信息等一系列操作。
以上所述,仅为本发明较佳的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应以权利要求的保护范围为准。

Claims (34)

1.一种浏览器访问智能密钥设备的方法,其特征在于,包括:
步骤S1:模拟服务器接收浏览器发送来的第一数据,判断所述第一数据是否符合第一WebSocket预设格式,是则解析所述第一数据得到通讯参数,执行步骤S2,否则报错,结束;
步骤S2:所述模拟服务器根据所述通讯参数查找并调用智能密钥设备的驱动接口,所述驱动接口发送相应指令给所述智能密钥设备并接收所述智能密钥设备返回的操作结果;
步骤S3:所述模拟服务器将所述驱动接口接收到的操作结果组织得到符合所述第一WebSocket预设格式的第二数据,将所述第二数据返回给所述浏览器;
所述步骤S1之前,还包括:
步骤a:模拟服务器同浏览器建立WebSocket连接。
2.根据权利要求1所述的方法,其特征在于,所述步骤a,具体为:
步骤a1:所述模拟服务器接收所述浏览器发送来的连接请求,判断所述连接请求是否符合第二WebSocket预设格式,是则根据所述连接请求中的第一参数生成第二参数,根据所述第二参数生成符合所述第二WebSocket预设格式的连接请求应答数据,否则报错,结束;
步骤a2:所述模拟服务器将所述第二WebSocket预设格式的连接请求应答数据发送给所述浏览器,所述WebSocket连接建立成功。
3.根据权利要求2所述的方法,其特征在于,
所述根据所述连接请求中的第一参数生成第二参数,具体为:将所述第一参数与预设全局唯一变量进行拼接得到拼接字符串,根据预设哈希算法对所述拼接字符串进行哈希运算得到哈希值,根据预设编码算法对所述哈希值进行编码得到第二参数。
4.根据权利要求2所述的方法,其特征在于,
所述判断所述连接请求是否符合第二WebSocket预设格式,具体为:所述模拟服务器判断所述连接请求是否为将Http协议头升级为WebSocket协议头形式的连接请求,是则确认所述连接请求符合第二WebSocket预设格式,否则确认所述连接请求不符合第二WebSocket预设格式;
所述根据所述第二参数生成符合所述第二WebSocket预设格式的连接请求应答数据,具体为:所述模拟服务器根据所述第二参数生成将Http协议头升级为WebSocket协议头形式的连接请求应答数据。
5.根据权利要求1所述的方法,其特征在于,
所述步骤S1中,模拟服务器接收浏览器发送来的第一数据,具体为:所述模拟服务器接收所述浏览器通过所述WebSocket连接发送来的第一数据;
所述步骤S3中,将所述第二数据返回给所述浏览器,具体为:所述模拟服务器将所述第二数据通过所述WebSocket连接返回给所述浏览器。
6.根据权利要求1所述的方法,其特征在于,
所述判断所述第一数据是否符合第一WebSocket预设格式,具体为:所述模拟服务器判断所述第一数据是否符合WebSocket数据帧格式,是则确认所述第一数据符合第一WebSocket预设格式,否则确认所述第一数据不符合第一WebSocket预设格式;
所述步骤S3中,将所述操作结果组织得到符合所述第一WebSocket预设格式的第二数据,具体为:所述模拟服务器将所述操作结果组织得到所述WebSocket数据帧格式的第二数据。
7.根据权利要求1所述的方法,其特征在于,
所述步骤S1中,所述解析所述第一数据得到通讯参数,具体为:所述模拟服务器解析所述第一数据得到数据域,根据预设加密算法对所述数据域进行解密得到编码数据,根据预设编码算法对所述编码数据进行解码得到所述通讯参数;
所述步骤S3中,将所述操作结果组织得到符合所述第一WebSocket预设格式的第二数据,具体为:所述模拟服务器根据所述预设编码算法对所述操作结果进行编码得到编码操作结果,根据所述预设加密算法对所述编码操作结果进行加密得到符合所述第一WebSocket预设格式的第二数据。
8.根据权利要求1所述的方法,其特征在于,所述步骤S2中,所述模拟服务器根据所述通讯参数查找智能密钥设备的驱动接口,具体为:所述模拟服务器根据所述通讯参数中指定的操作名称和/或模块标识和/或接口标识查找与所述浏览器预先约定的智能密钥设备的驱动函数接口。
9.根据权利要求1所述的方法,其特征在于,所述步骤S2中,所述模拟服务器根据所述通讯参数查找智能密钥设备的驱动接口,具体为:所述模拟服务器根据所述通讯参数中指定的操作名称,查找相应的预先设定的智能密钥设备的驱动函数接口。
10.根据权利要求8或权利要求9所述的方法,其特征在于,所述步骤S2中,所述模拟服务器根据所述通讯参数查找并调用智能密钥设备的驱动接口,所述驱动接口发送相应指令给所述智能密钥设备,具体为:
所述模拟服务器根据所述通讯参数查找并调用智能密钥设备的驱动接口,并将所述通讯参数中指定的操作名称传入所述驱动接口,所述驱动接口根据所述操作名称组织相应的操作指令,将所述操作指令发送给所述智能密钥设备;
或者,
所述模拟服务器根据所述通讯参数查找并调用智能密钥设备的驱动接口,所述驱动接口发送预先设定的指令给所述智能密钥设备。
11.根据权利要求1所述的方法,其特征在于,所述步骤S1之前,还包括:
步骤N:模拟服务器接收浏览器发送来的第三数据,判断所述第三数据是否符合第一WebSocket预设格式,是则解析所述第三数据得到通讯标识,否则报错,结束。
12.根据权利要求11所述的方法,其特征在于,
所述步骤N中,所述解析所述第三数据得到通讯标识之后,还包括:所述模拟服务器创建与所述通讯标识对应的环境,并通过回调预设函数接口通知所述浏览器与所述通讯标识对应的环境创建完成;
所述步骤S1,具体为:模拟服务器接收浏览器发送来的第一数据和所述通讯标识,判断所述第一数据是否符合第一WebSocket预设格式,是则解析所述第一数据得到通讯参数,执行步骤S2,否则报错,结束。
13.根据权利要求12所述的方法,其特征在于,
所述步骤S1中,所述模拟服务器接收浏览器发送来的第一数据和所述通讯标识之后,还包括:所述模拟服务器根据接收到的通讯标识查找与其对应的环境,判断是否查找成功,是则判断所述第一数据是否符合第一WebSocket预设格式,否则报错,结束;
所述步骤S2中,所述模拟服务器根据所述通讯参数查找并调用智能密钥设备的驱动接口,具体为:所述模拟服务器根据所述通讯参数在与所述通讯标识对应的环境中查找并调用智能密钥设备的驱动接口。
14.根据权利要求12所述的方法,其特征在于,所述模拟服务器创建与所述通讯标识对应的环境,具体为:所述模拟服务器分配存储区,将所述通讯标识与所述环境建立一一对应关系。
15.根据权利要求1所述的方法,其特征在于,
所述步骤S2中,所述驱动接口发送相应指令给所述智能密钥设备并接收所述智能密钥设备返回的操作结果,具体为:所述驱动接口发送相应指令给所述智能密钥设备并接收所述智能密钥设备返回的应答数据;
所述步骤S3中,所述模拟服务器将所述驱动接口接收到的操作结果组织得到符合所述第一WebSocket预设格式的第二数据,具体为:所述模拟服务器解析所述驱动接口接收到的应答数据得到操作结果,将所述操作结果组织得到符合所述第一WebSocket预设格式的第二数据。
16.根据权利要求1所述的方法,其特征在于,所述步骤S3之后,还包括:
当所述浏览器操作页面未退出且继续访问所述智能密钥设备时,返回步骤S1;
当所述浏览器操作页面退出时,断开所述WebSocket连接。
17.根据权利要求16所述的方法,其特征在于,所述断开所述WebSocket通连接,具体为:
所述模拟服务器接收到来自所述浏览器的预设断开连接状态码之后,返回断开连接响应给所述浏览器,并断开连接,当所述浏览器接收到所述断开连接响应时,WebSocket连接断开成功;
或者,
所述模拟服务器向所述浏览器发送所述预设断开连接状态码,并断开连接,当所述模拟服务器接收到所述浏览器返回的所述断开连接响应时,WebSocket连接断开成功。
18.一种浏览器访问智能密钥设备的装置,其特征在于,包括:
第一接收模块,用于接收浏览器发送来的第一数据;
第一判断模块,用于判断所述第一接收模块接收到的第一数据是否符合第一WebSocket预设格式;
第一解析模块,用于当所述第一判断模块判断出所述第一接收模块接收到的第一数据符合第一WebSocket预设格式时,解析所述第一数据得到通讯参数;
报错模块,用于当所述第一判断模块判断出所述第一接收模块接收到的第一数据不符合第一WebSocket预设格式时,报错,结束;
查找调用模块,用于根据所述第一解析模块得到通讯参数查找并调用智能密钥设备的驱动接口;
第一发送模块,用于在所述查找调用模块调用智能密钥设备的驱动接口之后,发送相应指令给所述智能密钥设备;
第二接收模块,用于接收所述智能密钥设备返回的操作结果;
组织模块,用于将所述第二接收模块接收到的操作结果组织得到符合所述第一WebSocket预设格式的第二数据;
第二发送模块,用于将所述组织模块得到的第二数据返回给所述浏览器;
还包括:第一创建模块,用于在所述第一接收模块接收浏览器发送来的第一数据之前,同浏览器建立WebSocket连接。
19.根据权利要求18所述的装置,其特征在于,所述第一创建模块,具体包括:
接收单元,用于接收所述浏览器发送来的连接请求;
判断单元,用于判断所述接收单元接收到的连接请求是否符合第二WebSocket预设格式;
第一生成单元,用于当所述判断单元判断出所述接收单元接收到的连接请求符合第二WebSocket预设格式时,根据所述连接请求中的第一参数生成第二参数;
第二生成单元,用于根据所述第一生成单元生成的第二参数生成符合所述第二WebSocket预设格式的连接请求应答数据;
报错单元,用于当所述判断单元判断出所述接收单元接收到的连接请求不符合第二WebSocket预设格式时,报错,结束;
发送单元,用于将所述第二生成单元生成的所述第二WebSocket预设格式的连接请求应答数据发送给所述浏览器,所述WebSocket连接建立成功。
20.根据权利要求19所述的装置,其特征在于,所述第一生成单元,具体用于:将所述第一参数与预设全局唯一变量进行拼接得到拼接字符串,根据预设哈希算法对所述拼接字符串进行哈希运算得到哈希值,根据预设编码算法对所述哈希值进行编码得到第二参数。
21.根据权利要求19所述的装置,其特征在于,所述判断单元,具体用于:判断所述连接请求是否为将Http协议头升级为WebSocket协议头形式的连接请求,是则确认所述连接请求符合第二WebSocket预设格式,否则确认所述连接请求不符合第二WebSocket预设格式;
所述第二生成单元,具体用于:根据所述第二参数生成将Http协议头升级为WebSocket协议头形式的连接请求应答数据。
22.根据权利要求18所述的装置,其特征在于,
所述第一接收模块,具体用于:接收所述浏览器通过所述WebSocket连接发送来的第一数据;
所述第二发送模块,具体用于将所述第二接收模块接收到的所述操作结果通过所述WebSocket连接返回给所述浏览器。
23.根据权利要求18所述的装置,其特征在于,
所述第一判断模块,具体用于:在所述第一接收模块接收浏览器发送来的第一数据之后,判断所述第一数据是否符合WebSocket数据帧格式,是则确认所述第一数据符合第一WebSocket预设格式,否则确认所述第一数据不符合第一WebSocket预设格式;
所述组织模块,具体用于:将所述第二接收模块接收到的操作结果组织得到所述WebSocket数据帧格式的第二数据。
24.根据权利要求18所述的装置,其特征在于,
所述第一解析模块,具体用于:解析所述第一数据得到数据域,根据预设加密算法对所述数据域进行解密得到编码数据,根据预设编码算法对所述编码数据进行解码得到所述通讯参数;
所述组织模块,具体用于:根据所述预设编码算法对所述操作结果进行编码得到编码操作结果,根据所述预设加密算法对所述编码操作结果进行加密得到符合所述第一WebSocket预设格式的第二数据。
25.根据权利要求18所述的装置,其特征在于,所述查找调用模块,具体用于:根据所述通讯参数中指定的操作名称和/或模块标识和/或接口标识查找与所述浏览器预先约定的智能密钥设备的驱动函数接口。
26.根据权利要求18所述的装置,其特征在于,所述查找调用模块,具体用于:根据所述通讯参数中指定的操作名称,查找相应的预先设定的智能密钥设备的驱动函数接口。
27.根据权利要求25或权利要求26所述的装置,其特征在于,
所述查找调用模块,具体用于:根据所述通讯参数查找并调用智能密钥设备的驱动接口,并将所述通讯参数中指定的操作名称传入所述驱动接口;
所述第一发送模块,具体用于:根据所述操作名称组织相应的操作指令,将所述操作指令发送给所述智能密钥设备;
或者,
所述查找调用模块,具体用于:根据所述通讯参数查找并调用智能密钥设备的驱动接口;
所述第一发送模块,具体用于:发送预先设定的指令给所述智能密钥设备。
28.根据权利要求18所述的装置,其特征在于,还包括:
第三接收模块,用于在所述第一接收模块接收浏览器发送来的第一数据之前,接收浏览器发送来的第三数据;
第二判断模块,用于判断所述第三接收模块接收到的第三数据是否符合第一WebSocket预设格式;
第二解析模块,用于当所述第二判断模块判断出所述第三接收模块接收到的第三数据符合第一WebSocket预设格式时,解析所述第三数据得到通讯标识;
所述报错模块,还用于当所述第二判断模块判断出所述第三接收模块接收到的第三数据不符合第一WebSocket预设格式时,报错,结束。
29.根据权利要求28所述的装置,其特征在于,还包括:
第二创建模块,用于在所述第二解析模块解析所述第三数据得到通讯标识之后,创建与所述通讯标识对应的环境;
调用模块,用于在所述第二创建模块创建与所述通讯标识对应的环境之后,回调预设函数接口通知所述浏览器与所述通讯标识对应的环境创建完成;
所述第一接收模块,具体用于:接收浏览器发送来的第一数据和所述通讯标识。
30.根据权利要求29所述的装置,其特征在于,还包括:
第三判断模块,用于在所述第一接收模块接收浏览器发送来的第一数据和所述通讯标识之后,根据接收到的通讯标识查找与其对应的环境,判断是否查找成功;
所述第一判断模块,具体用于当所述第三判断模块判断出查找成功时,判断所述第一数据是否符合第一WebSocket预设格式;
所述报错模块,还用于当所述第三判断模块判断出查找不成功时,报错,结束;
所述查找调用模块,具体用于根据所述第一解析模块得到的通讯参数在与所述通讯标识对应的环境中查找并调用智能密钥设备的驱动接口。
31.根据权利要求29所述的装置,其特征在于,所述第二创建模块,具体用于:分配存储区,将所述通讯标识与所述环境建立一一对应关系。
32.根据权利要求18所述的装置,其特征在于,
所述第二接收模块,具体用于:接收所述智能密钥设备返回的应答数据;
所述组织模块,具体用于:解析所述第二接收模块接收到的应答数据得到操作结果,将所述操作结果组织得到符合所述第一WebSocket预设格式的第二数据。
33.根据权利要求18所述的装置,其特征在于,还包括:断开模块;
所述第一接收模块,还用于在所述第二发送模块将所述第二接收模块接收到的操作结果返回给所述浏览器之后,当所述浏览器操作页面未退出且继续访问所述智能密钥设备时,继续接收所述浏览器发送来的第一数据;
所述断开模块,用于在所述发送模块将所述第二接收模块接收到的操作结果返回给所述浏览器之后,当所述浏览器操作页面退出时,断开所述WebSocket连接。
34.根据权利要求33所述的装置,其特征在于,所述断开模块,具体用于:
接收到来自所述浏览器的预设断开连接状态码之后,返回断开连接响应给所述浏览器,并断开连接,当所述浏览器接收到所述断开连接响应时,WebSocket连接断开成功;
或者,
向所述浏览器发送所述预设断开连接状态码,并断开连接,当模拟服务器接收到所述浏览器返回的所述断开连接响应时,WebSocket连接断开成功。
CN201610353656.0A 2016-05-25 2016-05-25 一种浏览器访问智能密钥设备的方法及装置 Active CN106060128B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201610353656.0A CN106060128B (zh) 2016-05-25 2016-05-25 一种浏览器访问智能密钥设备的方法及装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201610353656.0A CN106060128B (zh) 2016-05-25 2016-05-25 一种浏览器访问智能密钥设备的方法及装置

Publications (2)

Publication Number Publication Date
CN106060128A CN106060128A (zh) 2016-10-26
CN106060128B true CN106060128B (zh) 2019-05-10

Family

ID=57175192

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201610353656.0A Active CN106060128B (zh) 2016-05-25 2016-05-25 一种浏览器访问智能密钥设备的方法及装置

Country Status (1)

Country Link
CN (1) CN106060128B (zh)

Families Citing this family (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN107786543A (zh) * 2017-09-28 2018-03-09 北京深思数盾科技股份有限公司 智能密钥设备的本地服务组件与联网应用程序交互的方法
CN109726573B (zh) * 2018-12-29 2021-01-15 飞天诚信科技股份有限公司 一种通过脚本装置实现签名的方法及脚本装置
CN112187809B (zh) * 2020-09-30 2022-02-25 郑州信大捷安信息技术股份有限公司 一种浏览器使用远端设备密码服务的方法及系统
CN112615830B (zh) * 2020-12-08 2023-04-07 北京北信源软件股份有限公司 一种数字认证设备接口系统
CN112613025A (zh) * 2020-12-30 2021-04-06 宁波三星医疗电气股份有限公司 一种计算机上usb设备和浏览器的通信方法
CN114553976A (zh) * 2021-12-16 2022-05-27 航天信息股份有限公司 一种信息采集结果获取方法、装置、设备及介质

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102884517A (zh) * 2009-05-28 2013-01-16 卡金公司 提供对于使用非http通信协议的网络应用的无状态安全管理的系统和方法
CN103458034A (zh) * 2013-09-04 2013-12-18 国云科技股份有限公司 一种通过web页面访问spice协议远程桌面的方法
CN103685269A (zh) * 2013-12-12 2014-03-26 Tcl集团股份有限公司 一种web浏览器与服务器进行双向通讯的方法和系统
CN105553976A (zh) * 2015-12-14 2016-05-04 北京握奇智能科技有限公司 一种数据处理方法、装置及系统

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20150058203A1 (en) * 2013-08-22 2015-02-26 Ebay Inc Systems and methods for payment authorization using full-duplex communication from browser

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102884517A (zh) * 2009-05-28 2013-01-16 卡金公司 提供对于使用非http通信协议的网络应用的无状态安全管理的系统和方法
CN103458034A (zh) * 2013-09-04 2013-12-18 国云科技股份有限公司 一种通过web页面访问spice协议远程桌面的方法
CN103685269A (zh) * 2013-12-12 2014-03-26 Tcl集团股份有限公司 一种web浏览器与服务器进行双向通讯的方法和系统
CN105553976A (zh) * 2015-12-14 2016-05-04 北京握奇智能科技有限公司 一种数据处理方法、装置及系统

Also Published As

Publication number Publication date
CN106060128A (zh) 2016-10-26

Similar Documents

Publication Publication Date Title
CN106060128B (zh) 一种浏览器访问智能密钥设备的方法及装置
CN105050083B (zh) 一种智能设备的网络配置方法及系统
CN106254147B (zh) 一种用于Wi-Fi网络的配置方法、物联网终端和控制端
CN111132135B (zh) 一种智能家居终端无线配网方法及系统
CN104363213A (zh) 一种网络家电的注册登录控制方法
CN103236941A (zh) 一种链路发现方法和装置
CN106535288A (zh) 一种发送和获取wifi联网信息的方法和对应装置
CN103929748A (zh) 一种物联网无线终端及其配置方法和无线网络接入点
CN112399394A (zh) 一种基于蓝牙通讯的智能电能表系统及其通信方法
CN106331087A (zh) 用于通信的方法和系统
CN102480399A (zh) 基于IPoE的多业务认证方法及系统
CN106571907A (zh) 一种上位机与u盘间安全传输数据的方法及系统
CN102164312A (zh) 一种交互式网络电视中机顶盒配置方法和系统
CN113194476B (zh) 一种设备激活及鉴权绑定方法
CN101656730B (zh) 通信装置、通信系统、通信方法
CN105246129B (zh) 一种智能终端的组网方法及装置
CN104797004B (zh) 主从设备间实现自动组网的方法
CN108449758A (zh) 一种智能硬件的绑定方法及系统
CN101540699A (zh) 一种实现远程维修网络设备的方法和装置
CN111787514B (zh) 设备控制数据的获取方法及装置、存储介质、电子装置
CN101388796B (zh) 信息发送处理方法、通信设备与通信系统
CN113132997A (zh) 一种智能家居设备的通信方法、设备及系统
CN104994078B (zh) 局域网内的信息发送、获取方法及装置、信息处理系统
CN109041170A (zh) 一种智能设备的入网方法及其相关装置
CN114679287B (zh) 数据处理方法、系统、电子设备及存储介质

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