CN108347440B - 一种使scsi设备支持智能卡应用的方法及装置 - Google Patents

一种使scsi设备支持智能卡应用的方法及装置 Download PDF

Info

Publication number
CN108347440B
CN108347440B CN201810121174.1A CN201810121174A CN108347440B CN 108347440 B CN108347440 B CN 108347440B CN 201810121174 A CN201810121174 A CN 201810121174A CN 108347440 B CN108347440 B CN 108347440B
Authority
CN
China
Prior art keywords
equipment
module
scsi
identification number
information
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
CN201810121174.1A
Other languages
English (en)
Other versions
CN108347440A (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 CN201810121174.1A priority Critical patent/CN108347440B/zh
Publication of CN108347440A publication Critical patent/CN108347440A/zh
Application granted granted Critical
Publication of CN108347440B publication Critical patent/CN108347440B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L63/00Network architectures or network communication protocols for network security
    • H04L63/04Network architectures or network communication protocols for network security for providing a confidential data exchange among entities communicating through data packet networks
    • H04L63/0428Network architectures or network communication protocols for network security for providing a confidential data exchange among entities communicating through data packet networks wherein the data content is protected, e.g. by encrypting or encapsulating the payload
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04BTRANSMISSION
    • H04B1/00Details of transmission systems, not covered by a single one of groups H04B3/00 - H04B13/00; Details of transmission systems not characterised by the medium used for transmission
    • H04B1/38Transceivers, i.e. devices in which transmitter and receiver form a structural unit and in which at least one part is used for functions of transmitting and receiving
    • H04B1/3816Mechanical arrangements for accommodating identification devices, e.g. cards or chips; with connectors for programming identification devices
    • 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/0876Network architectures or network communication protocols for network security for authentication of entities based on the identity of the terminal or configuration, e.g. MAC address, hardware or software configuration or device fingerprint
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/14Session management
    • H04L67/146Markers for unambiguous identification of a particular session, e.g. session cookie or URL-encoding

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Computer Security & Cryptography (AREA)
  • Computer Hardware Design (AREA)
  • Computing Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Power Engineering (AREA)
  • Mobile Radio Communication Systems (AREA)
  • Telephonic Communication Services (AREA)

Abstract

本发明公开了一种使SCSI设备支持智能卡应用的方法及装置,涉及计算机领域。方法包括:当第一接口被系统调用时,将系统传入的设备编号转换成SCSI设备标识编号,建立系统与SCSI设备标识编号对应的设备之间的通信通道;当第三接口被系统调用时,将系统传入的设备编号转换成SCSI设备标识编号,向系统返回系统传入的设备编号对应的设备是插入状态还是拔除状态;当第五接口被系统调用时,将系统传入的设备编号转换成SCSI设备标识编号,与SCSI设备标识编号对应的设备进行通信;采用本发明的技术方法,使SCSI设备能够支持智能卡应用,扩大了SCSI设备的使用范围,提高了用户体验。

Description

一种使SCSI设备支持智能卡应用的方法及装置
技术领域
本发明涉及计算机领域,尤其涉及一种使SCSI设备支持智能卡应用的方法及装置。
背景技术
随着科技的发展,智能卡应用广泛且持续不断创新中,其发展史是人类科技文明历史的见证。现代社会几乎各个行业与领域都涉及了智能卡应用。目前智能卡应用的主要领域包括:身份识别领域、通信领域、金融领域、一卡通领域等。
现有技术中,SCSI设备只作为普通的USB设备使用,无法支持智能卡应用,使得SCSI设备的使用受到很大程度的限制,降低了用户体验。
发明内容
本发明的目的是为了解决现有技术中存在的问题,提供了一种使SCSI设备支持智能卡应用的方法及装置。
本发明采用的技术方案是:
本发明提供了一种使SCSI设备支持智能卡应用的方法,包括:
当第一接口被系统调用时,执行步骤S1;当第三接口被系统调用时,执行步骤S2;当第五接口被系统调用时,执行步骤S3;
步骤S1、将系统传入的设备编号转换成SCSI设备标识编号,判断系统是否与SCSI设备标识编号对应的设备建立通信通道,是则向系统返回成功建立通道;否则建立系统与SCSI设备标识编号对应的设备之间的通信通道,并将SCSI设备标识编号和通信通道编号对应保存至通道列表中,向系统返回成功建立通道;
步骤S2、将系统传入的设备编号转换成SCSI设备标识编号,获取已插入设备的设备编号和设备信息,将已插入设备的设备编号转换成SCSI设备标识编号,将符合预设条件的设备信息和对应的SCSI设备标识编号保存至设备列表中,判断系统传入的设备编号对应的SCSI设备标识编号是否存在于设备列表中,是则向系统返回系统传入的设备编号对应的设备是插入状态,否则向系统返回系统传入的设备编号对应的设备是拔除状态;
步骤S3、将系统传入的设备编号转换成SCSI设备标识编号,根据SCSI设备标识编号从设备列表中找到对应的设备信息,根据设备信息确定对应的设备,对系统传入的指令进行加密,向设备发送第一数据头,将加密后的指令发送至设备后,向设备发送第二数据头;待接收到设备返回的数据后,对数据进行解密,将解密后的数据返回系统。
本发明提供一种使SCSI设备支持智能卡应用的装置,包括:
接收模块,用于接收系统传入的设备编号;
转换模块,用于当第一接口被系统调用时,将接收模块接收的设备编号转换成SCSI设备标识编号;
第一判断模块,用于判断系统是否与SCSI设备标识编号对应的设备建立通信通道;
返回模块,用于当第一判断模块判断系统与SCSI设备标识编号对应的设备建立通信通道时,向系统返回成功建立通道;
第一建立通道模块,用于当第一判断模块判断系统与SCSI设备标识编号对应的设备没有建立通信通道时,建立系统与SCSI设备标识编号对应的设备之间的通信通道,并将SCSI设备标识编号和通信通道编号对应保存至通道列表中;
返回模块,还用于当第一建立通道模块将SCSI设备标识编号和通信通道编号对应保存至通道列表中时,向系统返回成功建立通道;
转换模块,还用于当第三接口被系统调用时,将接收模块接收的设备编号转换成SCSI设备标识编号;
第一获取模块,用于获取已插入设备的设备编号和设备信息;
转换模块,还用于将第一获取模块获取到的已插入设备的设备编号转换成SCSI设备标识编号;
保存模块,用于将符合预设条件的设备信息和对应的SCSI设备标识编号保存至设备列表中;
第二判断模块,用于判断系统传入的设备编号对应的SCSI设备标识编号是否存在于保存模块中的设备列表中;
返回模块,还用于当第二判断模块判断系统传入的设备编号对应的SCSI设备标识编号存在于保存模块中的设备列表中时,向系统返回系统传入的设备编号对应的设备是插入状态;还用于当第二判断模块判断系统传入的设备编号对应的SCSI设备标识编号不存在于保存模块中的设备列表中时,向系统返回系统传入的设备编号对应的设备是拔除状态;
转换模块,还用于当第五接口被系统调用时,将接收模块接收的设备编号转换成SCSI设备标识编号;
查找模块,用于根据SCSI设备标识编号从设备列表中找到对应的设备信息,根据设备信息确定对应的设备;
接收模块,还用于接收系统传入的指令;
加密模块,用于对接收模块接收到的系统传入的指令进行加密;
发送模块,用于向查找模块查找到的设备发送第一数据头;还用于向设备发送加密模块加密后的指令后,向设备发送第二数据头;
接收模块,还用于接收设备返回的数据;
解密模块,用于对接收模块接收到的设备返回的数据进行解密;
返回模块,还用于将解密模块解密后的数据返回系统。
本发明取得的有益效果是:采用本发明的技术方法,使SCSI设备能够支持智能卡应用,扩大了SCSI设备的使用范围,提高了用户体验。
附图说明
为了更清楚的说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单的介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本发明实施例二中提供的一种使SCSI设备支持智能卡应用的方法的流程图;
图2为本发明实施例三中第一接口被调用时的流程图;
图3为本发明实施例三中第二接口被调用时的流程图;
图4为本发明实施例三中第三接口被调用时的流程图;
图5为本发明实施例三中第四接口被调用时的流程图;
图6为本发明实施例三中第五接口被调用时的流程图。
图7为本发明实施例四中提供的一种使SCSI设备支持智能卡应用的装置的方框图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
实施例一
本实施例一提供了一种使SCSI设备支持智能卡应用的方法,包括:
当第一接口被系统调用时,执行步骤S1;当第三接口被系统调用时,执行步骤S2;当第五接口被系统调用时,执行步骤S3;
步骤S1、将系统传入的设备编号转换成SCSI设备标识编号,判断系统是否与SCSI设备标识编号对应的设备建立通信通道,是则向系统返回成功建立通道;否则建立系统与SCSI设备标识编号对应的设备之间的通信通道,并将SCSI设备标识编号和通信通道编号对应保存至通道列表中,向系统返回成功建立通道;
步骤S2、将系统传入的设备编号转换成SCSI设备标识编号,获取已插入设备的设备编号和设备信息,将已插入设备的设备编号转换成SCSI设备标识编号,将符合预设条件的设备信息和对应的SCSI设备标识编号保存至设备列表中,判断系统传入的设备编号对应的SCSI设备标识编号是否存在于设备列表中,是则向系统返回系统传入的设备编号对应的设备是插入状态,否则向系统返回系统传入的设备编号对应的设备是拔除状态;
步骤S3、将系统传入的设备编号转换成SCSI设备标识编号,根据SCSI设备标识编号从设备列表中找到对应的设备信息,根据设备信息确定对应的设备,对系统传入的指令进行加密,向设备发送第一数据头,将加密后的指令发送至设备后,向设备发送第二数据头;待接收到设备返回的数据后,对数据进行解密,将解密后的数据返回系统。
具体地,步骤S2中设备信息包括:第一设备信息;
相应地,步骤S2中将符合预设条件的设备信息和对应的SCSI设备标识编号保存至设备列表中,具体包括:
判断获取到的已插入设备的第一设备信息是否符合预设条件,是则将符合预设条件的第一设备信息和第一设备信息对应的SCSI设备标识编号保存至设备列表中;否则向系统返回系统传入的设备编号对应的设备是插入状态。
进一步地,判断获取到的已插入设备的第一设备信息是否符合预设条件,具体包括:
判断获取到的已插入设备的第一设备信息是否与预置的第一设备信息相同,是则将符合预设条件的第一设备信息和第一设备信息对应的SCSI设备标识编号保存至设备列表中;否则向系统返回系统传入的设备编号对应的设备是插入状态。
优选地,步骤S2之前,还包括:创建设备字典,将预设条件添加到设备字典中;
步骤S2中,将符合预设条件的设备编号和设备信息保存至设备列表中,具体为:从设备字典中读取预设条件,将符合预设条件的设备编号和设备信息保存至设备列表中。
具体地,步骤S2中设备信息还包括:第二设备信息;
相应地,向系统返回系统传入的设备编号对应的设备是插入状态之前,还包括:对应保存系统传入的设备编号对应的SCSI设备标识编号和设备编号对应的第二设备信息。
具体地,步骤S3中将解密后的数据返回系统之前还包括:
步骤B1、判断已接收到的设备返回的数据的长度是否小于预设长度,是则继续接收数据,对数据进行解密;否则执行步骤B2;
步骤B2、接收第三数据头,并判断接收第三数据头是否成功,是则将已接收到的数据返回至系统,通信成功;否则向系统返回通信失败。
进一步地,步骤B1包括:
步骤C1、判断已接收到的设备返回数据的长度是否小于预设长度,是则执行步骤C2,否则将已接收到的设备返回数据返回至系统,通信成功;
步骤C2、接收设备返回的设备返回数据,判断当前接收到的设备返回数据的是否为第三数据头,是则执行步骤B2;否则执行步骤C3;
步骤C3、对当前接收到的设备返回数据进行解密,判断已接收到的设备返回的数据与当前接收到的设备返回数据的长度和是否小于预设设备返回数据的长度,是则将当前接收到的设备返回的数据保存至已接收到的设备返回数据中,返回步骤C1;否则执行步骤B2。
优选地,方法还包括:当第二接口被调用时,执行步骤S4;当第四接口被调用时,执行步骤S5;
步骤S4、将系统传入的设备编号转换成SCSI设备标识编号,获取与SCSI设备标识编号对应设备所在槽的属性,并向系统返回槽的属性;
步骤S5、将系统传入的设备编号转换成SCSI设备标识编号,关闭系统与SCSI设备标识编号对应的设备的通信通道,并从通道列表中删除SCSI设备标识编号和通信通道编号。
在本实施例中,步骤S1之前还包括:根据系统传入的设备编号获取设备编号对应设备的设备类型,并将设备编号和设备编号对应设备的设备类型保存至设备类型列表中。
相应地,步骤S1之前还包括:根据系统传入的设备编号从设备类型列表中确定设备编号对应设备的设备类型,如为SCSI设备,执行步骤S1;如为CCID设备,将系统传入的设备编号转换成CCID设备标识编号,与CCID设备标识编号对应的设备建立通信通道,保存设备的功能属性。
相应地,步骤S2之前还包括:根据系统传入的设备编号从设备类型列表中确定设备编号对应设备的设备类型,如为SCSI设备,执行步骤S2;如为CCID设备,将系统传入的设备编号转换成CCID设备标识编号,获取CCID设备标识编号对应设备的当前状态。
相应地,步骤S3之前还包括:根据系统传入的设备编号从设备类型列表中确定设备编号对应设备的设备类型,如为SCSI设备,执行步骤S4;如为CCID设备,将系统传入的设备编号转换成CCID设备标识编号,与CCID设备标识编号对应的设备进行通信。
实施例二
本实施例二提供了一种使SCSI设备支持智能卡应用的方法,如图1所示,包括:
步骤101、系统检测是否有设备插入,是则系统给检测到插入的设备设置设备编号,执行步骤102,否则继续等待;
当系统检测到有设备插入时,系统给检测到插入的设备设置设备编号。其中,设备编号用Lun(Logical Unit Number)标识,基本格式是0xXXXXYYYY,其中XXXX代表多个设备,YYYY代表多个插槽。
例如:插入的第一个设备,Lun值为0x00000000;
步骤102、系统调用接口,当第一接口被调用时,执行步骤103;当第二接口被调用时,执行步骤105;当第三接口被调用时,执行步骤106;当第四接口被调用时,执行步骤110;当第五接口被调用时,执行步骤111;
步骤103、将系统传入的设备编号转换成SCSI设备标识编号,判断系统是否与SCSI设备标识编号对应的设备建立通信通道,是则向系统返回成功建立通道,否则执行步骤104;
在本实施例中,第一接口为IFDHCreateChannel(DWORDLun,DWORD Channel)。其中,参数Lun(Logical Unit Number)为设备编号,基本格式是0xXXXXYYYY,其中XXXX代表多个设备,YYYY代表多个插槽。参数Channel为信道ID标识,信道ID标识与设备编号一一对应。当第一接口被调用时,根据参数Lun判断系统是否与设备编号对应的设备建立通信通道。
例如,系统传入的设备编号为:Lun值为0x00000001;SCSI设备标识编号为:01;
优选地,在本实施例中,步骤103之前还包括:根据系统传入的设备编号获取设备编号对应设备的设备类型,并将设备编号和设备编号对应设备的设备类型保存至设备类型列表中;
具体地,调用函数GetInterfaceClass(intf,&InterfaceClass)获取设备编号对应设备的设备类型,参数&InterfaceClass具体为设备类型,当其为8时,确认设备类型为SCSI,否则确认设备类型为CCID。
相应地,步骤103之前还包括:根据系统传入的设备编号从所述设备类型列表中确定设备编号对应设备的设备类型,如为SCSI设备,执行步骤103;如为CCID设备,执行相关操作。
需要说明的是,本实施例中所述方法,还包括:安装kext驱动,在kext驱动中设置预置的设备信息,保证SCSI设备的通信权限不被系统占用。
其中,设备信息包括PID、VID和厂商信息等。
步骤104、建立系统与所述SCSI设备标识编号对应的设备之间的通信通道,并将所述SCSI设备标识编号和通信通道编号对应保存至通道列表中,向系统返回成功建立通道,返回步骤102;
优选地,保存通信通道具体为:将通信通道的信道ID标识与设备编号对应保存在一个容器中,即g_mapChannel[Lun]=Channel。
步骤105、将系统传入的设备编号转换成SCSI设备标识编号,获取与所述SCSI设备标识编号对应设备所在槽的属性,并向系统返回槽的属性,返回步骤102;
在本实施例中,第二接口为IFDHGetCapabilities(DWORD Lun,DWORD Tag,pDWORDLength,PUCHAR Value),获取设备编号Lun对应设备所在的槽的属性。其中,获取的槽的属性包括:ATR、已插入设备数量和是否支持多槽多设备等。例如:
TAG_IFD_ATR用来获取ATR,当设备的类型为SCSI时,ATR可以预置为空,也可以预置为固定值;TAG_IFD_SIMULTANEOUS_ACCESS用来获取已插入设备数量;TAG_IFD_THREAD_SAFE和TAG_IFD_SLOT_THREAD_SAFE用来判断是否支持多槽多设备,具体地,当TAG_IFD_THREAD_SAFE返回value[0]=1;当TAG_IFD_SLOT_THREAD_SAFE返回value[0]=0时,表示接口实现的是一槽一设备;TAG_IFD_SLOTS_NUMBER用来返回槽数。
在本实施例中,步骤105之前还包括:根据系统传入的设备编号从所述设备类型列表中确定设备编号对应设备的设备类型,如为SCSI设备,执行步骤105;如为CCID设备,执行相关操作。
步骤106、将系统传入的设备编号转换成SCSI设备标识编号,获取已插入设备的设备编号和设备信息,将已插入设备的设备编号转换成SCSI设备标识编号;
在本实施例中,第三接口为IFDHICCPresence(DWORD Lun),此函数用来获取与设备编号Lun对应的设备的插拔状态。
在本实施例中,步骤106之前还包括:根据系统传入的设备编号从所述设备类型列表中确定设备编号对应设备的设备类型,如为SCSI设备,执行步骤106;如为CCID设备,执行相关操作。
步骤107、判断获取到的已插入设备的第一设备信息是否符合预设条件,是则将符合预设条件的第一设备信息和第一设备信息对应的SCSI设备标识编号保存至第一设备列表中,执行步骤108,否则向系统返回系统传入的设备编号对应的设备是拔除状态;
在本实施例中,第一设备信息优选为PID和VID;例如,第一设备信息中的PID为0601、VID为085A。
优选地,步骤106之前还包括:创建设备字典,将预置的设备信息添加到设备字典中。例如,将0601和085A添加到设备字典中;
相应地,步骤107之前还包括:从设备字典中读取预置的设备信息;
步骤108、判断系统传入的设备编号对应的SCSI设备标识编号是否存在于所述设备列表中,是则执行步骤109;否则向系统返回系统传入的设备编号对应的设备是拔除状态;
步骤109、保存系统传入的设备编号对应的SCSI设备标识编号和设备编号对应的第二设备信息至第二设备列表,向系统返回系统传入的设备编号对应的设备是插入状态,返回步骤102;
在本实施例中,第二设备信息优选为设备端口地址。
步骤110、将系统传入的设备编号转换成SCSI设备标识编号,关闭系统与所述SCSI设备标识编号对应的设备的通信通道,并从通道列表中删除所述SCSI设备标识编号和通信通道编号,返回步骤102;
在本实施例中,第四接口为IFDHCloseChannel(DWORD Lun)。
在本实施例中,步骤110之前还包括:根据系统传入的设备编号从所述设备类型列表中确定设备编号对应设备的设备类型,如为SCSI设备,执行步骤110;如为CCID设备,执行相关操作。
步骤111、将系统传入的设备编号转换成SCSI设备标识编号,根据所述SCSI设备标识编号从第二设备列表中获取对应的第二设备信息,根据第二设备信息确定对应的设备;
具体地,根据系统传入的设备编号从第二设备列表中获取对应的设备端口地址,通过设备端口地址找到对应的设备;
在本实施例中,步骤111之前还包括:根据系统传入的设备编号从所述设备类型列表中确定设备编号对应设备的设备类型,如为SCSI设备,执行步骤111;如为CCID设备,执行相关操作。
步骤112、对系统传入的指令进行加密,下发数据格式,发送数据;
在本实施例中,步骤112具体包括:
步骤112-1、对向设备发送的指令进行加密;
在本实施例中,用于对指令加解密的算法包括但不限于des。
步骤112-2、向设备发送第一数据头后,下发加密后的指令;
在本实施例中,第一数据头标志着向设备开始下发数据。
优选地,约定发送第一数据头结构体定义如下:
Figure BDA0001572124940000121
Figure BDA0001572124940000131
例如,发送第一数据头可以具体为:
Figure BDA0001572124940000132
Figure BDA0001572124940000141
步骤112-3、向设备发送第二数据头;
在本实施例中,向设备下发第二数据头标志着向设备下发数据结束,等待接收设备返回的数据。
优选地,约定发送第二数据头结构体定义如下:
Figure BDA0001572124940000142
例如,发送第二数据头可以具体为:
Figure BDA0001572124940000143
Figure BDA0001572124940000151
需要说明的是,在本实施例中,如果设备是用密文通讯,步骤112之前还包括:向设备发送获取通讯密钥的指令,待接收到设备返回的通讯密钥后保存通讯密钥;
具体地,向设备发送获取通讯密钥的指令具体为:00 01 02 03 04 05;
步骤113、待接收到设备返回的数据后,对接收到的数据进行解密,将解密后的数据返回系统,返回步骤102。
具体地,在本实施例中,接收完毕设备返回的数据后,会接收到设备返回的第三数据头,具体地,第三数据头结构体定义如下:
typedef struct UMS_SCSI_CSW
{ES_UINT;/*协议的某个值如0x99999999*/
ES_UINT dCSWTag;/*接收的值如0x77777777*/
ES_UINT dCSWDataResidue;/*协议的某个值如00*/
CK_BYTE bCSWStatus;/*协议数据通信结果状态*/
}UMS_SCSI_CSW;
在本实施例中,步骤113具体包括:
步骤113-1、接收设备返回的数据,判断已接收数据的长度是否小于预设接收数据的长度,是则继续接收数据,执行步骤113-2;否则将已接收数据返回系统,通信成功;
步骤113-2、判断当前接收到的数据的是否为第三数据头,是则将已接收数据返回系统,通信成功;否则执行步骤113-3;
步骤113-3、对当前接收到的数据进行解密;
步骤113-4、判断已接收数据的长度与当前接收到的解密后的数据的长度和是否小于预设接收数据的长度,是则将当前接收到的解密后的数据保存至已接收数据,返回步骤113-1;否则执行步骤113-5;
步骤113-5、接收第三数据头,并判断第三数据头接收是否成功,是则将已接收数据返回系统,通信成功;否则向系统返回通信失败。
在本实施例中,判断第三数据头接收是否成功,具体包括:
接收第三数据头后,判断第三数据头中的第一协议值是否为预定值,判断数据通讯状态是否为预定值,判断均通过后,则接收成功,将已接收数据返回系统,通信成功;否则接受失败,向系统返回通信失败。
实施例三
本实施例三提供的一种使SCSI设备支持智能卡应用的方法,包括:
系统检测是否有设备插入,是则系统检测是否有设备插入,是则系统给检测到插入的设备设置设备编号,调用接口,否则继续等待;
具体地,当第一接口被调用时,如图2所示,执行以下操作:
步骤201、根据系统传入的设备编号获取设备编号对应设备的设备类型,并将设备编号和设备编号对应设备的设备类型保存至设备类型列表中,如为SCSI设备,执行步骤202,如为CCID设备,执行步骤204;
具体地,调用函数GetInterfaceClass(intf,&InterfaceClass)来设备编号对应设备的设备类型,参数&InterfaceClass具体为设备类型,当其为8时,确认设备类型为SCSI,否则确认设备类型为CCID。
步骤202、将系统传入的设备编号转换成SCSI设备标识编号,判断系统是否与SCSI设备标识编号对应的设备建立通信通道,是则向系统返回成功建立通道,否则执行步骤203;
在本实施例中,第一接口为IFDHCreateChannel(DWORDLun,DWORD Channel)。其中,参数Lun(Logical Unit Number)为设备编号,基本格式是0xXXXXYYYY,其中XXXX代表多个设备,YYYY代表多个插槽。参数Channel为信道ID标识,与设备编号对应的设备一一对应。当第一接口被调用时,根据第一接口内的参数设备编号判断系统是否与设备编号对应的设备建立通信通道。
步骤203、建立系统与SCSI设备标识编号对应的设备之间的通信通道,并将所述SCSI设备标识编号和通信通道编号对应保存至通道列表中,向系统返回成功建立通道;
步骤204、将系统传入的设备编号转换成CCID设备标识编号,获取预置的设备信息,初始化设备列表;
在本实施例中,调用libusb_int进行初始化。其中,初始化还包括:初始化库并创建会话。
步骤205、获取CCID设备标识编号对应设备的设备信息,判断获取到的设备信息中是否有与预置的设备信息相同的设备信息,是则执行步骤206;否则报错;
在本实施例中,调用libusb_get_device_list获得已插入设备的设备列表,遍历已插入设备的设备信息,判断获取到的设备信息是否与预置的设备信息相同;
步骤206、判断在设备列表中能否找到CCID设备标识编号对应设备的设备信息,是则向系统返回已保存系统传入的设备编号对应的设备信息,执行步骤208;否则执行步骤207;
步骤207、打开设备,获取设备的配置信息;
在本实施例中,通过libusb_open打开设备,通过调用libusb_get_config_descriptor获取指定设备的配置信息;
在本实施例中,还包括调用libusb_claim_interface为设备申请与操作系统通信的接口。
步骤208、与CCID设备标识编号对应设备建立通信通道,保存该设备的功能属性。
当第二接口被调用时,如图3所示,执行以下操作:
步骤301、根据系统传入的设备编号从设备类型列表中获取设备类型,如为SCSI设备,执行步骤302,如为CCID设备,执行步骤303;
步骤302、将系统传入的设备编号转换成SCSI设备标识编号,获取与所述SCSI设备标识编号对应设备所在槽的属性,并向系统返回槽的属性;
在本实施例中,第二接口为IFDHGetCapabilities(DWORD Lun,DWORD Tag,pDWORDLength,PUCHAR Value),获取设备编号Lun对应设备所在的槽的属性。其中,获取的槽的属性包括:ATR、已插入设备数量和是否支持多槽多设备等。例如:
TAG_IFD_ATR用来获取ATR,当设备的类型为SCSI时,ATR可以预置为空,也可以预置为固定值;TAG_IFD_SIMULTANEOUS_ACCESS用来获取已插入设备数量;TAG_IFD_THREAD_SAFE和TAG_IFD_SLOT_THREAD_SAFE用来判断是否支持多槽多设备,具体地,当TAG_IFD_THREAD_SAFE返回value[0]=1;当TAG_IFD_SLOT_THREAD_SAFE返回value[0]=0时,表示接口实现的是一槽一设备;TAG_IFD_SLOTS_NUMBER用来返回槽数。
步骤303、将系统传入的设备编号转换成CCID设备标识编号,获取与CCID设备标识编号对应设备所在槽的属性,并向系统返回槽的属性;
当第三接口被调用时,如图4所示,执行以下操作:
步骤401、根据系统传入的设备编号从设备类型列表中获取设备类型,如为SCSI设备,执行步骤402,如为CCID设备,执行步骤405;
步骤402、将系统传入的设备编号转换成SCSI设备标识编号,获取已插入设备的设备编号和设备信息,将已插入设备的设备编号转换成SCSI设备标识编号;
在本实施例中,第三接口为IFDHICCPresence(DWORD Lun),此函数用来获取与设备编号Lun对应的设备的插拔状态。
在本实施例中,步骤402之前还包括:创建设备字典,将预置的设备信息添加到设备字典中。
优选地,预置的设备信息优选为PID和VID;例如,预置的设备信息中的PID为0601、VID为085A,则将0601和085A添加到第一设备字典中。
步骤403、将符合预设条件的设备信息和对应的SCSI设备标识编号保存至设备列表中;
在本实施例中,设备信息优选为PID、VID和设备端口地址;例如,第一设备信息中的PID为0601、VID为085A。
优选地,步骤402之前还包括:创建设备字典,将预置的设备信息添加到设备字典中。例如,将0601和085A添加到设备字典中;
相应地,步骤403之前还包括:从设备字典中读取预置的设备信息;
步骤404、判断系统传入的设备编号对应的SCSI设备标识编号是否存在于所述设备列表中,是则向系统返回系统传入的设备编号对应的设备是插入状态,否则向系统返回系统传入的设备编号对应的设备是拔除状态;
具体地,设备列表中具体记载了设备编号和与设备编号对应设备的设备信息。
步骤405、将系统传入的设备编号转换成CCID设备标识编号,向CCID设备标识编号对应设备发送获取设备当前状态的指令,如果设备在向系统返回系统传入的设备编号对应的设备是插入状态;如果不在向系统返回系统传入的设备编号对应的设备是拔除状态;
当第四接口被调用时,如图5所示,执行以下操作:
步骤501、根据系统传入的设备编号从设备类型列表中获取设备类型,如为SCSI设备,执行步骤502,如为CCID设备,执行步骤503;
步骤502、将系统传入的设备编号转换成SCSI设备标识编号,关闭系统与所述SCSI设备标识编号对应的设备的通信通道,并从通道列表中删除所述SCSI设备标识编号和通信通道编号;
步骤503、将系统传入的设备编号转换成CCID设备标识编号,关闭系统与所述CCID设备标识编号对应的设备的通信通道,并从通道列表中删除所述CCID设备标识编号和通信通道编号;
当第五接口被调用时,如图6所示,执行以下操作:
步骤601、根据系统传入的设备编号从设备类型列表中获取设备类型,如为SCSI设备,执行步骤602,如为CCID设备,执行步骤605;
步骤602、将系统传入的设备编号转换成SCSI设备标识编号,根据所述SCSI设备标识编号从设备列表中找到对应的设备信息,根据所述设备信息确定对应的设备;
具体地,根据系统传入的设备编号从设备列表中获取对应的设备端口地址,通过设备端口地址找到对应的设备;
步骤603、对系统传入的指令进行加密,并将加密后的指令发送至设备;
在本实施例中,步骤603具体包括:
步骤603-1、对向设备发送的指令进行加密;
在本实施例中,用于对指令的加解密的算法包括但不限于des。
步骤603-2、向设备下发第一数据头后,下发加密后的数据;
在本实施例中,第一数据头标志着向设备开始下发数据。
优选地,约定发送第一数据头结构体定义如下:
Figure BDA0001572124940000211
例如,发送第一数据头可以具体为:
Figure BDA0001572124940000221
步骤603-3、向设备下发第二数据头;
在本实施例中,向设备下发第二数据头标志着向设备下发数据结束,等待接收设备返回的数据。
优选地,约定发送第二数据头结构体定义如下:
Figure BDA0001572124940000222
Figure BDA0001572124940000231
例如,发送第二数据头可以具体为:
Figure BDA0001572124940000232
需要说明的是,在本实施例中,如果设备是用密文通讯,步骤604之前还包括:向设备发送获取通讯密钥的指令,接收到设备返回的通讯密钥后保存通讯密钥;
步骤604、待接收到设备返回的数据后,对数据进行解密,将解密后的数据返回系统;
在本实施中,约定接收第一数据头结构体定义如下:
typedef struct UMS_SCSI_CSW
{ES_UINT dCSWSignature;/*协议的某个值如0x99999999*/
ES_UINT dCSWTag;/*接收的值如0x77777777*/
ES_UINT dCSWDataResidue;/*协议的某个值如00*/
CK_BYTE bCSWStatus;/*协议数据通信结果状态*/
}UMS_SCSI_CSW;
具体地,当接收到设备返回的数据后,判断返回第一数据头的dCSWSignature是不是预定值,并判断数据通讯状态bCSWStatus是否为0,如果验证都通过,则获得返回数据,完成本次通讯;如果验证未通过,则通讯失败。
步骤605、将系统传入的设备编号转换成CCID设备标识编号,根据CCID设备标识编号从设备列表中找到对应的设备,获得设备的设备信息;
步骤606、对向设备发送的指令进行加密,对加密后的数据组织下发数据格式,并根据设备的功能属性调用对应的函数发送数据;
步骤607、待接收到设备返回的数据后,对接收到的数据进行解密,将解密后的数据返回系统;
在本实施例中,根据系统传入的设备编号从设备类型列表中获取设备类型为CCID时,还包括:
当第六接口被调用时,处理设备的上电和复位处理,获取ATR并保存;
具体地,第六接口为IFDHPowerICC(DWORD Lun,DWORD Action,PUCHAR ATR,PDWORD ATRLength),用于处理设备的上电和复位;
CCID设备在这里获取ATR并保存;
当第七接口被调用时,设置槽的属性功能;
具体地,第七接口为IFDHSetCapabilities(DWORD Lun,DWORD Tag,DWORDLength,PUCHAR Value);
当第八接口被调用时,设置槽的属性功能;
具体地,第八接口为IFDHSetProtocolParameters(DWORD Lun,DWORD Protocol,UCHAR Flags,UCHAR PTS1,UCHAR PTS2,UCHAR PTS3);
具体地,当第八接口被调用时,判断获取的ATR是否和预存的一样,是则向系统返回成功,否则报错。
当第九接口被调用时,实现拓展功能;
具体地,第九接口为IFDHControl(DWORD Lun,DWORD dwControlCode,PUCHARTxBuffer,DWORD TxLength,PUCHAR RxBuffer,DWORD RxLength,LPDWORDpdwBytesReturned)
具体地,第九接口执行一些拓展功能,诸如生物识别技术等。
实施例四
本实施例提供一种使SCSI设备支持智能卡应用的装置,如图7所示,包括:
接收模块701,用于接收系统传入的设备编号;
转换模块702,用于当第一接口被系统调用时,将接收模块701接收的设备编号转换成SCSI设备标识编号;
第一判断模块703,用于判断系统是否与SCSI设备标识编号对应的设备建立通信通道;
返回模块704,用于当第一判断模块703判断系统与SCSI设备标识编号对应的设备建立通信通道时,向系统返回成功建立通道;
第一建立通道模块705,用于当第一判断模块703判断系统与SCSI设备标识编号对应的设备没有建立通信通道时,建立系统与SCSI设备标识编号对应的设备之间的通信通道,并将SCSI设备标识编号和通信通道编号对应保存至通道列表中;
返回模块704,还用于当第一建立通道模块705将SCSI设备标识编号和通信通道编号对应保存至通道列表中时,向系统返回成功建立通道;
转换模块702,还用于当第三接口被系统调用时,将接收模块701接收的设备编号转换成SCSI设备标识编号;
第一获取模块706,用于获取已插入设备的设备编号和设备信息;
转换模块702,还用于将第一获取模块706获取到的已插入设备的设备编号转换成SCSI设备标识编号;
保存模块707,用于将第一获取模块706获取的设备信息中符合预设条件的设备信息和符合预设条件的设备信息对应的SCSI设备标识编号保存至设备列表中;
第二判断模块708,用于判断系统传入的设备编号对应的SCSI设备标识编号是否存在于保存模块707中的设备列表中;
返回模块704,还用于当第二判断模块708判断系统传入的设备编号对应的SCSI设备标识编号存在于保存模块707中的设备列表中时,向系统返回系统传入的设备编号对应的设备是插入状态;还用于当第二判断模块708判断系统传入的设备编号对应的SCSI设备标识编号不存在于保存模块707中的设备列表中时,向系统返回系统传入的设备编号对应的设备是拔除状态;
转换模块702,还用于当第五接口被系统调用时,将接收模块701接收的设备编号转换成SCSI设备标识编号;
查找模块709,用于根据SCSI设备标识编号从设备列表中找到对应的设备信息,根据设备信息确定对应的设备;
接收模块701,还用于接收系统传入的指令;
加密模块710,用于对接收模块701接收到的系统传入的指令进行加密;
发送模块711,用于向查找模块709查找到的设备发送第一数据头;还用于向设备发送加密模块710加密后的指令后,向设备发送第二数据头;
接收模块701,还用于接收设备返回的数据;
解密模块712,用于对接收模块701接收到的设备返回的数据进行解密;
返回模块704,还用于将解密模块712解密后的数据返回系统。
优选地,第一获取模块706获取到的已插入设备的设备信息包括:第一设备信息;
设备还包括:第三判断模块;
第三判断模块,用于判断获取到的已插入设备的第一设备信息是否符合预设条件;
保存模块707,还用于当第三判断模块判断获取到的已插入设备的第一设备信息符合条件时,将符合预设条件的第一设备信息和第一设备信息对应的SCSI设备标识编号保存至设备列表中;
返回模块704,还用于当第三判断模块判断获取到的已插入设备的第一设备信息不符合条件时,向系统返回系统传入的设备编号对应的设备是插入状态。
在本实施例中,第三判断模块,具体用于判断获取到的已插入设备的第一设备信息是否与预置的第一设备信息相同;
保存模块707,还用于当第三判断模块判断获取到的已插入设备的第一设备信息与预置的第一设备信息相同时,将符合预设条件的第一设备信息和第一设备信息对应的SCSI设备标识编号保存至设备列表中;
返回模块704,还用于当第三判断模块判断获取到的已插入设备的第一设备信息与预置的第一设备信息不相同时,向系统返回系统传入的设备编号对应的设备是插入状态。
优选地,还包括:创建模块;
创建模块,用于创建设备字典,将预设条件添加到设备字典中;
保存模块707包括:读取单元和保存单元;
读取单元,用于从创建模块创建的设备字典中读取预设条件;
保存单元,用于将符合读取单元读取的预设条件的设备编号和设备信息保存至设备列表中。
优选地,第一获取模块706获取到的已插入设备的设备信息包括:第二设备信息;
保存模块707,还用于对应保存接收模块701接收的系统传入的设备编号对应的SCSI设备标识编号和设备编号对应的第二设备信息。
在本实施例中,还包括:第四判断模块和第五判断模块;
第四判断模块,判断已接收到的设备返回的数据的长度是否小于预设长度;
接收模块701,还用于当第四判断模块判断已接收到的设备返回的数据的长度小于预设长度时,继续接收设备返回的数据;
解密模块712,用于对接收模块701接收到的设备返回的数据进行解密;
接收模块701,还用于当第四判断模块判断已接收到的设备返回的数据的长度不小于预设长度时,接收第三数据头;
第五判断模块,用于判断接收模块701接收到第三数据头是否成功;
返回模块704,还用于当第五判断模块判断接收第三数据头成功时,将接收模块701已接收到的数据返回至系统,通信成功;还用于当第五判断模块判断接收第三数据头失败时,向系统返回通信失败。
具体地,第四判断模块包括:第一判断单元、第二判断单元、第三判断单元和保存单元;
第一判断单元,用于判断接收模块701接收到的设备返回数据的长度是否小于预设长度;
返回模块704,还用于当第一判断单元判断接收模块701接收到的设备返回数据的长度不小于预设长度时,将接收模块701接收到的数据返回至系统,通信成功;
接收模块701,还用于当第一判断单元判断接收模块701接收到的设备返回数据的长度小于预设长度时,接收设备返回的数据;
第二判断单元,用于判断当前接收到的设备返回数据的是否为第三数据头;
接收模块701,还用于当第二判断单元判断当前接收到的设备返回数据的为第三数据头时,接收第三数据头;
解密模块712,当第二判断单元判断当前接收到的设备返回数据的不是第三数据头时,对当前接收到的设备返回数据进行解密;
第三判断单元,用于判断已接收到的设备返回的数据与当前接收到的设备返回数据的长度和是否小于预设设备返回数据的长度;
保存单元,用于当第三判断单元判断已接收到的设备返回的数据与当前接收到的设备返回数据的长度和小于预设设备返回数据的长度时,则将当前接收到的设备返回的数据保存至已接收到的设备返回数据中;
第一判断单元,还用于当保存单元将当前接收到的设备返回的数据保存至已接收到的设备返回数据后,判断接收模块701接收到的设备返回数据的长度是否小于预设长度;
接收模块701,还用于当第三判断单元判断已接收到的设备返回的数据与当前接收到的设备返回数据的长度和不小于预设设备返回数据的长度时,接收第三数据头。
在本实施例中,还包括:关闭通道模块;
转换模块702,还用于当第二接口被系统调用时,将接收模块701接收的设备编号转换成SCSI设备标识编号;
第一获取模块706,还用于获取与SCSI设备标识编号对应设备所在槽的属性;
返回模块704,用于向系统返回第一获取模块706获取的槽的属性;
转换模块702,还用于当第四接口被系统调用时,将接收模块701接收的设备编号转换成SCSI设备标识编号;
关闭通道模块,用于关闭系统与SCSI设备标识编号对应的设备的通信通道,并从通道列表中删除SCSI设备标识编号和通信通道编号。
具体地,还包括:
第一获取模块706,还用于根据接收模块701接收的系统传入的设备编号获取设备编号对应设备的设备类型;
保存模块707,还用于将设备编号和设备编号对应设备的设备类型保存至设备类型列表中。
在本实施例中,还包括:确定模块和第二建立通道模块;
确定模块,用于根据接收模块701接收的系统传入的设备编号从设备类型列表中确定设备编号对应设备的设备类型;
转换模块702,还用于确定模块确定设备编号对应设备的设备类型为SCSI设备时,当第一接口被系统调用时,将接收模块701接收的设备编号转换成SCSI设备标识编号;
第二建立通道模块,用于确定模块确定设备编号对应设备的设备类型为CCID设备时,将系统传入的设备编号转换成CCID设备标识编号,获取CCID设备标识编号对应设备的当前状态。
相应地,还包括:确定模块和第二获取模块;
确定模块,用于根据接收模块701接收的系统传入的设备编号从设备类型列表中确定设备编号对应设备的设备类型;
转换模块702,还用于确定模块确定设备编号对应设备的设备类型为SCSI设备时,当第三接口被系统调用时,将接收模块701接收的设备编号转换成SCSI设备标识编号;
第二获取模块,用于确定模块确定设备编号对应设备的设备类型为CCID设备时,将系统传入的设备编号转换成CCID设备标识编号,获取CCID设备标识编号对应设备的当前状态。
相应地,还包括:确定模块和通信模块;
确定模块,用于根据接收模块701接收的系统传入的设备编号从设备类型列表中确定设备编号对应设备的设备类型;
转换模块702,还用于确定模块确定设备编号对应设备的设备类型为SCSI设备时,当第五接口被系统调用时,将接收模块701接收的设备编号转换成SCSI设备标识编号;
通信模块,用于将系统传入的设备编号转换成CCID设备标识编号,与CCID设备标识编号对应的设备进行通信。
以上所述,仅为本发明较佳的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到的变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应以权利要求的保护范围为准。

Claims (22)

1.一种使SCSI设备支持智能卡应用的方法,其特征在于,包括:
当用于建立通信信道的第一接口被系统调用时,执行步骤S1;当用于获取设备状态的第三接口被系统调用时,执行步骤S2;当用于与设备进行数据交互的第五接口被系统调用时,执行步骤S3;
步骤S1、将系统传入的设备编号转换成SCSI设备标识编号,判断系统是否与所述SCSI设备标识编号对应的设备建立通信通道,是则向系统返回成功建立通道;否则建立系统与所述SCSI设备标识编号对应的设备之间的通信通道,并将所述SCSI设备标识编号和通信通道编号对应保存至通道列表中,向系统返回成功建立通道;
步骤S2、将系统传入的设备编号转换成SCSI设备标识编号,获取已插入设备的设备编号和设备信息,将已插入设备的设备编号转换成SCSI设备标识编号,将符合预设条件的设备信息和对应的SCSI设备标识编号保存至设备列表中,判断系统传入的设备编号对应的SCSI设备标识编号是否存在于所述设备列表中,是则向系统返回系统传入的设备编号对应的设备是插入状态,否则向系统返回系统传入的设备编号对应的设备是拔除状态;
步骤S3、将系统传入的设备编号转换成SCSI设备标识编号,根据所述SCSI设备标识编号从设备列表中找到对应的设备信息,根据所述设备信息确定对应的设备,对系统传入的指令进行加密,向所述设备发送用于标志着向设备开始下发数据的第一数据头,将加密后的指令发送至所述设备后,向所述设备发送用于标志着向设备下发数据结束的第二数据头;待接收到所述设备返回的数据后,对所述数据进行解密,将解密后的数据返回系统。
2.根据权利要求1所述的方法,其特征在于,所述步骤S2中所述设备信息包括:第一设备信息;
所述步骤S2中所述将符合预设条件的设备信息和对应的SCSI设备标识编号保存至设备列表中,具体包括:
判断获取到的已插入设备的第一设备信息是否符合预设条件,是则将符合预设条件的第一设备信息和所述第一设备信息对应的SCSI设备标识编号保存至设备列表中;否则向系统返回系统传入的设备编号对应的设备是插入状态。
3.根据权利要求2所述的方法,其特征在于,所述判断获取到的已插入设备的第一设备信息是否符合预设条件,具体包括:
判断获取到的已插入设备的第一设备信息是否与预置的第一设备信息相同,是则将符合预设条件的第一设备信息和所述第一设备信息对应的SCSI设备标识编号保存至设备列表中;否则向系统返回系统传入的设备编号对应的设备是插入状态。
4.根据权利要求1所述的方法,其特征在于,所述步骤S2之前,还包括:创建设备字典,将预设条件添加到设备字典中;
所述步骤S2中,所述将符合预设条件的设备信息和对应的SCSI设备标识编号保存至设备列表中,具体为:从所述设备字典中读取预设条件,将符合预设条件的设备信息和对应的SCSI设备标识编号保存至设备列表中。
5.根据权利要求1所述的方法,其特征在于,所述步骤S2中所述设备信息还包括:第二设备信息;
所述向系统返回系统传入的设备编号对应的设备是插入状态之前,还包括:对应保存系统传入的设备编号对应的SCSI设备标识编号和所述设备编号对应的第二设备信息。
6.根据权利要求1所述的方法,其特征在于,所述步骤S3中所述将解密后的数据返回系统之前还包括:
步骤B1、判断已接收到的所述设备返回的数据的长度是否小于预设长度,是则继续接收数据,对所述数据进行解密;否则执行步骤B2;
步骤B2、接收用于标志通信状态的第三数据头,并判断接收所述用于标志通信状态的第三数据头是否成功,是则将已接收到的数据返回至系统,通信成功;否则向系统返回通信失败。
7.根据权利要求1所述的方法,其特征在于,所述方法还包括:当用于获取槽属性的第二接口被调用时,执行步骤S4;当用于关闭通信通道的第四接口被调用时,执行步骤S5;
步骤S4、将系统传入的设备编号转换成SCSI设备标识编号,获取与所述SCSI设备标识编号对应设备所在槽的属性,并向系统返回槽的属性;
步骤S5、将系统传入的设备编号转换成SCSI设备标识编号,关闭系统与所述SCSI设备标识编号对应的设备的通信通道,并从通道列表中删除所述SCSI设备标识编号和通信通道编号。
8.根据权利要求1所述的方法,其特征在于,所述步骤S1之前还包括:根据系统传入的设备编号获取所述设备编号对应设备的设备类型,并将所述设备编号和所述设备编号对应设备的设备类型保存至设备类型列表中。
9.根据权利要求8所述的方法,其特征在于,所述步骤S1之前还包括:根据系统传入的设备编号从所述设备类型列表中确定设备编号对应设备的设备类型,如为SCSI设备,执行步骤S1;如为CCID设备,将系统传入的设备编号转换成CCID设备标识编号,与所述CCID设备标识编号对应的设备建立通信通道,保存所述设备的功能属性。
10.根据权利要求8所述的方法,其特征在于,所述步骤S2之前还包括:根据系统传入的设备编号从所述设备类型列表中确定设备编号对应设备的设备类型,如为SCSI设备,执行步骤S2;如为CCID设备,将系统传入的设备编号转换成CCID设备标识编号,获取所述CCID设备标识编号对应设备的当前状态。
11.根据权利要求8所述的方法,其特征在于,所述步骤S3之前还包括:根据系统传入的设备编号从所述设备类型列表中确定设备编号对应设备的设备类型,如为SCSI设备,执行步骤S4;如为CCID设备,将系统传入的设备编号转换成CCID设备标识编号,与所述CCID设备标识编号对应的设备进行通信。
12.一种使SCSI设备支持智能卡应用的装置,其特征在于,包括:
接收模块,用于接收系统传入的设备编号;
转换模块,用于当用于建立通信信道的第一接口被系统调用时,将所述接收模块接收的设备编号转换成SCSI设备标识编号;
第一判断模块,用于判断系统是否与所述SCSI设备标识编号对应的设备建立通信通道;
返回模块,用于当所述第一判断模块判断系统与所述SCSI设备标识编号对应的设备建立通信通道时,向系统返回成功建立通道;
第一建立通道模块,用于当所述第一判断模块判断系统与所述SCSI设备标识编号对应的设备没有建立通信通道时,建立系统与所述SCSI设备标识编号对应的设备之间的通信通道,并将所述SCSI设备标识编号和通信通道编号对应保存至通道列表中;
所述返回模块,还用于当所述第一建立通道模块将所述SCSI设备标识编号和通信通道编号对应保存至通道列表中时,向系统返回成功建立通道;
所述转换模块,还用于当用于获取设备状态的第三接口被系统调用时,将所述接收模块接收的设备编号转换成SCSI设备标识编号;
第一获取模块,用于获取已插入设备的设备编号和设备信息;
所述转换模块,还用于将所述第一获取模块获取到的已插入设备的设备编号转换成SCSI设备标识编号;
保存模块,用于将符合预设条件的设备信息和对应的SCSI设备标识编号保存至设备列表中;
第二判断模块,用于判断系统传入的设备编号对应的SCSI设备标识编号是否存在于所述保存模块中的所述设备列表中;
所述返回模块,还用于当所述第二判断模块判断系统传入的设备编号对应的SCSI设备标识编号存在于所述保存模块中的所述设备列表中时,向系统返回系统传入的设备编号对应的设备是插入状态;还用于当所述第二判断模块判断系统传入的设备编号对应的SCSI设备标识编号不存在于所述保存模块中的所述设备列表中时,向系统返回系统传入的设备编号对应的设备是拔除状态;
所述转换模块,还用于当用于与设备进行数据交互的第五接口被系统调用时,将所述接收模块接收的设备编号转换成SCSI设备标识编号;
查找模块,用于根据所述SCSI设备标识编号从所述设备列表中找到对应的设备信息,根据所述设备信息确定对应的设备;
所述接收模块,还用于接收系统传入的指令;
加密模块,用于对所述接收模块接收到的系统传入的指令进行加密;
发送模块,用于向所述查找模块查找到的设备发送用于标志着向设备开始下发数据第一数据头;还用于向所述设备发送所述加密模块加密后的指令后,向所述设备发送用于标志着向设备下发数据结束的第二数据头;
所述接收模块,还用于接收所述设备返回的数据;
解密模块,用于对所述接收模块接收到的所述设备返回的数据进行解密;
所述返回模块,还用于将所述解密模块解密后的数据返回系统。
13.根据权利要求12所述的装置,其特征在于,所述第一获取模块获取到的已插入设备的设备信息包括:第一设备信息;
所述设备还包括:第三判断模块;
所述第三判断模块,用于判断获取到的已插入设备的第一设备信息是否符合预设条件;
所述保存模块,还用于当所述第三判断模块判断获取到的已插入设备的第一设备信息符合条件时,将符合预设条件的第一设备信息和所述第一设备信息对应的SCSI设备标识编号保存至设备列表中;
所述返回模块,还用于当所述第三判断模块判断获取到的已插入设备的第一设备信息不符合条件时,向系统返回系统传入的设备编号对应的设备是插入状态。
14.根据权利要求13所述的装置,其特征在于,所述第三判断模块,具体用于判断获取到的已插入设备的第一设备信息是否与预置的第一设备信息相同;
所述保存模块,还用于当所述第三判断模块判断获取到的已插入设备的第一设备信息与预置的第一设备信息相同时,将符合预设条件的第一设备信息和所述第一设备信息对应的SCSI设备标识编号保存至设备列表中;
所述返回模块,还用于当所述第三判断模块判断获取到的已插入设备的第一设备信息与预置的第一设备信息不相同时,向系统返回系统传入的设备编号对应的设备是插入状态。
15.根据权利要求12所述的装置,其特征在于,还包括:创建模块;
所述创建模块,用于创建设备字典,将预设条件添加到设备字典中;
所述保存模块包括:读取单元和保存单元;
所述读取单元,用于从所述创建模块创建的所述设备字典中读取预设条件;
所述保存单元,用于将符合所述读取单元读取的预设条件的设备编号和设备信息保存至设备列表中。
16.根据权利要求12所述的装置,其特征在于,所述第一获取模块获取到的已插入设备的设备信息包括:第二设备信息;
所述保存模块,还用于对应保存所述接收模块接收的系统传入的设备编号对应的SCSI设备标识编号和所述设备编号对应的第二设备信息。
17.根据权利要求12所述的装置,其特征在于,还包括:第四判断模块和第五判断模块;
所述第四判断模块,判断已接收到的所述设备返回的数据的长度是否小于预设长度;
所述接收模块,还用于当所述第四判断模块判断已接收到的所述设备返回的数据的长度小于预设长度时,继续接收所述设备返回的数据;
所述解密模块,用于对所述接收模块接收到的所述设备返回的数据进行解密;
所述接收模块,还用于当所述第四判断模块判断已接收到的所述设备返回的数据的长度不小于预设长度时,接收用于标志通信状态的第三数据头;
所述第五判断模块,用于判断所述接收模块接收到用于标志通信状态的第三数据头是否成功;
所述返回模块,还用于当所述第五判断模块判断接收所述用于标志通信状态的第三数据头成功时,将所述接收模块已接收到的数据返回至系统,通信成功;还用于当所述第五判断模块判断接收所述用于标志通信状态的第三数据头失败时,向系统返回通信失败。
18.根据权利要求12所述的装置,其特征在于,还包括:关闭通道模块;
所述转换模块,还用于当用于获取槽属性的第二接口被系统调用时,将所述接收模块接收的设备编号转换成SCSI设备标识编号;
所述第一获取模块,还用于获取与所述SCSI设备标识编号对应设备所在槽的属性;
所述返回模块,用于向系统返回所述第一获取模块获取的槽的属性;
所述转换模块,还用于当用于关闭通信通道的第四接口被系统调用时,将所述接收模块接收的设备编号转换成SCSI设备标识编号;
所述关闭通道模块,用于关闭系统与所述SCSI设备标识编号对应的设备的通信通道,并从通道列表中删除所述SCSI设备标识编号和通信通道编号。
19.根据权利要求12所述的装置,其特征在于,还包括:
所述第一获取模块,还用于根据所述接收模块接收的系统传入的设备编号获取所述设备编号对应设备的设备类型;
所述保存模块,还用于将所述设备编号和所述设备编号对应设备的设备类型保存至设备类型列表中。
20.根据权利要求19所述的装置,其特征在于,还包括:确定模块和第二建立通道模块;
所述确定模块,用于根据所述接收模块接收的系统传入的设备编号从所述设备类型列表中确定设备编号对应设备的设备类型;
所述转换模块,还用于所述确定模块确定设备编号对应设备的设备类型为SCSI设备时,当第一接口被系统调用时,将所述接收模块接收的设备编号转换成SCSI设备标识编号;
所述第二建立通道模块,用于所述确定模块确定设备编号对应设备的设备类型为CCID设备时,将系统传入的设备编号转换成CCID设备标识编号,获取所述CCID设备标识编号对应设备的当前状态。
21.根据权利要求19所述的装置,其特征在于,还包括:确定模块和第二获取模块;
所述确定模块,用于根据所述接收模块接收的系统传入的设备编号从所述设备类型列表中确定设备编号对应设备的设备类型;
所述转换模块,还用于所述确定模块确定设备编号对应设备的设备类型为SCSI设备时,当第三接口被系统调用时,将所述接收模块接收的设备编号转换成SCSI设备标识编号;
所述第二获取模块,用于所述确定模块确定设备编号对应设备的设备类型为CCID设备时,将系统传入的设备编号转换成CCID设备标识编号,获取所述CCID设备标识编号对应设备的当前状态。
22.根据权利要求19所述的装置,其特征在于,还包括:确定模块和通信模块;
所述确定模块,用于根据所述接收模块接收的系统传入的设备编号从所述设备类型列表中确定设备编号对应设备的设备类型;
所述转换模块,还用于所述确定模块确定设备编号对应设备的设备类型为SCSI设备时,当第五接口被系统调用时,将所述接收模块接收的设备编号转换成SCSI设备标识编号;
所述通信模块,用于将系统传入的设备编号转换成CCID设备标识编号,与所述CCID设备标识编号对应的设备进行通信。
CN201810121174.1A 2018-02-07 2018-02-07 一种使scsi设备支持智能卡应用的方法及装置 Active CN108347440B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201810121174.1A CN108347440B (zh) 2018-02-07 2018-02-07 一种使scsi设备支持智能卡应用的方法及装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201810121174.1A CN108347440B (zh) 2018-02-07 2018-02-07 一种使scsi设备支持智能卡应用的方法及装置

Publications (2)

Publication Number Publication Date
CN108347440A CN108347440A (zh) 2018-07-31
CN108347440B true CN108347440B (zh) 2020-08-18

Family

ID=62960036

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201810121174.1A Active CN108347440B (zh) 2018-02-07 2018-02-07 一种使scsi设备支持智能卡应用的方法及装置

Country Status (1)

Country Link
CN (1) CN108347440B (zh)

Citations (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101000594A (zh) * 2007-01-08 2007-07-18 中国信息安全产品测评认证中心 一种智能卡和u盘复合设备及其与计算机通信的方法
CN101065924A (zh) * 2004-11-24 2007-10-31 惠普开发有限公司 具有加密功能的智能卡和使用这种卡的方法和系统
CN101739755A (zh) * 2009-12-04 2010-06-16 北京握奇数据系统有限公司 一种实现智能卡多业务应用的方法及装置
CN101840332A (zh) * 2010-03-09 2010-09-22 北京握奇数据系统有限公司 一种java智能卡的数据处理方法、装置及系统
CN102546721A (zh) * 2010-12-31 2012-07-04 中国银联股份有限公司 物理智能卡及在其中进行虚拟智能卡通讯的方法
CN105159667A (zh) * 2015-08-07 2015-12-16 北京思特奇信息技术股份有限公司 一种web service接口调用参数转换方法及系统
CN105678152A (zh) * 2016-01-19 2016-06-15 飞天诚信科技股份有限公司 一种与智能密钥设备通讯的方法及装置
CN106412009A (zh) * 2016-08-29 2017-02-15 郑州悉知信息科技股份有限公司 接口调用方法及装置

Family Cites Families (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20080114980A1 (en) * 2006-11-13 2008-05-15 Thangapandi Sridhar System, method and apparatus for using standard and extended storage devices in two-factor authentication
US9230109B2 (en) * 2008-10-07 2016-01-05 Microsoft Technology Licensing, Llc Trusted platform module security

Patent Citations (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101065924A (zh) * 2004-11-24 2007-10-31 惠普开发有限公司 具有加密功能的智能卡和使用这种卡的方法和系统
CN101000594A (zh) * 2007-01-08 2007-07-18 中国信息安全产品测评认证中心 一种智能卡和u盘复合设备及其与计算机通信的方法
CN101739755A (zh) * 2009-12-04 2010-06-16 北京握奇数据系统有限公司 一种实现智能卡多业务应用的方法及装置
CN101840332A (zh) * 2010-03-09 2010-09-22 北京握奇数据系统有限公司 一种java智能卡的数据处理方法、装置及系统
CN102546721A (zh) * 2010-12-31 2012-07-04 中国银联股份有限公司 物理智能卡及在其中进行虚拟智能卡通讯的方法
CN105159667A (zh) * 2015-08-07 2015-12-16 北京思特奇信息技术股份有限公司 一种web service接口调用参数转换方法及系统
CN105678152A (zh) * 2016-01-19 2016-06-15 飞天诚信科技股份有限公司 一种与智能密钥设备通讯的方法及装置
CN106412009A (zh) * 2016-08-29 2017-02-15 郑州悉知信息科技股份有限公司 接口调用方法及装置

Also Published As

Publication number Publication date
CN108347440A (zh) 2018-07-31

Similar Documents

Publication Publication Date Title
US7701855B2 (en) Communication device, communication system, communication method, communication program and recording medium storing the communication program
US20070156850A1 (en) Secure remote access using portable storage device
US20030041188A1 (en) Reconfigurable flash media reader system
CN107735802B (zh) 电子单元与在该电子单元中执行的方法
JP2003526863A (ja) スマートカードとホストステーションとの間の通信の方法
CN109739690B (zh) 备份方法及相关产品
CN103488481A (zh) 应用程序控制方法、终端设备以及远程控制系统
US9032058B2 (en) Use of SNMP for management of small footprint devices
EP2671164B1 (en) Memory system capable of controlling wireless communication function
JP4649578B2 (ja) Icカード情報認証システム
TW200809593A (en) Media card with command pass through mechanism
KR20120078727A (ko) 통신 객체와 프로세싱 유닛 사이의 데이터 교환을 위한 매칭 방법, 시스템 및 디바이스
KR20070027363A (ko) 버스 리셋 발생시 식별 정보를 획득하는 장치 및 그 방법
CN111191252A (zh) 一种智能卡操作系统加解密方法、装置及存储介质
CN101800987A (zh) 一种智能卡鉴权装置及方法
CN108347440B (zh) 一种使scsi设备支持智能卡应用的方法及装置
US20010024066A1 (en) Handheld device, smart card interface device (IFD) and data transmission method
CN108243402B (zh) 一种读写智能卡的方法及装置
CN108920389B (zh) 一种多协议usb设备协议类型与应用动态匹配的方法及设备
US20100088447A1 (en) Secure mmc standard smartcard with multi-application operation capability, process of operation
CN109088733B (zh) 一种智能卡应用扩展的实现方法及装置
CN104571962A (zh) 一种适合批量生产的usbkey设备内固件的实现方法
CN106685931B (zh) 智能卡应用管理方法和系统、终端和智能卡
JP2007509380A (ja) チップカードまたはチップキーなどの携帯用オブジェクトのためのトランスミッションプロトコルの自動検出メソッド
CN103237359B (zh) 一种连接终端的方法及装置

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
OL01 Intention to license declared
OL01 Intention to license declared