CN104537294A - 一种可处理多协议apdu命令的方法 - Google Patents

一种可处理多协议apdu命令的方法 Download PDF

Info

Publication number
CN104537294A
CN104537294A CN201410838202.3A CN201410838202A CN104537294A CN 104537294 A CN104537294 A CN 104537294A CN 201410838202 A CN201410838202 A CN 201410838202A CN 104537294 A CN104537294 A CN 104537294A
Authority
CN
China
Prior art keywords
scsi
data
ccid
host computer
return
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.)
Granted
Application number
CN201410838202.3A
Other languages
English (en)
Other versions
CN104537294B (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 CN201410838202.3A priority Critical patent/CN104537294B/zh
Publication of CN104537294A publication Critical patent/CN104537294A/zh
Application granted granted Critical
Publication of CN104537294B publication Critical patent/CN104537294B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/30Authentication, i.e. establishing the identity or authorisation of security principals
    • G06F21/31User authentication
    • G06F21/34User authentication involving the use of external additional devices, e.g. dongles or smart cards
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/10Program control for peripheral devices
    • G06F13/102Program control for peripheral devices where the programme performs an interfacing function, e.g. device driver
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/4401Bootstrapping
    • G06F9/4411Configuring for operating with peripheral devices; Loading of device drivers
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2213/00Indexing scheme relating to interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F2213/24Interrupt
    • G06F2213/2412Dispatching of interrupt load among interrupt handlers in processor system or interrupt controller
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2221/00Indexing scheme relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F2221/21Indexing scheme relating to G06F21/00 and subgroups addressing additional information or applications relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F2221/2125Just-in-time application of countermeasures, e.g., on-the-fly decryption, just-in-time obfuscation or de-obfuscation

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Computer Security & Cryptography (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • Mobile Radio Communication Systems (AREA)
  • Computer And Data Communications (AREA)

Abstract

本发明公开一种可处理多协议APDU命令的方法,属于信息安全领域,所述方法包括:智能密钥设备向上声明自身为SCSI设备和CCID设备,当检测到SCSI接收数据标识置位时,处理SCSI缓存区中的数据,复位SCSI接收数据标识,打开SCSI端点中断;当接收到CCID命令时,处理CCID缓存区中的数据;所述方法还包括:当检测到发生SCSI设备标准命令中断时,执行相应操作并返回相应数据;当检测到发生APDU命令中断时,接收APDU命令数据并保存至SCSI缓存区中,置位SCSI接收数据标识,关闭SCSI端点中断。采用本发明的技术方法,能够实现单设备处理多协议命令,使用范围更广,产品的兼容性更好。

Description

一种可处理多协议APDU命令的方法
技术领域
本发明涉及信息安全领域,尤其涉及一种可处理多协议APDU命令的方法。
背景技术
随着信息产业的快速发展,信息技术的发展不仅给人们的生活带来了极大的便利,还从根本上改变了人们的生活方式、行为方式和价值观念,同时信息技术对经济和社会发展也产生了巨大而深刻的影响。
现有的智能密钥设备只能向上声明自身是一个设备,只能分时处理上位机发送的数据,不能实时响应上位机的不同协议的APDU命令,而对于多接口的智能密钥设备也只有一个接口可执行APDU命令,另一个接口只能执行AUTORUN命令,如果主机上把smartcard服务禁止,智能密钥设备则无法进行正常访问。
发明内容
本发明为解决现有技术中存在的问题,提供了一种可处理多协议APDU命令的方法。
本发明采用的技术方案是:一种可处理多协议APDU命令的方法,包括:智能密钥设备与上位机建立连接,上电初始化,向所述上位机声明自身为SCSI设备和CCID设备,所述智能密钥设备执行以下操作:
步骤S1:复位SCSI接收数据标识,打开SCSI端点中断;
步骤S2:等待接收所述上位机发送的CCID命令,并实时检测所述SCSI接收数据标识;
当检测到所述SCSI接收数据标识置位时,获取并根据SCSI缓存区中的SCSI数据得到第一APDU数据,对所述第一APDU数据进行处理,得到SCSI处理结果,将所述SCSI处理结果返回所述上位机,复位所述SCSI接收数据标识,打开SCSI端点中断,返回步骤S2;
当接收到CCID命令时,根据接收到的CCID命令中的CCID数据得到第二APDU数据并保存至CCID缓存区中,对所述第二APDU数据进行处理,得到CCID处理结果,将所述CCID处理结果返回所述上位机,返回步骤S2;
所述方法还包括:
当所述智能密钥设备检测到发生SCSI端点中断时,判断SCSI端点中断类型,如果是SCSI设备标准命令中断,则执行相应操作并返回相应数据;如果是APDU命令中断,则接收APDU命令中的SCSI数据并保存至所述SCSI缓存区中,置位所述SCSI接收数据标识,关闭SCSI端点中断。
所述步骤S2中,当所述智能密钥设备未接收到所述上位机发送的CCID命令,且检测SCSI接收数据标识未置位时,还包括:
步骤a0:判断是否处理按键操作,如果是,则执行步骤a1,否则不响应按键,返回步骤S2;
步骤a1:等待接收按键操作,当接收到按键操作后,判断接收到的按键类型,如果是确认键,则执行步骤a2,如果是取消键,则执行步骤a3,如果是翻页键,则执行步骤a4;
步骤a2:获取并根据独享标识执行相应的确认操作,更新所述独享标识,并向上位机返回成功响应,返回步骤S2;
步骤a3:获取并根据独享标识执行相应的取消操作,更新所述独享标识,并向上位机返回失败响应,返回步骤S2;
步骤a4:获取并根据独享标识执行相应的翻页操作,并向上位机返回翻页成功响应,返回步骤a1。
所述对所述第一APDU数据进行处理,得到SCSI处理结果,将所述SCSI处理结果返回所述上位机,复位所述SCSI接收数据标识,打开SCSI端点中断,返回步骤S2,具体为:
步骤c1-00:获取并判断所述独享标识,如果所述独享标识为第一初值,则将所述独享标识置为SCSI独享,执行步骤c1-01,如果所述独享标识为SCSI独享,则执行步骤c1-01,如果所述独享标识为CCID独享,则向上位机返回当前正忙响应,返回步骤S2;
步骤c1-01:根据所述第一APDU数据,判断接收到的命令的类型,如果是哈希命令,则执行步骤c2-02,如果是签名命令,则执行步骤c3-03;
步骤c2-02:解析所述第一APDU数据,得到第一哈希数据和SCSI显示数据,对所述第一哈希数据进行哈希计算,得到第一哈希结果并保存,复位所述SCSI接收数据标识,打开SCSI端点中断,向上位机返回成功响应,返回步骤S2;
步骤c3-03:从SCSI显示数据中获取当前SCSI显示数据并显示,置位允许按键标识,向上位机返回成功响应,复位所述SCSI接收数据标识,打开SCSI端点中断,返回步骤S2;
所述对所述第二APDU数据进行处理,得到CCID处理结果,将所述CCID处理结果返回所述上位机,返回步骤S2,具体为:
步骤c1-10:获取并判断所述独享标识,如果所述独享标识为第一初值,则将所述独享标识置为CCID独享,执行步骤c1-11,如果所述独享标识为CCID独享,则执行步骤c1-11,如果所述独享标识为SCSI独享,则向上位机返回当前正忙响应,返回步骤S2;
步骤c1-11:根据所述第二APDU数据,判断接收到的命令的类型,如果是哈希命令,则执行步骤c2-12,如果是签名命令,则执行步骤c3-13;
步骤c2-12:解析所述第二APDU数据,得到第二哈希数据和CCID显示数据,对所述第二哈希数据进行哈希计算,得到第二哈希结果并保存,向上位机返回成功响应,返回步骤S2;
步骤c3-13:从CCID显示数据中获取当前CCID显示数据并显示,置位允许按键标识,向上位机返回成功响应,返回步骤S2。
所述步骤c2-02之前还包括:判断所述第一APDU数据是否符合预设格式,如果是,则执行步骤c2-02,否则向上位机返回错误响应,返回步骤S2;
所述步骤c2-12之前还包括:判断所述第二APDU数据是否符合预设格式,如果是,则执行步骤c2-12,否则向上位机返回错误响应,返回步骤S2。
所述步骤a0具体为:判断所述允许按键标识是否置位,如果是,则处理按键操作,执行步骤a1,否则不响应按键,返回步骤S2。
所述步骤a2,具体为:
步骤a2-1:获取并判断所述独享标识的类型,如果是SCSI独享,则执行步骤a2-2,如果是CCID独享,则执行步骤a2-3,如果是第一初值,则不响应按键,返回步骤S2;
步骤a2-2:对所述第一哈希结果执行签名操作,得到第一签名结果,将所述独享标识置为第一初值,复位所述允许按键标识,根据所述第一签名结果生成签名成功响应并返回上位机,返回步骤S2;
步骤a2-3:对所述第二哈希结果执行签名操作,得到第二签名结果,将所述独享标识置为第一初值,复位所述允许按键标识,根据所述第二签名结果生成签名成功响应并返回上位机,返回步骤S2。
所述步骤a3,具体为:
步骤a3-1:获取并判断独享标识的类型,如果是SCSI独享,则执行步骤a3-2,如果是CCID独享,则执行步骤a3-3,如果是第一初值,则不响应按键,返回步骤S2;
步骤a3-2:删除所述第一哈希结果和所述SCSI显示数据,将所述独享标识置为第一初值,复位所述允许按键标识,向上位机返回失败响应,返回步骤S2;
步骤a3-3:删除所述第二哈希结果和所述CCID显示数据,将所述独享标识置为第一初值,复位所述允许按键标识,向上位机返回失败响应,返回步骤S2。
所述步骤a1中,当所述翻页键为上翻键时,所述步骤a4具体为:
步骤d1-01:获取并判断所述独享标识,如果是SCSI独享,则执行步骤d2-02,如果是CCID独享,则执行步骤d3-03,如果是第一初值,则不响应按键,返回步骤S2;
步骤d2-02:从所述SCSI显示数据中获取当前SCSI显示数据之前的SCSI显示数据,作为当前SCSI显示数据并显示,返回步骤a1;
步骤d3-03:从所述CCID显示数据中获取当前CCID显示数据之前的SCSI显示数据,作为当前CCID显示数据并显示,返回步骤a1。
所述步骤a1中,当所述翻页键为下翻键时,所述步骤a4具体为;
步骤d1-11:获取并判断所述独享标识,如果是SCSI独享,则执行步骤d2-12,如果是CCID独享,则执行步骤d3-13,如果是第一初值,则不响应按键,返回步骤S2;
步骤d2-12:从所述SCSI显示数据中获取当前SCSI显示数据之后的SCSI显示数据,作为当前SCSI显示数据并显示,返回步骤a1;
步骤d3-13:从所述CCID显示数据中获取当前CCID显示数据之后的CCID显示数据,作为当前CCID显示数据并显示,返回步骤a1。
所述步骤S2中,当所述智能密钥设备未接收到所述上位机发送的CCID命令,且检测SCSI接收数据标识未置位时,还包括:
步骤b0:判断是否处理按键操作,如果是,则执行步骤b1,否则不响应按键,返回步骤S2;
步骤b1:当接收到按键操作后,判断接收到的按键类型,如果是确认键,则执行步骤b2,如果是取消键,则执行步骤b3,如果是翻页键,则执行步骤b4;
步骤b2:获取并根据当前操作标识执行相应的确认操作,更新所述当前操作标识,并向上位机返回成功响应,返回步骤S2;
步骤b3:获取并根据当前操作标识执行相应的取消操作,更新所述当前操作标识,并向上位机返回失败响应,返回步骤S2;
步骤b4:执行翻页操作,根据翻页后显示信息,更新当前操作标识,向所述上位机返回翻页成功响应,返回步骤b1。
所述对所述第一APDU数据进行处理,得到SCSI处理结果,将所述SCSI处理结果返回所述上位机,复位所述SCSI接收数据标识,打开SCSI端点中断,返回步骤S2,具体为:
步骤e1-01:根据所述第一APDU数据,判断接收到的命令的类型,如果是哈希命令,则执行步骤e2-02,如果是签名命令,则执行步骤e3-03;
步骤e2-02:解析所述第一APDU数据,得到第一哈希数据和SCSI显示数据,对所述第一哈希数据进行哈希计算,得到第一哈希结果并保存,向上位机返回成功响应,复位所述SCSI接收数据标识,打开SCSI端点中断,返回步骤S2;
步骤e3-03:获取并判断当前操作标识,如果是CCID操作标识,则执行步骤e4-04,如果是SCSI操作标识,则执行步骤e3-05,如果是第二初值,则将当前操作标识置为SCSI操作标识,执行步骤e3-05;
步骤e4-04:将显示缓存区中的CCID显示数据与SCSI显示数据拼接,根据所述CCID显示数据和所述SCSI显示数据的长度以及每屏显示长度,计算屏号,并将屏号与操作标识建立对应关系,置位允许按键标识,复位所述SCSI接收数据标识,打开SCSI端点中断,向所述上位机返回成功响应,返回步骤S2;
步骤e3-05:保存SCSI显示数据至显示缓存区中,获取所述SCSI显示数据中的当前SCSI显示数据进行显示,置位允许按键标识,复位所述SCSI接收数据标识,打开SCSI端点中断,向所述上位机返回成功响应,返回步骤S2;
所述对所述第二APDU数据进行处理,得到CCID处理结果,将所述CCID处理结果返回所述上位机,返回步骤S2,具体为:
步骤e1-11:根据所述第二APDU数据,判断接收到的命令的类型,如果是哈希命令,则执行步骤e2-12,如果是签名命令,则执行步骤e3-13;
步骤e2-12:解析所述第二APDU数据,得到第二哈希数据和CCID显示数据,对所述第二哈希数据进行哈希计算,得到第二哈希结果并保存,向上位机返回成功响应,返回步骤S2;
步骤e3-13:获取并判断当前操作标识,如果是SCSI操作标识,则执行步骤e3-14,如果是CCID操作标识,则执行步骤e3-15,如果是第二初值,则将当前操作标识置为CCID操作标识,执行步骤e3-15;
步骤e3-14:将显示缓存区中的SCSI数据与CCID显示数据拼接,根据所述CCID显示数据和所述SCSI显示数据的长度以及每屏显示长度,计算屏号,并将屏号与操作标识建立对应关系,置位允许按键标识,向所述上位机返回成功响应,返回步骤S2;
步骤e3-15:保存CCID显示数据至显示缓存区中,获取所述CCID显示数据中的当前CCID显示数据进行显示,置位允许按键标识,向所述上位机返回成功响应,返回步骤S2。
所述步骤e2-02之前还包括:判断所述第一APDU数据是否符合预设格式,如果是,则执行步骤e2-02,否则向上位机返回错误响应,返回步骤S2;
所述步骤e2-12之前还包括:判断所述第二APDU数据是否符合预设格式,如果是,则执行步骤e2-12,否则向上位机返回错误响应,返回步骤S2。
所述步骤b0具体为:判断所述允许按键标识是否置位,如果是,则处理按键操作,执行步骤b1,否则不响应按键,返回步骤S2。
所述步骤b2,具体为:
步骤f1:获取并判断当前操作标识,如果是SCSI操作标识,则对所述第一哈希结果执行签名操作,得到第一签名结果,并删除所述显示缓存区中的SCSI显示数据,执行步骤f2,如果是CCID操作标识,则对所述第二哈希结果执行签名操作,得到第二签名结果,并删除所述显示缓存区中的CCID显示数据,执行步骤f3,如果是第二初值,则不响应按键,返回步骤S2;
步骤f2:判断所述显示缓存区中是否还有CCID显示数据,如果是,则将所述当前操作标识置为CCID操作标识,显示所述CCID显示数据,根据所述第一签名结果生成签名成功响应并返回所述上位机,返回步骤S2;否则将所述当前操作标识置为第一初值,复位所述允许按键标识,根据所述第一签名结果生成签名成功响应并返回上位机,返回步骤S2;
步骤f3:判断所述显示缓存区中是否还有SCSI显示数据,如果是,则将所述当前操作标识置为SCSI操作标识,显示所述SCSI显示数据,根据所述第二签名结果生成签名成功响应并返回上位机,返回步骤S2;否则将所述当前操作标识置为第一初值,复位所述允许按键标识,根据所述第二签名结果生成签名成功响应并返回上位机,返回步骤S2。
所述步骤b3,具体为:
步骤g1:获取并判断当前操作标识,如果是SCSI操作标识,则删除所述第一哈希结果,并删除所述显示缓存区中的SCSI显示数据,执行步骤g2,如果是CCID操作标识,则删除所述第二哈希结果和所述CCID显示数据,执行步骤g3,如果是第二初值,则不响应按键,返回步骤S2;
步骤g2:判断所述显示缓存区中是否还有CCID显示数据,如果是,则将所述当前操作标识置为CCID操作标识,显示所述CCID显示数据,复位所述允许按键标识,向所述上位机返回失败响应,返回步骤S2;否则将所述当前操作标识置为第一初值,复位所述允许按键标识,向所述上位机返回失败响应,返回步骤S2;
步骤g3:判断所述显示缓存区中是否还有SCSI显示数据,如果是,则将所述当前操作标识置为SCSI操作标识,显示所述SCSI显示数据,复位所述允许按键标识,向所述上位机返回失败响应,返回步骤S2;否则将所述当前操作标识置为第一初值,复位所述允许按键标识,向所述上位机返回失败响应,返回步骤S2。
所述步骤b1中,当所述翻页键为上翻键时,执行以下操作:
步骤h1-01:判断所述显示缓存区中当前显示数据之前是否还有显示数据,如果是,则将所述显示缓存区中当前显示数据之前的显示数据作为更新后的当前显示数据进行显示,执行步骤h2-02,否则不响应按键,返回步骤b1;
步骤h2-02:获取更新后的当前显示数据对应的屏号,根据屏号与操作标识的对应关系,获取所述屏号对应的操作标识;
步骤h2-03:获取当前操作标识,判断所述屏号对应的操作标识与当前操作标识是否相同,如果是,则返回步骤b1,否则更新当前操作标识为所述屏号对应的操作标识,返回步骤b1。
所述步骤b1中,当所述翻页键为下翻键时,执行以下操作:
步骤h1-11:判断所述显示缓存区中当前显示数据之后是否还有显示数据,如果是,则将所述显示缓存区中当前显示数据之后的显示数据作为更新后的当前显示数据进行显示,执行步骤h2-12,否则不响应按键,返回步骤b1;
步骤h2-12:获取更新后的当前显示数据对应的屏号,根据屏号与操作标识的对应关系,获取所述屏号对应的操作标识;
步骤h2-13:获取当前操作标识,判断所述屏号对应的操作标识与当前操作标识是否相同,如果是,则返回步骤b1,否则更新当前操作标识为所述屏号对应的操作标识,返回步骤b1。
所述获取并根据SCSI缓存区中的SCSI数据得到第一APDU数据,具体包括:
步骤D1:判断SCSI协商密钥标识是否置位,如果是,则将所述SCSI缓存区中的SCSI数据作为第一APDU数据,否则执行步骤D2;
步骤D2:根据所述第一APDU数据,判断接收到的命令是否为协商SCSI安全通道命令,是则执行步骤D3,否则向所述上位机返回错误响应,打开SCSI端点中断,返回步骤S2;
步骤D3:建立SCSI安全通道,生成SCSI会话密钥,置位所述SCSI协商密钥标识,打开SCSI端点中断,将所述SCSI会话密钥返回给所述上位机,返回步骤S2;
所述将所述SCSI缓存区中的SCSI数据作为第一APDU数据,具体为:应用所述SCSI会话密钥对SCSI数据进行解密,得到第一APDU数据。
所述根据接收到的CCID命令中的CCID数据得到第二APDU数据,具体包括:
步骤C1:判断CCID协商密钥标识是否置位,如果是,则将接收到的CCID命令中的CCID数据作为第二APDU数据,否则执行步骤C2;
步骤C2:根据所述第二APDU数据,判断接收到的命令是否为协商CCID安全通道命令,是则执行步骤C3,否则向所述上位机返回错误响应,返回步骤S2;
步骤C3:建立CCID安全通道,生成CCID会话密钥,置位所述CCID协商密钥标识,将所述CCID会话密钥返回给所述上位机,返回步骤S2;
所述将接收到的CCID命令中的CCID数据作为第二APDU数据,具体为:应用所述CCID会话密钥对CCID数据进行解密,得到第二APDU数据。
所述方法还包括:
当所述智能密钥设备检测到发生setup端点中断时,关闭SCSI端点中断,接收setup命令数据,根据所述setup命令数据执行枚举操作,向所述上位机返回相应数据,打开SCSI端点中断,退出setup端点中断;
所述步骤S1还包括:打开setup端点中断。
所述智能密钥设备检测到发生setup端点中断之后还包括:检测所述智能密钥设备的0端点寄存器标识,当所述0端点寄存器标识置位时,接收setup命令数据。
所述将所述SCSI处理结果返回所述上位机,具体为:通过所述智能密钥设备的1端点将所述SCSI处理结果返回所述上位机;
所述检测到发生SCSI端点中断时,还包括:检测所述智能密钥设备的2端点寄存器标识,当所述2端点寄存器标识置位时,接收SCSI命令数据;
所述将所述CCID处理结果返回所述上位机,具体为:通过所述智能密钥设备的3端点将所述CCID处理结果返回所述上位机;
所述接收到CCID命令,具体为:检测所述智能密钥设备的4端点寄存器标识,当所述4端点寄存器标识置位时,接收CCID命令数据。
本发明取得的有益效果是:采用本发明的技术方案,智能密钥设备与上位机连接时,声明自己为SCSI设备和CCID设备,将SCSI命令设置为中断方式,能够实时响应SCSI设备标准命令和APDU命令,均能够接收上位机发送的APDU命令,实现多接口都能够执行APDU命令,能够实现由用户根据自身需要选择不同的协议执行交易操作,能够实现一个设备的多个接口均可执行命令,使用范围更广,产品的兼容性更好,用户体验佳。
附图说明
为了更清楚的说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单的介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是本发明实施例1提供的一种可处理多协议APDU命令的方法流程图;
图2是本发明实施例1中发生SCSI端点中断的具体操作流程图;
图3和图4是本发明实施例2提供的一种可处理多协议APDU命令的方法流程图;
图5至图9是本发明实施例3提供的一种可处理多协议APDU命令的方法流程图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
本发明中,智能密钥设备包括5个端点:
0端点为setup端点,用于接收setup命令数据;
1、2端点为SCSI批量端点,其中,1端点为SCSI发送端点,用于将SCSI处理结果发送至上位机,2端点为SCSI接收命令端点,用于接收SCSI命令数据;
3、4端点为CCID批量端点,其中,3端点为CCID发送端点,用于将CCID处理结果发送至上位机,4端点为CCID接收命令端点,用于接收CCID命令数据。
本发明中,当智能密钥设备接收到setup令牌后,触发发生setup端点中断,并触发0端点寄存器标识置位,其中,0端点寄存器标识为寄存器中的第四位,当寄存器中的第四位的数据置位时,接收setup命令数据;
当智能密钥设备检测到发生setup端点中断时,关闭SCSI端点中断,接收setup命令数据,根据setup命令数据执行枚举操作,向所述上位机返回相应数据,打开SCSI端点中断,退出setup端点中断;其中,执行枚举操作,具体包括:获取设备描述符或获取配置描述符或获取字符串描述符等;
进一步的,智能密钥设备检测到发生setup端点中断之后,还包括:检测智能密钥设备的0端点寄存器标识,当0端点寄存器标识置位时,接收setup命令数据。
本发明中,当智能密钥设备接收到SCSI令牌后,触发发生SCSI端点中断,并触发2端点寄存器标识置位,其中,2端点寄存器标识为寄存器中的第六位,当寄存器中的第六位的数据置位时,接收SCSI数据;
当智能密钥设备检测到发生SCSI端点中断时,执行以下操作:
步骤a:判断SCSI端点中断类型,如果是SCSI设备标准命令中断,则执行相应操作并返回相应数据;如果是APDU命令中断,则执行步骤b;
其中,SCSI设备标准命令中断即为autorun命令中断,包括光盘命令等;
步骤b:接收APDU命令中的SCSI数据,并保存至SCSI缓存区中;
步骤c:置位SCSI接收数据标识,关闭SCSI端点中断;
所述检测到发生SCSI端点中断之后,还包括:检测所述智能密钥设备的2端点寄存器标识,当所述2端点寄存器标识置位时,接收SCSI命令数据;
本发明中,接收到CCID命令,具体为:检测智能密钥设备的4端点寄存器标识,当4端点寄存器标识置位时,接收CCID命令数据。
实施例1
本发明实施例1提供了一种可处理多协议APDU命令的设备工作方法,如图1所示,智能密钥设备与上位机建立连接,上电初始化,向上位机声明自身为SCSI设备和CCID设备,执行以下操作:
步骤S1:复位所有标识,打开SCSI端点中断;
其中,SCSI端点中断包括SCSI设备标准命令中断和APDU命令中断;
步骤S2:等待接收上位机发送的CCID命令,并实时检测SCSI接收数据标识;
当检测到SCSI接收数据标识置位时,获取并根据SCSI缓存区中的SCSI数据得到第一APDU数据,对第一APDU数据进行处理,得到SCSI处理结果,将SCSI处理结果返回上位机,复位SCSI接收数据标识,打开SCSI端点中断,返回步骤S2;
当接收到CCID命令时,根据接收到的CCID命令中的CCID数据得到第二APDU数据并保存至CCID缓存区中,对第二APDU数据进行处理,得到CCID处理结果,将CCID处理结果返回所述上位机,返回步骤S2;
参见图2,所述方法还包括:
当检测到发生SCSI端点中断时,判断SCSI端点中断类型,如果是SCSI设备标准命令中断,则执行相应操作并返回相应数据;如果是APDU命令中断,则接收APDU命令中的SCSI数据并保存至所述SCSI缓存区中,置位所述SCSI接收数据标识,关闭SCSI端点中断;
其中,执行相应操作,具体为:执行枚举操作,即获取设备描述符或获取配置描述符或获取字符串描述符等。
实施例2
本发明实施例2提供了一种可处理多协议APDU命令的方法,如图3和图4所示,智能密钥设备与上位机建立连接,向上位机声明自身为SCSI设备和CCID设备,执行以下操作:
步骤101:上电初始化,打开USB中断;
本实施例中,上电初始化,具体包括:将SCSI接收数据标识初始化为复位状态,将独享标识设置为第一初值0,将SCSI缓存区和CCID缓存区清空;
本实施例中,所述打开USB中断,具体为打开setup端点中断和SCSI端点中断,其中,SCSI端点中断包括SCSI设备标准命令中断和APDU命令中断;
本实施例中,将setup命令与SCSI命令设置在中断中执行,设置setup中断优先级最高,整个执行过程中均处于开启状态,SCSI端点中断优先级次之,当接收APDU命令完毕后,需将SCSI端点中断关闭,不可再接收SCSI命令数据,防止数据混淆,CCID命令的优先级最低,在主流程中接收即可;
步骤102:等待接收上位机发送的CCID命令,并实时检测SCSI接收数据标识,当检测到SCSI接收数据标识置位时,执行步骤103,当接收到CCID命令时,执行步骤109,否则执行步骤115;
优选的,预先约定,当SCSI接收数据标识置位时,表明接收到SCSI数据,当SCSI接收数据标识复位时,表明未接收到SCSI数据;
步骤103:获取SCSI缓存区中的SCSI数据,根据SCSI数据得到第一APDU数据;
本实施例中,如果SCSI数据为明文传输,则直接将SCSI数据作为第一APDU数据,如果SCSI数据为密文传输,本步骤具体包括:
步骤a1:判断SCSI协商密钥标识是否有效,如果是,则执行步骤d1,否则执行步骤b1;
优选的,预先约定,当SCSI协商密钥标识置位时,表明SCSI协商密钥标识有效,SCSI安全通道已建立,当SCSI协商密钥标识复位时,表明SCSI协商密钥标识无效,SCSI安全通道未建立;
步骤b1:判断接收到的命令是否为协商SCSI安全通道命令,如果是,则执行步骤c1,否则向上位机返回错误响应,打开SCSI端点中断,返回步骤102;
本实施例中,优选的,通过检测命令的第一字节和第二字节来判断接收到的命令是否为协商SCSI安全通道命令,优选的,如果命令的第一、二字节为0x00C6,则接收到的是协商SCSI安全通道命令;
步骤c1:建立SCSI安全通道,生成SCSI会话密钥,置位SCSI协商密钥标识,打开SCSI端点中断,将生成的SCSI会话密钥返回给上位机,返回步骤102;
步骤d1:获取SCSI缓存区中的SCSI数据,使用SCSI会话密钥对SCSI数据进行解密,得到第一APDU数据;
步骤104:获取并判断独享标识,如果独享标识为第一初值,则将独享标识置为SCSI独享,执行步骤105,如果独享标识为SCSI独享,则执行步骤105,如果独享标识为CCID独享,则向上位机返回当前正忙响应,返回步骤102;
本实施例中,预先约定,当SCSI独享标识置位时,表明智能密钥设备不能处理CCID数据,向上位机返回当前正忙响应,当SCSI数据执行完毕后,将独享标识复位,允许CCID数据执行;同理,当CCID独享标识置位时,表明智能密钥设备不能处理SCSI数据,向上位机返回当前正忙响应,当CCID数据执行完毕后,将独享标识复位,允许SCSI数据执行;
步骤105:根据第一APDU数据,判断接收到的命令的类型,如果是哈希命令,则执行步骤106,如果是签名命令,则执行步骤108;
本实施例中,通过检测第一APDU数据的第一字节和第二字节来判断接收到的命令类型,如果第一、二字节为0x00A0,则为哈希命令,如果第一、二字节为0x00B0,则为签名命令;
步骤106:解析第一APDU数据,得到第一哈希数据和SCSI显示数据,将SCSI显示数据保存至显示缓存区中;
本步骤之前还包括:判断第一APDU数据是否符合预设格式,如果是,则指令正确,允许显示,执行步骤106,否则指令错误,向上位机返回指令错误响应,返回步骤102;
其中,预设格式具体为:
<?xml version="1.0"encoding="utf-8"?>
<SignData>
<Fields>
<PayerAccountNo>6221286897001330</PayerAccountNo>
<PayerAccountName>XXX</PayerAccountName>
<PayerAccountNoName=:“收款账号”:>XXXXX<PayerAccountNo>
<PayerAccountName name=“收款户名:”>X<PayerAccountName>
<TrsAmount name=“交易金额:”>XX</TrsAmount>
</Fields>
</SignData>
步骤107:对第一哈希数据进行哈希计算,得到第一哈希结果,并保存至SCSI缓存区中,复位SCSI接收数据标识,打开SCSI端点中断,向上位机返回成功响应,返回步骤102;
步骤108:从显示缓存区中的SCSI显示数据中获取当前SCSI显示数据并显示,将允许按键标识置位,向上位机返回成功响应,复位所述SCSI接收数据标识,打开SCSI端点中断,返回步骤102;
步骤109:根据接收到的CCID命令中的CCID数据,得到第二APDU数据并保存至CCID缓存区中;
本实施例中,如果CCID数据为明文传输,则直接将CCID数据作为第二APDU数据,如果CCID数据为密文传输,本步骤具体包括:
步骤a2:判断CCID协商密钥标识是否有效,如果是,则执行步骤d2,否则执行步骤b2;
优选的,预先约定,当CCID协商密钥标识置位时,表明SCSI协商密钥标识有效,CCID安全通道已建立,当CCID协商密钥标识复位时,表明SCSI协商密钥标识无效,CCID安全通道未建立;
步骤b2:判断接收到的命令是否为协商CCID安全通道命令,如果是,则执行步骤c2,否则向上位机返回错误响应,返回步骤102;
本实施例中,优选的,通过检测命令的第一字节和第二字节来判断接收到的命令是否为协商CCID安全通道命令,优选的,如果命令的第一、二字节为0x00B7,则接收到的是协商CCID安全通道命令;
步骤c2:建立CCID安全通道,生成CCID会话密钥,置位CCID协商密钥标识,将生成的CCID会话密钥返回给上位机,返回步骤102;
步骤d2:获取CCID缓存区中的CCID数据,使用CCID会话密钥对CCID数据进行解密,得到第二APDU数据;
步骤110:获取并判断独享标识,如果独享标识为第一初值,则将独享标识置为CCID独享,执行步骤111,如果独享标识为CCID独享,则执行步骤111,如果独享标识为SCSI独享,则向上位机返回当前正忙响应,返回步骤102;
步骤111:根据第二APDU数据,判断接收到的命令的类型,如果是哈希命令,则执行步骤112,如果是签名命令,则执行步骤114;
本实施例中,通过检测第二APDU数据的第一字节和第二字节来判定接收到的命令类型,如果第一、二字节为0x00A0,则为哈希命令,如果第一、二字节为0x00B0,则为签名命令;
步骤112:解析第二APDU数据,得到第二哈希数据和CCID显示数据,将CCID显示数据保存至显示缓存区中;
本步骤之前还包括:判断第二APDU数据是否符合预设格式,如果是,则指令正确,允许显示,执行步骤112,否则指令错误,向上位机返回指令错误响应,返回步骤102;
步骤113:对第二哈希数据进行哈希计算,得到第二哈希结果,并保存至CCID缓存区中,向上位机返回成功响应,返回步骤102;
步骤114:从显示缓存区中的CCID显示数据中获取当前CCID显示数据并显示,置位允许按键标识,向上位机返回成功响应,返回步骤102;
步骤115:判断允许按键标识是否置位,如果是,则执行步骤116,否则不响应按键,返回步骤102;
步骤116:等待接收按键操作,当接收到按键操作后,判断接收到的按键类型,如果是确认键,则执行步骤117,如果是取消键,则执行步骤120,如果是上翻键,则执行步骤123,如果是下翻键,则执行步骤128;
步骤117:获取并判断独享标识的类型,如果是SCSI独享,则执行步骤118,如果是CCID独享,则执行步骤119;
步骤118:从SCSI缓存区中获取第一哈希结果,对第一哈希结果执行签名操作,得到第一签名结果,将独享标识置为第一初值,复位允许按键标识,根据第一签名结果生成签名成功响应并返回上位机,返回步骤102;
步骤119:从CCID缓存区中获取第二哈希结果,对第二哈希结果执行签名操作,得到第二签名结果,将独享标识置为第一初值,复位允许按键标识,根据第二签名结果生成签名成功响应并返回上位机,返回步骤102;
步骤120:获取并判断独享标识的类型,如果是SCSI独享,则执行步骤121,如果是CCID独享,则执行步骤122;
步骤121:删除SCSI缓存区中的第一哈希结果和显示缓存区中的SCSI显示数据,将独享标识置为第一初值,复位允许按键标识,并向上位机返回签名失败响应,返回步骤102;
本步骤还包括:在显示屏上提示签名取消;
步骤122:删除CCID缓存区中的第二哈希结果和显示缓存区中的CCID显示数据,将独享标识置位第一初值,复位允许按键标识,并向上位机返回签名失败响应,返回步骤102;
本步骤还包括:在显示屏上提示签名取消;
步骤123:获取并判断独享标识,如果是SCSI独享,则执行步骤124,如果是CCID独享,则执行步骤126;
步骤124:判断从SCSI缓存区中的SCSI显示数据中是否能够获取到当前SCSI显示数据之前的数据,如果是,则执行步骤125,否则不响应按键,返回步骤116;
步骤125:显示SCSI显示数据中当前SCSI显示数据之前的数据,返回步骤116;
步骤126:判断从CCID缓存区中的CCID显示数据中是否能够获取到当前CCID显示数据之前的数据,如果是,则执行步骤127,否则不响应按键,返回步骤116;
步骤127:显示CCID显示数据中当前CCID显示数据之前的数据,返回步骤116;
步骤128:获取并判断独享标识,如果是SCSI独享,则执行步骤129,如果是CCID独享,则执行步骤131;
步骤129:判断从SCSI缓存区中的SCSI显示数据中是否能够获取到当前SCSI显示数据之后的数据,如果是,则执行步骤130,否则不响应按键,返回步骤116;
步骤130:显示SCSI显示数据中当前SCSI显示数据之后的数据,返回步骤116;
步骤131:判断从CCID缓存区中的CCID显示数据中是否能够获取到当前CCID显示数据之后的数据,如果是,则执行步骤132,否则不响应按键,返回步骤116;
步骤132:显示CCID显示数据中当前CCID显示数据之后的数据,返回步骤116。
实施例3
本发明实施例3提供了一种可处理多协议APDU命令的方法,如图5至图9所示,智能密钥设备与上位机建立连接,向上位机声明自身为SCSI设备和CCID设备,执行以下操作:
步骤201:上电初始化,打开USB中断;
本实施例中,上电初始化,具体包括:将SCSI接收数据标识初始化为复位状态,将当前操作标识设置为第二初值0,将SCSI缓存区和CCID缓存区清空;
其中,当前操作标识用于表明显示屏上显示的当前信息属于哪一个通道正在处理的显示数据;
例如,当前操作标识为SCSI处理标识,则表示显示屏上的当前显示信息为SCSI显示数据,当前操作标识为CCID处理标识,则表示显示屏上的当前显示信息为CCID显示数据;
其中,智能密钥设备打开USB中断,具体为打开setup端点中断和SCSI端点中断;
本实施例中,将setup命令与SCSI命令设置在中断中执行,设置setup中断优先级最高,整个执行过程中均处于开启状态,SCSI端点中断优先级次之,当接收完毕APDU命令后,需将SCSI端点中断关闭,不可再接收SCSI命令数据,防止数据混淆,CCID命令的优先级最低,在主流程中接收即可;
步骤202:等待接收上位机发送的CCID命令,并实时检测SCSI接收数据标识,当检测到SCSI接收数据标识置位时,执行步骤203,当接收到CCID命令时,执行步骤211,否则执行步骤219;
优选的,预先约定,当SCSI接收数据标识置位时,表明接收到SCSI数据,当SCSI接收数据标识复位时,表明未接收到SCSI数据;
步骤203:获取SCSI缓存区中的SCSI数据,根据SCSI数据得到第一APDU数据;
本实施例中,如果SCSI数据为明文传输,则直接将SCSI数据作为第一APDU数据,如果SCSI数据为密文传输,本步骤具体包括:
步骤a1:判断SCSI协商密钥标识是否有效,如果是,则执行步骤d1,否则执行步骤b1;
优选的,预先约定,当SCSI协商密钥标识置位时,表明SCSI协商密钥标识有效,SCSI安全通道已建立,当SCSI协商密钥标识复位时,表明SCSI协商密钥标识无效,SCSI安全通道未建立;
步骤b1:判断接收到的命令是否为协商SCSI安全通道命令,如果是,则执行步骤c1,否则向上位机返回错误响应,打开SCSI端点中断,返回步骤102;
本实施例中,优选的,通过检测命令的第一字节和第二字节来判断接收到的命令是否为协商SCSI安全通道命令,优选的,如果命令的第一、二字节为0x00C6,则接收到的是协商SCSI安全通道命令;
步骤c1:建立SCSI安全通道,生成SCSI会话密钥,置位SCSI协商密钥标识,打开SCSI端点中断,将生成的SCSI会话密钥返回给上位机,返回步骤102;
步骤d1:获取SCSI缓存区中的SCSI数据,使用SCSI会话密钥对SCSI数据进行解密,得到第一APDU数据;
步骤204:根据第一APDU数据,判断接收到的命令的类型,如果是哈希命令,则执行步骤205,如果是签名命令,则执行步骤207;
本实施例中,通过检测第一APDU数据的第一字节和第二字节来判断接收到的命令类型,如果第一、二字节为0x00A0,则为哈希命令,如果第一、二字节为0x00B0,则为签名命令;
步骤205:解析第一APDU数据,得到第一哈希数据和SCSI显示数据,将SCSI显示数据保存至预设缓存区中;
本步骤之前还包括:判断第一APDU数据是否符合预设格式,如果是,则指令正确,允许显示,执行步骤205,否则指令错误,向上位机返回指令错误响应,返回步骤202;
步骤206:对第一哈希数据进行哈希计算,得到第一哈希结果,并保存至SCSI缓存区中,复位SCSI接收数据标识,打开SCSI端点中断,向上位机返回成功响应,返回步骤202;
步骤207:获取并判断当前操作标识,如果是CCID操作标识,则执行步骤208,如果是SCSI操作标识,则执行步骤210,如果是第二初值,则将当前操作标识置为SCSI操作标识,执行步骤210;
步骤208:从预设缓存区中获取SCSI显示数据,将显示缓存区中的CCID显示数据与SCSI显示数据拼接;
本实施例中,还包括:将提示信息和SCSI显示数据进行拼接后得到的数据作为SCSI显示数据,将显示缓存区中的CCID显示数据与SCSI显示数据拼接;
进一步的,当将显示缓存区中的CCID显示数据与SCSI显示数据拼接时,还包括:在显示屏上某位置提示后续还有其他操作可通过下翻键进行显示选择,例如,在右上角设置一个提示等;
步骤209:根据CCID显示数据和SCSI显示数据的长度以及每屏显示长度,计算屏号,并将屏号与当前操作标识建立对应关系,置位允许按键标识,复位所述SCSI接收数据标识,打开SCSI端点中断,向上位机返回成功响应,返回步骤202;
所述根据CCID显示数据和SCSI显示数据的长度以及每屏显示长度,计算屏号,具体为:将CCID显示数据的长度除以每屏显示长度,上取整得到CCID显示数据需要占用的屏数,为得到的屏数分配屏号,同样的,将SCSI显示数据的长度除以每屏显示长度,得到SCSI显示数据需要占用的屏数,依次为得到的屏数分配屏号;
例如,CCID显示数据的长度为300字节,每屏显示长度为140字节,则将300字节除以140字节,上取整得到CCID显示数据需要占用的屏数为3屏,则为CCID显示数据分配的屏号为1、2、3,并建立1、2、3屏对应的当前操作标识为CCID操作标识;
例如,SCSI显示数据的长度为200字节,每屏显示长度为140字节,则将200字节除以140字节,上取整得到SCSI显示数据需要占用的屏数为2屏,则为SCSI显示数据分配的屏号为4、5,并建立4、5屏对应的当前操作标识为SCSI操作标识;
步骤210:将SCSI显示数据保存至显示缓存区中,并从SCSI显示数据中获取当前SCSI显示数据进行显示,置位允许按键标识,复位所述SCSI接收数据标识,打开SCSI端点中断,向上位机返回成功响应,返回步骤202;
步骤211:根据接收到的CCID命令中的CCID数据,得到第二APDU数据并保存至CCID缓存区中;
本实施例中,如果CCID数据为明文传输,则直接将CCID数据作为第二APDU数据,如果CCID数据为密文传输,本步骤具体包括:
步骤a2:判断CCID协商密钥标识是否有效,如果是,则执行步骤d,否则执行步骤b2;
优选的,预先约定,当CCID协商密钥标识置位时,表明SCSI协商密钥标识有效,CCID安全通道已建立,当CCID协商密钥标识复位时,表明SCSI协商密钥标识无效,CCID安全通道未建立;
步骤b2:判断接收到的命令是否为协商CCID安全通道命令,如果是,则执行步骤c2,否则向上位机返回错误响应,返回步骤102;
本实施例中,优选的,通过检测命令的第一字节和第二字节来判定接收到的命令是否为协商CCID安全通道命令,优选的,如果命令的第一、二字节为0x00B7,则接收到的是协商CCID安全通道命令;
步骤c2:建立CCID安全通道,生成CCID会话密钥,置位CCID协商密钥标识,将生成的CCID会话密钥返回给上位机,返回步骤202;
步骤d2:获取CCID缓存区中的CCID数据,使用CCID会话密钥对CCID数据进行解密,得到第二APDU数据;
步骤212:根据第二APDU数据,判断接收到的命令的类型,如果是哈希命令,则执行步骤213,如果是签名命令,则执行步骤215;
本实施例中,通过检测第二APDU数据的第一字节和第二字节来判定接收到的命令类型,如果第一、二字节为0x00A0,则为哈希命令,如果第一、二字节为0x00B0,则为签名命令;
步骤213:解析第二APDU数据,得到第二哈希数据和CCID显示数据,将CCID显示数据保存至预设缓存区中;
本步骤之前还包括:判断第二APDU数据是否符合预设格式,如果是,则指令正确,允许显示,执行步骤213,否则指令错误,向上位机返回指令错误响应,返回步骤202;
步骤214:对第二哈希数据进行哈希计算,得到第二哈希结果,并保存至CCID缓存区中,向上位机返回成功响应,返回步骤202;
步骤215:获取并判断当前操作标识,如果是SCSI操作标识,则执行步骤216,如果是CCID操作标识,则执行步骤218,如果是第二初值,则将当前操作标识置为CCID操作标识,执行步骤218;
步骤216:从预设缓存区中获取CCID显示数据,将显示缓存区中的SCSI显示数据与CCID显示数据拼接;
本实施例中,还包括:将提示信息和CCID显示数据进行拼接后得到的数据作为CCID显示数据,将显示缓存区中的SCSI显示数据与CCID显示数据拼接;
进一步的,当将显示缓存区中的SCSI显示数据与CCID显示数据拼接时,还包括:在显示屏上某位置提示后续还有其他操作可通过下翻键进行显示选择,例如,在右上角设置一个提示等;
步骤217:根据SCSI显示数据和CCID显示数据的长度以及每屏显示长度,计算屏号,并将屏号与操作标识建立对应关系,将对应关系保存至预设存储区中,置位允许按键标识,向上位机返回成功响应,返回步骤202;
所述根据SCSI显示数据和CCID显示数据的长度以及每屏显示长度,计算屏号,具体为:将SCSI显示数据的长度除以每屏显示长度,上取整得到SCSI显示数据需要占用的屏数,为得到的屏数分配屏号,同样的,将CCID显示数据的长度除以每屏显示长度,得到CCID显示数据需要占用的屏数,依次为得到的屏数分配屏号;
例如,SCSI显示数据的长度为200字节,每屏显示长度为140字节,则将200字节除以140字节,上取整得到SCSI显示数据需要占用的屏数为2屏,则为SCSI显示数据分配的屏号为1、2,并建立1、2屏对应的操作标识为SCSI操作标识;
例如,CCID显示数据的长度为300字节,每屏显示长度为140字节,则将300字节除以140字节,上取整得到CCID显示数据需要占用的屏数为3屏,则为CCID显示数据分配的屏号为3、4、5,并建立3、4、5屏对应的操作标识为CCID操作标识;
步骤218:将CCID显示数据保存至显示缓存区中,并从CCID显示数据中获取当前CCID显示数据进行显示,置位允许按键标识,向上位机返回成功响应,返回步骤202;
步骤219:判断允许按键标识是否置位,如果是,则执行步骤220,否则不响应按键,返回步骤202;
步骤220:等待接收按键操作,当接收到按键操作后,判断接收到的按键类型,如果是确认键,则执行步骤221,如果是取消键,则执行步骤230,如果是上翻键,则执行步骤239,如果是下翻键,则执行步骤244;
步骤221:获取并判断当前操作标识,如果是SCSI操作标识,则执行步骤222,如果是CCID操作标识,则执行步骤226;
步骤222:对SCSI缓存区中的第一哈希结果执行签名操作,得到第一签名结果,并删除显示缓存区中的SCSI显示数据;
步骤223:判断显示缓存区中是否还有CCID显示数据,如果是,则执行步骤224,否则执行步骤225;
步骤224:将当前操作标识置为CCID操作标识,显示CCID显示数据,复位允许按键标识,根据第一签名结果生成签名成功响应并返回上位机,返回步骤202;
步骤225:将当前操作标识置为第一初值,复位允许按键标识,根据第一签名结果生成签名成功响应并返回上位机,返回步骤202;
步骤226:对第二哈希结果执行签名操作,得到第二签名结果,并删除显示缓存区中的CCID显示数据;
步骤227:判断显示缓存区中是否还有SCSI显示数据,如果是,则执行步骤228,否则执行步骤229;
步骤228:将当前操作标识置为SCSI操作标识,显示SCSI显示数据,复位允许按键标识,根据第二签名结果生成签名成功响应并返回上位机,返回步骤202;
步骤229:将当前操作标识置为第一初值,复位允许按键标识,根据第二签名结果生成签名成功响应并返回上位机,返回步骤202;
步骤230:获取并判断当前操作标识,如果是SCSI操作标识,则执行步骤231,如果是CCID操作标识,则执行步骤235;
步骤231:删除SCSI缓存区中的第一哈希结果,并删除显示缓存区中的SCSI显示数据;
步骤232:判断显示缓存区中是否还有CCID显示数据,如果是,则执行步骤233,否则执行步骤234;
步骤233:将当前操作标识置为CCID操作标识,显示CCID显示数据,复位允许按键标识,向上位机返回签名失败响应,返回步骤202;
步骤234:将当前操作标识置为第一初值,复位允许按键标识,向上位机返回成功响应,返回步骤202;
步骤235:删除CCID缓存区中的第二哈希结果,并删除显示缓存区中的CCID显示数据;
步骤236:判断显示缓存区中是否还有SCSI显示数据,如果是,则执行步骤237,否则执行步骤238;
步骤237:将当前操作标识置为SCSI操作标识,显示SCSI显示数据,复位允许按键标识,向上位机返回签名失败响应,返回步骤202;
步骤238:将当前操作标识置为第一初值,复位允许按键标识,向上位机返回签名失败响应,返回步骤202;
步骤239:判断显示缓存区中当前显示数据之前是否还有显示数据,如果是,则执行步骤240,否则不响应按键,返回步骤220;
步骤240:将显示缓存区中当前显示数据之前的显示数据作为更新后的当前显示数据进行显示;
步骤241:获取更新后的当前显示数据对应的屏号,根据预设存储区中屏号与操作标识的对应关系,获取屏号对应的操作标识;
步骤242:获取当前操作标识,判断获取到的屏号对应的操作标识与当前操作标识是否相同,如果是,则返回步骤220,否则执行步骤243;
步骤243:更新当前操作标识为屏号对应的操作标识,返回步骤220;
例如,本实施例中,第1、2屏对应的当前操作标识为SCSI操作标识,第3、4、5屏对应的当前操作标识为CCID操作标识;
如果上翻键按下之前的当前显示数据对应的屏号为3,对应的操作标识为CCID操作标识,上翻键按下之后,得到的更新后的当前显示数据对应的屏号为2,对应的操作标识为SCSI操作标识,将当前操作标识更新为SCSI操作标识;
如果上翻键按下之前的当前显示数据对应的屏号为2,对应的操作标识为SCSI操作标识,上翻键按下之后,得到的更新后的当前显示数据对应的屏号为1,对应的操作标识仍为SCSI操作标识,则返回步骤220继续等待按键;
步骤244:判断显示缓存区中当前显示数据之后是否还有显示数据,如果是,则执行步骤245,否则不响应按键,返回步骤220;
步骤245:将显示缓存区中当前显示数据之后的显示数据作为更新后的当前显示数据进行显示;
步骤246:获取更新后的当前显示数据对应的屏号,根据预设存储区中屏号与操作标识的对应关系,获取屏号对应的操作标识;
步骤247:获取当前操作标识,判断获取到的屏号对应的操作标识与当前操作标识是否相同,如果是,则返回步骤220,否则执行步骤248;
步骤248:更新当前操作标识为屏号对应的操作标识,返回步骤220;
例如,本实施例中,第1、2屏对应的当前操作标识为SCSI操作标识、第3、4、5屏对应的当前操作标识为CCID操作标识;
如果下翻键按下之前的当前显示数据对应的屏号为2,对应的操作标识为CCID操作标识,下翻键按下之后,得到的更新后的当前显示数据对应的屏号为3,对应的操作标识为CCID操作标识,将当前操作标识更新为CCID操作标识;
如果下翻键按下之前的当前显示数据对应的屏号为3,对应的操作标识为SCSI操作标识,下翻键按下之后,得到的更新后的当前显示数据对应的屏号为4,对应的操作标识仍为CCID操作标识,则返回步骤220继续等待按键。
以上所述,仅为本发明较佳的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明公开的技术范围内,可轻易想到的变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应该以权利要求的保护范围为准。

Claims (22)

1.一种可处理多协议APDU命令的方法,其特征在于,包括:智能密钥设备与上位机建立连接,上电初始化,向所述上位机声明自身为SCSI设备和CCID设备,所述智能密钥设备执行以下操作:
步骤S1:复位SCSI接收数据标识,打开SCSI端点中断;
步骤S2:等待接收所述上位机发送的CCID命令,并实时检测所述SCSI接收数据标识;
当检测到所述SCSI接收数据标识置位时,获取并根据SCSI缓存区中的SCSI数据得到第一APDU数据,对所述第一APDU数据进行处理,得到SCSI处理结果,将所述SCSI处理结果返回所述上位机,复位所述SCSI接收数据标识,打开SCSI端点中断,返回步骤S2;
当接收到CCID命令时,根据接收到的CCID命令中的CCID数据得到第二APDU数据并保存至CCID缓存区中,对所述第二APDU数据进行处理,得到CCID处理结果,将所述CCID处理结果返回所述上位机,返回步骤S2;
所述方法还包括:
当所述智能密钥设备检测到发生SCSI端点中断时,判断SCSI端点中断类型,如果是SCSI设备标准命令中断,则执行相应操作并返回相应数据;如果是APDU命令中断,则接收APDU命令中的SCSI数据并保存至所述SCSI缓存区中,置位所述SCSI接收数据标识,关闭SCSI端点中断。
2.根据权利要求1所述的方法,其特征在于,所述步骤S2中,当所述智能密钥设备未接收到所述上位机发送的CCID命令,且检测SCSI接收数据标识未置位时,还包括:
步骤a0:判断是否处理按键操作,如果是,则执行步骤a1,否则不响应按键,返回步骤S2;
步骤a1:等待接收按键操作,当接收到按键操作后,判断接收到的按键类型,如果是确认键,则执行步骤a2,如果是取消键,则执行步骤a3,如果是翻页键,则执行步骤a4;
步骤a2:获取并根据独享标识执行相应的确认操作,更新所述独享标识,并向上位机返回成功响应,返回步骤S2;
步骤a3:获取并根据独享标识执行相应的取消操作,更新所述独享标识,并向上位机返回失败响应,返回步骤S2;
步骤a4:获取并根据独享标识执行相应的翻页操作,并向上位机返回翻页成功响应,返回步骤a1。
3.根据权利要求2所述的方法,其特征在于,所述对所述第一APDU数据进行处理,得到SCSI处理结果,将所述SCSI处理结果返回所述上位机,复位所述SCSI接收数据标识,打开SCSI端点中断,返回步骤S2,具体为:
步骤c1-00:获取并判断所述独享标识,如果所述独享标识为第一初值,则将所述独享标识置为SCSI独享,执行步骤c1-01,如果所述独享标识为SCSI独享,则执行步骤c1-01,如果所述独享标识为CCID独享,则向上位机返回当前正忙响应,返回步骤S2;
步骤c1-01:根据所述第一APDU数据,判断接收到的命令的类型,如果是哈希命令,则执行步骤c2-02,如果是签名命令,则执行步骤c3-03;
步骤c2-02:解析所述第一APDU数据,得到第一哈希数据和SCSI显示数据,对所述第一哈希数据进行哈希计算,得到第一哈希结果并保存,复位所述SCSI接收数据标识,打开SCSI端点中断,向上位机返回成功响应,返回步骤S2;
步骤c3-03:从SCSI显示数据中获取当前SCSI显示数据并显示,置位允许按键标识,向上位机返回成功响应,复位所述SCSI接收数据标识,打开SCSI端点中断,返回步骤S2;
所述对所述第二APDU数据进行处理,得到CCID处理结果,将所述CCID处理结果返回所述上位机,返回步骤S2,具体为:
步骤c1-10:获取并判断所述独享标识,如果所述独享标识为第一初值,则将所述独享标识置为CCID独享,执行步骤c1-11,如果所述独享标识为CCID独享,则执行步骤c1-11,如果所述独享标识为SCSI独享,则向上位机返回当前正忙响应,返回步骤S2;
步骤c1-11:根据所述第二APDU数据,判断接收到的命令的类型,如果是哈希命令,则执行步骤c2-12,如果是签名命令,则执行步骤c3-13;
步骤c2-12:解析所述第二APDU数据,得到第二哈希数据和CCID显示数据,对所述第二哈希数据进行哈希计算,得到第二哈希结果并保存,向上位机返回成功响应,返回步骤S2;
步骤c3-13:从CCID显示数据中获取当前CCID显示数据并显示,置位允许按键标识,向上位机返回成功响应,返回步骤S2。
4.根据权利要求3所述的方法,其特征在于,
所述步骤c2-02之前还包括:判断所述第一APDU数据是否符合预设格式,如果是,则执行步骤c2-02,否则向上位机返回错误响应,返回步骤S2;
所述步骤c2-12之前还包括:判断所述第二APDU数据是否符合预设格式,如果是,则执行步骤c2-12,否则向上位机返回错误响应,返回步骤S2。
5.根据权利要求3所述的方法,其特征在于,所述步骤a0具体为:判断所述允许按键标识是否置位,如果是,则处理按键操作,执行步骤a1,否则不响应按键,返回步骤S2。
6.根据权利要求5所述的方法,其特征在于,所述步骤a2,具体为:
步骤a2-1:获取并判断所述独享标识的类型,如果是SCSI独享,则执行步骤a2-2,如果是CCID独享,则执行步骤a2-3,如果是第一初值,则不响应按键,返回步骤S2;
步骤a2-2:对所述第一哈希结果执行签名操作,得到第一签名结果,将所述独享标识置为第一初值,复位所述允许按键标识,根据所述第一签名结果生成签名成功响应并返回上位机,返回步骤S2;
步骤a2-3:对所述第二哈希结果执行签名操作,得到第二签名结果,将所述独享标识置为第一初值,复位所述允许按键标识,根据所述第二签名结果生成签名成功响应并返回上位机,返回步骤S2。
7.根据权利要求5所述的方法,其特征在于,所述步骤a3,具体为:
步骤a3-1:获取并判断独享标识的类型,如果是SCSI独享,则执行步骤a3-2,如果是CCID独享,则执行步骤a3-3,如果是第一初值,则不响应按键,返回步骤S2;
步骤a3-2:删除所述第一哈希结果和所述SCSI显示数据,将所述独享标识置为第一初值,复位所述允许按键标识,向上位机返回失败响应,返回步骤S2;
步骤a3-3:删除所述第二哈希结果和所述CCID显示数据,将所述独享标识置为第一初值,复位所述允许按键标识,向上位机返回失败响应,返回步骤S2。
8.根据权利要求5所述的方法,其特征在于,所述步骤a1中,当所述翻页键为上翻键时,所述步骤a4具体为:
步骤d1-01:获取并判断所述独享标识,如果是SCSI独享,则执行步骤d2-02,如果是CCID独享,则执行步骤d3-03,如果是第一初值,则不响应按键,返回步骤S2;
步骤d2-02:从所述SCSI显示数据中获取当前SCSI显示数据之前的SCSI显示数据,作为当前SCSI显示数据并显示,返回步骤a1;
步骤d3-03:从所述CCID显示数据中获取当前CCID显示数据之前的SCSI显示数据,作为当前CCID显示数据并显示,返回步骤a1。
9.根据权利要求5所述的方法,其特征在于,所述步骤a1中,当所述翻页键为下翻键时,所述步骤a4具体为;
步骤d1-11:获取并判断所述独享标识,如果是SCSI独享,则执行步骤d2-12,如果是CCID独享,则执行步骤d3-13,如果是第一初值,则不响应按键,返回步骤S2;
步骤d2-12:从所述SCSI显示数据中获取当前SCSI显示数据之后的SCSI显示数据,作为当前SCSI显示数据并显示,返回步骤a1;
步骤d3-13:从所述CCID显示数据中获取当前CCID显示数据之后的CCID显示数据,作为当前CCID显示数据并显示,返回步骤a1。
10.根据权利要求1所述的方法,其特征在于,所述步骤S2中,当所述智能密钥设备未接收到所述上位机发送的CCID命令,且检测SCSI接收数据标识未置位时,还包括:
步骤b0:判断是否处理按键操作,如果是,则执行步骤b1,否则不响应按键,返回步骤S2;
步骤b1:当接收到按键操作后,判断接收到的按键类型,如果是确认键,则执行步骤b2,如果是取消键,则执行步骤b3,如果是翻页键,则执行步骤b4;
步骤b2:获取并根据当前操作标识执行相应的确认操作,更新所述当前操作标识,并向上位机返回成功响应,返回步骤S2;
步骤b3:获取并根据当前操作标识执行相应的取消操作,更新所述当前操作标识,并向上位机返回失败响应,返回步骤S2;
步骤b4:执行翻页操作,根据翻页后显示信息,更新当前操作标识,向所述上位机返回翻页成功响应,返回步骤b1。
11.根据权利要求10所述的方法,其特征在于,所述对所述第一APDU数据进行处理,得到SCSI处理结果,将所述SCSI处理结果返回所述上位机,复位所述SCSI接收数据标识,打开SCSI端点中断,返回步骤S2,具体为:
步骤e1-01:根据所述第一APDU数据,判断接收到的命令的类型,如果是哈希命令,则执行步骤e2-02,如果是签名命令,则执行步骤e3-03;
步骤e2-02:解析所述第一APDU数据,得到第一哈希数据和SCSI显示数据,对所述第一哈希数据进行哈希计算,得到第一哈希结果并保存,向上位机返回成功响应,复位所述SCSI接收数据标识,打开SCSI端点中断,返回步骤S2;
步骤e3-03:获取并判断当前操作标识,如果是CCID操作标识,则执行步骤e4-04,如果是SCSI操作标识,则执行步骤e3-05,如果是第二初值,则将当前操作标识置为SCSI操作标识,执行步骤e3-05;
步骤e4-04:将显示缓存区中的CCID显示数据与SCSI显示数据拼接,根据所述CCID显示数据和所述SCSI显示数据的长度以及每屏显示长度,计算屏号,并将屏号与操作标识建立对应关系,置位允许按键标识,复位所述SCSI接收数据标识,打开SCSI端点中断,向所述上位机返回成功响应,返回步骤S2;
步骤e3-05:保存SCSI显示数据至显示缓存区中,获取所述SCSI显示数据中的当前SCSI显示数据进行显示,置位允许按键标识,复位所述SCSI接收数据标识,打开SCSI端点中断,向所述上位机返回成功响应,返回步骤S2;
所述对所述第二APDU数据进行处理,得到CCID处理结果,将所述CCID处理结果返回所述上位机,返回步骤S2,具体为:
步骤e1-11:根据所述第二APDU数据,判断接收到的命令的类型,如果是哈希命令,则执行步骤e2-12,如果是签名命令,则执行步骤e3-13;
步骤e2-12:解析所述第二APDU数据,得到第二哈希数据和CCID显示数据,对所述第二哈希数据进行哈希计算,得到第二哈希结果并保存,向上位机返回成功响应,返回步骤S2;
步骤e3-13:获取并判断当前操作标识,如果是SCSI操作标识,则执行步骤e3-14,如果是CCID操作标识,则执行步骤e3-15,如果是第二初值,则将当前操作标识置为CCID操作标识,执行步骤e3-15;
步骤e3-14:将显示缓存区中的SCSI数据与CCID显示数据拼接,根据所述CCID显示数据和所述SCSI显示数据的长度以及每屏显示长度,计算屏号,并将屏号与操作标识建立对应关系,置位允许按键标识,向所述上位机返回成功响应,返回步骤S2;
步骤e3-15:保存CCID显示数据至显示缓存区中,获取所述CCID显示数据中的当前CCID显示数据进行显示,置位允许按键标识,向所述上位机返回成功响应,返回步骤S2。
12.根据权利要求11所述的方法,其特征在于,
所述步骤e2-02之前还包括:判断所述第一APDU数据是否符合预设格式,如果是,则执行步骤e2-02,否则向上位机返回错误响应,返回步骤S2;
所述步骤e2-12之前还包括:判断所述第二APDU数据是否符合预设格式,如果是,则执行步骤e2-12,否则向上位机返回错误响应,返回步骤S2。
13.根据权利要求11所述的方法,其特征在于,所述步骤b0具体为:判断所述允许按键标识是否置位,如果是,则处理按键操作,执行步骤b1,否则不响应按键,返回步骤S2。
14.根据权利要求13所述的方法,其特征在于,所述步骤b2,具体为:
步骤f1:获取并判断当前操作标识,如果是SCSI操作标识,则对所述第一哈希结果执行签名操作,得到第一签名结果,并删除所述显示缓存区中的SCSI显示数据,执行步骤f2,如果是CCID操作标识,则对所述第二哈希结果执行签名操作,得到第二签名结果,并删除所述显示缓存区中的CCID显示数据,执行步骤f3,如果是第二初值,则不响应按键,返回步骤S2;
步骤f2:判断所述显示缓存区中是否还有CCID显示数据,如果是,则将所述当前操作标识置为CCID操作标识,显示所述CCID显示数据,根据所述第一签名结果生成签名成功响应并返回所述上位机,返回步骤S2;否则将所述当前操作标识置为第一初值,复位所述允许按键标识,根据所述第一签名结果生成签名成功响应并返回上位机,返回步骤S2;
步骤f3:判断所述显示缓存区中是否还有SCSI显示数据,如果是,则将所述当前操作标识置为SCSI操作标识,显示所述SCSI显示数据,根据所述第二签名结果生成签名成功响应并返回上位机,返回步骤S2;否则将所述当前操作标识置为第一初值,复位所述允许按键标识,根据所述第二签名结果生成签名成功响应并返回上位机,返回步骤S2。
15.根据权利要求13所述的方法,其特征在于,所述步骤b3,具体为:
步骤g1:获取并判断当前操作标识,如果是SCSI操作标识,则删除所述第一哈希结果,并删除所述显示缓存区中的SCSI显示数据,执行步骤g2,如果是CCID操作标识,则删除所述第二哈希结果和所述CCID显示数据,执行步骤g3,如果是第二初值,则不响应按键,返回步骤S2;
步骤g2:判断所述显示缓存区中是否还有CCID显示数据,如果是,则将所述当前操作标识置为CCID操作标识,显示所述CCID显示数据,复位所述允许按键标识,向所述上位机返回失败响应,返回步骤S2;否则将所述当前操作标识置为第一初值,复位所述允许按键标识,向所述上位机返回失败响应,返回步骤S2;
步骤g3:判断所述显示缓存区中是否还有SCSI显示数据,如果是,则将所述当前操作标识置为SCSI操作标识,显示所述SCSI显示数据,复位所述允许按键标识,向所述上位机返回失败响应,返回步骤S2;否则将所述当前操作标识置为第一初值,复位所述允许按键标识,向所述上位机返回失败响应,返回步骤S2。
16.根据权利要求13所述的方法,其特征在于,所述步骤b1中,当所述翻页键为上翻键时,执行以下操作:
步骤h1-01:判断所述显示缓存区中当前显示数据之前是否还有显示数据,如果是,则将所述显示缓存区中当前显示数据之前的显示数据作为更新后的当前显示数据进行显示,执行步骤h2-02,否则不响应按键,返回步骤b1;
步骤h2-02:获取更新后的当前显示数据对应的屏号,根据屏号与操作标识的对应关系,获取所述屏号对应的操作标识;
步骤h2-03:获取当前操作标识,判断所述屏号对应的操作标识与当前操作标识是否相同,如果是,则返回步骤b1,否则更新当前操作标识为所述屏号对应的操作标识,返回步骤b1。
17.根据权利要求13所述的方法,其特征在于,所述步骤b1中,当所述翻页键为下翻键时,执行以下操作:
步骤h1-11:判断所述显示缓存区中当前显示数据之后是否还有显示数据,如果是,则将所述显示缓存区中当前显示数据之后的显示数据作为更新后的当前显示数据进行显示,执行步骤h2-12,否则不响应按键,返回步骤b1;
步骤h2-12:获取更新后的当前显示数据对应的屏号,根据屏号与操作标识的对应关系,获取所述屏号对应的操作标识;
步骤h2-13:获取当前操作标识,判断所述屏号对应的操作标识与当前操作标识是否相同,如果是,则返回步骤b1,否则更新当前操作标识为所述屏号对应的操作标识,返回步骤b1。
18.根据权利要求1所述的方法,其特征在于,所述获取并根据SCSI缓存区中的SCSI数据得到第一APDU数据,具体包括:
步骤D1:判断SCSI协商密钥标识是否置位,如果是,则将所述SCSI缓存区中的SCSI数据作为第一APDU数据,否则执行步骤D2;
步骤D2:根据所述第一APDU数据,判断接收到的命令是否为协商SCSI安全通道命令,是则执行步骤D3,否则向所述上位机返回错误响应,打开SCSI端点中断,返回步骤S2;
步骤D3:建立SCSI安全通道,生成SCSI会话密钥,置位所述SCSI协商密钥标识,打开SCSI端点中断,将所述SCSI会话密钥返回给所述上位机,返回步骤S2;
所述将所述SCSI缓存区中的SCSI数据作为第一APDU数据,具体为:应用所述SCSI会话密钥对SCSI数据进行解密,得到第一APDU数据。
19.根据权利要求1所述的方法,其特征在于,所述根据接收到的CCID命令中的CCID数据得到第二APDU数据,具体包括:
步骤C1:判断CCID协商密钥标识是否置位,如果是,则将接收到的CCID命令中的CCID数据作为第二APDU数据,否则执行步骤C2;
步骤C2:根据所述第二APDU数据,判断接收到的命令是否为协商CCID安全通道命令,是则执行步骤C3,否则向所述上位机返回错误响应,返回步骤S2;
步骤C3:建立CCID安全通道,生成CCID会话密钥,置位所述CCID协商密钥标识,将所述CCID会话密钥返回给所述上位机,返回步骤S2;
所述将接收到的CCID命令中的CCID数据作为第二APDU数据,具体为:应用所述CCID会话密钥对CCID数据进行解密,得到第二APDU数据。
20.根据权利要求1所述的方法,其特征在于,所述方法还包括:
当所述智能密钥设备检测到发生setup端点中断时,关闭SCSI端点中断,接收setup命令数据,根据所述setup命令数据执行枚举操作,向所述上位机返回相应数据,打开SCSI端点中断,退出setup端点中断;
所述步骤S1还包括:打开setup端点中断。
21.根据权利要求20所述的方法,其特征在于,
所述智能密钥设备检测到发生setup端点中断之后还包括:检测所述智能密钥设备的0端点寄存器标识,当所述0端点寄存器标识置位时,接收setup命令数据。
22.根据权利要求1所述的方法,其特征在于,
所述将所述SCSI处理结果返回所述上位机,具体为:通过所述智能密钥设备的1端点将所述SCSI处理结果返回所述上位机;
所述检测到发生SCSI端点中断时,还包括:检测所述智能密钥设备的2端点寄存器标识,当所述2端点寄存器标识置位时,接收SCSI命令数据;
所述将所述CCID处理结果返回所述上位机,具体为:通过所述智能密钥设备的3端点将所述CCID处理结果返回所述上位机;
所述接收到CCID命令,具体为:检测所述智能密钥设备的4端点寄存器标识,当所述4端点寄存器标识置位时,接收CCID命令数据。
CN201410838202.3A 2014-12-29 2014-12-29 一种可处理多协议apdu命令的方法 Active CN104537294B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201410838202.3A CN104537294B (zh) 2014-12-29 2014-12-29 一种可处理多协议apdu命令的方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201410838202.3A CN104537294B (zh) 2014-12-29 2014-12-29 一种可处理多协议apdu命令的方法

Publications (2)

Publication Number Publication Date
CN104537294A true CN104537294A (zh) 2015-04-22
CN104537294B CN104537294B (zh) 2017-09-22

Family

ID=52852816

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201410838202.3A Active CN104537294B (zh) 2014-12-29 2014-12-29 一种可处理多协议apdu命令的方法

Country Status (1)

Country Link
CN (1) CN104537294B (zh)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN105786729A (zh) * 2016-02-19 2016-07-20 深圳市文鼎创数据科技有限公司 命令处理方法及装置
CN109949463A (zh) * 2019-03-29 2019-06-28 天津经纬恒润科技有限公司 一种解密方法及装置

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN201078772Y (zh) * 2007-02-16 2008-06-25 北京飞天诚信科技有限公司 多接口和可自动安装的信息安全设备
US20080209571A1 (en) * 2003-09-23 2008-08-28 Scm Microsystems Gmbh Device for Secure Access to Digital Media Contents, Virtual Multi-Interface Driver and System for Secure Access to Digital Media Contents
CN101420299A (zh) * 2008-11-28 2009-04-29 北京飞天诚信科技有限公司 提高智能密钥设备稳定性的方法和智能密钥设备
CN101650700A (zh) * 2009-09-17 2010-02-17 北京飞天诚信科技有限公司 一种支持多逻辑通道通信的方法和设备
CN103631747A (zh) * 2013-11-20 2014-03-12 飞天诚信科技股份有限公司 一种通讯模式的识别方法

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20080209571A1 (en) * 2003-09-23 2008-08-28 Scm Microsystems Gmbh Device for Secure Access to Digital Media Contents, Virtual Multi-Interface Driver and System for Secure Access to Digital Media Contents
CN201078772Y (zh) * 2007-02-16 2008-06-25 北京飞天诚信科技有限公司 多接口和可自动安装的信息安全设备
CN101420299A (zh) * 2008-11-28 2009-04-29 北京飞天诚信科技有限公司 提高智能密钥设备稳定性的方法和智能密钥设备
CN101650700A (zh) * 2009-09-17 2010-02-17 北京飞天诚信科技有限公司 一种支持多逻辑通道通信的方法和设备
CN103631747A (zh) * 2013-11-20 2014-03-12 飞天诚信科技股份有限公司 一种通讯模式的识别方法

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN105786729A (zh) * 2016-02-19 2016-07-20 深圳市文鼎创数据科技有限公司 命令处理方法及装置
CN105786729B (zh) * 2016-02-19 2018-11-09 深圳市文鼎创数据科技有限公司 命令处理方法及装置
CN109949463A (zh) * 2019-03-29 2019-06-28 天津经纬恒润科技有限公司 一种解密方法及装置
CN109949463B (zh) * 2019-03-29 2021-08-24 天津经纬恒润科技有限公司 一种解密方法及装置

Also Published As

Publication number Publication date
CN104537294B (zh) 2017-09-22

Similar Documents

Publication Publication Date Title
JP5873571B2 (ja) アプリケーション・データを処理するための方法及び計算ノード
US9549316B2 (en) Host device coupled to a mobile phone and method of operating the same
WO2015085754A1 (zh) 一种安全通讯的方法
CN106650506B (zh) 电子电路的受控启动方法和电子设备
CN109687974B (zh) Apk验证方法、装置、移动终端及可读存储介质
KR20130130659A (ko) 데이터 전송 방법 및 장치
KR20150026656A (ko) 응용프로그램 관리 방법 및 그 전자 장치
CN103793644B (zh) 信息安全设备实现多应用的方法、信息安全设备和系统
CN107729040A (zh) 一种单片机的iap方法及系统
CN103488953B (zh) 一种应用于多功能设备的智能切换方法
CN104537294A (zh) 一种可处理多协议apdu命令的方法
CN106020855A (zh) 多cpu系统和用于升级cpu的方法
CN103326863B (zh) 一种电子签名工具的签名方法
CN108171063A (zh) 访问安全元件的方法、终端及计算机可读存储介质
CN104796532A (zh) 一种销毁移动终端的方法及装置
CN104052602A (zh) 利用单点登录结合命令行接口防止密码泄漏
TWI529537B (zh) 具有移動高畫質連接埠之顯示器及其信號處理方法
KR101529713B1 (ko) 비정상 전원절환에 대한 안드로이드 단말의 안정성 강화 방법 및 이를 위한 위한 프로그램을 기록한 컴퓨터로 판독가능한 기록매체
CN108365973A (zh) 用于在虚拟隧道上进行传输的方法和设备
CN111131316B (zh) 用于通信的方法、装置、家电设备及服务器
WO2017092315A1 (zh) 一种控制电视的方法及装置
US10664342B2 (en) Leak protection of executables with debug information
WO2019242043A1 (zh) Usb移动设备、移动设备识别系统及识别方法
JP2017506372A (ja) ユーザ端末機及び該ユーザ端末機の周辺機器を用いた核心コード保護方法
KR101758139B1 (ko) Hdmi 동글에서 와이파이 상태를 관리하는 장치 및 방법

Legal Events

Date Code Title Description
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant