CN111930184B - 一种外接设备模拟键盘的实现方法、装置及系统 - Google Patents
一种外接设备模拟键盘的实现方法、装置及系统 Download PDFInfo
- Publication number
- CN111930184B CN111930184B CN202011087524.0A CN202011087524A CN111930184B CN 111930184 B CN111930184 B CN 111930184B CN 202011087524 A CN202011087524 A CN 202011087524A CN 111930184 B CN111930184 B CN 111930184B
- Authority
- CN
- China
- Prior art keywords
- apple
- sending
- equipment
- receiving
- usb interface
- 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
Links
- 238000000034 method Methods 0.000 title claims abstract description 68
- 238000004088 simulation Methods 0.000 title claims description 6
- 230000004044 response Effects 0.000 claims description 98
- 238000001514 detection method Methods 0.000 claims description 94
- 238000012795 verification Methods 0.000 claims description 39
- 230000008520 organization Effects 0.000 claims description 29
- 230000008569 process Effects 0.000 claims description 25
- 230000001360 synchronised effect Effects 0.000 claims description 7
- 230000005540 biological transmission Effects 0.000 description 4
- 238000004891 communication Methods 0.000 description 2
- 238000010586 diagram Methods 0.000 description 2
- 238000012790 confirmation Methods 0.000 description 1
- 230000007547 defect Effects 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/38—Information transfer, e.g. on bus
- G06F13/42—Bus transfer protocol, e.g. handshake; Synchronisation
- G06F13/4282—Bus transfer protocol, e.g. handshake; Synchronisation on a serial bus, e.g. I2C bus, SPI bus
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F1/00—Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
- G06F1/16—Constructional details or arrangements
- G06F1/1613—Constructional details or arrangements for portable computers
- G06F1/1633—Constructional details or arrangements of portable computers not specific to the type of enclosures covered by groups G06F1/1615 - G06F1/1626
- G06F1/1684—Constructional details or arrangements related to integrated I/O peripherals not covered by groups G06F1/1635 - G06F1/1675
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/10—Program control for peripheral devices
- G06F13/12—Program control for peripheral devices using hardware independent of the central processor, e.g. channel or peripheral processor
- G06F13/124—Program control for peripheral devices using hardware independent of the central processor, e.g. channel or peripheral processor where hardware is a sequential transfer control unit, e.g. microprocessor, peripheral processor or state-machine
- G06F13/126—Program control for peripheral devices using hardware independent of the central processor, e.g. channel or peripheral processor where hardware is a sequential transfer control unit, e.g. microprocessor, peripheral processor or state-machine and has means for transferring I/O instructions and statuses between control unit and main processor
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/38—Information transfer, e.g. on bus
- G06F13/382—Information transfer, e.g. on bus using universal interface adapter
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/30—Authentication, i.e. establishing the identity or authorisation of security principals
- G06F21/44—Program or device authentication
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/01—Input arrangements or combined input and output arrangements for interaction between user and computer
- G06F3/02—Input arrangements using manually operated switches, e.g. using keyboards or dials
- G06F3/0227—Cooperation and interconnection of the input arrangement with other functional units of a computer
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2213/00—Indexing scheme relating to interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F2213/0042—Universal serial bus [USB]
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Computer Hardware Design (AREA)
- Human Computer Interaction (AREA)
- Computer Security & Cryptography (AREA)
- Microelectronics & Electronic Packaging (AREA)
- Software Systems (AREA)
- Input From Keyboards Or The Like (AREA)
- Storage Device Security (AREA)
- Cash Registers Or Receiving Machines (AREA)
- Information Transfer Systems (AREA)
Abstract
本发明公开一种外接设备模拟键盘的实现方法、装置及系统,涉及电子技术领域。当外接设备检测到用户按下按键时生成键值数据;当外接设备接收到苹果设备发送的数据请求时将开始命令发送给苹果设备;苹果设备接收到开始命令后将软键盘退出,苹果设备继续向外接设备发送数据请求;当外接设备接收到数据请求时将包含键值数据的附属报告命令发送给苹果设备;苹果设备接收到附属报告命令后显示附属报告命令中的键值数据,苹果设备继续向外接设备发送数据请求;当外接设备接收到数据请求时将结束命令发送给苹果设备;苹果设备接收到结束命令后重新弹出软键盘。本发明技术方案使外接设备模拟键盘的同时苹果软键盘能正常使用。
Description
技术领域
本发明涉及电子技术领域,尤其涉及一种外接设备模拟键盘的实现方法、装置及系统。
背景技术
现有技术中,苹果设备(即苹果设备指的是iphone、ipad等使用iOS操作系统的设备)可与外接键盘连接进行使用,但是当外接键盘与苹果设备以HID协议进行通讯时,苹果设备的软键盘与外接键盘就会发生冲突,导致苹果设备的软键盘不能使用,使用非常不便。
发明内容
本发明的目的是为了克服现有技术的不足,提供一种外接设备模拟键盘的实现方法、装置及系统。
本发明提供了一种外接设备模拟键盘的实现方法,所述方法适用于苹果设备,所述方法包括:
步骤T1:外接设备与苹果设备建立连接,等待并接收所述苹果设备持续发送的数据请求,当所述外接设备通过USB接口接收到所述苹果设备发送的数据请求且发送缓存中无数据时通过所述USB接口给所述苹果设备返回响应数据,当所述外接设备在等待接收所述苹果设备持续发送的数据请求的过程中如检测到用户按下按键则执行步骤T2;
步骤T2:所述外接设备生成键值数据,根据预设的HID标识组织开始命令并存储到所述发送缓存中,将发送标识设为第一预设值;所述开始命令用于申明所述外接设备为键盘设备;
步骤T3:当所述外接设备通过所述USB接口接收到所述苹果设备发送的数据请求时,判断所述发送标识是否为第一预设值,是则通过所述USB接口将所述发送缓存中的开始命令发送给所述苹果设备并清空所述发送缓存,等待接收所述苹果设备持续发送的数据请求,执行步骤T4,否则通过所述USB接口给所述苹果设备返回响应数据;
步骤T4:当所述外接设备检测到所述发送缓存被清空时根据所述键值数据生成附属报告命令并存储到所述发送缓存中,将所述发送标识设为第二预设值;
步骤T5:当所述外接设备通过所述USB接口接收到所述苹果设备发送的数据请求时,判断所述发送标识是否为第二预设值,是则通过所述USB接口将所述发送缓存中的附属报告命令发送给所述苹果设备并清空所述发送缓存,等待接收所述苹果设备持续发送的数据请求,执行步骤T6,否则通过所述USB接口给所述苹果设备返回响应数据;
步骤T6:当所述外接设备检测到所述发送缓存被清空时组织结束命令并存储到所述发送缓存中,将所述发送标识设为第三预设值;
步骤T7:当所述外接设备通过所述USB接口接收到所述苹果设备发送的数据请求时,判断所述发送标识是否为第三预设值,是则通过所述USB接口将所述发送缓存中的结束命令发送给所述苹果设备并清空所述发送缓存和所述发送标识,等待接收所述苹果设备持续发送的数据请求,否则给通过所述USB接口给所述苹果设备返回响应数据。
进一步地,所述步骤T1包括:当所述外接设备通过Lighting接口与所述苹果设备建立物理连接之后,进行硬件系统初始化;接收所述苹果设备持续发送的数据请求,当所述外接设备通过所述USB接口接收到所述苹果设备发送的数据请求且发送缓存中无数据时通过所述USB接口给所述苹果设备返回响应数据。
进一步地,所述步骤T1还包括:所述外接设备将检测指令存储到所述发送缓存中;
所述步骤T1与步骤T2之间还包括:
步骤Z1:当所述外接设备通过所述USB接口接收到所述苹果设备发送的数据请求时,判断所述发送缓存中是否有数据,是则通过所述USB接口将所述发送缓存中的检测指令发送给所述苹果设备并接收所述苹果设备发送的支持认证协议信息,所述外接设备与所述苹果设备协商同步包数据,否则所述外接设备通过所述USB接口给所述苹果设备返回响应数据;
步骤Z2:当所述外接设备通过所述USB接口接收到所述苹果设备发送的认证成功信息和设备鉴别指令时,组织鉴别响应并存储到所述发送缓存中,通过所述USB接口将所述发送缓存中的鉴别响应返回给所述苹果设备。
进一步地,所述步骤Z2之前还包括:
当所述外接设备通过所述USB接口接收到所述苹果设备发送的获取证书指令时,所述外接设备从内部认证芯片中读取证书并存储到所述发送缓存中,通过所述USB接口将所述发送缓存中的证书返回给所述苹果设备;
当所述外接设备通过所述USB接口接收到所述苹果设备发送的挑战指令时,所述外接设备解析所述挑战指令并将解析得到的挑战值发送给所述内部认证芯片,从所述内部认证芯片中读取挑战值签名结果并存储到所述发送缓存中,通过所述USB接口将所述发送缓存中的挑战值签名结果返回给所述苹果设备。
进一步地,所述步骤T4中的根据所述键值数据生成附属报告命令并存储到所述发送缓存中具体为:将所述键值数据转换为按键信息,根据所述按键信息生成附属报告命令并存储到所述发送缓存中。
本发明再提供了一种外接设备模拟键盘的实现方法,所述方法适用于包括苹果设备和外接设备的系统,所述方法包括:
步骤S1:苹果设备与外接设备建立连接,所述苹果设备持续向所述外接设备发送数据请求,当所述外接设备通过USB接口接收到所述苹果设备发送的数据请求且发送缓存中无数据时通过所述USB接口给所述苹果设备返回响应数据,所述苹果设备对所述外接设备进行认证,如认证成功则执行步骤S2,如认证失败则结束,报错;
步骤S2:所述苹果设备提示用户在所述外接设备上按下按键;当所述外接设备在等待接收所述苹果设备持续发送的数据请求的过程中如检测到用户按下按键时生成键值数据,根据预设的HID标识组织开始命令并存储到所述发送缓存中,将发送标识设为第一预设值,执行步骤S3;所述开始命令用于申明所述外接设备为键盘设备;
步骤S3:当所述外接设备通过所述USB接口接收到所述苹果设备发送的数据请求时,判断所述发送标识是否为第一预设值,是则通过所述USB接口将所述发送缓存中的开始命令发送给所述苹果设备并清空所述发送缓存,等待接收所述苹果设备持续发送的数据请求,当所述外接设备检测到所述发送缓存被清空时根据所述键值数据生成附属报告命令并存储到所述发送缓存中,将所述发送标识设为第二预设值,执行步骤S4;否则通过所述USB接口给所述苹果设备返回响应数据;
步骤S4:所述苹果设备接收到所述开始命令后将软键盘退出,所述苹果设备继续向所述外接设备发送数据请求,执行步骤S5;
步骤S5:当所述外接设备通过所述USB接口接收到所述苹果设备发送的数据请求时,判断所述发送标识是否为第二预设值,是则通过所述USB接口将所述发送缓存中的附属报告命令发送给所述苹果设备并清空所述发送缓存,等待接收所述苹果设备持续发送的数据请求;当所述外接设备检测到所述发送缓存被清空时组织结束命令并存储到所述发送缓存中,将所述发送标识设为第三预设值,执行步骤S6;否则通过所述USB接口给所述苹果设备返回响应数据;
步骤S6:所述苹果设备接收到所述附属报告命令后显示附属报告命令中的键值数据,所述苹果设备继续向所述外接设备发送数据请求,执行步骤S7;
步骤S7:当所述外接设备通过所述USB接口接收到所述苹果设备发送的数据请求时,判断所述发送标识是否为第三预设值,是则通过所述USB接口将所述发送缓存中的结束命令发送给所述苹果设备并清空所述发送缓存和所述发送标识,等待接收所述苹果设备发送的数据;否则通过所述USB接口给所述苹果设备返回响应数据;
步骤S8:所述苹果设备接收到结束命令后重新弹出软键盘。
进一步地,所述步骤S1中所述苹果设备对所述外接设备进行认证之前还包括:
步骤E1:所述苹果设备检测自身是否支持认证协议,是则给所述外接设备返回支持认证协议信息,执行步骤E2,否则报错,结束;
步骤E2:所述外接设备通过所述USB接口接收到认证协议信息后,与所述苹果设备协商同步包数据;
所述步骤S1中的所述苹果设备对所述外接设备进行认证成功之后还包括:
步骤F1:所述苹果设备给所述外接设备发送设备鉴别指令,所述外接设备通过所述USB接口接收到鉴别指令后,组织鉴别响应并存储到所述发送缓存中,所述外接设备通过所述USB接口将所述发送缓存中的鉴别响应返回给所述苹果设备,执行步骤S2。
进一步地,所述苹果设备与外接设备建立连接之后还包括:所述外接设备将检测指令存储到所述发送缓存中;
所述步骤E1包括:
步骤E11:当所述外接设备通过所述USB接口接收到所述苹果设备发送的数据请求时,判断所述发送缓存中是否有数据,是则通过所述USB接口将所述发送缓存中的检测指令发送给所述苹果设备,否则报错,结束;
步骤E12:所述苹果设备接收到所述检测指令后判断自身是否支持认证协议,是则给所述外接设备返回苹果设备支持认证协议信息,执行步骤E2,否则报错,结束。
进一步地,所述步骤E12具体为:所述苹果设备接收到检测指令后,判断自身支持的协议是否包括所述检测指令指定的认证协议,是则给所述外接设备返回苹果设备支持认证协议信息,执行步骤E2,否则报错,结束。
进一步地,所述步骤S1中的所述苹果设备与外接设备建立连接,所述苹果设备持续向所述外接设备发送数据请求,包括:
步骤S11:所述苹果设备与所述外接设备通过Lighting接口进行物理连接,所述外接设备进行硬件系统初始化;
步骤S12:所述苹果设备进行USB枚举,USB枚举完成之后所述苹果设备持续向所述外接设备发送数据请求。
进一步地,所述步骤S1中的所述苹果设备对所述外接设备进行认证,如认证成功则执行步骤S2,如认证失败则结束,报错,包括:
步骤A1:所述苹果设备向所述外接设备发送获取证书指令;
步骤A2:当所述外接设备通过所述USB接口接收到所述苹果设备发送的获取证书指令时,所述外接设备从内部认证芯片中读取证书并存储到所述发送缓存中,通过所述USB接口将所述发送缓存中的证书返回给所述苹果设备;
步骤A3:所述苹果设备对接收到的所述证书进行验证,如验证成功则执行步骤A4,如验证失败则报错,结束;
步骤A4:所述苹果设备生成挑战值,根据所述挑战值生成挑战指令并发送给所述外接设备;
步骤A5:当所述外接设备通过所述USB接口接收到所述苹果设备发送的挑战指令时,解析所述挑战指令并将解析得到的挑战值发送给所述内部认证芯片,从所述内部认证芯片中读取挑战值签名结果并存储到所述发送缓存中,通过所述USB接口将所述发送缓存中的挑战值签名结果返回给所述苹果设备;
步骤A6:所述苹果设备对接收到的所述挑战值签名结果进行验证,如验证成功则给所述外接设备发送认证成功信息,执行步骤S2,如验证失败则报错,结束。
进一步地,所述步骤A3包括:所述苹果设备使用保存的公钥对所述证书中的签名值进行解密得到第一解密值,对所述证书中的待签名数据进行哈希运算得到第一哈希值,判断所述第一哈希值与所述第一解密值是否相同,是则证书验证成功,执行步骤A4,否则验证失败,报错,结束。
进一步地,所述步骤A6包括:所述苹果设备使用保存的公钥对所述挑战值签名结果进行解密得到第二解密值,对生成的所述挑战值进行哈希运算得到第二哈希值,判断所述第二解密值是否与所述第二哈希值相同,是则验证成功,给所述外接设备发送认证成功信息,否则验证失败,报错,结束。
进一步地,所述步骤S2中的所述苹果设备提示用户在所述外接设备上按下按键替换为:所述苹果设备的应用浏览器提示用户输入键值数据;
所述步骤S6替换为:所述苹果设备接收到所述附属报告命令后将所述附属报告命令中的键值数据发送给所述浏览器,所述浏览器接收到所述键值数据后进行相应操作,所述苹果设备继续向所述外接设备发送数据请求。
进一步地,所述步骤S3中的当所述外接设备检测到所述发送缓存被清空时根据所述键值数据生成附属报告命令并存储到所述发送缓存中具体为:当所述外接设备检测到所述发送缓存被清空时将所述键值数据转换为按键信息,根据所述键值信息生成附属报告命令并存储到所述发送缓存中。
本发明又提供了一种外接设备模拟键盘的实现装置,所述装置与苹果设备连接工作,所述装置包括:
连接接收返回模块,用于实现外接设备与苹果设备之间的连接,等待并接收所述苹果设备持续发送的数据请求,当通过USB接口接收到所述苹果设备发送的数据请求且发送缓存中无数据时通过所述USB接口给所述苹果设备返回响应数据;
第一检测组织存储模块,用于当所述连接接收返回模块等待接收所述苹果设备持续发送的数据请求的过程中如检测到用户按下按键时生成键值数据,根据预设的HID标识组织开始命令并存储到所述发送缓存中,将发送标识设为第一预设值;所述开始命令用于申明所述外接设备为键盘设备;
第一接收判断发送模块,用于当通过USB接口接收到所述苹果设备发送的数据请求时,判断所述发送标识是否为第一预设值,是则通过所述USB接口将所述发送缓存中的开始命令发送给所述苹果设备并清空所述发送缓存,等待接收所述苹果设备持续发送的数据请求,触发检测生成存储模块,否则通过所述USB接口给所述苹果设备返回响应数据;
所述检测生成存储模块,用于当检测到所述发送缓存被清空时根据所述键值数据生成附属报告命令并存储到所述发送缓存中,将所述发送标识设为第二预设值;
第二接收判断发送模块,用于当通过所述USB接口接收到所述苹果设备发送的数据请求时,判断所述发送标识是否为第二预设值,是则通过所述USB接口将所述发送缓存中的附属报告命令发送给所述苹果设备并清空所述发送缓存,等待接收所述苹果设备持续发送的数据请求,触发第二检测组织存储模块,否则通过所述USB接口给所述苹果设备返回响应数据;
所述第二检测组织存储模块,用于当检测到所述发送缓存被清空时组织结束命令并存储到所述发送缓存中,将所述发送标识设为第三预设值;
第三接收判断发送模块,用于当通过所述USB接口接收到苹果设备发送的数据请求时,判断所述发送标识是否为第三预设值,是则通过所述USB接口将所述发送缓存中的结束命令发送给所述苹果设备并清空所述发送缓存和所述发送标识,等待接收所述苹果设备持续发送的数据请求,否则通过所述USB接口给所述苹果设备返回响应数据。
进一步地,所述连接接收返回模块具体用于当通过Lighting接口与所述苹果设备物理连接之后,进行硬件系统初始化;接收所述苹果设备持续发送的数据请求,当通过USB接口接收到所述苹果设备发送的数据请求且发送缓存中无数据时通过所述USB接口给所述苹果设备返回响应数据。
进一步地,所述连接接收返回模块还用于将检测指令存储到所述发送缓存中;
所述装置还包括:
第四接收判断发送模块,用于当通过所述USB接口接收到所述苹果设备发送的数据请求时,判断所述发送缓存中是否有数据,是则通过所述USB接口将所述发送缓存中的检测指令发送给所述苹果设备并接收所述苹果设备发送的支持认证协议信息,与所述苹果设备协商同步包数据,否则通过所述USB接口给所述苹果设备返回响应数据;
接收组织发送模块,用于当通过所述USB接口接收到所述苹果设备发送的认证成功信息和设备鉴别指令时,组织鉴别响应并存储到所述发送缓存中,通过所述USB接口将所述发送缓存中的鉴别响应返回给所述苹果设备。
进一步地,所装置还包括:
接收读取发送模块,用于当通过所述USB接口接收到所述苹果设备发送的获取证书指令时,从内部认证芯片中读取证书并存储到所述发送缓存中,通过所述USB接口将所述发送缓存中的证书返回给所述苹果设备;
解析读取发送模块,用于当通过所述USB接口接收到所述苹果设备发送的挑战指令时,解析所述挑战指令并将解析得到的挑战值发送给所述内部认证芯片,从所述内部认证芯片中读取挑战值签名结果并存储到所述发送缓存中,通过所述USB接口将所述发送缓存中的挑战值签名结果返回给所述苹果设备。
进一步地,所述检测生成存储模块,具体用于当检测到所述发送缓存被清空时将所述键值数据转换为按键信息,根据所述按键信息生成附属报告命令并存储到所述发送缓存中。
本发明还提供了一种外接设备模拟键盘的实现系统,包括苹果设备和外接设备,所述苹果设备包括:连接发送模块、认证模块、提示模块、接收退出发送模块、接收显示发送模块和接收重弹模块,所述外接设备包括:第一接收返回模块、第一检测组织存储模块、第一接收判断发送模块、检测生成存储模块、第二接收判断发送模块、第二检测组织存储模块和第三接收判断发送模块;
所述连接发送模块,用于实现所述苹果设备与所述外接设备之间的连接,持续向所述外接设备发送数据请求;
所述第一接收返回模块,用于当通过USB接口接收到所述苹果设备发送的数据请求且发送缓存中无数据时通过所述USB接口给所述苹果设备返回响应数据;
所述认证模块,用于对所述外接设备进行认证,如认证成功则触发所述提示模块,如认证失败则报错,结束;
所述提示模块,用于提示用户在所述外接设备上按下按键;
所述第一检测组织存储模块,用于当检测到用户按下按键时生成键值数据,根据预设的HID标识组织开始命令并存储到所述发送缓存中,将发送标识设为第一预设值,触发所述第一接收判断发送模块;所述开始命令用于申明外接设备为键盘设备;
所述第一接收判断发送模块,用于当通过所述USB接口接收到所述苹果设备发送的数据请求时,判断所述发送标识是否为第一预设值,是则通过所述USB接口将所述发送缓存中的开始命令发送给所述苹果设备并清空所述发送缓存,等待接收所述苹果设备持续发送的数据请求,触发所述检测生成存储模块;否则通过所述USB接口给所述苹果设备返回响应数据;触发所述检测生成存储模块;
所述检测生成存储模块,用于当检测到所述发送缓存被清空时根据所述键值数据生成附属报告命令并存储到所述发送缓存中,将所述发送标识设为第二预设值;
所述接收退出发送模块,用于接收到所述开始命令后将软键盘退出,向所述外接设备发送数据请求,触发所述第二接收判断发送模块;
所述第二接收判断发送模块,用于当通过所述USB接口接收到所述苹果设备发送的数据请求时,判断所述发送标识是否为第二预设值,是则通过所述USB接口将所述发送缓存中的附属报告命令发送给所述苹果设备并清空所述发送缓存,等待接收所述苹果设备持续发送的数据请求,触发所述第二检测组织存储模块;否则通过所述USB接口给所述苹果设备返回响应数据;
所述第二检测组织存储模块,用于当检测到所述发送缓存被清空时组织结束命令并存储到所述发送缓存中,将所述发送标识设为第三预设值;
所述接收显示发送模块,用于在接收到所述附属报告命令后显示附属报告命令中的键值数据,继续向所述外接设备发送数据请求,触发所述第三接收判断发送模块;
所述第三接收判断发送模块,用于当通过所述USB接口接收到所述苹果设备发送的数据请求时,判断所述发送标识是否为第三预设值,是则通过所述USB接口将所述发送缓存中的结束命令发送给所述苹果设备并清空所述发送缓存和所述发送标识,等待接收所述苹果设备发送的数据;否则通过所述USB接口给所述苹果设备返回响应数据;
所述接收重弹模块,用于接收到结束命令后重新弹出软键盘。
进一步地,所述苹果设备还包括检测返回模块和第一发送模块,所述外接设备还包括接收协商模块和接收组织存储模块;
所述检测返回模块,用于检测自身是否支持认证协议,是则给所述外接设备返回支持认证协议信息,否则报错,结束;
所述接收协商模块,用于在通过所述USB接口接收到认证协议信息后,与所述苹果设备协商同步包数据;
所述第一发送模块,用于在所述认证模块对所述外接设备进行认证成功之后,给所述外接设备发送设备鉴别指令;
所述接收组织存储模块,用于在通过所述USB接口接收到鉴别指令后,组织鉴别响应并存储到所述发送缓存中,通过所述USB接口将所述发送缓存中的鉴别响应返回给所述苹果设备;
所述提示模块,具体用于在接收到鉴别响应时提示用户在所述外接设备上按下按键。
进一步地,所述外接设备还包括:
第一存储模块,用于在所述苹果设备与外接设备建立连接之后将检测指令存储到所述发送缓存中;
所述检测返回模块具体用于当通过所述USB接口接收到苹果设备发送的数据请求时,判断所述发送缓存中是否有数据,是则通过所述USB接口将所述发送缓存中的检测指令发送给所述苹果设备,否则报错,结束;
所述苹果设备还包括:第四接收判断返回模块,用于在接收到所述检测指令后判断自身是否支持认证协议,是则给所述外接设备返回苹果设备支持认证协议信息,触发所述接收协商模块,否则报错,结束。
进一步地,所述第四接收判断返回模块具体用于在接收到检测指令后,判断自身支持的协议是否包括所述检测指令指定的认证协议,是则给所述外接设备返回苹果设备支持认证协议信息,触发所述接收协商模块,否则报错,结束。
进一步地,所述连接发送模块包括:
连接初始化单元,用于与所述外接设备通过Lighting接口进行物理连接,所述外接设备进行硬件系统初始化;
枚举发送单元,用于进行USB枚举,USB枚举完成之后持续向所述外接设备发送数据请求。
进一步地,所述认证模块包括:第一发送单元、第一接收验证单元、生成发送单元和第二接收验证单元;所述外接设备还包括:接收读取发送模块和解析读取发送模块;
所述第一发送单元,用于向所述外接设备发送获取证书指令;
所述接收读取发送模块,用于当通过所述USB接口接收到所述苹果设备发送的获取证书指令时,从内部认证芯片中读取证书并存储到所述发送缓存中,通过所述USB接口将所述发送缓存中的证书返回给所述苹果设备;
所述第一接收验证单元,用于接收所述证书并进行验证,如验证成功则触发所述生成发送单元,如验证失败则报错,结束;
所述生成发送单元,用于生成挑战值,根据所述挑战值生成挑战指令并发送给所述外接设备;
所述解析读取发送模块,用于当通过所述USB接口接收到所述苹果设备发送的挑战指令时,解析所述挑战指令并将解析得到的挑战值发送给所述内部认证芯片,从所述内部认证芯片中读取挑战值签名结果并存储到所述发送缓存中,通过所述USB接口将所述发送缓存中的挑战值签名结果返回给所述苹果设备;
所述第二接收验证单元,用于接收所述挑战值签名结果并进行验证,如验证成功则给所述外接设备发送认证成功信息,如验证失败则报错,结束。
进一步地,所述第一接收验证单元具体用于使用保存的公钥对所述证书中的签名值进行解密得到第一解密值,对所述证书中的待签名数据进行哈希运算得到第一哈希值,判断所述第一哈希值与所述第一解密值是否相同,是则证书验证成功,触发所述生成发送单元,否则验证失败,报错,结束。
进一步地,所述第二接收验证单元具体用于接收所述挑战值签名结果并使用保存的公钥对所述挑战值签名结果进行解密得到第二解密值,对生成的所述挑战值进行哈希运算得到第二哈希值,判断所述第二解密值是否与所述第二哈希值相同,是则验证成功,给所述外接设备发送认证成功信息,否则验证失败,报错,结束。
进一步地,所述提示模块还用于通过所述苹果设备的应用浏览器提示用户输入键值数据;
所述接收显示发送模块还用于在接收到所述附属报告命令后将所述附属报告命令中的键值数据发送给所述浏览器,所述浏览器接收到所述键值数据后进行相应操作,还用于继续向所述外接设备发送数据请求。
进一步地,所述检测生成存储模块具体用于当检测到所述发送缓存被清空时将所述键值数据转换为按键信息,根据所述键值信息生成附属报告命令并存储到所述发送缓存中。
本发明与现有技术相比,具有以下优点:
通过本发明技术方案使外接设备与苹果设备连接时,外接设备既能模拟键盘,而苹果软键盘又能正常使用,减少苹果设备的软键盘与外接设备模拟的键盘的冲突以及苹果设备的负担,方便用户使用。
附图说明
图1为本发明实施例一提供的一种外接设备模拟键盘的实现方法流程图;
图2为本发明实施例二提供的一种外接设备模拟键盘的实现方法流程图;
图3为本发明实施例三提供的一种外接设备模拟键盘的实现方法流程图;
图4为本发明实施例四提供的一种外接设备模拟键盘的实现装置方框图;
图5为本发明实施例五提供的一种外接设备模拟键盘的实现系统示意图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
在本实施例中,苹果设备与外接设备建立连接通讯完成枚举之后,苹果设备在空闲时会持续向外接设备发送数据请求,当外接设备通过USB接口接收到数据请求且检测到发送缓存中无数据时则外接设备通过USB接口给苹果设备返回确认响应,当外接设备有指令发送给苹果设备时则通过USB接口发送对应指令给苹果设备。例如本实施例中的外接设备可为具备OTP功能的设备。
实施例一
本发明实施例一提供一种外接设备模拟键盘的实现方法,本实施例的方法适用于苹果设备,如图1所示,包括:
步骤T1:外接设备与苹果设备建立连接,等待并接收苹果设备持续发送的数据请求,当外接设备接收到苹果设备发送的数据请求且发送缓存中无数据时给苹果设备返回响应数据,当外接设备在等待接收苹果设备持续发送的数据请求的过程中如检测到用户按下按键则执行步骤T2;
具体的,在本实施例中,步骤T1包括:当外接设备通过Lighting接口与苹果设备建立物理连接之后,进行硬件系统初始化;接收苹果设备持续发送的数据请求,当外接设备通过USB接口接收到苹果设备发送的数据请求且发送缓存中无数据时通过USB接口给苹果设备返回响应数据;
步骤T2:外接设备生成键值数据,根据预设的HID标识组织开始命令并存储到发送缓存中,将发送标识设为第一预设值;
本实施例中的开始命令用于申明外接设备为键盘设备;预设的HID标识包括HID识别码和HID报告描述符;
步骤T3:当外接设备通过USB接口接收到苹果设备发送的数据请求时,判断发送标识是否为第一预设值,是则通过USB接口将发送缓存中的开始命令发送给苹果设备并清空发送缓存,等待接收苹果设备持续发送的数据请求,执行步骤T4,否则通过USB接口给苹果设备返回响应数据;
步骤T4:当外接设备检测到发送缓存被清空时根据键值数据生成附属报告命令并存储到发送缓存中,将发送标识设为第二预设值;
具体的,在本实施例的步骤T4中的根据键值数据生成附属报告命令并存储到发送缓存中具体为:将键值数据转换为按键信息,根据按键信息生成附属报告命令并存储到发送缓存中;
步骤T5:当外接设备通过USB接口接收到苹果设备发送的数据请求时,判断发送标识是否为第二预设值,是则通过USB接口将发送缓存中的附属报告命令发送给苹果设备并清空发送缓存,等待接收苹果设备持续发送的数据请求,执行步骤T6,否则通过USB接口给苹果设备返回响应数据;
步骤T6:当外接设备检测到发送缓存被清空时组织结束命令并存储到发送缓存中,将发送标识设为第三预设值;
步骤T7:当外接设备通过USB接口接收到苹果设备发送的数据请求时,判断发送标识是否为第三预设值,是则通过USB接口将发送缓存中的结束命令发送给苹果设备并清空发送缓存和发送标识,等待接收苹果设备持续发送的数据请求,否则通过USB接口给苹果设备返回响应数据。
可选的,本实施例中的步骤T1还包括:外接设备将检测指令存储到发送缓存中;步骤T1与步骤T2之间还包括:
步骤Z1:当外接设备通过USB接口接收到苹果设备发送的数据请求时,判断发送缓存中是否有数据,是则通过USB接口将发送缓存中的检测指令发送给苹果设备并接收苹果设备发送的支持认证协议信息,外接设备与苹果设备协商同步包数据,否则通过USB接口给苹果设备返回响应数据;
步骤Z2:当外接设备通过USB接口接收到苹果设备发送的认证成功信息和设备鉴别指令时,组织鉴别响应并存储到发送缓存中,通过USB接口将发送缓存中的鉴别响应返回给苹果设备。
在本实施例中,步骤Z2之前还包括:
当外接设备通过USB接口接收到苹果设备发送的获取证书指令时,外接设备从内部认证芯片中读取证书并存储到发送缓存中,通过USB接口将发送缓存中的证书返回给苹果设备;
当外接设备通过USB接口接收到苹果设备发送的挑战指令时,外接设备解析挑战指令并将解析得到的挑战值发送给内部认证芯片,从内部认证芯片中读取挑战值签名结果并存储到发送缓存中,通过USB接口将发送缓存中的挑战值签名结果返回给苹果设备。
在本实施例中,如外接设备通过USB接口接收到苹果设备发送的数据请求时检测到发送缓存被清空时则通过USB接口给苹果设备返回响应数据。
实施例二
本发明实施例二提供一种外接设备模拟键盘的实现方法,本实施例的方法适用于包括苹果设备和外接设备的系统,如图2所示,本实施例的方法包括:
步骤S1:苹果设备与外接设备建立连接,苹果设备持续向外接设备发送数据请求,当外接设备的USB接口接收到苹果设备发送的数据请求且发送缓存中无数据时外接设备的USB接口给苹果设备返回响应数据,苹果设备对外接设备进行认证,如认证成功则执行步骤S2,如认证失败则报错,结束;
在本实施例中,苹果设备与外接设备建立连接进行通讯,苹果设备持续向外接设备发送数据请求,包括:
步骤S11:苹果设备与外接设备通过Lighting接口进行物理连接,外接设备进行硬件系统初始化;
步骤S12:苹果设备进行USB枚举,USB枚举完成之后苹果设备持续向外接设备发送数据请求;
上述步骤中的苹果设备对外接设备进行认证,如认证成功则执行步骤S2,如认证失败则报错,结束,包括:
步骤A1:苹果设备向外接设备发送获取证书指令;
步骤A2:当外接设备通过USB接口接收到苹果设备发送的获取证书指令时,从内部认证芯片中读取证书并存储到发送缓存中,通过USB接口将发送缓存中的证书返回给苹果设备;
步骤A3:苹果设备对接收到的证书进行验证,如验证成功则执行步骤A4,如验证失败则报错,结束;
进一步地,步骤A3包括:苹果设备使用保存的公钥对证书中的签名值进行解密得到第一解密值,对证书中的待签名数据进行哈希运算得到第一哈希值,判断第一哈希值与第一解密值是否相同,是则证书验证成功,执行步骤A4,否则验证失败,报错,结束;
步骤A4:苹果设备生成挑战值,根据挑战值生成挑战指令并发送给外接设备;
步骤A5:当外接设备通过USB接口接收到苹果设备发送的挑战指令时,外接设备解析挑战指令并将解析得到的挑战值发送给内部认证芯片,从内部认证芯片中读取挑战值签名结果并存储到发送缓存中,通过USB接口将发送缓存中的挑战值签名结果返回给苹果设备;
步骤A6:苹果设备对接收到的挑战值签名结果进行验证,如验证成功则给外接设备发送认证成功信息,如验证失败则报错,结束;
进一步地,步骤A6包括:苹果设备使用保存的公钥对挑战值签名结果进行解密得到第二解密值,对生成的挑战值进行哈希运算得到第二哈希值,判断第二解密值是否与第二哈希值相同,是则验证成功,给外接设备发送认证成功信息,否则验证失败,报错,结束;
步骤S2:苹果设备提示用户在外接设备上按下按键;当外接设备在等待接收苹果设备持续发送的数据请求的过程中如检测到用户按下按键时生成键值数据,根据预设的HID标识组织开始命令并存储到发送缓存中,将发送标识设为第一预设值;
本实施例中的开始命令用于申明外接设备为键盘设备;预设的HID标识包括HID识别码和HID报告描述符;
步骤S3:当外接设备通过USB接口接收到苹果设备发送的数据请求时,判断发送标识是否为第一预设值,是则通过USB接口将发送缓存中的开始命令发送给苹果设备并清空发送缓存,等待接收苹果设备持续发送的数据请求,当外接设备检测到发送缓存被清空时根据键值数据生成附属报告命令并存储到发送缓存中,将发送标识设为第二预设值,执行步骤S4;否则通过USB接口给苹果设备返回响应数据;
在本实施例中,步骤S3中根据键值数据生成附属报告命令并存储到发送缓存中具体为:将键值数据转换为按键信息,根据键值信息生成附属报告命令并存储到发送缓存中;
步骤S4:苹果设备接收到开始命令后将软键盘退出,苹果设备继续向外接设备发送数据请求,执行步骤S5;
步骤S5:当外接设备通过USB接口接收到苹果设备发送的数据请求时,判断发送标识是否为第二预设值,是则通过USB接口将发送缓存中的附属报告命令发送给苹果设备并清空发送缓存,等待接收苹果设备持续发送的数据请求;当外接设备检测到发送缓存被清空时组织结束命令并存储到发送缓存中,将发送标识设为第三预设值,执行步骤S6;否则通过USB接口给苹果设备返回响应数据;
步骤S6:苹果设备接收到附属报告命令后显示附属报告命令中的键值数据,苹果设备继续向外接设备发送数据请求,执行步骤S7;
步骤S7:当外接设备通过USB接口接收到苹果设备发送的数据请求时,判断发送标识是否为第三预设值,是则通过USB接口将发送缓存中的结束命令发送给苹果设备并清空发送缓存和发送标识,等待接收苹果设备发送的数据;否则通过USB接口给苹果设备返回响应数据;
步骤S8:苹果设备接收到结束命令后重新弹出软键盘。
可选的,本实施例的步骤S1中苹果设备对外接设备进行认证之前还包括:
步骤E1:苹果设备检测自身是否支持认证协议,是则给外接设备返回支持认证协议信息,执行步骤E2,否则报错,结束;
进一步地,苹果设备与外接设备建立连接之后还包括:外接设备将检测指令存储到发送缓存中;相应的,步骤E1包括:
步骤E11:当外接设备通过USB接口接收到苹果设备发送的数据请求时,判断发送缓存中是否有数据,是则通过USB接口将发送缓存中的检测指令发送给苹果设备,否则报错,结束;
步骤E12:苹果设备接收到检测指令后判断自身是否支持认证协议,是则给外接设备返回苹果设备支持认证协议信息,执行步骤E2,否则报错,结束。
其中,步骤E12具体为:苹果设备接收到检测指令后,判断自身支持的协议是否包括检测指令指定的认证协议,是则给外接设备返回苹果设备支持认证协议信息,执行步骤E2,否则报错,结束;可选的,该步骤中的报错可以为:给苹果设备返回苹果设备不支持认证协议信息;
步骤E2:外接设备通过USB接口接收到认证协议信息后,与苹果设备协商同步包数据;
步骤S1中苹果设备对外接设备进行认证成功之后还包括:
步骤F1:苹果设备给外接设备发送设备鉴别指令,外接设备通过USB接口接收到鉴别指令后,组织鉴别响应并存储到发送缓存中,外接设备通过USB接口将发送缓存中的鉴别响应返回给苹果设备,执行步骤S2。
可选的,本实施例中的步骤S2可替换为:苹果设备的应用浏览器提示用户输入键值数据;当外接设备在等待接收所述苹果设备持续发送的数据请求的过程中如检测到用户按下按键时生成键值数据,根据预设的HID标识组织开始命令并存储到发送缓存中,将发送标识设为第一预设值,执行步骤S3;
相应的,步骤S6替换为:苹果设备接收到附属报告命令后将附属报告命令中的键值数据发送给浏览器,浏览器接收到键值数据后进行相应操作,苹果设备继续向外接设备发送数据请求。
在本实施例中,如外接设备通过USB接口接收到苹果设备发送的数据请求时检测到发送缓存被清空则外接设备通过USB接口给苹果设备返回响应数据。
在本实施例中,当苹果设备接收到外接设备返回的响应数据时会继续向外接设备发送数据请求。
实施例三
本发明实施例三提供一种外接设备模拟键盘的实现方法,如图3所示,包括:
步骤101:苹果设备与外接设备通过Lighting接口进行物理连接,外接设备进行硬件系统初始化;
步骤102:苹果设备进行USB枚举,枚举完成之后持续向外接设备发送数据请求;
步骤103:外接设备给苹果设备发送检测指令;
例如,本实施例中的检测指令为0xFF,0x55,0x02,0x00,0xEE,0x10;
步骤104:苹果设备接收到检测指令之后判断自身是否支持认证协议,是则给外接设备返回苹果设备支持认证协议信息,则执行步骤105,否则报错,结束;
在本实施例中,步骤104具体为:苹果设备接收到检测指令后,判断自身支持的协议是否包括检测指令指定的认证协议,是则给外接设备返回苹果设备支持认证协议信息,执行步骤104,否则报错,结束;例如,该步骤中的报错可以为:苹果设备给外接设备返回苹果设备不支持认证协议信息,认证协议可以为IAP2;
苹果设备给外接设备返回苹果设备支持认证协议信息为:0xFF,0x55,0x02,
0x00,0xEE,0x10,苹果设备给外接设备返回苹果设备不支持认证协议信息为:0x55,0x04,0x00,0x02,0x04,0xEE,0x08或0x55,0x02,0x00,0x00,0xFE或
0xFF,0x55,0x04,0x00,0x02,0x04,0xEE,0x08或0xFF,0x55,0x02,0x00,0x00,0xFE;
步骤105:外接设备与苹果设备协商同步包数据;
具体的,在本实施例中,外接设备给苹果设备发送协商数据请求,苹果设备给外接设备返回协商数据;
外接设备给苹果设备发送的协商数据请求为:0xFF,0x5A,0x00,0x1A,0x80,
0x1C,0x00,0x00,0xF1,0x01,0x01,0x04,0x80,0x03,0xE8,0x00,0x0A,0x1E,0x01,0x01,0x00,0x01,0x02,0x02,0x01,0x5F;苹果设备给外接设备发送的协商数据为0xFF,
0x5A,0x00,0x1A,0xC0,0xE7,0x1C,0x00,0xCA,0x01,0x7F,0xFF,0xFF,0x03,0xE8,0x00,0x0A,0x1E,0x01,0x01,0x00,0x01,0x02,0x02,0x01,0x67;
步骤106:苹果设备对外接设备进行认证,如认证成功则执行步骤107,如认证失败则报错,结束;
具体的,在本实施例中,步骤106包括:
步骤106-1:苹果设备向外接设备发送获取证书指令;
例如,本实施例中获取证书指令为:0xFF,0x5A,0x00,0x10,0x40,0xE8,0x1C,0x01,0x52,0x40,0x40,0x00,0x06,0xAA,0x00,0xD0;
步骤106-2:外接设备通过USB接口接收获取证书之后,从内部认证芯片中读取证书并通过USB接口将包含证书的证书响应数据返回给苹果设备;
例如,本实施例中的证书响应数据为0xFF,0x5A,0x03,0xA0,0x40,0x1D,0xE8,
0x01,0xBE,0x40,0x40,0x03,0x96,0xAA,0x01,0x03,0x90,0x00,0x00,0x30,0x82,0x03,0x88,0x06,0x09,0x2A,0x86,0x48,0x86,0xF7,0x0D,0x01,0x07,0x02,0xA0,0x82,0x03,0x79,0x30,0x82,0x03,0x75,0x02,0x01,0x01,0x31,0x00,0x30,0x0B,0x06,0x09,0x2A,0x86,0x48,0x86,0xF7,0x0D,0x01,0x07,0x01,0xA0,0x82,0x03,0x5D,0x30,0x82,0x03,0x59,0x30,0x82,0x02,0x41,0xA0,0x03,0x02,0x01,0x02,0x02,0x0F,0x22,0x22,0xAA,0x16,0x03,0x17,0xAA,0x06,0xAA,0x91,0x92,0xAA,0x13,0x79,0x06,0x30,0x0D,0x06,0x09,0x2A,0x86,0x48,0x86,0xF7,0x0D,0x01,0x01,0x05,0x05,0x00,0x30,0x81,0x83,0x31,0x0B,0x30,0x09,0x06,0x03,0x55,0x04,0x06,0x13,0x02,0x55,0x53,0x31,0x13,0x30,0x11,0x06,0x03,0x55,0x04,0x0A,0x13,0x0A,0x41,0x70,0x70,0x6C,0x65,0x20,0x49,0x6E,0x63,0x2E,0x31,0x26,0x30,0x24,0x06,0x03,0x55,0x04,0x0B,0x13,0x1D,0x41,0x70,0x70,0x6C,0x65,0x20,0x43,0x65,0x72,0x74,0x69,0x66,0x69,0x63,0x61,0x74,0x69,0x6F,0x6E,0x20,0x41,0x75,0x74,0x68,0x6F,0x72,0x69,0x74,0x79,0x31,0x37,0x30,0x35,0x06,0x03,0x55,0x04,0x03,0x13,0x2E,0x41,0x70,0x70,0x6C,0x65,0x20,0x69,0x50,0x6F,0x64,0x20,0x41,0x63,0x63,0x65,0x73,0x73,0x6F,0x72,0x69,0x65,0x73,0x20,0x43,0x65,0x72,0x74,0x69,0x66,0x69,0x63,0x61,0x74,0x69,0x6F,0x6E,0x20,0x41,0x75,0x74,0x68,0x6F,0x72,0x69,0x74,0x79,0x30,0x1E,0x17,0x0D,0x31,0x36,0x30,0x33,0x31,0x38,0x31,0x33,0x35,0x32,0x35,0x38,0x5A,0x17,0x0D,0x32,0x32,0x30,0x32,0x31,0x34,0x32,0x32,0x31,0x38,0x30,0x38,0x5A,0x30,0x70,0x31,0x0B,0x30,0x09,0x06,0x03,0x55,0x04,0x06,0x13,0x02,0x55,0x53,0x31,0x13,0x30,0x11,0x06,0x03,0x55,0x04,0x0A,0x0C,0x0A,0x41,0x70,0x70,0x6C,0x65,0x20,0x49,0x6E,0x63,0x2E,0x31,0x1F,0x30,0x1D,0x06,0x03,0x55,0x04,0x0B,0x0C,0x16,0x41,0x70,0x70,0x6C,0x65,0x20,0x69,0x50,0x6F,0x64,0x20,0x41,0x63,0x63,0x65,0x73,0x73,0x6F,0x72,0x69,0x65,0x73,0x31,0x2B,0x30,0x29,0x06,0x03,0x55,0x04,0x03,0x0C,0x22,0x49,0x50,0x41,0x5F,0x32,0x32,0x32,0x32,0x41,0x41,0x31,0x36,0x30,0x33,0x31,0x37,0x41,0x41,0x30,0x36,0x41,0x41,0x39,0x31,0x39,0x32,0x41,0x41,0x31,0x33,0x37,0x39,0x30,0x36,0x30,0x81,0x9F,0x30,0x0D,0x06,0x09,0x2A,0x86,0x48,0x86,0xF7,0x0D,0x01,0x01,0x01,0x05,0x00,0x03,0x81,0x8D,0x00,0x30,0x81,0x89,0x02,0x81,0x81,0x00,0x90,0x27,0x5E,0xB3,0x05,0xF9,0xD3,0x11,0xC6,0x92,0x4A,0xAF,0x49,0x1B,0x33,0x33,0x21,0x84,0x28,0x54,0x95,0x69,0x8C,0xD9,0xFB,0x28,0x02,0x86,0xED,0xA0,0xAA,0xAA,0x7F,0x2D,0xF8,0x11,0xF5,0x13,0xDE,0xD4,0x7E,0x2D,0xFD,0x73,0xC9,0x8E,0xDA,0x62,0x57,0x1A,0x8B,0x0F,0x0E,0xF8,0x14,0x58,0x4B,0xDC,0xB5,0x3D,0xEB,0xAD,0xDF,0x97,0x96,0xA8,0x97,0xD0,0xD1,0xDB,0x8D,0x76,0x05,0xA9,0xA8,0x66,0xA2,0x45,0x42,0xB4,0x99,0xC9,0x6F,0x57,0x1B,0xEF,0x61,0xE7,0x24,0x6A,0x6D,0x0A,0x38,0xF4,0x77,0x67,0x12,0x90,0x0B,0x26,0xD4,0x99,0xA6,0x50,0x7D,0x5D,0xA6,0x70,0x10,0x56,0xEA,0xBC,0x90,0xD4,0x91,0x0C,0x9E,0x6C,0xD5,0x0E,0xF3,0xDA,0xCF,0x3A,0x77,0x37,0x94,0xB1,0x02,0x03,0x01,0x00,0x01,0xA3,0x60,0x30,0x5E,0x30,0x1D,0x06,0x03,0x55,0x1D,0x0E,0x04,0x16,0x04,0x14,0xFC,0x5A,0x9A,0x24,0x4C,0xE8,0x92,0xE9,0xE8,0xE8,0x63,0xFA,0xAD,0x1F,0xBE,0xFA,0x06,0x55,0x8A,0xE9,0x30,0x0C,0x06,0x03,0x55,0x1D,0x13,0x01,0x01,0xFF,0x04,0x02,0x30,0x00,0x30,0x1F,0x06,0x03,0x55,0x1D,0x23,0x04,0x18,0x30,0x16,0x80,0x14,0xFF,0x4B,0x1A,0x43,0x9A,0xF5,0x19,0x96,0xAB,0x18,0x00,0x2B,0x61,0xC9,0xEE,0x40,0x9D,0x8E,0xC7,0x04,0x30,0x0E,0x06,0x03,0x55,0x1D,0x0F,0x01,0x01,0xFF,0x04,0x04,0x03,0x02,0x03,0xB8,0x30,0x0D,0x06,0x09,0x2A,0x86,0x48,0x86,0xF7,0x0D,0x01,0x01,0x05,0x05,0x00,0x03,0x82,0x01,0x01,0x00,0x5E,0x9B,0x19,0xFC,0x0E,0x71,0xD7,0x5F,0x9B,0x3D,0xB9,0x3C,0x77,0xFA,0xF9,0xF9,0x03,0x32,0xFC,0x61,0xCE,0xCD,0x07,0x00,0x9A,0xA7,0x20,0x16,0xD2,0x4D,0x67,0x17,0x1D,0x2C,0x2B,0x27,0x9A,0x2C,0xE3,0x29,0x92,0x0B,0x13,0x26,0xE6,0x9E,0x83,0x13,0x65,0xA4,0x76,0xD6,0x55,0x15,0xDB,0x37,0xDE,0x7D,0x39,0xD9,0xBA,0x35,0xA5,0x6F,0xCA,0xC5,0x5F,0xD7,0xD1,0x79,0x08,0x27,0xD2,0x54,0x4E,0xDC,0x58,0x14,0xC1,0x86,0xBD,0x1E,0x59,0xFA,0x63,0x0E,0xB6,0x67,0xC4,0x56,0x0F,0x03,0xC1,0x11,0xE4,0x37,0x8C,0xA8,0x71,0x79,0x4E,0x48,0xA1,0x30,0xE3,0x64,0x2B,0x4C,0x7B,0x67,0xC8,0x81,0xF1,0x87,0x6C,0x24,0x4E,0xA4,0xAF,0x40,0xD5,0xCA,0xA3,0x3B,0x2C,0x17,0x9E,0xED,0xB7,0x51,0x74,0xC0,0x22,0x8A,0x49,0x0E,0xA5,0xB6,0x6A,0xD7,0xCF,0x49,0x4D,0x0A,0xFF,0x14,0xD1,0x45,0xCC,0xCC,0x03,0x99,0xEC,0xE7,0x23,0x72,0x69,0x1D,0xD6,0xB9,0xA3,0x60,0x81,0xB3,0x6A,0x07,0xFF,0xF2,0x95,0x8E,0x61,0xAE,0x45,0x44,0x55,0xB8,0x47,0xB5,0xD7,0x2A,0x2C,0x4D,0xEC,0xA6,0xB3,0x81,0xE7,0x9E,0xE1,0x1A,0x1D,0x1D,0x74,0x3F,0xEA,0x23,0x75,0x15,0xC9,0x17,0x39,0x26,0x67,0xD9,0x82,0x23,0xDE,0xC6,0xF8,0x4A,0x32,0x5F,0x58,0x35,0x5E,0x01,0xDE,0xC4,0x9A,0xDD,0xBF,0x2B,0x29,0xEC,0xC8,0x89,0x08,0xDB,0x09,0xF9,0x9B,0xE1,0x89,0x7C,0x65,0x66,0x9B,0xF0,0xA9,0xEE,0x10,0xE6,0xCF,0xCE,0xA8,0x00,0xC2,0xE4,0xBF,0xCB,0xD5,0x48,0x20,0xFD,0xE6,0x13,0x31,0x00,0xB0;
步骤106-3:苹果设备对证书响应数据中的证书进行验证,如验证成功则执行步骤106-4,如验证失败则报错,结束;
具体的,在本实施例中,步骤106-3包括:苹果设备使用保存的公钥对证书响应数据中的证书中的签名值进行解密得到第一解密值,对证书中的待签名数据进行哈希运算得到第一哈希值,判断第一哈希值与第一解密值是否相同,是则证书验证成功,执行步骤106-4,否则验证失败,报错,结束;
步骤106-4:苹果设备生成挑战值,根据挑战值生成挑战指令并发送给外接设备;
例如,本实施例中的挑战指令为:0xFF,0x5A,0x00,0x28,0x40,0xE9,0x1D,
0x01,0x38,0x40,0x40,0x00,0x1E,0xAA,0x02,0x00,0x18,0x00,0x00,0xDF,0x5B,0x69,0xEE,0x43,0xF7,0x14,0xA4,0x70,0x6E,0x60,0xCF,0xD6,0x04,0x52,0x1F,0x07,0x5C,0xCC,0xD7,0xBD;
步骤106-5:外接设备通过USB接口接收挑战指令,解析挑战指令并将解析得到的挑战值发送给内部认证芯片,从内部认证芯片中读取挑战值签名结果,根据挑战值签名结果生成挑战响应数据并存储到发送缓存中,通过USB接口将发送缓存中的挑战响应数据返回给苹果设备;
例如,本实施例中的读取的挑战响应数据为:0xFF,0x5A,0x00,0x94,0x40,
0x1E,0xE9,0x01,0xCB,0x40,0x40,0x00,0x8A,0xAA,0x03,0x00,0x84,0x00,0x00,0x00,0xE5,0xA8,0x3D,0xB7,0x1B,0xE3,0x66,0xE4,0xDE,0xA4,0x5E,0xD4,0x33,0xE5,0x4E,0x7B,0x90,0x6E,0xE3,0x9B,0x33,0x93,0x4A,0x14,0xCA,0xF3,0xA7,0xD3,0x6B,0xDE,0x1E,0x0E,0x14,0x66,0x37,0x68,0x72,0xD1,0x76,0x7D,0x36,0xDC,0x9D,0x44,0x88,0x3D,0x55,0xAD,0x3D,0xCD,0xCE,0x84,0xC2,0x50,0xCF,0x5E,0x81,0xCB,0xA6,0xBB,0xB0,0x78,0x64,0xCE,0x91,0x99,0xD3,0xD0,0x23,0x48,0x67,0xA5,0xD4,0x00,0x6B,0x07,0x7A,0x6B,0xFE,0x7E,0xA7,0x17,0xEB,0x36,0xF3,0x56,0xC7,0x35,0x46,0x5D,0xF6,0x46,0x96,0x72,0xC3,0x28,0xF5,0x16,0xC3,0x95,0x55,0x96,0x00,0xC9,0x5D,0xAF,0x09,0xF0,0x69,0x7A,0xC5,0xF9,0xBB,0x10,0x4E,0xB4,0x00,0xE8,0xED,0x16,0x77,0xBE,0xCC,0xDF,0x99,0x61,0x65,0xDB;
步骤106-6:苹果设备对挑战响应数据中的挑战值签名结果进行验证,如验证成功则执行步骤106-7,如验证失败则报错,结束;
具体的,在本实施例中,步骤106-6包括:苹果设备使用保存的公钥对挑战响应数据中的挑战值签名结果进行解密得到第二解密值,对挑战响应数据中的挑战值进行哈希运算得到第二哈希值,判断第二解密值是否与第二哈希值相同,是则验证成功,执行步骤106-7,否则验证失败,报错,结束;
步骤106-7:苹果设备给外接设备发送认证成功信息;
例如,本实施例中的认证成功信息为:0xFF,0x5A,0x00,0x10,0x40,0xEA,
0x1E,0x01,0x4E,0x40,0x40,0x00,0x06,0xAA,0x05,0xCB;
步骤107:苹果设备给外接设备发送设备鉴别指令;
例如,本实施例中的设备鉴别指令为0xFF,0x5A,0x00,0x10,0x40,0x57,
0xDC,0x01,0x23,0x40,0x40,0x00,0x06,0x1D,0x00,0x5D;
步骤108:外接设备通过USB接口接收鉴别指令,组织鉴别响应并并存储到发送缓存中,通过USB接口将发送缓存中的鉴别响应返回给苹果设备;
例如,本实施例中的给苹果设备返回的鉴定响应为:0xFF,0x5A,
0x01,0x10,0x40,0xDD,0x57,0x01,0x21,0x40,0x40,0x01,0x06,0x1D,0x01,0x00,0x10,0x00,0x00,0x69,0x65,0x50,0x61,0x73,0x73,0x46,0x49,0x44,0x4F,0x32,0x00,0x00,0x10,0x00,0x01,0x69,0x65,0x50,0x61,0x73,0x73,0x46,0x49,0x44,0x4F,0x32,0x00,0x00,0x0C,0x00,0x02,0x46,0x65,0x69,0x74,0x69,0x61,0x6E,0x00,0x00,0x15,0x00,0x03,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x00,0x00,0x0A,0x00,0x04,0x31,0x2E,0x30,0x2E,0x30,0x00,0x00,0x0A,0x00,0x05,0x31,0x2E,0x30,0x2E,0x30,0x00,0x00,0x0A,0x00,0x06,0x68,0x00,0x68,0x02,0x68,0x03,0x00,0x0A,0x00,0x07,0xEA,0x00,0xEA,0x01,0x68,0x01,0x00,0x05,0x00,0x08,0x00,0x00,0x06,0x00,0x09,0x00,0x32,0x00,0x29,0x00,0x0A,0x00,0x05,0x00,0x00,0x00,0x00,0x1B,0x00,0x01,0x63,0x6F,0x6D,0x2E,0x66,0x74,0x73,0x61,0x66,0x65,0x2E,0x69,0x65,0x50,0x61,0x73,0x73,0x46,0x49,0x44,0x4F,0x32,0x00,0x00,0x05,0x00,0x02,0x01,0x00,0x0F,0x00,0x0B,0x53,0x34,0x37,0x54,0x34,0x55,0x45,0x53,0x50,0x33,0x00,0x00,0x07,0x00,0x0C,0x65,0x6E,0x00,0x00,0x07,0x00,0x0D,0x65,0x6E,0x00,0x00,0x26,0x00,0x10,0x00,0x06,0x00,0x00,0x00,0x00,0x00,0x18,0x00,0x01,0x4C,0x69,0x67,0x68,0x74,0x6E,0x69,0x6E,0x67,0x20,0x43,0x6F,0x6E,0x6E,0x65,0x63,0x74,0x6F,0x72,0x00,0x00,0x04,0x00,0x02,0x00,0x20,0x00,0x12,0x00,0x06,0x00,0x00,0x00,0x01,0x00,0x11,0x00,0x01,0x55,0x73,0x62,0x20,0x4B,0x65,0x79,0x62,0x6F,0x61,0x72,0x64,0x00,0x00,0x05,0x00,0x02,0x00,0xA4;
步骤109:苹果设备提示用户在外接设备上按下按键;
步骤110:当外接设备检测到用户按下按键时生成键值数据,根据预设的HID标识组织开始命令并存储到发送缓存中,将发送标识设为第一预设值;
本实施例中的开始命令用于申明外接设备为键盘设备;预设的HID标识包括HID识别码和HID报告描述符;
例如,本实施例中的外接设备如为OTP,则生成键值数据具体为:根据种子数据和/或动态因子生成动态口令作为键值数据;
步骤111:当外接设备通过USB接口接收到苹果设备发送的数据请求时,判断发送标识是否为第一预设值,是则通过USB接口将发送缓存中的开始命令发送给苹果设备并清空发送缓存,等待接收苹果设备持续发送的数据请求;当外接设备检测到发送缓存被清空时根据键值数据生成附属报告命令并存储到发送缓存中,将发送标识设为第二预设值,执行步骤112;否则通过USB接口给苹果设备返回响应数据;
在本实施例中,步骤111中的根据键值数据生成附属报告命令并存储到发送缓存中具体为:将键值数据转换为按键信息,根据键值信息生成附属报告命令并存储到发送缓存中;
例如,本实施例中的开始命令为:0xFF, 0x5A, 0x00, 0x65, 0x40, 0x41, 0xE9,0x0A, 0xCE, 0x40, 0x40, 0x00, 0x5B, 0x68, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00,0x01, 0x00, 0x06, 0x00, 0x01, 0x10, 0x50, 0x00, 0x06, 0x00, 0x02, 0x04, 0x20,0x00, 0x43, 0x00, 0x04, 0x05, 0x01, 0x09, 0x06, 0xA1, 0x01, 0x05, 0x07, 0x19,0xE0, 0x29, 0xE7, 0x15, 0x00, 0x25, 0x01, 0x75, 0x01, 0x95, 0x08, 0x81, 0x02,0x95, 0x01, 0x75, 0x08, 0x81, 0x01, 0x95, 0x05, 0x75, 0x01, 0x05, 0x08, 0x19,0x01, 0x29, 0x05, 0x91, 0x02, 0x95, 0x01, 0x75, 0x03, 0x91, 0x01, 0x95, 0x06,0x75, 0x08, 0x15, 0x00, 0x25, 0x65, 0x05, 0x07, 0x19, 0x00, 0x29, 0x65, 0x81,0x00, 0xC0, 0x67;
步骤112:苹果设备接收到开始命令后将软键盘退出,苹果设备继续向外接设备发送数据请求;
步骤113:当外接设备通过USB接口接收到苹果设备发送的数据请求时,判断发送标识是否为第二预设值,是则通过USB接口将发送缓存中的附属报告命令发送给苹果设备并清空发送缓存,等待接收苹果设备持续发送的数据请求;当外接设备检测到发送缓存被清空时组织结束命令并存储到发送缓存中,将发送标识设为第三预设值,执行步骤114;否则通过USB接口给苹果设备返回响应数据;
在本实施例中,将键值数据转换为按键信息,具体为:键值数据1、2、3、4、5、6、7、8、9、0相应的转换为按键信息为0x1E、0x1F、0x20、0x21、0x22、0x23、0x24、0x25、0x26、0x27,另外,根据USB键盘协议,每一个按键信息对应的抬键信息为0x00;外接设备的USB接口将按键信息和抬键信息以包的形式发送给苹果设备,苹果设备只有收到按键信息和抬键信息后,才能识别到一次完整的按键过程,并相应地显示该按键信息;其中,按键信息和抬键信息的组包格式为|Modifier key | Reserved | Keycode1 | Keycode2 | Keycode3 |Keycode4 | Keycode5 | Keycode6 |;组包格式中可以有1-6任意个数的键值信息,外接设备通过USB接口将按键信息的数据包发送给苹果设备,是将包含一个按键信息组成的数据包多次发送给苹果设备,或将包含多个按键信息组成的数据包一次或多次发送给苹果设备;按键信息在附属报告命令中的位置为从低位起的第2位至第9位;
例如,本实施例中的键值数据为123456,6位键值数据根据USB键盘协议转换为按键信息分别为:
键值数据1对应按键信息0x1E,对应的数据包为:0x00,0x00,0x1E,0x00,0x00,0x00,0x00,0x00;
键值数据2对应按键信息0x1F,对应的数据包为:0x00,0x00,0x1F,0x00,0x00,0x00,0x00,0x00;
键值数据3对应按键信息0x20,对应的数据包为:0x00,0x00,0x20,0x00,0x00,0x00,0x00,0x00;
键值数据4对应按键信息0x21,对应的数据包为:0x00,0x00,0x21,0x00,0x00,0x00,0x00,0x00;
键值数据5对应按键信息0x22,对应的数据包为:0x00,0x00,0x22,0x00,0x00,0x00,0x00,0x00;
键值数据6对应按键信息0x23,对应的数据包为:0x00,0x00,0x23,0x00,0x00,0x00,0x00,0x00;
抬键信息为0x00,数据包为0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00;
则生成的12条附属报告命令为:
0xFF,0x5A,0x00,0x22,0x40,0x2B,0xD8,0x01,0x41,0x40,0x40,0x00,0x18,0x68,0x02,0x00,0x06,0x00,0x00,0x00,0x01,0x00,0x0C,0x00,0x01,0x00,0x00,0x1E,0x00,0x00,0x00,0x00,0x00,0xCC;
0xFF,0x5A,0x00,0x22,0x40,0x2C,0xD8,0x01,0x40,0x40,0x40,0x00,0x18,0x68,0x02,0x00,0x06,0x00,0x00,0x00,0x01,0x00,0x0C,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xEA;
0xFF,0x5A,0x00,0x22,0x40,0x2D,0xD8,0x01,0x3F,0x40,0x40,0x00,0x18,0x68,0x02,0x00,0x06,0x00,0x00,0x00,0x01,0x00,0x0C,0x00,0x01,0x00,0x00,0x1F,0x00,0x00,0x00,0x00,0x00,0xCB;
0xFF,0x5A,0x00,0x22,0x40,0x2E,0xD8,0x01,0x3E,0x40,0x40,0x00,0x18,0x68,0x02,0x00,0x06,0x00,0x00,0x00,0x01,0x00,0x0C,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xEA;
0xFF,0x5A,0x00,0x22,0x40,0x2F,0xD8,0x01,0x3D,0x40,0x40,0x00,0x18,0x68,0x02,0x00,0x06,0x00,0x00,0x00,0x01,0x00,0x0C,0x00,0x01,0x00,0x00,0x20,0x00,0x00,0x00,0x00,0x00,0xCA;
0xFF,0x5A,0x00,0x22,0x40,0x30,0xD8,0x01,0x3C,0x40,0x40,0x00,0x18,0x68,0x02,0x00,0x06,0x00,0x00,0x00,0x01,0x00,0x0C,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xEA;
0xFF,0x5A,0x00,0x22,0x40,0x31,0xD8,0x01,0x3B,0x40,0x40,0x00,0x18,0x68,0x02,0x00,0x06,0x00,0x00,0x00,0x01,0x00,0x0C,0x00,0x01,0x00,0x00,0x21,0x00,0x00,0x00,0x00,0x00,0xC9;
0xFF,0x5A,0x00,0x22,0x40,0x32,0xD8,0x01,0x3A,0x40,0x40,0x00,0x18,0x68,0x02,0x00,0x06,0x00,0x00,0x00,0x01,0x00,0x0C,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xEA;
0xFF,0x5A,0x00,0x22,0x40,0x33,0xD8,0x01,0x39,0x40,0x40,0x00,0x18,0x68,0x02,0x00,0x06,0x00,0x00,0x00,0x01,0x00,0x0C,0x00,0x01,0x00,0x00,0x22,0x00,0x00,0x00,0x00,0x00,0xC8;
0xFF,0x5A,0x00,0x22,0x40,0x34,0xD8,0x01,0x38,0x40,0x40,0x00,0x18,0x68,0x02,0x00,0x06,0x00,0x00,0x00,0x01,0x00,0x0C,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xEA;
0xFF,0x5A,0x00,0x22,0x40,0x35,0xD8,0x01,0x37,0x40,0x40,0x00,0x18,0x68,0x02,0x00,0x06,0x00,0x00,0x00,0x01,0x00,0x0C,0x00,0x01,0x00,0x00,0x23,0x00,0x00,0x00,0x00,0x00,0xC7;
0xFF,0x5A,0x00,0x22,0x40,0x36,0xD8,0x01,0x36,0x40,0x40,0x00,0x18,0x68,0x02,0x00,0x06,0x00,0x00,0x00,0x01,0x00,0x0C,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xEA;
在本实施例中,如外接设备的USB接口每次发送1位按键信息,则向苹果设备发送按键信息的具体过程为:外接设备的USB接口首先将按键1的按键信息(0xFF,0x5A,0x00,0x22,0x40,0x2B,0xD8,0x01,0x41,0x40,0x40,0x00,0x18,0x68,0x02,0x00,0x06,0x00,0x00,0x00,0x01,0x00,0x0C,0x00,0x01,0x00,0x00,0x1E,0x00,0x00,0x00,0x00,0x00,0xCC)和抬键信息(0xFF,0x5A,0x00,0x22,0x40,0x2C,0xD8,0x01,0x40,0x40,0x40,0x00,0x18,0x68,0x02,0x00,0x06,0x00,0x00,0x00,0x01,0x00,0x0C,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xEA)分别以包的形式发送给苹果设备,苹果设备识别到按键1,苹果设备持续向外接设备发送数据请求,外接设备的USB接口接收到数据请求时再将按键2的按键信息(0xFF,0x5A,0x00,0x22,0x40,0x2F,0xD8,0x01,0x3D,0x40,0x40,0x00,0x18,0x68,0x02,0x00,0x06,0x00,0x00,0x00,0x01,0x00,0x0C,0x00,0x01,0x00,0x00,0x20,0x00,0x00,0x00,0x00,0x00,0xCA )和抬键信息(0xFF,0x5A,0x00,0x22,0x40,0x2E,0xD8,0x01,0x3E,0x40,0x40,0x00,0x18,0x68,0x02,0x00,0x06,0x00,0x00,0x00,0x01,0x00,0x0C,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xEA )分别以包的形式发送给苹果设备,苹果设备识别到按键2,这样,外接设备依次连续地将后续的按键3456发送给苹果设备,苹果设备最终识别到完成的按键信息123456,由于发送速度非常快,所以用户看到的是完整的按键信息123456;
如外接设备的USB接口每次发送2位按键信息,则向苹果设备发送按键信息的具体过程为:外接设备的USB接口首先将按键1和2的按键信息(0xFF,0x5A,0x00,0x22,0x40,0x2B,0xD8,0x01,0x41,0x40,0x40,0x00,0x18,0x68,0x02,0x00,0x06,0x00,0x00,0x00,0x01,0x00,0x0C,0x00,0x01,0x00,0x00,0x1E,0x1F,0x00,0x00,0x00,0x00,0xCC)和抬键信息(0xFF,0x5A,0x00,0x22,0x40,0x2C,0xD8,0x01,0x40,0x40,0x40,0x00,0x18,0x68,0x02,0x00,0x06,0x00,0x00,0x00,0x01,0x00,0x0C,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xEA)分别以包的形式发送给苹果设备,苹果设备识别到按键12;苹果设备持续向外接设备发送数据请求,外接设备的USB接口接收到数据请求时再将按键3和4的按键信息(0xFF,0x5A,0x00,0x22,0x40,0x2F,0xD8,0x01,0x3D,0x40,0x40,0x00,0x18,0x68,0x02,0x00,0x06,0x00,0x00,0x00,0x01,0x00,0x0C,0x00,0x01,0x00,0x00,0x20,0x21,0x00,0x00,0x00,0x00,0xCA )和抬键信息(0xFF,0x5A,0x00,0x22,0x40,0x2E,0xD8,0x01,0x3E,0x40,0x40,0x00,0x18,0x68,0x02,0x00,0x06,0x00,0x00,0x00,0x01,0x00,0x0C,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xEA )分别以包的形式发送给苹果设备,苹果设备识别到按键3和4,这样,外接设备依次连续地将后续的按键5、6发送给苹果设备,苹果设备最终识别到完成的按键信息123456;
如外接设备的USB接口每次发送6位按键信息,则向苹果设备发送按键信息的具体过程为:外接设备的USB接口将按键1、2、3、4、5、6的按键信息(0xFF,0x5A,0x00,0x22,0x40,0x2B,0xD8,0x01,0x41,0x40,0x40,0x00,0x18,0x68,0x02,0x00,0x06,0x00,0x00,0x00,0x01,0x00,0x0C,0x00,0x01,0x00,0x00,0x1E,0x1F,0x20,0x21,0x22,0x23,0xCC)和抬键信息(0xFF,0x5A,0x00,0x22,0x40,0x2C,0xD8,0x01,0x40,0x40,0x40,0x00,0x18,0x68,0x02,0x00,0x06,0x00,0x00,0x00,0x01,0x00,0x0C,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xEA)分别以包的形式发送给苹果设备,苹果设备识别到按键123456;苹果设备识别到完成的按键信息123456;
步骤114:苹果设备接收到附属报告命令后显示附属报告命令中的键值数据,苹果设备继续向外接设备发送数据请求;
步骤115:当外接设备通过USB接口接收到苹果设备发送的数据请求时,判断发送标识是否为第三预设值,是则通过USB接口将发送缓存中的结束命令发送给苹果设备并清空发送缓存和发送标识,等待接收苹果设备发送的数据,执行步骤116;否则通过USB接口给苹果设备返回响应数据;
步骤116:苹果设备接收到结束命令后重新弹出软键盘;
例如,本实施例中的结束命令为:0xFF, 0x5A, 0x00, 0x16, 0x40, 0x9C, 0xE9,0x0A, 0xC2, 0x40, 0x40, 0x00, 0x0C, 0x68, 0x03, 0x00, 0x06, 0x00, 0x00, 0x00,0x01, 0x02。
可选的,本实施例中的外接设备可为具有OTP功能的设备;
在本实施例中,步骤109可替换为:苹果设备的应用浏览器提示用户输入键值数据;
相应的,步骤113中的苹果设备接收到附属报告命令后显示附属报告命令中的键值数据可替换为:苹果设备接收到附属报告命令后将附属报告命令中的键值数据发送给浏览器,浏览器接收到键值数据后进行相应操作;
具体的,浏览器接收到键值数据后进行相应操作,可以为:浏览器对根据键值数据对用户身份进行验证,即解析键值数据得到动态口令,生成动态口令,判断解析得到的动态口令是否与生成的动态口令相同,是则验证成功,否则验证失败。
在本实施例中,如外接设备通过USB接口接收到苹果设备发送的数据请求时未检测到发送标识(或发送标识为默认值)则通过USB接口给苹果设备返回响应数据。
通过本实施例方法动态实现外接设备模拟键盘的功能,减少外接设备模拟的键盘与苹果设备软键盘的冲突以及苹果设备的负担。同时外接设备还可以具有其他功能,比如认证器、U盘等,方便用户使用。
实施例四
本发明实施例四提供一种外接设备模拟键盘的实现装置,本实施例的装置与苹果设备连接工作,如图4所示,本实施例的装置包括:
连接接收返回模块41,用于实现外接设备与苹果设备之间的连接,等待并接收苹果设备持续发送的数据请求,当通过USB接口接收到苹果设备发送的数据请求且发送缓存中无数据时通过USB接口给苹果设备返回响应数据;
第一检测组织存储模块42,用于当连接接收返回模块41等待接收苹果设备持续发送的数据请求的过程中如检测到用户按下按键时生成键值数据,根据预设的HID标识组织开始命令并存储到发送缓存中,将发送标识设为第一预设值;
在本实施例中,开始命令用于申明外接设备为键盘设备;预设的HID标识包括HID识别码和HID报告描述符;
第一接收判断发送模块43,用于当通过USB接口接收到苹果设备发送的数据请求时,判断发送标识是否为第一预设值,是则通过USB接口将发送缓存中的开始命令发送给苹果设备并清空发送缓存,等待接收苹果设备持续发送的数据请求,触发检测生成存储模块44,否则通过USB接口给苹果设备返回响应数据;
检测生成存储模块44,用于当检测到发送缓存被清空时根据键值数据生成附属报告命令并存储到发送缓存中,将发送标识设为第二预设值;
在本实施例中,检测生成存储模块44具体用于当检测到发送缓存被清空时将键值数据转换为按键信息,根据键值信息生成附属报告命令并存储到发送缓存中;
第二接收判断发送模块45,用于当通过USB接口接收到苹果设备发送的数据请求时,判断发送标识是否为第二预设值,是则通过USB接口将发送缓存中的附属报告命令发送给苹果设备并清空发送缓存,等待接收苹果设备持续发送的数据请求,触发第二检测组织存储模块46,否则通过USB接口给苹果设备返回响应数据;
第二检测组织存储模块46,用于当检测到发送缓存被清空时组织结束命令并存储到发送缓存中,将发送标识设为第三预设值;
第三接收判断发送模块47,用于当通过USB接口接收到苹果设备发送的数据请求时,判断发送标识是否为第三预设值,是则通过USB接口将发送缓存中的结束命令发送给苹果设备并清空发送缓存和发送标识,等待接收苹果设备持续发送的数据请求,否则通过USB接口给苹果设备返回响应数据。
进一步地,本实施例的连接接收返回模块41具体用于当通过Lighting接口与苹果设备物理连接之后,进行硬件系统初始化;接收苹果设备持续发送的数据请求,当通过USB接口接收到苹果设备发送的数据请求且发送缓存中无数据时通过USB接口给苹果设备返回响应数据。
本实施例的连接接收返回模块41还用于将检测指令存储到发送缓存中;
相应的,本实施例的装置还包括:
第四接收判断发送模块,用于当通过USB接口接收到苹果设备发送的数据请求时,判断发送缓存中是否有数据,是则通过USB接口将发送缓存中的检测指令发送给苹果设备并接收苹果设备发送的支持认证协议信息,与苹果设备协商同步包数据,否则通过USB接口给苹果设备返回响应数据;
接收组织发送模块,用于当通过USB接口接收到苹果设备发送的认证成功信息和设备鉴别指令时,组织鉴别响应并存储到发送缓存中,通过USB接口将发送缓存中的鉴别响应返回给苹果设备。
可选的,本实施例中的装置还包括:
接收读取发送模块,用于当通过USB接口接收到苹果设备发送的获取证书指令时,从内部认证芯片中读取证书并存储到发送缓存中,通过USB接口将发送缓存中的证书返回给苹果设备;
解析读取发送模块,用于当通过USB接口接收到苹果设备发送的挑战指令时,解析挑战指令并将解析得到的挑战值发送给内部认证芯片,从内部认证芯片中读取挑战值签名结果并存储到发送缓存中,通过USB接口将发送缓存中的挑战值签名结果返回给苹果设备。
进一步地,本实施例中的检测生成存储模块44,具体用于当检测到发送缓存被清空时将键值数据转换为按键信息,根据按键信息生成附属报告命令并存储到发送缓存中。
实施例五
本发明实施例五提供一种外接设备模拟键盘的实现系统,如图5所示,包括苹果设备1和外接设备2,苹果设备1包括:连接发送模块11、认证模块12、提示模块13、接收退出发送模块14、接收显示发送模块15和接收重弹模块16,外接设备2包括:第一接收返回模块21、第一检测组织存储模块22、第一接收判断发送模块23、检测生成存储模块24、第二接收判断发送模块25、第二检测组织存储模块26和第三接收判断发送模块27;
连接发送模块11,用于实现苹果设备与外接设备2之间的连接,持续向外接设备2发送数据请求;
第一接收返回模块21,用于当通过USB接口接收到苹果设备1发送的数据请求且发送缓存中无数据时通过USB接口给苹果设备1返回响应数据;
认证模块12,用于对外接设备2进行认证,如认证成功则触发提示模块,否则报错,结束;
提示模块13,用于提示用户在外接设备2上按下按键;
第一检测组织存储模块22,用于当检测到用户按下按键时生成键值数据,根据预设的HID标识组织开始命令并存储到发送缓存中,将发送标识设为第一预设值,触发第一接收判断发送模块23;
在本实施例中,开始命令用于申明外接设备2为键盘设备;预设的HID标识包括HID识别码和HID报告描述符;
第一接收判断发送模块23,用于当通过USB接口接收到苹果设备1发送的数据请求时,判断发送标识是否为第一预设值,是则通过USB接口将发送缓存中的开始命令发送给苹果设备1并清空发送缓存,等待接收苹果设备1持续发送的数据请求,触发检测生成存储模块24;否则通过USB接口给苹果设备1返回响应数据;触发检测生成存储模块24;
检测生成存储模块24,用于当检测到发送缓存被清空时根据键值数据生成附属报告命令并存储到发送缓存中,将发送标识设为第二预设值;
接收退出发送模块14,用于接收到开始命令后将软键盘退出,向外接设备2发送数据请求,触发第二接收判断发送模块25;
第二接收判断发送模块25,用于当通过USB接口接收到苹果设备1发送的数据请求时,判断发送标识是否为第二预设值,是则通过USB接口将发送缓存中的附属报告命令发送给苹果设备1并清空发送缓存,等待接收苹果设备1持续发送的数据请求,触发第二检测组织存储模块26;否则通过USB接口给苹果设备1返回响应数据;
第二检测组织存储模块26,用于当检测到发送缓存被清空时组织结束命令并存储到发送缓存中,将发送标识设为第三预设值;
接收显示发送模块15,用于在接收到附属报告命令后显示附属报告命令中的键值数据,继续向外接设备2发送数据请求,触发第三接收判断发送模块27;
第三接收判断发送模块27,用于当通过USB接口接收到苹果设备1发送的数据请求时,判断发送标识是否为第三预设值,是则通过USB接口将发送缓存中的结束命令发送给苹果设备1并清空发送缓存和发送标识,等待接收苹果设备1发送的数据;否则通过USB接口给苹果设备1返回响应数据;
接收重弹模块16,用于接收到结束命令后重新弹出软键盘。
在本实施例中,苹果设备1还包括检测返回模块和第一发送模块,外接设备2还包括接收协商模块和接收组织存储模块;
检测返回模块,用于检测自身是否支持认证协议,是则给外接设备2返回支持认证协议信息,否则报错,结束;
接收协商模块,用于在通过USB接口接收到认证协议信息后,与苹果设备1协商同步包数据;
第一发送模块,用于在认证模块12对外接设备2进行认证成功之后,给外接设备2发送设备鉴别指令;
接收组织存储模块,用于在通过USB接口接收到鉴别指令后,组织鉴别响应并存储到发送缓存中,通过USB接口将发送缓存中的鉴别响应返回给苹果设备1;
提示模块,用于在接收到鉴别响应时提示用户在外接设备2上按下按键。
在本实施例,外接设备2还包括:
第一存储模块,用于在当苹果设备1与外接设备2建立连接之后将检测指令存储到发送缓存中;
检测返回模块具体用于当通过USB接口接收到苹果设备1发送的数据请求时,判断发送缓存中是否有数据,是则通过USB接口将发送缓存中的检测指令发送给苹果设备1,否则报错,结束;
苹果设备1还包括:第四接收判断返回模块,用于在接收到检测指令后判断自身是否支持认证协议,是则给外接设备2返回苹果设备1支持认证协议信息,触发接收协商模块,否则报错,结束。
更进一步地,第四接收判断返回模块具体用于在接收到检测指令后,判断自身支持的协议是否包括检测指令指定的认证协议,是则给外接设备2返回苹果设备1支持认证协议信息,触发接收协商模块,否则报错,结束。
具体的,在本实施例中,连接发送模块11包括:
连接初始化单元,用于与外接设备2通过Lighting接口进行物理连接,外接设备2进行硬件系统初始化;
枚举发送单元,用于进行USB枚举,USB枚举完成之后持续向外接设备2发送数据请求。
具体的,在本实施例中,认证模块12包括:第一发送单元、第一接收验证单元、生成发送单元和第二接收验证单元;外接设备2还包括:接收读取发送模块和解析读取发送模块;
第一发送单元,用于向外接设备2发送获取证书指令;
接收读取发送模块,用于当通过USB接口接收到苹果设备1发送的获取证书指令时,从内部认证芯片中读取证书并存储到发送缓存中,通过USB接口将发送缓存中的证书返回给苹果设备1;
第一接收验证单元,用于接收证书并进行验证,如验证成功则触发生成发送单元,如验证失败则报错,结束;
进一步地,第一接收验证单元具体用于使用保存的公钥对证书中的签名值进行解密得到第一解密值,对证书中的待签名数据进行哈希运算得到第一哈希值,判断第一哈希值与第一解密值是否相同,是则证书验证成功,触发生成发送单元,否则验证失败,报错,结束;
生成发送单元,用于生成挑战值,根据挑战值生成挑战指令并发送给外接设备2;
解析读取发送模块,用于当通过USB接口接收到苹果设备1发送的挑战指令时,解析挑战指令并将解析得到的挑战值发送给内部认证芯片,从内部认证芯片中读取挑战值签名结果并存储到发送缓存中,通过USB接口将发送缓存中的挑战值签名结果返回给苹果设备1;
第二接收验证单元,用于接收挑战值签名结果并进行验证,如验证成功则给外接设备2发送认证成功信息,如验证失败则报错,结束;
进一步地,第二接收验证单元具体用于接收挑战值签名结果并使用保存的公钥对挑战值签名结果进行解密得到第二解密值,对生成的挑战值进行哈希运算得到第二哈希值,判断第二解密值是否与第二哈希值相同,是则验证成功,给外接设备2发送认证成功信息,否则验证失败,报错,结束。
可选的,本实施例中的提示模块13还用于通过苹果设备1的应用浏览器提示用户输入键值数据;
接收显示发送模块15还用于在接收到附属报告命令后将附属报告命令中的键值数据发送给浏览器,浏览器接收到键值数据后进行相应操作,还用于继续向外接设备2发送数据请求。
通过本发明实施例的技术方案使外接设备与苹果设备连接时,外接设备既能模拟键盘,而苹果软键盘又能正常使用,减少苹果设备的软键盘与外接设备模拟的键盘的冲突以及苹果设备的负担,方便用户使用。
以上所述,仅为本发明较佳的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明公开的技术范围内,可轻易想到的变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应该以权利要求的保护范围为准。
Claims (20)
1.一种外接设备模拟键盘的实现方法,其特征在于,所述方法适用于包括苹果设备和外接设备的系统,所述方法包括:
步骤S1:苹果设备与外接设备建立连接,所述苹果设备持续向所述外接设备发送数据请求,当所述外接设备通过USB接口接收到所述苹果设备发送的数据请求且发送缓存中无数据时通过所述USB接口给所述苹果设备返回响应数据,所述苹果设备对所述外接设备进行认证,如认证成功则执行步骤S2,如认证失败则结束,报错;
步骤S2:所述苹果设备提示用户在所述外接设备上按下按键;当所述外接设备在等待接收所述苹果设备持续发送的数据请求的过程中如检测到用户按下按键时生成键值数据,根据预设的HID标识组织开始命令并存储到所述发送缓存中,将发送标识设为第一预设值,执行步骤S3;所述开始命令用于申明所述外接设备为键盘设备;
步骤S3:当所述外接设备通过所述USB接口接收到所述苹果设备发送的数据请求时,判断所述发送标识是否为第一预设值,是则通过所述USB接口将所述发送缓存中的开始命令发送给所述苹果设备并清空所述发送缓存,等待接收所述苹果设备持续发送的数据请求,当所述外接设备检测到所述发送缓存被清空时根据所述键值数据生成附属报告命令并存储到所述发送缓存中,将所述发送标识设为第二预设值,执行步骤S4;否则通过所述USB接口给所述苹果设备返回响应数据;
步骤S4:所述苹果设备接收到所述开始命令后将软键盘退出,所述苹果设备继续向所述外接设备发送数据请求,执行步骤S5;
步骤S5:当所述外接设备通过所述USB接口接收到所述苹果设备发送的数据请求时,判断所述发送标识是否为第二预设值,是则通过所述USB接口将所述发送缓存中的附属报告命令发送给所述苹果设备并清空所述发送缓存,等待接收所述苹果设备持续发送的数据请求;当所述外接设备检测到所述发送缓存被清空时组织结束命令并存储到所述发送缓存中,将所述发送标识设为第三预设值,执行步骤S6;否则通过所述USB接口给所述苹果设备返回响应数据;
步骤S6:所述苹果设备接收到所述附属报告命令后显示附属报告命令中的键值数据,所述苹果设备继续向所述外接设备发送数据请求,执行步骤S7;
步骤S7:当所述外接设备通过所述USB接口接收到所述苹果设备发送的数据请求时,判断所述发送标识是否为第三预设值,是则通过所述USB接口将所述发送缓存中的结束命令发送给所述苹果设备并清空所述发送缓存和所述发送标识,等待接收所述苹果设备发送的数据;否则通过所述USB接口给所述苹果设备返回响应数据;
步骤S8:所述苹果设备接收到结束命令后重新弹出软键盘。
2.如权利要求1所述的方法,其特征在于,所述步骤S1中所述苹果设备对所述外接设备进行认证之前还包括:
步骤E1:所述苹果设备检测自身是否支持认证协议,是则给所述外接设备返回支持认证协议信息,执行步骤E2,否则报错,结束;
步骤E2:所述外接设备通过所述USB接口接收到认证协议信息后,与所述苹果设备协商同步包数据;
所述步骤S1中的所述苹果设备对所述外接设备进行认证成功之后还包括:
步骤F1:所述苹果设备给所述外接设备发送设备鉴别指令,所述外接设备通过所述USB接口接收到鉴别指令后,组织鉴别响应并存储到所述发送缓存中,所述外接设备通过所述USB接口将所述发送缓存中的鉴别响应返回给所述苹果设备,执行步骤S2。
3.如权利要求2所述的方法,其特征在于,所述苹果设备与外接设备建立连接之后还包括:所述外接设备将检测指令存储到所述发送缓存中;
所述步骤E1包括:
步骤E11:当所述外接设备通过所述USB接口接收到所述苹果设备发送的数据请求时,判断所述发送缓存中是否有数据,是则通过所述USB接口将所述发送缓存中的检测指令发送给所述苹果设备,否则报错,结束;
步骤E12:所述苹果设备接收到所述检测指令后判断自身是否支持认证协议,是则给所述外接设备返回苹果设备支持认证协议信息,执行步骤E2,否则报错,结束。
4.如权利要求3所述的方法,其特征在于,所述步骤E12具体为:所述苹果设备接收到检测指令后,判断自身支持的协议是否包括所述检测指令指定的认证协议,是则给所述外接设备返回苹果设备支持认证协议信息,执行步骤E2,否则报错,结束。
5.如权利要求1所述的方法,其特征在于,所述步骤S1中的所述苹果设备与外接设备建立连接,所述苹果设备持续向所述外接设备发送数据请求,包括:
步骤S11:所述苹果设备与所述外接设备通过Lighting接口进行物理连接,所述外接设备进行硬件系统初始化;
步骤S12:所述苹果设备进行USB枚举,USB枚举完成之后所述苹果设备持续向所述外接设备发送数据请求。
6.如权利要求1所述的方法,其特征在于,所述步骤S1中的所述苹果设备对所述外接设备进行认证,如认证成功则执行步骤S2,如认证失败则结束,报错,包括:
步骤A1:所述苹果设备向所述外接设备发送获取证书指令;
步骤A2:当所述外接设备通过所述USB接口接收到所述苹果设备发送的获取证书指令时,所述外接设备从内部认证芯片中读取证书并存储到所述发送缓存中,通过所述USB接口将所述发送缓存中的证书返回给所述苹果设备;
步骤A3:所述苹果设备对接收到的所述证书进行验证,如验证成功则执行步骤A4,如验证失败则报错,结束;
步骤A4:所述苹果设备生成挑战值,根据所述挑战值生成挑战指令并发送给所述外接设备;
步骤A5:当所述外接设备通过所述USB接口接收到所述苹果设备发送的挑战指令时,解析所述挑战指令并将解析得到的挑战值发送给所述内部认证芯片,从所述内部认证芯片中读取挑战值签名结果并存储到所述发送缓存中,通过所述USB接口将所述发送缓存中的挑战值签名结果返回给所述苹果设备;
步骤A6:所述苹果设备对接收到的所述挑战值签名结果进行验证,如验证成功则给所述外接设备发送认证成功信息,执行步骤S2,如验证失败则报错,结束。
7.如权利要求6所述的方法,其特征在于,所述步骤A3包括:所述苹果设备使用保存的公钥对所述证书中的签名值进行解密得到第一解密值,对所述证书中的待签名数据进行哈希运算得到第一哈希值,判断所述第一哈希值与所述第一解密值是否相同,是则证书验证成功,执行步骤A4,否则验证失败,报错,结束。
8.如权利要求6所述的方法,其特征在于,所述步骤A6包括:所述苹果设备使用保存的公钥对所述挑战值签名结果进行解密得到第二解密值,对生成的所述挑战值进行哈希运算得到第二哈希值,判断所述第二解密值是否与所述第二哈希值相同,是则验证成功,给所述外接设备发送认证成功信息,否则验证失败,报错,结束。
9.如权利要求1所述的方法,其特征在于,所述步骤S2中的所述苹果设备提示用户在所述外接设备上按下按键替换为:所述苹果设备的应用浏览器提示用户输入键值数据;
所述步骤S6替换为:所述苹果设备接收到所述附属报告命令后将所述附属报告命令中的键值数据发送给所述浏览器,所述浏览器接收到所述键值数据后进行相应操作,所述苹果设备继续向所述外接设备发送数据请求。
10.如权利要求1所述的方法,其特征在于,所述步骤S3中的当所述外接设备检测到所述发送缓存被清空时根据所述键值数据生成附属报告命令并存储到所述发送缓存中具体为:当所述外接设备检测到所述发送缓存被清空时将所述键值数据转换为按键信息,根据所述键值信息生成附属报告命令并存储到所述发送缓存中。
11.一种外接设备模拟键盘的实现系统,其特征在于,包括苹果设备和外接设备,所述苹果设备包括:连接发送模块、认证模块、提示模块、接收退出发送模块、接收显示发送模块和接收重弹模块,所述外接设备包括:第一接收返回模块、第一检测组织存储模块、第一接收判断发送模块、检测生成存储模块、第二接收判断发送模块、第二检测组织存储模块和第三接收判断发送模块;
所述连接发送模块,用于实现所述苹果设备与所述外接设备之间的连接,持续向所述外接设备发送数据请求;
所述第一接收返回模块,用于当通过USB接口接收到所述苹果设备发送的数据请求且发送缓存中无数据时通过所述USB接口给所述苹果设备返回响应数据;
所述认证模块,用于对所述外接设备进行认证,如认证成功则触发所述提示模块,如认证失败则报错,结束;
所述提示模块,用于提示用户在所述外接设备上按下按键;
所述第一检测组织存储模块,用于当检测到用户按下按键时生成键值数据,根据预设的HID标识组织开始命令并存储到所述发送缓存中,将发送标识设为第一预设值,触发所述第一接收判断发送模块;所述开始命令用于申明外接设备为键盘设备;
所述第一接收判断发送模块,用于当通过所述USB接口接收到所述苹果设备发送的数据请求时,判断所述发送标识是否为第一预设值,是则通过所述USB接口将所述发送缓存中的开始命令发送给所述苹果设备并清空所述发送缓存,等待接收所述苹果设备持续发送的数据请求,触发所述检测生成存储模块;否则通过所述USB接口给所述苹果设备返回响应数据;触发所述检测生成存储模块;
所述检测生成存储模块,用于当检测到所述发送缓存被清空时根据所述键值数据生成附属报告命令并存储到所述发送缓存中,将所述发送标识设为第二预设值;
所述接收退出发送模块,用于接收到所述开始命令后将软键盘退出,向所述外接设备发送数据请求,触发所述第二接收判断发送模块;
所述第二接收判断发送模块,用于当通过所述USB接口接收到所述苹果设备发送的数据请求时,判断所述发送标识是否为第二预设值,是则通过所述USB接口将所述发送缓存中的附属报告命令发送给所述苹果设备并清空所述发送缓存,等待接收所述苹果设备持续发送的数据请求,触发所述第二检测组织存储模块;否则通过所述USB接口给所述苹果设备返回响应数据;
所述第二检测组织存储模块,用于当检测到所述发送缓存被清空时组织结束命令并存储到所述发送缓存中,将所述发送标识设为第三预设值;
所述接收显示发送模块,用于在接收到所述附属报告命令后显示附属报告命令中的键值数据,继续向所述外接设备发送数据请求,触发所述第三接收判断发送模块;
所述第三接收判断发送模块,用于当通过所述USB接口接收到所述苹果设备发送的数据请求时,判断所述发送标识是否为第三预设值,是则通过所述USB接口将所述发送缓存中的结束命令发送给所述苹果设备并清空所述发送缓存和所述发送标识,等待接收所述苹果设备发送的数据;否则通过所述USB接口给所述苹果设备返回响应数据;
所述接收重弹模块,用于接收到结束命令后重新弹出软键盘。
12.如权利要求11所述的系统,其特征在于,所述苹果设备还包括检测返回模块和第一发送模块,所述外接设备还包括接收协商模块和接收组织存储模块;
所述检测返回模块,用于检测自身是否支持认证协议,是则给所述外接设备返回支持认证协议信息,否则报错,结束;
所述接收协商模块,用于在通过所述USB接口接收到认证协议信息后,与所述苹果设备协商同步包数据;
所述第一发送模块,用于在所述认证模块对所述外接设备进行认证成功之后,给所述外接设备发送设备鉴别指令;
所述接收组织存储模块,用于在通过所述USB接口接收到鉴别指令后,组织鉴别响应并存储到所述发送缓存中,通过所述USB接口将所述发送缓存中的鉴别响应返回给所述苹果设备;
所述提示模块,具体用于在接收到鉴别响应时提示用户在所述外接设备上按下按键。
13.如权利要求12所述的系统,其特征在于,所述外接设备还包括:
第一存储模块,用于在所述苹果设备与外接设备建立连接之后将检测指令存储到所述发送缓存中;
所述检测返回模块具体用于当通过所述USB接口接收到苹果设备发送的数据请求时,判断所述发送缓存中是否有数据,是则通过所述USB接口将所述发送缓存中的检测指令发送给所述苹果设备,否则报错,结束;
所述苹果设备还包括:第四接收判断返回模块,用于在接收到所述检测指令后判断自身是否支持认证协议,是则给所述外接设备返回苹果设备支持认证协议信息,触发所述接收协商模块,否则报错,结束。
14.如权利要求13所述的系统,其特征在于,所述第四接收判断返回模块具体用于在接收到检测指令后,判断自身支持的协议是否包括所述检测指令指定的认证协议,是则给所述外接设备返回苹果设备支持认证协议信息,触发所述接收协商模块,否则报错,结束。
15.如权利要求11所述的系统,其特征在于,所述连接发送模块包括:
连接初始化单元,用于与所述外接设备通过Lighting接口进行物理连接,所述外接设备进行硬件系统初始化;
枚举发送单元,用于进行USB枚举,USB枚举完成之后持续向所述外接设备发送数据请求。
16.如权利要求15所述的系统,其特征在于,所述认证模块包括:第一发送单元、第一接收验证单元、生成发送单元和第二接收验证单元;所述外接设备还包括:接收读取发送模块和解析读取发送模块;
所述第一发送单元,用于向所述外接设备发送获取证书指令;
所述接收读取发送模块,用于当通过所述USB接口接收到所述苹果设备发送的获取证书指令时,从内部认证芯片中读取证书并存储到所述发送缓存中,通过所述USB接口将所述发送缓存中的证书返回给所述苹果设备;
所述第一接收验证单元,用于接收所述证书并进行验证,如验证成功则触发所述生成发送单元,如验证失败则报错,结束;
所述生成发送单元,用于生成挑战值,根据所述挑战值生成挑战指令并发送给所述外接设备;
所述解析读取发送模块,用于当通过所述USB接口接收到所述苹果设备发送的挑战指令时,解析所述挑战指令并将解析得到的挑战值发送给所述内部认证芯片,从所述内部认证芯片中读取挑战值签名结果并存储到所述发送缓存中,通过所述USB接口将所述发送缓存中的挑战值签名结果返回给所述苹果设备;
所述第二接收验证单元,用于接收所述挑战值签名结果并进行验证,如验证成功则给所述外接设备发送认证成功信息,如验证失败则报错,结束。
17.如权利要求16所述的系统,其特征在于,所述第一接收验证单元具体用于使用保存的公钥对所述证书中的签名值进行解密得到第一解密值,对所述证书中的待签名数据进行哈希运算得到第一哈希值,判断所述第一哈希值与所述第一解密值是否相同,是则证书验证成功,触发所述生成发送单元,否则验证失败,报错,结束。
18.如权利要求16所述的系统,其特征在于,所述第二接收验证单元具体用于接收所述挑战值签名结果并使用保存的公钥对所述挑战值签名结果进行解密得到第二解密值,对生成的所述挑战值进行哈希运算得到第二哈希值,判断所述第二解密值是否与所述第二哈希值相同,是则验证成功,给所述外接设备发送认证成功信息,否则验证失败,报错,结束。
19.如权利要求11所述的系统,其特征在于,所述提示模块还用于通过所述苹果设备的应用浏览器提示用户输入键值数据;
所述接收显示发送模块还用于在接收到所述附属报告命令后将所述附属报告命令中的键值数据发送给所述浏览器,所述浏览器接收到所述键值数据后进行相应操作,还用于继续向所述外接设备发送数据请求。
20.如权利要求11所述的系统,其特征在于,所述检测生成存储模块具体用于当检测到所述发送缓存被清空时将所述键值数据转换为按键信息,根据所述键值信息生成附属报告命令并存储到所述发送缓存中。
Priority Applications (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011087524.0A CN111930184B (zh) | 2020-10-13 | 2020-10-13 | 一种外接设备模拟键盘的实现方法、装置及系统 |
US17/911,506 US12061567B2 (en) | 2020-10-13 | 2021-08-25 | Method, apparatus and system for implementing external device simulating keyboard |
PCT/CN2021/114604 WO2022078078A1 (zh) | 2020-10-13 | 2021-08-25 | 一种外接设备模拟键盘的实现方法、装置及系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011087524.0A CN111930184B (zh) | 2020-10-13 | 2020-10-13 | 一种外接设备模拟键盘的实现方法、装置及系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN111930184A CN111930184A (zh) | 2020-11-13 |
CN111930184B true CN111930184B (zh) | 2021-01-01 |
Family
ID=73334419
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202011087524.0A Active CN111930184B (zh) | 2020-10-13 | 2020-10-13 | 一种外接设备模拟键盘的实现方法、装置及系统 |
Country Status (3)
Country | Link |
---|---|
US (1) | US12061567B2 (zh) |
CN (1) | CN111930184B (zh) |
WO (1) | WO2022078078A1 (zh) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111930184B (zh) | 2020-10-13 | 2021-01-01 | 飞天诚信科技股份有限公司 | 一种外接设备模拟键盘的实现方法、装置及系统 |
US12107982B2 (en) * | 2022-12-08 | 2024-10-01 | 3Hand Llc | Methods for management the state of buttons of peripheral devices, implementing secure remote control of the user interface, interaction between applications, and also the answering machine, PBX and VoIP-cell gateway on the basis of smartphones |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103092799A (zh) * | 2012-12-28 | 2013-05-08 | 飞天诚信科技股份有限公司 | 一种usb设备及其识别主机操作系统的方法 |
CN103678215A (zh) * | 2013-12-09 | 2014-03-26 | 飞天诚信科技股份有限公司 | 一种智能读卡器的工作方法 |
Family Cites Families (15)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN100409150C (zh) * | 2006-09-07 | 2008-08-06 | 北京飞天诚信科技有限公司 | 一种提高hid设备通讯速度的方法 |
US7949708B2 (en) * | 2007-06-08 | 2011-05-24 | Microsoft Corporation | Using a remote handheld device as a local device |
CN101212303B (zh) * | 2007-12-24 | 2010-10-13 | 北京飞天诚信科技有限公司 | 动态口令输出方法、动态口令生成方法及其装置 |
CN101901058B (zh) * | 2009-05-26 | 2012-07-18 | 华中师范大学 | 无线键盘及鼠标收发装置 |
CN103455456B (zh) * | 2013-09-06 | 2016-08-17 | 深圳雷柏科技股份有限公司 | 一种键盘宏功能上传的方法和装置 |
WO2015035609A1 (zh) * | 2013-09-13 | 2015-03-19 | 深圳雷柏科技股份有限公司 | 一种键盘按键编码同时上传的方法和装置 |
CN103631747B (zh) * | 2013-11-20 | 2016-05-25 | 飞天诚信科技股份有限公司 | 一种通讯模式的识别方法 |
CN104778143B (zh) * | 2015-03-20 | 2018-06-01 | 飞天诚信科技股份有限公司 | 主动与苹果设备连接并进行通信的方法和苹果设备附件 |
CN105933428B (zh) * | 2016-05-27 | 2019-05-10 | 飞天诚信科技股份有限公司 | 一种与苹果终端进行通讯的方法及设备 |
CN107329520B (zh) * | 2017-06-12 | 2021-06-29 | 北京小米移动软件有限公司 | 移动终端的usb接口连接方法、设备及系统 |
CN109799879B (zh) * | 2019-02-26 | 2024-05-14 | 深圳优卡视科技有限公司 | 一种可实现键盘鼠标操作iOS设备及显示的扩展坞 |
CN110730441B (zh) | 2019-10-18 | 2021-07-02 | 飞天诚信科技股份有限公司 | 一种蓝牙设备及其工作方法 |
CN111698366B (zh) * | 2020-05-08 | 2021-03-19 | 北京连山科技股份有限公司 | 一种基于usb接口的手机硬件扩展方法 |
CN111580738B (zh) | 2020-05-20 | 2021-09-14 | 上海闻泰信息技术有限公司 | 软键盘实现方法、装置、电子设备及存储介质 |
CN111930184B (zh) | 2020-10-13 | 2021-01-01 | 飞天诚信科技股份有限公司 | 一种外接设备模拟键盘的实现方法、装置及系统 |
-
2020
- 2020-10-13 CN CN202011087524.0A patent/CN111930184B/zh active Active
-
2021
- 2021-08-25 US US17/911,506 patent/US12061567B2/en active Active
- 2021-08-25 WO PCT/CN2021/114604 patent/WO2022078078A1/zh active Application Filing
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103092799A (zh) * | 2012-12-28 | 2013-05-08 | 飞天诚信科技股份有限公司 | 一种usb设备及其识别主机操作系统的方法 |
CN103678215A (zh) * | 2013-12-09 | 2014-03-26 | 飞天诚信科技股份有限公司 | 一种智能读卡器的工作方法 |
Also Published As
Publication number | Publication date |
---|---|
US20230359580A1 (en) | 2023-11-09 |
CN111930184A (zh) | 2020-11-13 |
WO2022078078A1 (zh) | 2022-04-21 |
US12061567B2 (en) | 2024-08-13 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN104301113B (zh) | 一种基于多证书多用途的数字签名方法和系统 | |
CN111930184B (zh) | 一种外接设备模拟键盘的实现方法、装置及系统 | |
US20100172501A1 (en) | Secure key system | |
CN110198214A (zh) | 身份标识生成方法、验证方法及装置 | |
US20240259392A1 (en) | Data Processing Method and Apparatus and Computer-Readable Storage Medium | |
US6393438B1 (en) | Method and apparatus for identifying the existence of differences between two files | |
EP1830263B1 (en) | Executing applications in a multi-threaded environment | |
EP2442482A1 (en) | Method and device for implementing stream cipher | |
CN110061848B (zh) | 一种安全导入支付终端密钥的方法、支付终端及系统 | |
WO2022052859A1 (zh) | 一种数据传输方法及数据传输设备 | |
US7973802B1 (en) | Optional color space conversion | |
CN103051682B (zh) | 车载终端的无线交互方法 | |
CN101625653A (zh) | 一种多媒体产品本地数据处理校验方法 | |
CN107645719A (zh) | 一种蓝牙绑定方法及装置 | |
Smyshlyaev et al. | The security evaluated standardized password-authenticated key exchange (SESPAKE) protocol | |
CN112528349A (zh) | 一种数据处理方法、装置、电子设备及可读存储介质 | |
CN202979031U (zh) | 车载终端的无线交互系统 | |
CN114189324B (zh) | 一种消息安全签名方法、系统、设备及存储介质 | |
Cisco | TN3270 Configuration Commands | |
TWI280005B (en) | Apparatus and method for calculating TKIP Sbox value | |
CN109823952B (zh) | 一种车站电扶梯导向控制板 | |
CN113724138A (zh) | 一种图像分辨率扩充处理方法、装置和控制终端 | |
Unzueta García | Study of cFS (Core Flight System) to deploy OBC (On Board Computer) software for IoT missions | |
Ding et al. | Cryptanalysis of Loiss stream cipher | |
CN117499018A (zh) | 一种基于拉丁方的8比特s盒构造方法及应用 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |