CN107609362B - 一种智能卡登录Windows系统的方法及私有凭据提供装置 - Google Patents
一种智能卡登录Windows系统的方法及私有凭据提供装置 Download PDFInfo
- Publication number
- CN107609362B CN107609362B CN201710979901.3A CN201710979901A CN107609362B CN 107609362 B CN107609362 B CN 107609362B CN 201710979901 A CN201710979901 A CN 201710979901A CN 107609362 B CN107609362 B CN 107609362B
- Authority
- CN
- China
- Prior art keywords
- credential
- private
- upper layer
- providing device
- smart card
- 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 47
- 230000004044 response Effects 0.000 claims abstract description 132
- 238000012795 verification Methods 0.000 claims abstract description 13
- 230000008569 process Effects 0.000 claims description 18
- 238000005538 encapsulation Methods 0.000 claims description 4
- 238000004806 packaging method and process Methods 0.000 claims 4
- 238000013475 authorization Methods 0.000 claims 1
- 238000005516 engineering process Methods 0.000 description 3
- 230000003993 interaction Effects 0.000 description 2
- 230000007812 deficiency Effects 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
- 230000001960 triggered effect Effects 0.000 description 1
Images
Landscapes
- Storage Device Security (AREA)
- Lock And Its Accessories (AREA)
Abstract
本发明公开一种智能卡登录Windows系统的方法及私有凭据提供装置,该方法包括:当私有凭据提供装置的第一接口函数被调用时,私有凭据提供装置从所有凭据提供装置中找到系统默认凭据提供装置,将系统默认凭据提供装置设为不可见,返回响应给上层;当私有凭据提供装置的第五接口函数被调用时,私有凭据提供装置根据个人身份识别码输入框标识,将个人身份识别码设置为默认值,返回响应给上层;当私有凭据提供装置的第九接口函数被调用时,私有凭据提供装置弹出指纹验证框,提示用户输入指纹,返回响应给上层。本发明技术方案不会使用户在登录界面发生混淆,提供了友好的登录界面,提升了用户的使用体验。
Description
技术领域
本发明涉及信息安全领域,特别涉及一种智能卡登录Windows系统方法及私有凭据提供装置。
背景技术
随着科技的发展,除了使用传统的加密算法以及各种安全措施来确保智能卡的安全性之外,生物识别技术也越来越多的被应用到智能卡领域。由于指纹易于被采集,越来越多的智能卡采用了指纹识别和其他安全技术结合的方式进行使用,从而出现了带有指纹传感器的智能卡。
使用智能卡登录Windows系统的功能很常见,通过Windows系统默认的凭据提供程序(Credential Provider,简称CP)就可以实现。用户使用智能卡登录Windows系统的流程为:
在Windows系统加载后,本地安全进程(LSA)调用窗口登录(Winlogon)进程,Winlogon进程调用登录用户接口(Logon UI)进程并弹出人机交互界面,用户在弹出的人机交互界面中输入认证信息(即用户名和密码),Logon UI进程对用户输入的认证信息进行枚举并将其注册在注册表路径下的所有凭据提供程序(CP)中,CP对用户凭据进行收集,并将收集到的凭据返回给Winlogon进程,Winlogon进程将获取的凭据提供给LSA,LSA根据凭据调用相对应的加密服务提供程序(CSP)进而实现对用户的身份进行认证。
但是,在现有技术中,用户使用带有指纹传感器的智能卡登录Windows系统时,Windows系统默认的CP无法满足要求,例如:在登录时的用户界面不够友好,带有指纹传感器的智能卡和非带有指纹传感器的智能卡显示的界面没有区别,无法提示用户当前智能卡是否带有指纹传感器,而且会出现PIN输入框;在登录的过程中,由于默认的CP仅仅是负责搜集证书信息和PIN码,并将搜集到的证书信息和PIN码交由安全进程LSA进行认证,因此Windows系统无法通过弹框的方式来提示用户验证指纹;而且如果使用正常流程开发的CP,则在登录Windows系统的过程中,正常流程开发的CP会和系统默认的CP叠加,出现一个证书具有两个登录选项的情况,用户在登录界面容易点错登录选项,从而发生误操作,因此登录界面不够友好。
发明内容
本发明的目的是为了克服现有技术的不足,本发明提供了一种智能卡登录Windows系统方法以及私有凭据提供装置。
一种智能卡登录Windows系统的方法,包括:
私有凭据提供装置等待上层调用,
当所述私有凭据提供装置的第一接口函数被调用时,所述私有凭据提供装置从所有凭据提供装置中找到系统默认凭据提供装置,将所述系统默认凭据提供装置设为不可见,返回响应给上层;
当所述私有凭据提供装置的第三接口函数被调用时,所述私有凭据提供装置获取凭据的数量,获取并保存个人身份识别码输入框标识,获取当前登录的智能卡的名称,返回响应给上层;
当所述私有凭据提供装置的第五接口函数被调用时,所述私有凭据提供装置根据个人身份识别码输入框标识,将个人身份识别码设置为默认值,返回响应给上层;
当所述私有凭据提供装置的第九接口函数被调用时,所述私有凭据提供装置弹出指纹验证框,提示用户输入指纹,返回响应给上层;
当所述私有凭据提供装置的第十接口函数被调用时,所述私有凭据提供装置获取登录Windows系统所需的凭据,返回响应给上层,并将所述登录Windows系统所需的凭据发送给本地安全权限服务,所述登录Windows系统所需的凭据包括加密服务提供程序名称、当前登录的智能卡的名称、容器名、密钥用途。
进一步的,当所述私有凭据提供装置的第三接口函数被调用时,所述私有凭据提供装置获取凭据的数量,获取并保存个人身份识别码输入框标识,获取当前登录的智能卡的名称,返回响应给上层,具体包括:
当所述私有凭据提供装置的第三接口函数被调用时,所述私有凭据提供装置获取凭据的数量,获取并保存个人身份识别码输入框标识,获取当前登录的智能卡的名称,根据所述当前登录的智能卡的名称判断所述当前登录的智能卡是否为带有指纹传感器的智能卡,得到判断结果,根据所述凭据的数量创建凭据的对象实例,并将所述判断结果和所述凭据的对象实例保存到凭据提供方封装类实例中,返回响应给上层。
进一步的,当所述私有凭据提供装置的第二接口函数被调用时,所述私有凭据提供装置创建系统默认凭据提供装置的实例并保存,返回响应给上层;
当所述私有凭据提供装置的第四接口函数被调用时,所述私有凭据提供装置调用所述系统默认凭据提供装置的实例的相应成员函数,并在调用完成后返回响应给上层;其中,所述相应成员函数为与所述第四接口函数所对应的成员函数;
当所述私有凭据提供装置的第六接口函数被调用时,所述私有凭据提供装置根据所述个人身份识别码输入框标识设置个人身份识别码输入框的状态,并返回响应给上层;
当所述私有凭据提供装置的第七接口函数被调用时,所述私有凭据提供装置加载带有指纹传感器的智能卡专用登录图片,并返回响应给上层;
当所述私有凭据提供装置的第八接口函数被调用时,所述私有凭据提供装置设置根据保存的显示信息控件的标识来设置提交按钮的位置,并返回响应给上层;
当所述私有凭据提供装置的第三接口函数被调用时,还包括:所述私有凭据提供装置获取并保存显示信息控件的标识。
进一步的,所述私有凭据提供装置获取凭据的数量之前还包括:所述私有凭据提供装置获取Windows系统的凭据列表并判断所述Windows系统的凭据列表是否为空;如果是,所述私有凭据提供装置获取凭据的数量,如果否,所述私有凭据提供装置清空当前凭据列表,所述私有凭据提供装置获取凭据的数量。
进一步的,当私有凭据提供装置的第三接口函数被调用时,所述获取并保存个人身份识别码输入框标识,具体包括:
步骤101,所述私有凭据提供装置获取所有控件的字段描述符的总数量;
步骤102,所述私有凭据提供装置对所有控件的字段描述符按照顺序开始遍历;
步骤103,所述私有凭据提供装置获取当前控件的字段描述符,根据获取的所述当前控件的字段描述符判断所述当前控件是否为个人身份识别码输入框,如果是,则执行步骤105,如果否,则执行步骤104;
步骤104,所述私有凭据提供装置判断遍历过的控件的字段描述符的数量是否等于所有控件的字段描述符的总数量,如果是,则结束流程,如果否,则获取下一个控件的字段描述符作为当前控件的字段描述符,继续执行步骤103;
步骤105,所述私有凭据提供装置保存个人身份识别码输入框标识。
进一步的,所述私有凭据提供装置根据获取的当前控件的字段描述符判断当前控件是否为个人身份识别码输入框具体为:所述私有凭据提供装置判断字段描述符的类型值是否为第一预设值,如果是则当前控件为个人身份识别码输入框;如果否则当前控件不是个人身份识别码输入框。
进一步的,所述私有凭据提供装置获取并保存显示信息控件标识,具体包括:
步骤201,所述私有凭据提供装置以个人身份识别码输入框标识为起点,将前一个标识作为当前标识;
步骤202,所述私有凭据提供装置获取当前标识所对应的控件的状态;
步骤203,所述私有凭据提供装置根据所述控件的状态,判断所述控件是否为显示信息控件,如果是,执行步骤204;如果否,则将当前标识的前一个标识作为当前标识,执行步骤202;
步骤204,所述私有凭据提供装置将所述显示信息控件标识保存。
进一步的,所述私有凭据提供装置根据所述控件的状态,判断所述控件是否为显示信息控件具体为:所述私有凭据提供装置判断所述控件的状态的值是否为第二预设值,如果是,则确定所述控件为显示信息控件,如果否,则确定所述控件不是显示信息控件。
进一步的,当所述私有凭据提供装置的第三接口函数被调用时,获取当前登录的智能卡的名称,具体包括:所述私有凭据提供装置调用凭据的对象实例的成员函数,获取当前登录智能卡提交给本地安全权限服务的封装数据,并对所述封装数据进行解析,获得当前登录智能卡的名称。
进一步的,所述私有凭据提供装置根据所述个人身份识别码输入框标识设置个人身份识别码输入框的状态具体为:所述私有凭据提供装置根据所述个人身份识别码输入框标识设置个人身份识别码输入框的状态为不可见。
进一步的,当所述私有凭据提供装置的第五接口函数被调用时,所述私有凭据提供装置根据个人身份识别码输入框标识,将个人身份识别码设置为默认值,具体为:当所述私有凭据提供装置的第五接口函数被调用时,所述私有凭据提供装置根据凭据提供方封装类实例中保存的判断结果判断所述当前登录的智能卡为带有指纹传感器的智能卡后,根据个人身份识别码输入框标识,将个人身份识别码设置为默认值。
进一步的,当所述私有凭据提供装置的第七接口函数被调用时,所述私有凭据提供装置加载带有指纹传感器的智能卡专用登录图片,具体为:所述私有凭据提供装置根据凭据提供方封装类实例中保存的判断结果判断所述当前登录的智能卡为带有指纹传感器的智能卡后,加载带有指纹传感器的智能卡专用登录图片。
进一步的,当所述私有凭据提供装置的第八接口函数被调用时,所述私有凭据提供装置设置根据保存的显示信息控件的标识来设置提交按钮的位置,具体为:所述私有凭据提供装置根据凭据提供方封装类实例中保存的判断结果判断所述当前登录的智能卡为带有指纹传感器的智能卡后,根据保存的显示信息控件的标识来设置提交按钮的位置。
进一步的,当所述私有凭据提供装置的第六接口函数被调用时,所述私有凭据提供装置根据所述个人身份识别码输入框标识设置个人身份识别码输入框的状态,具体为:所述私有凭据提供装置根据凭据提供方封装类实例中保存的判断结果判断所述当前登录的智能卡为带有指纹传感器的智能卡后,根据所述个人身份识别码输入框标识设置个人身份识别码输入框的状态。
一种私有凭据提供装置,包括:
第一操作模块,用于当第一接口函数被上层调用时,从所有凭据提供装置中找到系统的默认凭据提供装置,将所述系统默认凭据提供装置设为不可见,返回响应给所述上层;
第三操作模块,用于当第三接口函数被上层调用时,获取凭据的数量,获取并保存个人身份识别码输入框标识,获取当前登录的智能卡的名称,返回响应给所述上层;
第五操作模块,用于当第五接口函数被上层调用时,根据个人身份识别码输入框标识,将个人身份识别码设置为默认值,返回响应给所述上层;
第九操作模块,用于当第九接口函数被上层调用时,弹出指纹验证框,提示用户输入指纹,返回响应给所述上层;
第十操作模块,用于当第十接口函数被上层调用时,获取登录Windows系统所需的凭据,返回响应给所述上层,并将所述登录Windows系统所需的凭据发送给本地安全权限服务,所述登录Windows系统所需的凭据包括加密服务提供程序名称、当前登录的智能卡的名称、容器名、密钥用途。
进一步的,所述第三操作模块具体包括:
获取单元,用于获取凭据的数量,获取并保存个人身份识别码输入框标识,获取当前登录的智能卡的名称,并在第二判断单元判断当前登录的智能卡是否为带有指纹传感器的智能卡后得到判断结果;
第二判断单元,用于根据所述获取单元获取的当前登录的智能卡的名称判断所述当前登录的智能卡是否为带有指纹传感器的智能卡;
创建实例单元,用于根据所述获取单元获取的凭据的数量创建凭据的对象实例;
保存单元,用于将所述获取单元得到的所述判断结果和所述创建实例单元根据所述凭据的数量创建的凭据的对象实例保存到凭据提供方封装类实例中;
响应单元,用于返回响应给所述上层。
进一步的,所述私有凭据提供装置还包括:
第二操作模块,用于当第二接口函数被上层调用时,创建系统默认凭据提供装置的实例并保存,返回响应给所述上层;
第四操作模块,用于当第四接口函数被上层调用时,调用系统默认凭据提供装置的实例的相应成员函数,并在调用完成后返回响应给上层;所述相应的成员函数为与第四接口函数所对应的成员函数;
第六操作模块,用于当第六接口函数被上层调用时,根据个人身份识别码输入框标识设置个人身份识别码输入框的状态,并返回响应给所述上层;
第七操作模块,用于当第七接口函数被上层调用时,加载带有指纹传感器的智能卡专用登录图片,并返回响应给所述上层;
第八操作模块,用于当第八接口函数被上层调用时,根据保存的显示信息控件的标识来设置提交按钮的位置,并返回响应给所述上层;所述第三操作模块,还用于获取并保存所述显示信息控件的标识。
进一步的,所述第三操作模块还包括:
第一判断单元,用于判断所述获取单元获取的所述Windows系统的凭据列表是否为空;
清空单元,用于在所述第一判断单元判断获取的所述Windows系统的凭据列表不为空时,清空所述Windows系统的凭据列表;
相应的,
所述获取单元还用于获取Windows系统的凭据列表;在所述第一判断单元判断获取的所述Windows系统的凭据列表为空时,获取凭据的数量;在所述清空单元清空所述Windows系统的凭据列表后,获取凭据的数量。
进一步的,所述第三操作模块,还包括:
遍历单元,用于对所有控件的字段描述符按照顺序开始遍历;
第三判断单元,用于根据所述获取单元获取的当前控件的字段描述符判断当前控件是否为个人身份识别码输入框;
第四判断单元用于,当第三判断单元判断当前控件不是个人身份识别码输入框时,判断遍历过的控件的字段描述符的数量是否等于所有控件的字段描述符的总数量;
所述获取单元,还用于获取所有控件的字段描述符的总数量;获取当前控件的字段描述符;还用于在第四判断单元判断遍历过的字段描述符的数量不等于所有控件的字段描述符的总数量时,获取下一个控件的字段描述符作为当前控件的字段描述符,然后触发第三判断单元;
所述保存单元,还用于保存个人身份识别码输入框的标识。
进一步的,第二判断单元,具体用于判断所述字段描述符的类型值是否为第一预设值,是则判断当前控件为个人身份识别码输入框;否则判断当前控件不是个人身份识别码输入框。
进一步的,所述第三操作模块,还包括:
第四判断单元,用于提供装置根据所述控件的状态,判断所述控件是否为显示信息控件;
查找单元,用于以个人身份识别码输入框标识为起点,将前一个标识作为当前标识;当所述第四判断单元判断所述控件不为显示信息控件时,将当前标识的前一个标识作为当前标识;
所述获取单元,还用于获取当前标识所对应的控件的状态;
所述保存单元还用于,当所述第四判断单元判断所述控件为显示信息控件时,保存所述显示信息控件的标识。
进一步的,所述第四判断单元,具体用于判断所述控件的状态值是否为第二预设值,是则确定所述控件为显示信息控件,否则确定所述控件不是显示信息控件。
进一步的,所述第三模块具体用于当第三接口函数被上层调用时,获取凭据的数量,获取并保存个人身份识别码输入框标识,调用凭据的对象实例的成员函数获取当前登录智能卡提交给本地安全权限服务的封装数据,并对所述封装数据进行解析,获得当前登录智能卡的名称,返回响应给所述上层。
进一步的,第六操作模块,具体用于当第六接口函数被上层调用时,设置个人身份识别码输入框的状态为不可见,返回响应给所述上层。
进一步的,所述第五操作模块,具体用于当第五接口函数被上层调用时,根据凭据提供方封装类实例中保存的判断结果判断所述当前登录的智能卡为带有指纹传感器的智能卡后,根据个人身份识别码输入框标识,将个人身份识别码设置为默认值,返回响应给所述上层。
进一步的,所述第七操作模块,具体用于当第七接口函数被上层调用时,根据凭据提供方封装类实例中保存的判断结果判断所述当前登录的智能卡为带有指纹传感器的智能卡后,加载带有指纹传感器的智能卡专用登录图片,返回响应给所述上层。
进一步的,所述第八操作模块,具体用于当第八接口函数被上层调用时,根据凭据提供方封装类实例中保存的判断结果判断所述当前登录的智能卡为带有指纹传感器的智能卡后,根据保存的显示信息控件的标识设置提交按钮的位置,返回响应给所述上层。
进一步的,所述第六操作模块,具体用于当第六接口函数被上层调用时,根据凭据提供方封装类实例中保存的判断结果判断所述当前登录的智能卡为带有指纹传感器的智能卡后,根据所述个人身份识别码输入框标识设置个人身份识别码输入框的状态,返回响应给所述上层。
本发明技术方案与现有技术相比,具有以下优点:本发明提供的了一种智能卡登录Windows系统方法以及私有凭据提供装置,可以在使用带有指纹传感器的智能卡登录Windows系统时实现一个证书仅显示一个登录选项的情况,不会使用户在登录界面发生混淆,提供了友好的登录界面,提升了用户的使用体验。
附图说明
图1为本发明实施例1提供的一种智能卡登录Windows系统的方法的流程图;
图2为本发明实施例2提供的一种智能卡登录Windows系统的方法的流程图;
图3为本发明实施例2中当第三接口被调用时,私有CP装置的操作流程图;
图4为本发明实施例2中私有CP装置获取PIN码输入框的ID并保存的详细流程图;
图5为本发明实施例2中私有CP获取显示信息控件的ID并保存的详细流程图;
图6为本发明实施例3提供的一种私有凭据提供装置。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整的描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明的保护范围。
为便于对本发明实施例的理解,下面将结合附图以具体实施例做进一步的解释说明,实施例并不构成对本发明实施例的限定。
术语说明:
CP为凭据提供装置。
系统默认CP为系统默认凭据提供装置。
私有CP为私有凭据提供装置。
PIN码为个人身份识别码。
PIN码输入框为个人身份识别码输入框。
PIN码输入框ID为个人身份识别码输入框标识。
CwrappedCredential实例为凭据提供方封装类实例。
Lsass.exe为本地安全权限服务。
Credential的对象实例为凭据的对象实例。
ID为标识。
CSP为加密服务提供程序。
实施例1
本发明实例1提供了一种智能卡登录Windows系统的方法。如图1所示,具体过程如下:
步骤1,私有凭据提供装置等待上层调用,
当私有凭据提供装置的第一接口函数被调用时,执行步骤2;
当私有凭据提供装置的第三接口函数被调用时,执行步骤3;
当私有凭据提供装置的第五接口函数被调用时,执行步骤4;
当私有凭据提供装置的第九接口函数被调用时,执行步骤5;
当私有凭据提供装置的第十接口函数被调用时,执行步骤6。
具体的,上层可以为实现登录功能的程序,例如LoginUI.exe或Mstsc.exe。
步骤2,私有凭据提供装置从所有凭据提供装置中找到系统默认凭据提供装置,将系统默认凭据提供装置设为不可见,返回响应给上层。
步骤3,私有凭据提供装置获取凭据的数量,获取并保存个人身份识别码输入框标识,获取当前登录的智能卡的名称,返回响应给上层。
进一步的,私有凭据提供装置获取凭据的数量,获取并保存个人身份识别码输入框标识,获取当前登录的智能卡的名称,返回响应给上层具体包括:
私有凭据提供装置获取凭据的数量,获取并保存个人身份识别码输入框标识,获取当前登录的智能卡的名称,根据当前登录的智能卡的名称判断当前登录的智能卡是否为带有指纹传感器的智能卡,得到判断结果,根据凭据的数量创建凭据的对象实例,并将判断结果和凭据的对象实例保存到凭据提供方封装类实例中,返回响应给上层。
进一步的,私有凭据提供装置获取凭据的数量之前还可以包括:私有凭据提供装置获取Windows系统的凭据列表并判断Windows系统的凭据列表是否为空;如果是,私有凭据提供装置获取凭据的数量,如果否,私有凭据提供装置清空Windows系统的凭据列表,私有凭据提供装置获取凭据的数量。
步骤4,私有凭据提供装置根据个人身份识别码输入框标识,将个人身份识别码设置为默认值,返回响应给上层。
步骤5,私有凭据提供装置弹出指纹验证框,提示用户输入指纹,返回响应给上层。
步骤6,私有凭据提供装置获取登录Windows系统所需的凭据,返回响应给上层,并将登录Windows系统所需的凭据发送给本地安全权限服务,其中,登录Windows系统所需的凭据包括加密服务提供程序名称,当前登录的智能卡的名称、容器名、密钥用途。
实施例2
本发明实例2提供了一种智能卡登录Windows系统的方法。如图2所示,具体过程如下:
步骤S1,私有凭据提供装置(简称私有CP)等待上层调用;
当私有CP的第一接口函数被调用时,执行步骤S2;当私有CP的第二接口函数被调用时,执行步骤S3;当私有CP的第三接口函数被调用时,执行步骤S4;当私有CP的第四接口函数被调用时,执行步骤S5;当私有CP的第五接口函数被调用时,执行步骤S6;当私有CP的第六接口函数被调用时,执行步骤S7;当私有CP的第七接口函数被调用时,执行步骤S8;当私有CP的第八接口函数被调用时,执行步骤S9;当私有CP的第九接口函数被调用时,执行步骤S10,当指纹验证通过,私有CP第十接口函数被调用时,执行步骤S11。
上层是实现登录功能的程序,例如LoginUI.exe或Mstsc.exe。
步骤S2,私有CP(私有凭据提供装置)找到系统默认CP,并将系统默认CP设置为不可见,并返回响应给上层。
在本实施例中,第一接口函数为继承自ICredentialProviderFilter的Filter函数;
具体的,Filter函数为:
HRESULT
CWrappedProvider::Filter(CREDENTIAL_PROVIDER_USAGE_SCENARIOcpus,DWORDdwFlags,
GUID*rgclsidProviders,BOOL*rgbAllow,DWORD cProviders)
具体的,当第一接口函数被上层调用时,私有CP根据Filter函数的参数值,即GUID的值,从所有CP中找到系统默认CP;将函数参数中系统默认CP所对应的rgbAllow的值设为False,从而私有CP将系统默认CP过滤掉,系统默认CP被设置为不可见;
当第一接口函数被调用时,私有CP完成上述操作后返回响应给上层。
具体的,在上述操作中,私有CP返回响应上层具体包括,如果操作正常完成,私有CP返回操作正确响应给上层;如果操作出现错误,则私有CP返回参数错误或者操作结果错误给上层。
步骤S3,私有CP创建系统默认CP的实例,并将系统默认CP的实例保存,并返回响应给上层。
在本实施例中,第二函数接口具体为继承自ICredentialProvider的SetUsageScenario函数;
本步骤具体为:当继承自ICredentialProvider的SetUsageScenario函数被上层调用时,私有CP调用CocreateInstance函数来创建一个系统默认CP的实例,并保存系统默认CP的实例;
当第二接口函数被调用时,私有CP完成上述操作后返回响应给上层;
具体的,在上述操作中,私有CP返回响应上层具体包括,如果操作正常完成,私有CP返回操作正确响应给上层;如果操作出现错误,则私有CP返回参数错误或者操作结果错误给上层。
步骤S4,私有CP获取凭据的数量,获取并保存PIN码输入框ID,获取当前登录的智能卡的名称,得到当前登录的智能卡是否为带有指纹传感器的智能卡的判断结果,返回响应给上层。
具体的,如图3所示,步骤S4为私有CP执行如下操作:
步骤201,私有CP获取Windows系统的凭据列表并判断Windows系统的凭据列表是否为空,如果是,执行步骤202;如果否,私有CP清空Windows系统的凭据列表,执行步骤202;
具体的,第三接口函数为继承自ICredentialProvider的GetCredentilaCount函数;
当继承自ICredentialProvider的GetCredentilaCount函数被上层调用时,私有CP获取Windows系统的凭据列表,判断Windows系统的凭据列表是否为空,如果Windows系统的凭据列表为空,则执行步骤202;如果Windows系统的凭据列表不为空,私有CP清空当前的凭据列表,执行步骤202;
步骤202,私有CP获取凭据的数量;
具体的,私有CP调用系统默认CP的实例的成员函数GetCredentialCount获取凭据的数量。
步骤203,私有CP获取PIN码输入框的ID,并保存PIN码输入框的ID;
具体的,如图4所示,步骤203包括如下步骤:
步骤203-1,私有CP调用系统默认CP的实例的成员函数GetFieldDescriptor获取所有控件的字段描述符的总数量;
步骤203-2,私有CP对所有控件的字段描述符按照顺序开始遍历;
步骤203-3,私有CP调用系统默认CP的实例的成员函数GetFieldDscriptorAt获取当前控件的字段描述符,根据获取的当前控件的字段描述符判断当前控件是否为PIN码输入框,如果是,则执行步骤203-5,如果否,则执行步骤203-4;
私有CP判断当前控件是否为PIN码输入框具体为:私有CP判断字段描述符的类型是否为第一预设值,如CPFT-PASSWORD_TEXT,如果判断到字段描述符的类型是第一预设值,则判断当前控件为PIN码输入框,执行步骤203-5;如果判断到字段描述符的类型不是第一预设值,则执行步骤203-4。
步骤203-4,私有CP判断遍历过的控件的字段描述符的数量是否等于获取的所有控件的字段描述符的总数量,如果是,则结束,如果否,则获取下一个控件的字段描述符,继续执行步骤203-3。
步骤203-5,保存PIN码输入框自带的ID,结束;
步骤204,私有CP获取Credential的对象实例,获取当前登录的智能卡的名称。
本步骤具体为,私有CP根据获取的凭据数量,调用系统默认CP的实例的成员函数GetCredentialAt,获取Credential的对象实例;
私有CP调用Credential的对象实例的成员函数GetSerialization得到当前登录智能卡提交给Lsass.exe的封装数据;私有CP对得到封装数据进行解析,得到登录的智能卡的名称Readername。
步骤205,私有CP根据获取的智能卡的名称判断当前登录的智能卡是否是带有指纹传感器的智能卡,得到判断结果。
具体的,私有CP调用中间件拓展接口根据Readername来判断智能卡是否为带有指纹传感器的智能卡,得到判断结果。
步骤206,私有CP创建CWrappedCredential实例,并将判断结果和Credential的对象实例保存在CWrappedCredential实例中。
具体,私有CP根据步骤202获得的凭据数量,创建CWrappedCredential实例,并将判断结果以及步骤204得到Credential的对象实例保存到CWrappedCredential实例中。
例如,私有CP之前获得的凭据数量为1,则创建一个CWrappedCredential实例,如果私有凭据之前获得凭据数量为2,则创建两个CWrappedCredential实例。其中,CWrappedCredential的实例继承自ICredentialProviderCredential类。
具体的,私有CP将前面得到的判断结果,Credential的对象实例保存到CWrappedCredential实例中。通过此种方式,将当前登录的智能卡是否是带指纹传感器的智能卡的判断结果和Credential的对象实例关联,并将关联数据保存到CWrappedCredential实例中。
步骤207,私有CP获取显示信息控件的ID,并保存显示信息控件的ID。
具体的,如图5所示,步骤207包括如下步骤:
步骤207-1,私有CP以PIN码输入框ID为起点,将前一个ID作为当前ID。
步骤207-2,私有CP调用CWrappedCredential实例的成员函数GetFieldState,获取当前ID所对应的控件的状态;
步骤207-3,私有CP根据控件的状态,判断控件是否为显示信息控件,如果是,执行步骤207-4;如果否,则将当前ID的前一个ID作为当前ID,执行步骤207-2。
具体的,私有CP判断控件的状态是否为第二预设值,例如第二预设值为CPFS_DISPLAY_IN_SELECTED_TILE或第二预设值为CPFS_DISPLAY_IN_BOTH,如果是,则确定控件为显示信息控件,如果否,则确定控件不是显示信息控件。
步骤207-4,私有CP将显示信息控件的ID保存。
当第三接口函数被调用时,私有CP执行上述操作完成后,返回响应给上层。
具体的,在上述操作中,私有CP返回响应上层具体包括,如果操作正常完成,私有CP返回操作正确响应给上层;如果操作出现错误,则私有CP返回参数错误或者操作结果错误给上层。
步骤S5,私有CP调用默认CP实例的相应的成员函数,调用完成后,返回响应给上层。
其中,第四接口函数为ICredentialProvider的其他成员函数。
具体的,当上层调用ICredentialProvider的其他成员函数时,私有CP调用系统默认CP的实例的相应的其他成员函数,并返回响应给上层。
具体的,IICredentialProvider的其他成员函数,具体包括:
具体的,在上述操作中,私有CP返回响应给上层具体包括,如果操作正常完成,私有CP返回操作正确响应给上层;如果操作出现错误,则私有CP返回参数错误或者操作结果错误给上层。
步骤S6,私有CP将PIN码设置为默认值,并返回响应给上层。
具体的,第五接口函数为CWrappedCredential实例的成员函数SetSelected。
当CWrappedCredential实例的成员函数SetSelected被上层调用时,私有CP判断当前登录的智能卡是否为带有指纹传感器的智能卡,如果当前登录的智能卡是带有指纹传感器的智能卡,则将PIN码设置为默认值,如,1234,然后私有CP通过调用Credential的对象实例所对应的函数SetSelected返回响应給上层。
如果当前登录的智能卡不是带有指纹传感器的智能卡,私有CP调用Credential的对象实例的对应函数SetSelected,返回响应给上层。
其中,私有CP判断当前登录的智能卡是否为带有指纹传感器的智能卡是根据步骤206中CWrappedCredential实例中保存的是否是带有指纹传感器的智能卡的判断结果进行判断的。
具体的,在上述操作中,私有CP返回响应上层具体包括,如果操作正常完成,私有CP返回操作正确响应给上层;如果操作出现错误,则私有CP返回参数错误或者操作结果错误给上层。
步骤S7,私有CP设置PIN码输入框的状态,并返回响应给上层。
具体的,第六接口函数为CWrappedCredential实例的成员函数GetFieldState,当CWrappedCredential实例的成员函数GetFieldState被上层调用时,私有CP判断当前登录的智能卡是否为带有指纹传感器的智能卡,如果是,则根据获取的PIN码输入框的ID,将PIN框的状态设置为不可见,并调用Credential的对象实例的对应函数GetFieldState返回响应給上层;如果否,私有CP直接调用Credential的对象实例的对应函数GetFieldState,返回响应給上层。
具体的,在上述操作中,私有CP返回响应上层具体包括,如果操作正常完成,私有CP返回操作正确响应给上层;如果操作出现错误,则私有CP返回参数错误或者操作结果错误给上层。
步骤S8,私有CP加载带有指纹传感器的智能卡专用登录图片,并返回响应给上层。
其中,第七接口函数为CWrappedCredential实例的成员函数GetBitmapvalue,即
GetBitmapValue(__in DWORD dwFieldID,__out HBITMAP*phbmp);
具体的,当CWrappedCredential实例的成员函数GetBitmapvalue被上层调用时,私有CP判断当前登录的智能卡是否为带有指纹传感器的智能卡,如果是,则私有CP加载指纹传感器的智能卡专用图片,即指纹传感器的智能卡专用Logo,调用系统API得到结构体,将CWrappedCredential实例的成员函数GetBitmapvalue的第二个参数值__out HBITMAP赋值给结构体,并调用Credential的对象实例的对应函数GetBitmapvalue,返回响应给上层。
如果否,则私有CP加载系统默认的智能卡logo,具体的,私有CP直接调用Credential的对象实例的对应函数,返回响应給上层。
其中,本步骤中,私有CP判断当前登录的智能卡是否为带有指纹传感器的智能卡是根据步骤206中CWrappedCredential实例中保存的是否是智能卡的判断结果进行判断的。
具体的,私有CP返回响应给上层具体包括,如果上述操作中操作正确私有CP返回操作正确响应给上层;如果上述操作出现错误,则私有CP返回参数错误或者操作结果错误给上层。
步骤S9,私有CP设置提交按钮的位置,并返回响应给上层。
具体的,第八接口函数为CWrappedCredential实例的成员函数GetSubmitButton,即GetSubmitButtonValue(__in DWORD dwFieldID,__out DWORD*pdwAdjacentTo);
提交按钮的位置可以进行预先设置,具体的,通过将步骤207中保存的显示信息控件的ID赋值到CWrappedCredential实例的成员函数GetSubmitButton的参数来实现。
本步骤中,以将提交按钮设置在显示信息控件的后面为例,加以说明。
其中,当CWrappedCredential实例的成员函数GetSubmitButton被上层调用时,私有CP判断当前登录的智能卡是否为带有指纹传感器的智能卡,如果是,则将提交按钮设置在显示信息控件的后面,即将步骤207中保存的显示信息控件的ID赋值到CWrappedCredential实例的成员函数GetSubmitButton的参数__out DWORD中。
如果否,则私有CP调用Credential的对象实例的所对应的成员函数GetSubmitButton,返回响应给上层。
进一步的,提交按钮还可以设置在控件的前方、下方、左方、右方等任意位置。
其中,本步骤中,私有CP判断当前登录的智能卡是否为带有指纹传感器的智能卡是根据步骤206中CWrappedCredential实例保存的判断结果进行判断的。
具体的,在上述操作中,私有CP返回响应上层具体包括,如果操作正常完成,私有CP返回操作正确的响应给上层;如果操作中出现错误,则私有CP返回参数错误或者操作结果错误给上层。
步骤S10,私有CP弹出指纹验证框,提示用户输入指纹,并返回响应给上层。
具体的,第九接口函数为CWrappedCredential实例的成员函数GetSerialization:
GetSerialization(__out CREDENTIAL_PROVIDER_GET_SERIALIZATION_RESPONSE*pcpgsr,
__out CREDENTIAL_PROVIDER_CREDENTIAL_SERIALIZATION*pcpcs,
__deref_out_opt PWSTR*ppwszOptionalStatusText,
__out CREDENTIAL_PROVIDER_STATUS_ICON*pcpsiOptionalStatusIcon);
具体的,当上层接收到用户点击提交按钮的信息后,上层调用私有CP的第九接口函数,即CWrappedCredential实例的成员函数GetSerialization。当第九接口函数被调用时,私有CP判断当前登录的智能卡是否为带有指纹传感器的智能卡,如果私有CP判断当前登录的智能卡是带有指纹传感器的智能卡,则弹出指纹验证框,提示用户验证指纹;如果私有CP判断当前登录的智能卡不是带有指纹传感器的智能卡,私有CP直接调用Credential的对象实例的对应函数,返回响应给上层,结束流程。
其中,Credential的对象实例的对应函数为名称与被调用的第九接口函数的具体名称相同的函数,例如,在本实施例中,如果私有CP判断当前登录的智能卡不是带有指纹传感器的智能卡,私有CP直接调用Credential的对象实例的成员函数GetSerialization。
其中,本步骤中,私有CP判断当前登录的智能卡是否为带有指纹传感器的智能卡是根据步骤206中CWrappedCredential实例中保存的判断结果进行判断的。
具体的,在上述操作中,私有CP返回响应上层具体包括,如果操作正常完成,私有CP返回操作正确响应给上层;如果操作中出现错误,则私有CP返回参数错误或者操作结果错误给上层。
步骤S11,私有CP获取登录Windows系统所需的必要数据,返回响应给上层,并将获取的必要数据发送给Lsass程序。
具体的,第十接口函数为Credential的对象实例的成员函数GetSerialization,
当第十接口函数被调用时,私有CP获取登录Windows系统所需要的必要数据,必要数据包括CSP名称,Reader名称,容器名,密钥用途,PIN码默认值,即
typedef struct_CREDENTIAL_PROVIDER_CREDENTIAL_SERIALIZATION{ULONGulAuthenticationPackage;GUID clsidCredentialProvider;ULONGcbSerialization;byte*rgbSerialization;}CREDENTIAL_PROVIDER_CREDENTIAL_SERIALIZATION;
私有CP返回响应给上层,并将获取的必要数据发送给Lsass.exe。
私有CP返回响应上层具体包括,如果操作正常完成,私有CP返回操作正确响应给上层;如果操作中出现错误,则私有CP返回参数错误或者操作结果错误给上层。
具体的,私有CP将获取的必要数据发送给Lsass.exe后,Lsass.exe执行如下操作:
步骤1201,Lsass.exe根据CSP名称找到指纹传感器的智能卡所对应的CSP,并调用对应的CSP中的CryptAcquireContext函数,将函数的第一个参数OUTHCRYPTPROV*phProv赋值为.\\.\Reader名\容器名,函数执行成功后,返回一个句柄给Lsass.exe。
步骤1202,Lsass.exe调用CryptSetProvParam函数,并对函数的第二个参数INDWORD dwParam的值进行判断,如果函数的第二个参数IN DWORDdwParam的值等于第三预设值,如32或33,则判断当前登录的智能卡是否为带有指纹传感器的智能卡,如果带有指纹传感器的智能卡,则判断函数第三个参数IN BYTE*pbData的值是否为预设密钥,如果是预设密钥,直接返回成功响应给上层,否则返回失败响应给上层;如果不是带有指纹传感器的智能卡,则将第三参数的值作为PIN码,向带有指纹传感器的智能卡的COS系统发送APDU指令,验证PIN码的正确性,如果验证成功,返回响应给上层,如果验证失败,则返回错误响应给上层。
步骤1203,Lsass.exe调用CryptSignHash函数对一串随机数进行签名。
具体的,CryptSignHash函数的第三参数IN DWORD dwKeySpec为密钥用途,带指纹传感器的智能卡根据密钥用途找到对应的私钥,然后用此私钥对CryptSignHash函数的第六参数的随机数进行签名,Lsass.exe对随机数的签名值进行校验,如果校验成功,则可以登录系统,如果失败则返回失败响应给上层。
实施例3
本发明实施例3提供了一种私有凭据提供装置,如图6所示,私有凭据提供装置包括:第一操作模块301,第三操作模块303,第五操作模块305,第九操作模块309,第十操作模块310,其中,
第一操作模块301,用于当第一接口函数被上层调用时,从所有凭据提供装置中找到系统的默认凭据提供装置,将系统默认凭据提供装置设为不可见,返回响应给上层;
第三操作模块303,用于当第三接口函数被上层调用时,获取凭据的数量,获取并保存个人身份识别码输入框标识,获取当前登录的智能卡的名称返回响应给上层;
第五操作模块305,用于当第五接口函数被上层调用时,根据个人身份识别码输入框标识,将个人身份识别码设置为默认值,返回响应给上层;
第九操作模块309,用于当第九接口函数被上层调用时,弹出指纹验证框,提示用户输入指纹,返回响应给上层;
第十操作模块310,用于当第十接口函数被上层调用时,获取登录Windows系统所需的凭据,返回响应给上层,并将登录Windows系统所需的凭据发送给本地安全权限服务,其中,登录Windows系统所需的凭据包括加密服务提供程序名称、当前登录的智能卡的名称、容器名、密钥用途。
具体的,在本实施例中,第三操作模块302可以包括:
获取单元,用于获取凭据的数量,获取并保存个人身份识别码输入框标识,获取当前登录的智能卡的名称,并在第二判断单元判断当前登录的智能卡是否为带有指纹传感器的智能卡后得到判断结果;
第二判断单元,用于根据当前登录的智能卡的名称判断当前登录的智能卡是否为带有指纹传感器的智能卡;
创建实例单元,用于根据凭据的数量创建凭据的对象实例;
保存单元,用于将获取单元得到的所述判断结果和创建实例单元根据凭据的数量创建的凭据的对象实例保存到凭据提供方封装类实例中;
响应单元,用于返回响应给上层。
具体的,在本实施例中,第三操作模块302还可以包括:第一判断单元,用于判断获取单元获取的Windows系统的凭据列表是否为空;
清空单元,用于在判断单元判断获取的Windows系统的凭据列表不为空时,清空Windows系统的凭据列表;
相应的,
获取单元还用于获取Windows系统的凭据列表;在判断单元判断获取的Windows系统的凭据列表为空时,获取凭据的数量;在清空单元清空Windows系统的凭据列表后,获取凭据的数量。
在本实施例中,私有凭据提供装置还可以包括,
第二操作模块,用于当第二接口函数被上层调用时,创建系统的默认凭据提供装置的实例并保存,返回响应给上层;
第四操作模块,用于当第四接口被上层调用时,调用系统默认凭据提供装置的实例的相应成员函数,并在调用完成后返回响应给上层;其中,相应的成员函数为与第四接口函数所对应的成员函数;
第六操作模块,用于当第六接口函数被上层调用时,根据个人身份识别码输入框标识设置个人身份识别码输入框的状态,并返回响应给上层;
第七操作模块,用于当第七接口函数被上层调用时,加载带有指纹传感器的智能卡专用登录图片,并返回响应给上层;
第八操作模块,用于当第八接口函数被上层调用时,根据保存的显示信息控件的标识来设置提交按钮的位置,并返回响应给上层;
所述第三操作模块,还用于获取并保存所述显示信息控件的标识。
具体的,在本实施例中,第三操作模块还可以包括:
第一判断单元,用于判断获取单元获取的Windows系统的凭据列表是否为空;
清空单元,用于在第一判断单元判断获取的Windows系统的凭据列表不为空时,清空Windows系统的凭据列表;
相应的,
获取单元还用于获取Windows系统的凭据列表;在第一判断单元判断获取的Windows系统的凭据列表为空时,获取凭据的数量;清空单元清空Windows系统的凭据列表后,获取凭据的数量。
在本实施例中,私有凭据提供装置的第三操作模块,还包括
遍历单元,用于对所有字段描述符按照顺序开始遍历;
第三判断单元,用于根据获取单元获取的当前控件字段描述符判断当前控件是否为个人身份识别码输入框;
第四判断单元用于,当第三判断单元判断当前控件不是个人身份识别码输入框时,判断遍历过的字段描述符的数量是否等于字段描述符的总数量;
获取单元,还用于获取字段描述符的数量;根据字段描述符的数量获取当前控件的字段描述符;还用于在第四判断单元判断遍历过的字段描述符的数量不等于字段描述符的总数量时,获取下一个控件的字段描述符,然后触发第三判断单元;
保存单元,还用于保存个人身份识别码输入框的标识,其中个人身份识别码输入框的标识为个人身份识别码输入框的自带的标识。
具体的,在本实施例中,第二判断单元用于判断字段描述符的类型值是否为第一预设值,如果判断到字段描述符的类型值是第一预设值,则判断此控件为个人身份识别码输入框;如果判断到字段描述符的类型值不是第一预设值,则判断此控件不是个人身份识别码输入框。其中,第一预设值可以为如CPFT-PASSWORD_TEXT。
在本实施例中,第三操作模块,还包括:
第四判断单元,用于提供装置根据控件的状态,判断控件是否为显示信息控件;
查找单元,用于以个人身份识别码输入框标识为起点,将前一个标识作为当前标识;当第四判断单元判断控件不为显示信息控件时,将当前标识的前一个标识作为当前标识;
获取单元,还用于获取当前标识所对应的控件的状态;
保存单元,还用于,当第四判断单元判断控件为显示信息控件时,保存显示信息控件的标识。
具体的,第四判断单元用于判断控件的状态值是否为第二预设值,如果是,则确定控件为显示信息控件,如果否,则确定控件不是显示信息控件。其中,例如第二预设值为CPFS_DISPLAY_IN_SELECTED_TILE或第二预设值为CPFS_DISPLAY_IN_BOTH。
在本实施例中,所述第三模块具体用于当第三接口函数被上层调用时,获取凭据的数量,获取并保存个人身份识别码输入框标识,调用凭据的对象实例的成员函数获取当前登录智能卡提交给本地安全权限服务的封装数据,并对所述封装数据进行解析,获得当前登录智能卡的名称,返回响应给所述上层。
在本实施例中,第六操作模块,具体用于当第六接口函数被上层调用时,设置个人身份识别码输入框的状态为不可见,返回响应给上层。
在本实施例中,第五操作模块,具体用于当第五接口函数被上层调用时,根据凭据提供方封装类实例中保存的判断结果判断当前登录的智能卡为带有指纹传感器的智能卡后,根据个人身份识别码输入框,将个人身份识别码设置为默认值。
在本实施例中,第七操作模块,具体用于当第七接口函数被上层调用时,根据凭据提供方封装类实例中保存的判断结果判断当前登录的智能卡为带有指纹传感器的智能卡后加载带有指纹传感器的智能卡专用登录图片。
在本实施例中,第八操作模块,具体用于当第八接口函数被上层调用时,根据凭据提供方封装类实例中保存的判断结果判断当前登录的智能卡为带有指纹传感器的智能卡后设置提交按钮的位置,返回响应给所述上层。
在本实施例中,第六操作模块,具体用于当第六接口函数被上层调用时,根据凭据提供方封装类实例中保存的判断结果判断当前登录的智能卡为带有指纹传感器的智能卡后设置个人身份识别码输入框的状态,返回响应给所述上层。
以上所述,仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到的变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应以权利要求的保护范围为准。
Claims (28)
1.一种智能卡登录Windows系统的方法,其特征在于,所述方法包括:
私有凭据提供装置等待上层调用,
当所述私有凭据提供装置的第一接口函数被调用时,所述私有凭据提供装置从所有凭据提供装置中找到系统默认凭据提供装置,将所述系统默认凭据提供装置设为不可见,返回响应给上层;
当所述私有凭据提供装置的第三接口函数被调用时,所述私有凭据提供装置获取凭据的数量,获取并保存个人身份识别码输入框标识,获取当前登录的智能卡的名称,返回响应给上层;
当所述私有凭据提供装置的第五接口函数被调用时,所述私有凭据提供装置根据个人身份识别码输入框标识,将个人身份识别码设置为默认值,返回响应给上层;
当所述私有凭据提供装置的第六接口函数被调用时,所述私有凭据提供装置根据所述个人身份识别码输入框标识设置个人身份识别码输入框的状态,并返回响应给上层;
当所述私有凭据提供装置的第九接口函数被调用时,所述私有凭据提供装置弹出指纹验证框,提示用户输入指纹,返回响应给上层;
当所述私有凭据提供装置的第十接口函数被调用时,所述私有凭据提供装置获取登录Windows系统所需的凭据,返回响应给上层,并将所述登录Windows系统所需的凭据发送给本地安全权限服务,所述登录Windows系统所需的凭据包括加密服务提供程序名称、当前登录的智能卡的名称、容器名、密钥用途。
2.如权利要求1所述的方法,其特征在于,当所述私有凭据提供装置的第三接口函数被调用时,所述私有凭据提供装置获取凭据的数量,获取并保存个人身份识别码输入框标识,获取当前登录的智能卡的名称,返回响应给上层,具体包括:
当所述私有凭据提供装置的第三接口函数被调用时,所述私有凭据提供装置获取凭据的数量,获取并保存个人身份识别码输入框标识,获取当前登录的智能卡的名称,根据所述当前登录的智能卡的名称判断所述当前登录的智能卡是否为带有指纹传感器的智能卡,得到判断结果,根据所述凭据的数量创建凭据的对象实例,并将所述判断结果和所述凭据的对象实例保存到凭据提供方封装类实例中,返回响应给上层。
3.如权利要求2所述的方法,其特征在于,所述方法包括:当所述私有凭据提供装置的第二接口函数被调用时,所述私有凭据提供装置创建系统默认凭据提供装置的实例并保存,返回响应给上层;
当所述私有凭据提供装置的第四接口函数被调用时,所述私有凭据提供装置调用所述系统默认凭据提供装置的实例的相应成员函数,并在调用完成后返回响应给上层;其中,所述相应成员函数为与所述第四接口函数所对应的成员函数;
当所述私有凭据提供装置的第七接口函数被调用时,所述私有凭据提供装置加载带有指纹传感器的智能卡专用登录图片,并返回响应给上层;
当所述私有凭据提供装置的第八接口函数被调用时,所述私有凭据提供装置根据保存的显示信息控件的标识来设置提交按钮的位置,并返回响应给上层;
当所述私有凭据提供装置的第三接口函数被调用时,还包括:所述私有凭据提供装置获取并保存显示信息控件的标识。
4.如权利要求1所述的方法,其特征在于,所述私有凭据提供装置获取凭据的数量之前还包括:所述私有凭据提供装置获取Windows系统的凭据列表并判断所述Windows系统的凭据列表是否为空;如果是,所述私有凭据提供装置获取凭据的数量,如果否,所述私有凭据提供装置清空当前凭据列表,所述私有凭据提供装置获取凭据的数量。
5.如权利要求3所述的方法,其特征在于,当私有凭据提供装置的第三接口函数被调用时,所述获取并保存个人身份识别码输入框标识,具体包括:
步骤101,所述私有凭据提供装置获取所有控件的字段描述符的总数量;
步骤102,所述私有凭据提供装置对所有控件的字段描述符按照顺序开始遍历;
步骤103,所述私有凭据提供装置获取当前控件的字段描述符,根据获取的所述当前控件的字段描述符判断所述当前控件是否为个人身份识别码输入框,如果是,则执行步骤105,如果否,则执行步骤104;
步骤104,所述私有凭据提供装置判断遍历过的控件的字段描述符的数量是否等于所有控件的字段描述符的总数量,如果是,则结束流程,如果否,则获取下一个控件的字段描述符作为当前控件的字段描述符,继续执行步骤103;
步骤105,所述私有凭据提供装置保存个人身份识别码输入框标识。
6.如权利要求5所述的方法,其特征在于,所述私有凭据提供装置根据获取的当前控件的字段描述符判断当前控件是否为个人身份识别码输入框具体为:所述私有凭据提供装置判断字段描述符的类型值是否为第一预设值,如果是则当前控件为个人身份识别码输入框;如果否则当前控件不是个人身份识别码输入框。
7.如权利要求3所述的方法,其特征在于,所述私有凭据提供装置获取并保存显示信息控件标识,具体包括:
步骤201,所述私有凭据提供装置以个人身份识别码输入框标识为起点,将前一个标识作为当前标识;
步骤202,所述私有凭据提供装置获取当前标识所对应的控件的状态;
步骤203,所述私有凭据提供装置根据所述控件的状态,判断所述控件是否为显示信息控件,如果是,执行步骤204;如果否,则将当前标识的前一个标识作为当前标识,执行步骤202;
步骤204,所述私有凭据提供装置将所述显示信息控件标识保存。
8.如权利要求7所述的方法,其特征在于,所述私有凭据提供装置根据所述控件的状态,判断所述控件是否为显示信息控件具体为:所述私有凭据提供装置判断所述控件的状态的值是否为第二预设值,如果是,则确定所述控件为显示信息控件,如果否,则确定所述控件不是显示信息控件。
9.如权利要求1所述的方法,其特征在于,当所述私有凭据提供装置的第三接口函数被调用时,获取当前登录的智能卡的名称,具体包括:所述私有凭据提供装置调用凭据的对象实例的成员函数,获取当前登录智能卡提交给本地安全权限服务的封装数据,并对所述封装数据进行解析,获得当前登录智能卡的名称。
10.如权利要求3所述的方法,其特征在于,所述私有凭据提供装置根据所述个人身份识别码输入框标识设置个人身份识别码输入框的状态具体为:所述私有凭据提供装置根据所述个人身份识别码输入框标识设置个人身份识别码输入框的状态为不可见。
11.如权利要求3所述的方法,其特征在于,当所述私有凭据提供装置的第五接口函数被调用时,所述私有凭据提供装置根据个人身份识别码输入框标识,将个人身份识别码设置为默认值,具体为:当所述私有凭据提供装置的第五接口函数被调用时,所述私有凭据提供装置根据凭据提供方封装类实例中保存的判断结果判断所述当前登录的智能卡为带有指纹传感器的智能卡后,根据个人身份识别码输入框标识,将个人身份识别码设置为默认值。
12.如权利要求3所述的方法,其特征在于,当所述私有凭据提供装置的第七接口函数被调用时,所述私有凭据提供装置加载带有指纹传感器的智能卡专用登录图片,具体为:所述私有凭据提供装置根据凭据提供方封装类实例中保存的判断结果判断所述当前登录的智能卡为带有指纹传感器的智能卡后,加载带有指纹传感器的智能卡专用登录图片。
13.如权利要求3所述的方法,其特征在于,当所述私有凭据提供装置的第八接口函数被调用时,所述私有凭据提供装置根据保存的显示信息控件的标识来设置提交按钮的位置,具体为:所述私有凭据提供装置根据凭据提供方封装类实例中保存的判断结果判断所述当前登录的智能卡为带有指纹传感器的智能卡后,根据保存的显示信息控件的标识来设置提交按钮的位置。
14.如权利要求3所述的方法,其特征在于,当所述私有凭据提供装置的第六接口函数被调用时,所述私有凭据提供装置根据所述个人身份识别码输入框标识设置个人身份识别码输入框的状态,具体为:所述私有凭据提供装置根据凭据提供方封装类实例中保存的判断结果判断所述当前登录的智能卡为带有指纹传感器的智能卡后,根据所述个人身份识别码输入框标识设置个人身份识别码输入框的状态。
15.一种私有凭据提供装置,其特征在于,包括:
第一操作模块,用于当第一接口函数被上层调用时,从所有凭据提供装置中找到系统的默认凭据提供装置,将所述系统默认凭据提供装置设为不可见,返回响应给所述上层;
第三操作模块,用于当第三接口函数被上层调用时,获取凭据的数量,获取并保存个人身份识别码输入框标识,获取当前登录的智能卡的名称,返回响应给所述上层;
第五操作模块,用于当第五接口函数被上层调用时,根据个人身份识别码输入框标识,将个人身份识别码设置为默认值,返回响应给所述上层;
第六操作模块,用于当第六接口函数被上层调用时,根据个人身份识别码输入框标识设置个人身份识别码输入框的状态,并返回响应给所述上层;
第九操作模块,用于当第九接口函数被上层调用时,弹出指纹验证框,提示用户输入指纹,返回响应给所述上层;
第十操作模块,用于当第十接口函数被上层调用时,获取登录Windows系统所需的凭据,返回响应给所述上层,并将所述登录Windows系统所需的凭据发送给本地安全权限服务,所述登录Windows系统所需的凭据包括加密服务提供程序名称、当前登录的智能卡的名称、容器名、密钥用途。
16.如权利要求15所述的装置,其特征在于,所述第三操作模块具体包括:
获取单元,用于获取凭据的数量,获取并保存个人身份识别码输入框标识,获取当前登录的智能卡的名称,并在第二判断单元判断当前登录的智能卡是否为带有指纹传感器的智能卡后得到判断结果;
第二判断单元,用于根据所述获取单元获取的当前登录的智能卡的名称判断所述当前登录的智能卡是否为带有指纹传感器的智能卡;
创建实例单元,用于根据所述获取单元获取的凭据的数量创建凭据的对象实例;
保存单元,用于将所述获取单元得到的所述判断结果和所述创建实例单元根据所述凭据的数量创建的凭据的对象实例保存到凭据提供方封装类实例中;
响应单元,用于返回响应给所述上层。
17.如权利要求16所述的装置,其特征在于,所述私有凭据提供装置还包括:
第二操作模块,用于当第二接口函数被上层调用时,创建系统默认凭据提供装置的实例并保存,返回响应给所述上层;
第四操作模块,用于当第四接口函数被上层调用时,调用系统默认凭据提供装置的实例的相应成员函数,并在调用完成后返回响应给上层;所述相应的成员函数为与第四接口函数所对应的成员函数;
第七操作模块,用于当第七接口函数被上层调用时,加载带有指纹传感器的智能卡专用登录图片,并返回响应给所述上层;
第八操作模块,用于当第八接口函数被上层调用时,根据保存的显示信息控件的标识来设置提交按钮的位置,并返回响应给所述上层;所述第三操作模块,还用于获取并保存所述显示信息控件的标识。
18.如权利要求15所述的装置,其特征在于,所述第三操作模块还包括:
第一判断单元,用于判断所述获取单元获取的所述Windows系统的凭据列表是否为空;
清空单元,用于在所述第一判断单元判断获取的所述Windows系统的凭据列表不为空时,清空所述Windows系统的凭据列表;
相应的,
所述获取单元还用于获取Windows系统的凭据列表;在所述第一判断单元判断获取的所述Windows系统的凭据列表为空时,获取凭据的数量;在所述清空单元清空所述Windows系统的凭据列表后,获取凭据的数量。
19.如权利要求17所述的装置,其特征在于,所述第三操作模块,还包括:
遍历单元,用于对所有控件的字段描述符按照顺序开始遍历;
第三判断单元,用于根据所述获取单元获取的当前控件的字段描述符判断当前控件是否为个人身份识别码输入框;
第四判断单元用于,当第三判断单元判断当前控件不是个人身份识别码输入框时,判断遍历过的控件的字段描述符的数量是否等于所有控件的字段描述符的总数量;
所述获取单元,还用于获取所有控件的字段描述符的总数量;获取当前控件的字段描述符;还用于在第四判断单元判断遍历过的字段描述符的数量不等于所有控件的字段描述符的总数量时,获取下一个控件的字段描述符作为当前控件的字段描述符,然后触发第三判断单元;
所述保存单元,还用于保存个人身份识别码输入框的标识。
20.如权利要求19所述的装置,其特征在于,第二判断单元,具体用于判断所述字段描述符的类型值是否为第一预设值,是则判断当前控件为个人身份识别码输入框;否则判断当前控件不是个人身份识别码输入框。
21.如权利要求17所述的装置,其特征在于,所述第三操作模块,还包括:
第四判断单元,用于提供装置根据控件的状态,判断所述控件是否为显示信息控件;
查找单元,用于以个人身份识别码输入框标识为起点,将前一个标识作为当前标识;当所述第四判断单元判断所述控件不为显示信息控件时,将当前标识的前一个标识作为当前标识;
所述获取单元,还用于获取当前标识所对应的控件的状态;
所述保存单元还用于,当所述第四判断单元判断所述控件为显示信息控件时,保存所述显示信息控件的标识。
22.如权利要求21所述的装置,其特征在于,所述第四判断单元,具体用于判断所述控件的状态值是否为第二预设值,是则确定所述控件为显示信息控件,否则确定所述控件不是显示信息控件。
23.如权利要求15所述的装置,其特征在于,所述第三操作模块具体用于当第三接口函数被上层调用时,获取凭据的数量,获取并保存个人身份识别码输入框标识,调用凭据的对象实例的成员函数获取当前登录智能卡提交给本地安全权限服务的封装数据,并对所述封装数据进行解析,获得当前登录智能卡的名称,返回响应给所述上层。
24.如权利要求17所述的装置,其特征在于,第六操作模块,具体用于当第六接口函数被上层调用时,设置个人身份识别码输入框的状态为不可见,返回响应给所述上层。
25.如权利要求17所述的装置,其特征在于,所述第五操作模块,具体用于当第五接口函数被上层调用时,根据凭据提供方封装类实例中保存的判断结果判断所述当前登录的智能卡为带有指纹传感器的智能卡后,根据个人身份识别码输入框标识,将个人身份识别码设置为默认值,返回响应给所述上层。
26.如权利要求17所述的装置,其特征在于,所述第七操作模块,具体用于当第七接口函数被上层调用时,根据凭据提供方封装类实例中保存的判断结果判断所述当前登录的智能卡为带有指纹传感器的智能卡后,加载带有指纹传感器的智能卡专用登录图片,返回响应给所述上层。
27.如权利要求17所述的装置,其特征在于,所述第八操作模块,具体用于当第八接口函数被上层调用时,根据凭据提供方封装类实例中保存的判断结果判断所述当前登录的智能卡为带有指纹传感器的智能卡后,根据保存的显示信息控件的标识来设置提交按钮的位置,返回响应给所述上层。
28.如权利要求17所述的装置,其特征在于,所述第六操作模块,具体用于当第六接口函数被上层调用时,根据凭据提供方封装类实例中保存的判断结果判断所述当前登录的智能卡为带有指纹传感器的智能卡后,根据保存的显示信息控件的标识来设置个人身份识别码输入框的状态,返回响应给所述上层。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710979901.3A CN107609362B (zh) | 2017-10-19 | 2017-10-19 | 一种智能卡登录Windows系统的方法及私有凭据提供装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710979901.3A CN107609362B (zh) | 2017-10-19 | 2017-10-19 | 一种智能卡登录Windows系统的方法及私有凭据提供装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN107609362A CN107609362A (zh) | 2018-01-19 |
CN107609362B true CN107609362B (zh) | 2020-02-11 |
Family
ID=61078678
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201710979901.3A Active CN107609362B (zh) | 2017-10-19 | 2017-10-19 | 一种智能卡登录Windows系统的方法及私有凭据提供装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN107609362B (zh) |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108762827B (zh) * | 2018-04-24 | 2021-02-23 | 北京明华联盟科技有限公司 | 加密服务提供程序调用方法及终端设备 |
CN111586124B (zh) * | 2020-04-28 | 2020-12-18 | 广州锦行网络科技有限公司 | 一种获取远程连接凭证的方法 |
CN113591056A (zh) * | 2021-08-05 | 2021-11-02 | 国民认证科技(北京)有限公司 | 一种基于指纹设备登录Windows域的方法和系统 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP1237091A1 (en) * | 1999-12-10 | 2002-09-04 | Fujitsu Limited | Personal authentication system and portable electronic device having personal authentication function using body information |
CN101169812A (zh) * | 2006-10-25 | 2008-04-30 | 知网生物识别科技股份有限公司 | 视窗操作系统的多因子认证系统与登录方法 |
CN101753682A (zh) * | 2009-11-27 | 2010-06-23 | 华为终端有限公司 | 用户识别卡权限管理的方法及终端设备 |
CN107241192A (zh) * | 2017-05-27 | 2017-10-10 | 飞天诚信科技股份有限公司 | 一种使用指纹key进行登录的方法及装置 |
-
2017
- 2017-10-19 CN CN201710979901.3A patent/CN107609362B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP1237091A1 (en) * | 1999-12-10 | 2002-09-04 | Fujitsu Limited | Personal authentication system and portable electronic device having personal authentication function using body information |
CN101169812A (zh) * | 2006-10-25 | 2008-04-30 | 知网生物识别科技股份有限公司 | 视窗操作系统的多因子认证系统与登录方法 |
CN101753682A (zh) * | 2009-11-27 | 2010-06-23 | 华为终端有限公司 | 用户识别卡权限管理的方法及终端设备 |
CN107241192A (zh) * | 2017-05-27 | 2017-10-10 | 飞天诚信科技股份有限公司 | 一种使用指纹key进行登录的方法及装置 |
Also Published As
Publication number | Publication date |
---|---|
CN107609362A (zh) | 2018-01-19 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US9787393B2 (en) | Method for realizing bluetooth-binding between smart key device and mobile device | |
CN101447010B (zh) | 登录系统及登录方法 | |
US8978127B2 (en) | Virtual appliance pre-boot authentication | |
US9495524B2 (en) | Secure user authentication using a master secure element | |
US20170048240A1 (en) | Authentication processing method and electronic device supporting the same | |
CN105825382A (zh) | 一种移动支付方法及电子设备 | |
CN107609362B (zh) | 一种智能卡登录Windows系统的方法及私有凭据提供装置 | |
CN106022079B (zh) | 一种指纹解锁方法及终端 | |
US8172151B2 (en) | Secure use of externally stored data | |
CN105426717A (zh) | 一种展示界面的方法及装置 | |
EP2437198B1 (en) | Secure PIN reset process | |
WO2019100368A1 (zh) | 应用程序的启动方法及显示方法、终端 | |
US10389710B2 (en) | Method and system for extracting characteristic information | |
CN107360276A (zh) | 一种基于双指纹识别的验证方法、移动终端及存储装置 | |
WO2017016032A1 (zh) | 指纹验证方法、指纹验证装置和终端 | |
EP2254072A1 (en) | Biometric authentication unit and biometric authentication method | |
CN105892889A (zh) | 一种指纹操作方法及终端设备 | |
US20180137268A1 (en) | Authentication screen | |
CN105447365B (zh) | 一种基于控件的隐私保护方法及用户终端 | |
CN109977039A (zh) | 硬盘加密密钥存储方法、装置、设备及可读存储介质 | |
CN106897629A (zh) | 终端应用的控制方法及终端 | |
CN104778587A (zh) | 一种安全支付方法及装置 | |
US9424416B1 (en) | Accessing applications from secured states | |
CN105592072A (zh) | 在智能终端中获取登陆凭证的方法、智能终端以及操作系统 | |
CN105227314B (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 |