【技术实现步骤摘要】
一种定位国密证书的方法和装置及系统
本专利技术涉及信息安全领域,特别涉及一种定位国密证书的方法和装置及系统。
技术介绍
SSL(SecureSocketsLayer,安全套接字层)是一种国际标准的加密及身份认证通讯协议。SSL协议是一种在网络传输层之上的,基于浏览器和WEB服务器之间的安全连接技术。目前,B/S(浏览器/服务器)系统框架,就是依赖WEB服务器对SSL技术的支持,利用数字证书来实现系统的身份认证。当用户使用浏览器访问WEB服务器时,会在客户端和服务器端之间建立安全的SSL通道。目前流行的IE、Netscape、Opera等浏览器均支持SSL技术。数字证书是由国家认可的,具有权威性、可信性和公正性的第三方证书认证机构(CA)颁发的一个可信的数字化文件,根据采用的密码算法不同,可以分为国密证书、RSA证书等。其中,国密证书是基于SM2密码算法,采用GB/T16262系列标准的DER(DistinguishedEncodingRules,区分编码规则)编码规则,对证书中的各项信息进行编码,组成特定的证书数据结构的一种数字证书。CryptographicServiceProvider(简称CSP)是微软用来在Windows平台上提供第三方加密模块的接口标准。CSP接口标准是一个包含了标准加密算法实现的软件模块。CSP模块直接和硬件加密设备安全协处理器交互。CSP模块包含了一些标准加密算法的实现,实现的算法包括:非对称加密算法RSA、对称加密算法DES、摘要算法MD2、MD5、SHA1。CSP模块是CAPI函数的具体执行者,同时CSP模块也提供了密钥的 ...
【技术保护点】
一种定位国密证书的方法,其特征在于,所述方法包括:步骤A1:中间件的函数等待被调用,若第一函数被调用,则执行步骤A2;若第二函数被调用,则执行步骤A4;若第三函数被调用,则执行步骤A6;若第四函数被调用,则执行步骤A8;步骤A2:判断获取到的当前容器名是否为空,如果是,则获取中间件私有CSP句柄,输出中间件私有CSP句柄并返回成功标识;否则,执行步骤A3;步骤A3:根据当前容器名获取设备名和设备容器名,根据所述设备名和所述设备容器名定位当前设备,判断是否定位到当前设备,如果是,则根据所述当前设备设置当前设备容器私有CSP句柄,输出所述当前设备容器私有CSP句柄,返回成功标识,返回步骤A1;否则,返回失败标识,返回步骤A1;步骤A4:判断获取到的当前枚举参数的类型,若所述当前枚举参数的类型是枚举容器参数类型,则执行步骤A5;步骤A5:获取与主机连接的智能密钥设备的容器名列表,获取所述容器名列表中的当前容器名,判断所述当前容器名是否存在,如果是,则输出所述当前容器名并返回成功标识,返回步骤A1;否则,返回失败标识,返回步骤A1;步骤A6:判断获取到的当前设备容器私有CSP句柄和国密算法标识 ...
【技术特征摘要】
1.一种定位国密证书的方法,其特征在于,所述方法包括:步骤A1:中间件的函数等待被调用,当第一函数获取到当前容器参数时,第一函数被调用,若第一函数被调用,则执行步骤A2;当第二函数获取到中间件私有CSP句柄和当前枚举参数时,第二函数被调用,若第二函数被调用,则执行步骤A4;当第三函数获取到当前设备容器私有CSP句柄和国密算法标识时,第三函数被调用,若第三函数被调用,则执行步骤A6;当第四函数获取到当前设备容器私有CSP句柄和国密算法密钥句柄时,第四函数被调用,若第四函数被调用,则执行步骤A8;步骤A2:根据所述当前容器参数判断获取到的当前容器名是否为空,如果是,则获取中间件私有CSP句柄,输出中间件私有CSP句柄并返回成功标识;否则,执行步骤A3;步骤A3:根据当前容器名获取设备名和设备容器名,根据所述设备名和所述设备容器名定位当前设备,判断是否定位到当前设备,如果是,则根据所述当前设备设置当前设备容器私有CSP句柄,输出所述当前设备容器私有CSP句柄,返回成功标识,返回步骤A1;否则,返回失败标识,返回步骤A1;步骤A4:判断获取到的当前枚举参数的类型,若所述当前枚举参数的类型是枚举容器参数类型,则执行步骤A5;步骤A5:获取与主机连接的智能密钥设备的容器名列表,获取所述容器名列表中的当前容器名,判断所述当前容器名是否存在,如果是,则输出所述当前容器名并返回成功标识,返回步骤A1;否则,返回失败标识,返回步骤A1;步骤A6:判断获取到的当前设备容器私有CSP句柄和国密算法标识是否合法,如果是,则执行步骤A7;否则,返回失败标识,返回步骤A1;步骤A7:根据所述当前设备容器私有CSP句柄和所述国密算法标识,查找当前设备的容器名为所述当前容器名的容器中是否存在国密用法密钥,如果是查找到,则将预设国密用法密钥句柄作为国密算法密钥句柄,输出所述国密算法密钥句柄并返回成功标识,返回步骤A1;否则,返回失败标识,返回步骤A1;步骤A8:判断获取到的当前设备容器私有CSP句柄和国密算法密钥句柄是否合法,如果是,则执行步骤A9;否则,返回失败标识,返回步骤A1;步骤A9:根据所述当前设备容器私有CSP句柄和所述国密算法密钥句柄查找到当前设备中的容器名为所述当前容器名的容器,读取容器中的国密证书数据,判断是否读取到合法的国密证书数据,如果是,则输出所述国密证书数据,并且返回成功标识,返回步骤A1;否则返回失败标识,返回步骤A1。2.根据权利要求1所述的方法,其特征在于,所述步骤A3具体包括:步骤B1:根据所述当前容器名获取所述设备名和所述设备容器名,判断所述设备名是否不为空,如果是,则执行步骤B6;否则执行步骤B2;步骤B2:根据所述设备容器名获取和所述设备容器名相匹配的智能密钥设备,判断是否存在和所述设备容器名相匹配的智能密钥设备,如果是,则执行步骤B3;否则,返回失败标识,返回步骤A1;步骤B3:判断是否查找到唯一和所述设备容器名相匹配的智能密钥设备,如果是,则将唯一和所述设备容器名相匹配的智能密钥设备作为所述当前设备,保存当前设备ID,执行步骤B4;否则,执行步骤B5;步骤B4:设置所述当前设备容器私有CSP句柄,输出所述当前设备容器私有CSP句柄,返回成功标识,返回步骤A1;步骤B5:判断是否需要输出提示选择智能密钥设备信息,如果需要输出提示选择智能密钥设备信息,则输出提示选择智能密钥设备信息,当获取到外部选择的智能密钥设备时,将所述外部选择的智能密钥设备作为所述当前设备,保存当前设备ID,返回步骤B4;如果不需要输出提示选择智能密钥设备信息,则将查找到的第一个和所述设备容器名相匹配的智能密钥设备作为所述当前设备,保存当前设备ID,返回步骤B4;步骤B6:根据所述设备名获取和所述设备名相匹配的智能密钥设备,查找和所述设备名相匹配的智能密钥设备中是否存在和所述设备容器名相匹配的容器,如果是,则将和所述设备名相匹配的智能密钥设备作为所述当前设备,保存当前设备ID,执行步骤B4;否则,返回失败标识,返回步骤A1。3.根据权利要求1所述的方法,其特征在于,所述步骤A4中所述当前枚举参数的类型,还包括:枚举算法参数类型;如果所述当前枚举参数的类型是所述枚举算法参数类型,则执行步骤C1,步骤C1:获取所述中间件的预设算法列表中的当前算法标识,判断当前算法标识是否存在,如果是,则输出当前算法标识,并返回成功标识,返回步骤A1;否则,返回失败标识,返回步骤A1。4.根据权利要求3所述的方法,其特征在于,所述步骤A4中所述枚举算法参数类型包括第一枚举算法参数和第二枚举算法参数;当所述枚举算法参数类型是所述第一枚举算法参数时,执行步骤D1,当所述枚举算法参数类型是所述第二枚举算法参数时,执行步骤D2;步骤D1:获取所述中间件的预设算法列表中的第一算法标识,判断所述第一算法标识是否存在,如果是,则将所述第一算法标识作为当前算法标识,输出所述当前算法标识,并返回成功标识,返回步骤A1;否则,返回失败标识,返回步骤A1;步骤D2:获取所述中间件的预设算法列表中的当前算法标识的下一个算法标识,判断所述当前算法标识的下一个算法标识是否存在,如果是,则将所述当前算法标识的下一个算法标识作为当前算法标识,输出所述当前算法标识,并返回成功标识,返回步骤A1;否则,返回失败标识,返回步骤A1。5.根据权利要求1所述的方法,其特征在于,所述步骤A4中所述枚举容器参数类型包括第一枚举容器参数和第二枚举容器参数;当所述枚举容器参数类型是所述第一枚举容器参数时,执行步骤E1,当所述枚举容器参数类型是所述第二枚举容器参数时,执行步骤E2;步骤E1:获取与主机连接的智能密钥设备的容器名列表,获取所述容器名列表中的第一容器名,判断所述第一容器名是否存在,如果是,则将所述第一容器名作为当前容器名,则输出所述当前容器名并返回成功标识,返回步骤A1;否则,返回失败标识,返回步骤A1;步骤E2:获取所述容器名列表中的当前容器名的下一个容器名,判断所述当前容器名的下一个容器名是否存在,如果是,则将所述当前容器名的下一个容器名作为当前容器名,则输出所述当前容器名并返回成功标识,返回步骤A1;否则,返回失败标识,返回步骤A1。6.根据权利要求1所述的方法,其特征在于,所述步骤A7中的所述国密算法标识包括:国密签名算法标识;所述步骤A7具体包括:根据所述当前设备容器私有CSP句柄和所述国密签名算法标识,查找当前设备中的容器名为所述当前容器名的容器中是否存在国密签名算法密钥,如果查找到,则将预设国密签名算法密钥句柄作为国密算法密钥句柄,输出所述国密算法密钥句柄并返回成功标识,返回步骤A1;否则,返回失败标识,返回步骤A1。7.根据权利要求6所述的方法,其特征在于,所述步骤A1还包括:当第五函数获取到当前设备容器私有CSP句柄、国密算法密钥句柄和摘要算法标识时,第五函数被调用,若第五函数被调用,执行步骤G1;当第六函数获取到当前设备容器私有CSP句柄、国密算法密钥句柄和摘要算法标识时,第六函数被调用,若第六函数被调用,执行步骤G2;当第七函数获取到当前设备容器私有CSP句柄、哈希句柄和国密签名算法标识时,第七函数被调用,若第七函数被调用,执行步骤G3;所述步骤G1:判断获取到的当前设备容器私有CSP句柄、国密算法密钥句柄和摘要算法标识是否合法,如果是,则初始化一个哈希对象实例,将哈希对象实例的地址作为哈希句柄,输出所述哈希句柄并返回成功标识,返回步骤A1;否则,返回失败标识,返回步骤A1;步骤G2:判断获取到的当前设备容器私有CSP句柄、哈希句柄和待签数据是否合法,如果是,则用所述哈希句柄对所述待签数据做摘要,获取摘要值并保存所述待签数据,返回成功标识,返回步骤A1;否则,返回失败标识,返回步骤A1;步骤G3:判断获取到的当前设备容器私有CSP句柄、哈希句柄和国密签名算法标识是否合法,如果是,则获取国密签名数据,输出国密签名数据,并返回成功标识,返回步骤A1;否则,返回失败标识,返回步骤A1。8.根据权利要求6所述的方法,其特征在于,所述国密算法标识还包括:国密交换算法标识。9.一种定位国密证书的方法,适用于包括服务器、安装有浏览器、上层应用、中间件的主机和智能密钥设备的系统中,当所述中间件检测到智能密钥设备连接到主机时,获取智能密钥设备的设备信息、证书列表,所述中间件遍历证书列表,判断当前证书的类型,如果当前证书类型是国密证书类型,则继续遍历;如果当前证书类型是非国密证书类型,则所述中间件将非国密证书类型证书注册到浏览器的证书存储区中,继续遍历;当所有证书被遍历,则结束证书注册流程,其特征在于,所述方法包括:步骤M1:所述服务器获取用户通过单向SSL登录输入的用户信息,判断用户信息是否合法,若获取到合法的用户信息,则当获取到待签数据时,服务器根据预设选择证书条件选择证书类型,当服务器选择的证书类型为国密证书类型时,根据所述用户信息获取私有CSP名和认证信息,将预设国密证书类型标识、所述私有CSP名、所述认证信息和所述待签数据作为国密证书类型信息发送给所述上层应用,等待获取所述上层应用返回的国密签名数据;步骤M2:当所述上层应用获取到国密证书类型信息时,所述上层应用调用主机操作系统的第一接口函数根据私有CSP名将预设容器名作为当前容器参数传递给所述中间件的第一函数,获取中间件私有CSP句柄;步骤M3:所述上层应用设置当前枚举参数为第一枚举容器参数,调用主机操作系统的第二接口函数将所述中间件私有CSP句柄和所述当前枚举参数传递给中间件的第二函数获取容器名列表中的第一容器名,所述上层应用判断是否获取到第一容器名,如果是,则将所述第一容器名作为当前容器名,执行步骤M4;否则报错退出;步骤M4:所述上层应用调用主机操作系统的第一接口函数根据所述中间件私有CSP句柄,将所述当前容器名作为当前容器参数传递给所述中间件的所述第一函数,获取当前设备容器私有CSP句柄,所述上层应用判断是否获取到当前设备容器私有CSP句柄,如果是,则执行步骤M5;否则,报错退出;步骤M5:所述上层应用调用主机操作系统的第三接口函数将所述当前设备容器私有CSP句柄和预设国密签名算法标识传递给所述中间件的第三函数获取当前设备的容器名为所述当前容器名的容器中的国密算法密钥句柄,所述上层应用判断是否获取到国密算法密钥句柄,如果是,则执行步骤M6;否则,执行步骤M9;步骤M6:所述上层应用调用主机操作系统的第四接口函数将所述当前设备容器私有CSP句柄和所述国密算法密钥句柄传递给所述中间件的第四函数获取当前设备的容器名为所述当前容器名的容器中的国密证书数据,所述上层应用判断是否获取到国密证书数据,如果是,则执行步骤M7;否则,报错退出;步骤M7:所述上层应用根据所述国密证书数据获取国密证书认证信息;步骤M8:所述上层应用判断所述国密证书认证信息是否和所述认证信息相匹配,如果是,则获取国密签名数据,向服务器返回国密签名数据;否则,释放所述当前设备容器私有CSP句柄,执行步骤M9;步骤M9:所述上层应用设置当前枚举参数为第二枚举容器参数,调用主机操作系统的第二接口函数将所述中间件私有CSP句柄和所述当前枚举参数传递给中间件的第二函数,获取所述容器名列表中的当前容器名的下一个容器名,所述上层应用判断是否获取到当前容器名的下一个容器名,如果是,则将所述当前容器名的下一个容器名作为当前容器名,返回步骤M4;否则,报错退出。10.根据权利要求9所述的方法,其特征在于,所述步骤M1中,所述证书类型,还包括:非国密证书类型,所述步骤M1所述服务器根据预设选择证书条件选择证书类型之后,还包括:当所述服务器选择的证书类型为非国密证书类型时,将预设非国密证书类型标识和待签数据作为非国密证书类型信息发送给所述上层应用,等待获取所述上层应用返回的非国密签名数据;所述步骤M2还包括,当所述上层应用获取到所述非国密证书类型信息时,所述上层应用根据注册到浏览器的证书存储区中的所述非国密证书类型证书获取非国密签名数据,向所述服务器返回所述非国密签名数据。11.根据权利要求9所述的方法,其特征在于,所述步骤M7具体包括:步骤N1:所述上层应用调用主机操作系统的解析证书函数根据所述国密证书数据获取国密上下文结构体;步骤N2:所述上层应用调用主机操作系统的证书名转换格式函数,根据所述国密证书上下文结构体获取所述国密证书认证信息。12.根据权利要求9所述的方法,其特征在于,所述步骤M2之后,所述步骤M3之前还包括:步骤P1:所述上层应用设置当前枚举参数为第一枚举算法参数,调用主机操作系统的第二接口函数将所述中间件私有CSP句柄和当前枚举参数传递给所述中间件的第二函数,获取所述中间件的预设算法列表中的第一算法标识,所述上层应用判断是否获取到第一算法标识,如果是,则将所述第一算法标识作为当前算法标识,执行步骤P2;否则,报错退出;步骤P2:所述上层应用设置所述当前枚举参数为第二枚举算法参数,调用主机操作系统的第二接口函数将所述中间件私有CSP句柄和所述当前枚举参数传递给所述中间件的第二函数获取所述中间件的所述预设算法列表中的当前算法标识的下一算法标识,所述上层应用判断是否获取到当前算法标识的下一算法标识,如果是,则将所述当前算法标识的下一算法标识作为当前算法标识,返回步骤P2;否则,执行步骤P3;步骤P3:所述上层应用根据获取到的全部算法标识判断所述中间件是否支持国密算法,如果是,则执行步骤M3;否则,报错退出。13.根据权利要求12所述的方法,其特征在于,所述步骤P3中,所述上层应用根据获取到的全部算法标识判断所述中间件是否支持国密算法,具体包括:所述上层应用查找获取到的全部算法标识中是否存在国密签名算法标识,如果是,则判断所述中间件支持国密算法;否则,判断所述中间件不支持国密算法。14.根据权利要求9所述的方法,其特征在于,所述获取国密签名数据,向服务器返回国密签名数据,具体包括:步骤Q1:所述上层应用调用主机操作系统的第五接口函数,将所述当前设备容器私有CSP句柄、所述国密算法密钥句柄和预设摘要算法标识传递给所述中间件的第五函数,获取哈希句柄;步骤Q2:所述上层应用调用主机操作系统的第六接口函数,将所述当前设备容器私有CSP句柄、所述哈希句柄和所述待签数据传递给所述中间件的第六函数,获取摘要值;步骤Q3:所述上层应用调用主机操作系统的第七接口函数,将所述当前设备容器私有CSP句柄、所述哈希句柄和预设国密签名算法标识传递给所述中间件的第七函数,获取国密签名数据,将所述国密签名数据返回给服务器。15.一种定位国密证书的方法,适用于包括服务器、安装有浏览器、上层应用、中间件的主机和智能密钥设备的系统中,当所述中间件检测到智能密钥设备连接到主机时,获取智能密钥设备的设备信息和证书列表,所述中间件遍历证书列表,判断当前证书的类型,如果当前证书类型是国密证书类型,则继续遍历;如果当前证书类型是非国密证书类型,则所述中间件将非国密证书类型证书注册到浏览器的证书存储区中,继续遍历;当所有证书被遍历,则结束证书注册流程,其特征在于,所述方法包括:步骤R1:所述服务器获取用户通过单向SSL登录输入的用户信息,判断用户信息是否合法,若获取到合法的用户信息,则当获取到待签数据时,服务器根据预设选择证书条件选择证书类型,当服务器选择的证书类型为国密证书类型时,根据所述用户信息获取私有CSP名和认证信息,将预设国密证书类型标识和所述私有CSP名和所述认证信息和所述待签数据作为国密证书类型信息发送给所述上层应用,等待获取所述上层应用返回的国密签名数据;步骤R2:当所述上层应用获取到国密证书类型信息时,所述上层应用调用主机操作系统的第一接口函数根据私有CSP名将预设容器名作为当前容器参数传递给所述中间件的第一函数;步骤R3:当所述中间件的所述第一函数获取到的当前容器参数为预设容器名时,根据预设容器名设置中间件私有CSP句柄,输出中间件私有CSP句柄和成功标识;步骤R4:所述上层应用设置当前枚举参数为第一枚举容器参数,调用主机操作系统的第二接口函数将中间件私有CSP句柄和当前枚举参数传递给所述中间件的第二函数;步骤R5:当所述中间件的所述第二函数获取到中间件私有CSP句柄和第一枚举容器参数时,获取与主机连接的智能密钥设备的容器名列表,获取所述容器名列表中的第一容器名,判断所述第一容器名是否存在,如果是,则将所述第一容器名作为当前容器名,输出所述当前容器名并返回成功标识;否则,返回失败标识;步骤R6:所述上层应用判断是否获取到当前容器名,如果是,则执行步骤R7;否则报错退出;步骤R7:所述上层应用调用主机操作系统的所述第一接口函数根据中间件私有CSP句柄,将当前容器名作为当前容器参数传递给中间件的第一函数;步骤R8:当所述中间件的所述第一函数获取到当前容器名时,解析所述当前容器名,获取设备名和设备容器名,根据所述设备名和所述设备容器名定位当前设备,判断是否定位到当前设备,如果是,则根据所述当前设备设置当前设备容器私有CSP句柄,输出所述当前设备容器私有CSP句柄和成功标识;否则,输出失败标识;步骤R9:所述上层应用判断是否获取到当前设备容器私有CSP句柄,如果是,则执行步骤R10;否则,报错退出;步骤R10:所述上层应用调用主机操作系统的第三接口函数将当前设备容器私有CSP句柄和预设国密签名算法标识传递给所述中间件的第三函数;步骤R11:当所述中间件的所述第三函数获取到当前设备容器私有CSP句柄和预设国密签名算法标识时,查找所述当前设备中的容器名为所述当前容器名的容器中是否存在国密签名算法密钥,如果查找到,则将预设国密签名算法密钥句柄作为国密算法密钥句柄,输出所述国密算法密钥句柄和成功标识;否则,输出失败标识;步骤R12:所述上层应用判断是否获取到国密算法密钥句柄,如果是,则执行步骤R13;否则,执行步骤R18;步骤R13:所述上层应用调用主机操作系统的第四接口函数将当前设备容器私有CSP句柄和国密算法密钥句柄传递给所述中间件的第四函数;步骤R14:当所述中间件的第四函数获取到当前设备容器私有CSP句柄和国密算法密钥句柄时,查找到所述当前设备中的容器名为所述当前容器名的容器,读取容器中的国密证书数据,判断是否读取到合法的国密证书数据,如果是,则输出所述国密证书数据和成功标识;否则输出失败标识;步骤R15:所述上层应用判断是否获取到国密证书数据,如果是,则执行步骤R16;否则,报错退出;步骤R16:所述上层应用根据国密证书数据获取国密证书认证信息;步骤R17:所述上层应用判断国密证书认证信息是否和认证信息相匹配,如果是,则获取国密签名数据,向服务器返回所述国密签名数据;否则,释放所述当前设备容器私有CSP句柄,执行步骤R18;步骤R18:所述上层应用设置当前枚举参数为第二枚举容器参数,调用主机操作系统的第二接口函数将中间件私有CSP句柄和所述当前枚举参数传递所述中间件的所述第二函数;步骤R19:当所述中间件的所述第二函数获取到中间件私有CSP句柄和第二枚举容器参数时,获取当前容器名的下一个容器名,判断所述当前容器名的下一个容器名是否存在,如果是,则将当前容器名的下一个容器名作为当前容器名,输出所述当前容器名和成功标识,返回步骤R6;否则,输出失败标识,返回步骤R6。16.根据权利要求15所述的方法,其特征在于,所述步骤R1中所述证书类型,还包括:非国密证书类型,所述步骤R1中所述服务器根据预设选择证书条件选择证书类型之后,还包括:当所述服务器选择的所述证书类型为所述非国密证书类型时,将预设非国密证书类型标识和待签数据作为非国密证书类型信息发送给所述上层应用,等待获取所述上层应用返回的非国密签名数据;所述步骤R2还包括,当所述上层应用获取到所述非国密证书类型信息时,所述上层应用根据注册到所述浏览器的证书存储区中的非国密证书类型证书获取非国密签名数据,向所述服务器返回所述非国密签名数据。17.根据权利要求15所述的方法,其特征在于,所述步骤R16具体包括:步骤S1:所述上层应用调用主机操作系统的解析证书函数根据所述国密证书数据获取国密上下文结构体;步骤S2:所述上层应用调用主机操作系统的证书名转换格式函数,根据所述国密证书上下文结构体获取所述国密证书认证信息。18.根据权利要求15所述的方法,其特征在于,所述步骤R3之后,所述步骤R4之前,还包括:步骤T1:所述上层应用设置当前枚举参数为第一枚举算法参数,调用主机操作系统的第二接口函数将中间件私有CSP句柄和当前枚举参数传递给所述中间件的第二函数;步骤T2:当所述中间件的所述第二函数获取到中间件私有CSP句柄和第一枚举算法参数时,获取所述中间件的预设算法列表中的第一算法标识,判断所述第一算法标识是否存在,如果是,则将所述第一算法标识作为当前算法标识,输出所述当前算法标识和成功标识;否则,输出失败标识;步骤T3:所述上层应用判断是否获取到当前算法标识,如果是,则执行步骤T4;否则,报错退出;步骤T4:所述上层应用设置所述当前枚举参数为第二枚举算法参数,调用主机操作系统的第二接口函数将中间件私有CSP句柄和当前枚举参数类型传递给所述中间件的第二函数;步骤T5:当所述中间件的所述第二函数获取到中间件私有CSP句柄和第二枚举算法参数时,获取所述中间件的预设算法列表中的当前算法标识的下一个算法标识,判断所述当前算法标识的下一个算法标识是否存在,如果是,则将所述当前算法标识的下一个算法标识作为当前算法标识,输出所述当前算法标识和成功标识;否则,输出失败标识;步骤T6:所述上层应用判断是否获取到当前算法标识,如果是,则返回步骤T4;否则,执行步骤T7;步骤T7:所述上层应用根据获取到的全部算法标识判断所述中间件是否支持国密算法,如果是,则执行步骤R4;否则,报错退出。19.根据权利要求18所述的方法,其特征在于,所述步骤T7中,所述上层应用根据获取到的全部算法标识判断所述中间件是否支持国密算法,具体包括:所述上层应用查找获取到的全部算法标识中是否存在预设国密签名算法标识,如果是,则判断所述中间件支持国密算法;否则,判断所述中间件不支持国密算法。20.一种定位国密证书的方法,适用于包括服务器、安装有浏览器、上层应用、中间件的主机和智能密钥设备的系统中,当所述中间件检测到智能密钥设备连接到主机时,获取智能密钥设备的设备信息和证书列表,所述中间件遍历证书列表,判断当前证书的类型,如果当前证书类型是国密证书类型,则继续遍历;如果当前证书类型是非国密证书类型,则所述中间件将非国密证书类型证书注册到浏览器的证书存储区中,继续遍历;当所有证书被遍历,则结束证书注册流程,其特征在于,所述方法包括:步骤U1:所述服务器获取用户通过单向SSL登录输入的用户信息,判断用户信息是否合法,若获取到合法的用户信息,则当获取到待签数据时,服务器根据预设选择证书条件选择证书类型,当服务器选择的证书类型为国密证书类型时,根据所述用户信息获取私有CSP名和认证信息和国密密钥容器名,将预设国密证书类型标识和所述私有CSP名和所述认证信息和国密密钥容器名和所述待签数据作为国密证书类型信息发送给所述上层应用,等待获取所述上层应用返回的国密签名数据;步骤U2:所述上层应用调用主机操作系统的第一接口函数根据私有CSP名,将国密密钥容器名作为当前容器参数传递给所述中间件的第一函数,获取当前设备容器私有CSP句柄,所述上层应用判断是否获取到当前设备容器私有CSP句柄,如果是,则执行步骤U3;否则,报错退出;步骤U3:所述上层应用调用主机操作系统的第三接口函数将所述当前设备容器私有CSP句柄和预设国密签名算法标识传递给所述中间件的第三函数获取当前设备中的容器名为所述国密密钥容器名的容器中的国密算法密钥句柄,所述上层应用判断是否获取到国密算法密钥句柄,如果是,则执行步骤U4;否则,报错退出;步骤U4:所述上层应用调用主机操作系统的第四接口函数将所述当前设备容器私有CSP句柄和所述国密算法密钥句柄传递给所述中间件的第四函数获取当前设备中的容器名为所述国密密钥容器名的容器中的国密证书数据,所述上层应用判断是否获取到国密证书数据,如果是,则执行步骤U5;否则,报错退出;步骤U5:上层应用根据所述国密证书数据获取国密证书认证信息;步骤U6:上层应用判断所述国密证书认证信息是否和所述认证信息相匹配,如果是,则获取国密签名数据,向服务器返回国密签名数据;否则,报错退出。21.根据权利要求20所述的方法,其特征在于,所述步骤U1中,所述证书类型,还包括:非国密证书类型,所述步骤U1中所述服务器根据预设选择证书条件选择证书类型之后,还包括:当所述服务器选择的所述证书类型为所述非国密证书类型时,将预设非国密证书类型标识和所述待签数据作为非国密证书类型信息发送给所述上层应用,等待获取所述上层应用返回的非国密签名数据;所述步骤U2还包括,当所述上层应用获取到所述非国密证书类型信息时,所述上层应用根据注册到所述浏览器的证书存储区的所述非国密证书类型证书获取非国密签名数据,向所述服务器返回所述非国密签名数据。22.根据权利要求20所述的方法,其特征在于,所述步骤U5具体包括:步骤V1:所述上层应用调用主机操作系统的解析证书函数根据所述国密证书数据获取国密上下文结构体;步骤V2:所述上层应用调用主机操作系统的证书名转换格式函数,根据所述国密证书上下文结构体获取所述国密证书认证信息。23.根据权利要求20所述的方法,其特征在于,所述步骤U6中所述获取国密签名数据,向服务器返回国密签名数据,具体包括:步骤U6-1:所述上层应用调用主机操作系统的第五接口函数,将所述当前设备容器私有CSP句柄、所述国密算法密钥句柄和预设摘要算法标识传递给所述中间件的第五函数,获取哈希句柄;步骤U6-2:所述上层应用调用主机操作系统的第六接口函数,将所述当前设备容器私有CSP句柄和所述哈希句柄和所述待签数据传递给所述中间件的第六函数,获取摘要值;步骤U6-3:所述上层应用调用主机操作系统的第七接口函数,将所述当前设备容器私有CSP句柄和所述哈希句柄和预设国密签名算法标识传递给所述中间件的第七函数,获取国密签名数据,将所述国密签名数据返回给服务器。24.一种定位国密证书的方法,适用于包括服务器、安装有浏览器、上层应用、中间件的主机和智能密钥设备的系统中,当所述中间件检测到智能密钥设备连接到主机时,获取智能密钥设备的设备信息和证书列表,所述中间件遍历证书列表,判断当前证书的类型,如果当前证书类型是国密证书类型,则继续遍历;如果当前证书类型是非国密证书类型,则所述中间件将非国密证书类型证书注册到浏览器的证书存储区中,继续遍历;当所有证书被遍历,则结束证书注册流程,其特征在于,所述方法包括:步骤W1:所述服务器获取用户通过单向SSL登录输入的用户信息,判断用户信息是否合法,若获取到合法的用户信息,则当获取到待签数据时,服务器根据预设选择证书条件选择证书类型,当服务器选择的证书类型为国密证书类型时,根据所述用户信息获取私有CSP名和认证信息和国密密钥容器名,将预设国密证书类型标识和所述私有CSP名、所述认证信息、所述国密密钥容器名和所述待签数据作为国密证书类型信息发送给所述上层应用,等待获取所述上层应用返回的国密签名数据;步骤W2:所述上层应用调用主机操作系统的第一接口函数根据私有CSP名,将国密密钥容器名作为当前容器参数传递给中间件的第一函数;步骤W3:当所述中间件的所述第一函数获取到国密密钥容器名时,根据所述国密密钥容器名获取设备名和设备容器名,根据所述设备名和所述设备容器名定位当前设备,判断是否定位到当前设备,如果是,则根据所述当前设备设置当前设备容器私有CSP句柄,输出所述当前设备容器私有CSP句柄和成功标识;否则,输出失败标识;步骤W4:所述上层应用判断是否获取到当前设备容器私有CSP句柄,如果是,则执行步骤W5;否则报错退出;步骤W5:所述上层应用调用主机操作系统的第三接口函数将当前设备容器私有CSP句柄和预设国密签名算法标识传递给所述中间件的第三函数;步骤W6:当所述中间件的所述第三函数获取到当前设备容器私有CSP句柄和预设国密签名算法标识时,根据当前设备容器私有CSP句柄和预设国密签名算法标识,查找当前设备中的容器名为国密密钥容器名的容器中是否存在国密签名算法密钥,如果查找到,则将预设国密签名算法密钥句柄作为国密算法密钥句柄,输出所述国密算法密钥句柄和成功标识;否则,输出失败标识;步骤W7:所述上层应用判断是否获取到国密算法密钥句柄,如果是,则执行步骤W8;否则报错退出;步骤W8:所述上层应用调用主机操作系统的第四接口函数将所述当前设备容器私有CSP句柄和所述国密算法密钥句柄传递给所述中间件的第四函数;步骤W9:当所述中间件的所述第四函数获取到当前设备容器私有CSP句柄,国密算法密钥句柄时,查找到当前设备中的容器名为国密密钥容器名的容器,读取容器中的国密证书数据,判断是否读取到合法的国密证书数据,如果是,则输出国密证书数据和成功标识;否则输出失败标识;步骤W10:所述上层应用判断是否获取到国密证书数据,如果是,则执行步骤W11;否则,报错退出;步骤W11:所述上层应用根据所述国密证书数据获取国密证书认证信息;步骤W12:所述上层应用判断所述国密证书认证信息是否和所述认证信息相匹配,如果是,则获取国密签名数据,向服务器返回所述国密签名数据;否则,报错退出。25.根据权利要求24所述的方法,其特征在于,所述步骤W1中所述证书类型,还包括:非国密证书类型,所述步骤W1中所述服务器根据预设选择证书条件选择证书类型之后,还包括:当所述服务器选择的所述证书类型为所述非国密证书类型时,将预设非国密证书类型标识和待签数据作为非国密证书类型信息发送给所述上层应用,等待获取所述上层应用返回的非国密签名数据;所述步骤W2还包括,当所述上层应用获取到所述非国密证书类型信息时,所述上层应用根据注册到所述浏览器的证书存储区中的非国密证书类型证书获取非国密签名数据,向所述服务器返回所述非国密签名数据。26.根据权利要求24所述的方法,其特征在于,所述步骤W11具体包括:步骤X1:所述上层应用调用主机操作系统的解析证书函数根据所述国密证书数据获取国密上下文结构体;步骤X2:所述上层应用调用主机操作系统的证书名转换格式函数,根据所述国密证书上下文结构体获取所述国密证书认证信息。27.一种定位国密证书的装置,其特征在于,所述装置包括:第一判断模块,用于当中间件的第一函数获取到当前容器参数时,根据当前容器参数判断获取到的当前容器名是否为空,如果是,则触发第一获取模块;否则,触发第二获取模块;所述第一获取模块,用于获取中间件私有CSP句柄,触发第一输出模块;所述第一输出模块,用于输出中间件私有CSP句柄和成功标识;所述第二获取模块,用于根据当前容器名获取设备名和设备容器名,根据所述设备名和所述设备容器名定位当前设备,触发第二判断模块;所述第二判断模块,用于判断是否定位到当前设备,如果是,则触发第三获取模块;否则,触发第二输出模块;所述第三获取模块,用于根据所述当前设备设置当前设备容器私有CSP句柄,触发第三输出模块;所述第二输出模块,用于输出失败标识;所述第三输出模块,用于输出所述当前设备容器私有CSP句柄和成功标识;第三判断模块,用于当中间件的第二函数获取到中间件私有CSP句柄和当前枚举参数时,判断获取到的当前枚举参数的类型,若所述当前枚举参数的类型是枚举容器参数类型,触发第四获取模块;所述第四获取模块,用于获取与主机连接的智能密钥设备的容器名列表,获取所述容器名列表中的当前容器名,触发第四判断模块;所述第四判断模块,用于判断所述当前容器名是否存在,如果是,则触发第四输出模块;否则,触发第五输出模块;所述第四输出模块,用于输出所述当前容器名和成功标识;所述第五输出模块,用于输出失败标识;第五判断模块,用于当中间件的第三函数获取到当前设备容器私有CSP句柄和国密算法标识时,判断获取到的当前设备容器私有CSP句柄和国密算法标识是否合法,如果是,则触发第五获取模块;否则,触发第六输出模块;所述第五获取模块,用于根据所述当前设备容器私有CSP句柄和所述国密算法标识,查找当前设备的容器名为所述当前容器名的容器获取国密用法密钥,触发第六判断模块;所述第六判断模块,用于判断是否获取到所述国密用法密钥,如果是,则触发第六获取模块;否则,触发第六输出模块;所述第六获取模块,用于将预设国密用法密钥句柄作为国密算法密钥句柄,触发第七输出模块;所述第六输出模块,用于输出失败标识;所述第七输出模块,用于输出所述国密算法密钥句柄和成功标识;第七判断模块,用于当中间件的第四函数获取到当前设备容器私有CSP句柄和国密算法密钥句柄时,判断获取到的当前设备容器私有CSP句柄和国密算法密钥句柄是否合法,如果是,则触发第七获取模块;否则,触发第八输出模块;所述第七获取模块,用于根据所述当前设备容器私有CSP句柄和所述国密算法密钥句柄查找到当前设备中的容器名为所述当前容器名的容器,获取容器中的国密证书数据,触发第八判断模块;所述第八判断模块判断是否读取到合法的国密证书数据,如果是,则触发第九输出模块;否则触发第八输出模块;所述第九输出模块,用于输出所述国密证书数据和返回成功标识;所述第八输出模块,用于输出失败标识。28.根据权利要求27所述的装置,其特征在于,所述第二获取模块包括第一获取单元、第二获取单元和第三获取单元;所述第二判断模块,包括第一判断单元、第二判断单元、第三判断单元和第四判断单元;所述第一获取单元,用于根据所述当前容器名获取所述设备名和所述设备容器名,判断所述设备名是否不为空,如果是,则触发所述第二获取单元;否则,触发所述第三获取单元;所述第二获取单元,用于获取和所述设备名相匹配的智能密钥设备,触发所述第一判断单元;所述第一判断单元,用于查找和所述设备名相匹配的智能密钥设备中是否存在和所述设备容器名相匹配的容器,如果是,则将和所述设备名相匹配的智能密钥设备作为所述当前设备,保存当前设备ID,触发所述第三获取模块;否则,触发所述第二输出模块;所述第三获取单元,用于根据所述设备容器名获取和所述设备容器名相匹配的智能密钥设备,触发所述第二判断单元;所述第二判断单元,用于判断是否存在和所述设备容器名相匹配的智能密钥设备,如果是,则触发所述第三判断单元;否则,触发所述第二输出模块;所述第三判断单元,用于判断是否查找到唯一和所述设备容器名相匹配的智能密钥设备,如果是,则将唯一和所述设备容器名相匹配的智能密钥设备作为所述当前设备,保存当前设备ID,触发所述第三获取模块;否则,触发所述第四判断单元;所述第四判断单元,用于判断是否需要输出提示选择智能密钥设备信息,如果需要输出提示选择智能密钥设备信息,则输出提示选择智能密钥设备信息,当获取到外部选择的智能密钥设备时,将所述外部选择的智能密钥设备作为所述当前设备,保存当前设备ID,触发所述第三获取模块;如果不需要输出提示选择智能密钥设备信息,则将查找到的第一个和所述设备容器名相匹配的智能密钥设备作为所述当前设备,保存当前设备ID,触发所述第三获取模块;所述第三获取模块,具体用于根据所述当前设备设置所述当前设备容器私有CSP句柄,触发所述第三输出模块;所述第二输出模块,具体用于输出失败标...
【专利技术属性】
技术研发人员:陆舟,于华章,
申请(专利权)人:飞天诚信科技股份有限公司,
类型:发明
国别省市:北京;11
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。