【技术实现步骤摘要】
本专利技术涉及信息安全领域,特别涉及一种实现智能密钥设备多应用的方法。
技术介绍
从《智能IC卡与智能密码钥匙应用接口规范》发布至今,在行业内各厂家对国密接口中的多应用、多容器与标准CSP接口之间的读写双向兼容和数据互通都无法完美融合,基本采用针对不同项目进行单向兼容。在引入国密接口之前,通过CSP、PKCS#11对USB Key(智能密钥设备)应用进行管理的方式为:一个USB Key(智能密钥设备)内部只创建一个应用,一个应用下面可以创建各种数据对象,例如创建容器对象、密钥对象等。通过CSP、PKCS#11对USB Key中的内容进行操作,实际上就是对USB Key中对应的唯一一个应用下的各种数据对象进行操作。引入国密接口之后,国密接口要求一个USB Key需要有多个应用,而且可以动态的创建应用和删除应用,如何让标准的CSP和PKCS#11接口支持上国密接口中的多应用和多PIN码成为一个亟待解决的问题。
技术实现思路
本专利技术的目的是为了解决如何让CSP、PKCS#11适应拥有多个应用的USB Key的问题,提供一种实现智能密钥设备多应用的方法。本专利技术提供一种实现智能密钥设备多应用的方法,包括:步骤S1:当中间件的CSP接口被调用时,所述中间件判断所述CSP接口的类型,如为初始化接口则执行步骤S2;如为创建容器接口则执行步骤S5;如为创建密钥接口则执行步骤S8,如为删除容器接口则执行步骤S12; >步骤S2:所述中间件枚举与主机连接的所有智能密钥设备,并根据枚举到的智能密钥设备创建对应的设备信息列表,所述设备信息列表中包括设备名;步骤S3:所述中间件枚举与所述主机连接的每个设备中的所有应用,根据每个设备中枚举到的所有应用的应用名和应用ID创建应用列表和所述应用列表的引用,并将所述应用列表的引用保存到所述设备信息列表的相应位置;所述设备信息列表中每个设备名对应一个应用列表的引用;步骤S4:所述中间件枚举与所述主机连接的每个设备中的每个应用中的容器对象,根据枚举到的每个设备中的每个应用中的容器对象的属性和容器名创建对应的容器列表和所述容器列表的引用,根据枚举到的容器对象在所述容器列表中建立对应的容器对象引用,将所述容器列表的引用保存到应用列表的相应位置;返回步骤S1;步骤S5:所述中间件获取设备名和容器名,根据所述设备名在所述设备信息列表中定位当前智能密钥设备;步骤S6:所述中间件判断定位的当前智能密钥设备中的所有容器列表中是否存在所述容器名,是则报错,结束,否则执行步骤S7;步骤S7:所述中间件根据所述容器名在当前智能密钥设备的当前应用中创建容器对象,为所述创建的容器对象分配容器句柄和容器对象引用,将所述容器句柄、所述容器对象引用和所述容器对象的属性保存在当前应用中的容器列表的相应位置,返回所述容器句柄,返回步骤S1;步骤S8:所述中间件判断接收到的容器句柄是否合法,是则执行步骤S9,否则报错;步骤S9:所述中间件根据所述容器句柄定位容器对象,判断所述定位的容器对象的属性中是否存在密钥ID,是则报错,结束,否则执行步骤S10;步骤S10:所述中间件创建密钥对象,为所述密钥对象分配对应的密钥ID,将所述密钥ID和密钥用途存储到所述密钥对象中,将所述密钥ID保存到所述定位的容器对象的属性中;步骤S11:所述中间件为所述密钥对象分配一个密钥句柄并保存,将所述密钥句柄返回,返回步骤S1;步骤S12:所述中间件获取设备名和容器名,根据所述设备名在所述设备信息列表中定位当前智能密钥设备;步骤S13:所述中间件判断定位的当前智能密钥设备中的所有容器列表中是否存在所述容器名,是则执行步骤S14,否则报错,结束;步骤S14:所述中间判断判断定位的当前智能密钥设备中的所有容器列表中是否只有1个所述容器名,是则执行步骤S16,否则执行步骤S15;步骤S15:所述中间件输出选择容器对话框,等待并接收用户选择的当前智能密钥设备下的当前应用中的容器名,执行步骤S16;步骤S16:所述中间件根据所述容器名删除对应的容器对象,更新所述容器列表,返回步骤S1。进一步地,所述步骤S3与步骤S4之间包括:所述中间件依次通过设备信息列表中的每个设备名连接对应的智能密钥设备,并判断是否连接成功,如有至少一个连接成功则执行步骤S4,否则报错。进一步地,所述步骤S5包括:步骤S5-1:所述中间件判断容器名缓存区是否为空,是则执行步骤S5-2,否则执行步骤S5-3;步骤S5-2:所述中间件采用GUID的算法,根据以太网卡地址、纳秒级时间、芯片ID生成一个容器名,执行步骤S5-7;步骤S5-3:所述中间件解析所述容器名缓存区中的数据,判断解析结果是否符合预设格式,是则执行步骤S5-4,否则执行步骤S5-5;步骤S5-4:所述中间件从解析结果中获取设备名和容器名,执行步骤S5-6;步骤S5-5:所述中间件获取所述容器名缓存区中的数据并将其作为容器名,执行步骤S5-6;步骤S5-6:所述中间件判断设备名是否为空,是则执行步骤S5-7,否则将与设备名对应的设备作为当前智能密钥设备,执行步骤S6;步骤S5-7:所述中间件输出选择框,等待并接收用户选择的设备列表中的设备名;那种S5-8:所述中间件将与用户选择的设备名所对应的设备作为当前智能密钥设备,执行步骤S6。进一步地,所述步骤S6包括:步骤S6-1:所述中间件从设备信息列表中获取当前智能密钥设备的应用列表;步骤S6-2:中间件根据当前智能密钥设备的应用列表中的第一个容器列表的引用定位对应的容器列表作为当前容器列表;步骤S6-3:所述中间件判断获取的容器名是否与当前容器列表中的容器名匹配,是则将所述容器列表的引用所属的应用作为当前应用,执行步骤S7,否则执行步骤S6-4;步骤S6-4:所述中间件判断当前智能密钥设备的应用列表中是否还有未处理的容器列表的引用,是则执行步骤S6-5,否则报错,结束;步骤S6-5:中间件根据当前智能密钥设备的应用列表中的下一个容器列表的引用定位对应的容器列表作为当前容器列表,返回步骤S6-3。进一步地,如所述中间件的CSP检测到查找容器接口被调用时则执行步骤S17;步骤S17:所述中间件获取设备名和容器名,根据所述设备名在所述设备信息列表中定位当前智能密钥设备;步骤S18:所述中间件判断定位的当前智能密钥设备中的所有容器列表中是否存本文档来自技高网...
【技术保护点】
一种实现智能密钥设备多应用的方法,其特征在于,包括:步骤S1:当中间件的CSP接口被调用时,所述中间件判断所述CSP接口的类型,如为初始化接口则执行步骤S2;如为创建容器接口则执行步骤S5;如为创建密钥接口则执行步骤S8,如为删除容器接口则执行步骤S12;步骤S2:所述中间件枚举与主机连接的所有智能密钥设备,并根据枚举到的智能密钥设备创建对应的设备信息列表,所述设备信息列表中包括设备名;步骤S3:所述中间件枚举与所述主机连接的每个设备中的所有应用,根据每个设备中枚举到的所有应用的应用名和应用ID创建应用列表和所述应用列表的引用,并将所述应用列表的引用保存到所述设备信息列表的相应位置;所述设备信息列表中每个设备名对应一个应用列表的引用;步骤S4:所述中间件枚举与所述主机连接的每个设备中的每个应用中的容器对象,根据枚举到的每个设备中的每个应用中的容器对象的属性和容器名创建对应的容器列表和所述容器列表的引用,根据枚举到的容器对象在所述容器列表中建立对应的容器对象引用,将所述容器列表的引用保存到应用列表的相应位置;返回步骤S1;步骤S5:所述中间件获取设备名和容器名,根据所述设备名在所述设备信 ...
【技术特征摘要】
1.一种实现智能密钥设备多应用的方法,其特征在于,包括:
步骤S1:当中间件的CSP接口被调用时,所述中间件判断所述CSP接口的
类型,如为初始化接口则执行步骤S2;如为创建容器接口则执行步骤S5;如为
创建密钥接口则执行步骤S8,如为删除容器接口则执行步骤S12;
步骤S2:所述中间件枚举与主机连接的所有智能密钥设备,并根据枚举到
的智能密钥设备创建对应的设备信息列表,所述设备信息列表中包括设备名;
步骤S3:所述中间件枚举与所述主机连接的每个设备中的所有应用,根据
每个设备中枚举到的所有应用的应用名和应用ID创建应用列表和所述应用列表
的引用,并将所述应用列表的引用保存到所述设备信息列表的相应位置;所述
设备信息列表中每个设备名对应一个应用列表的引用;
步骤S4:所述中间件枚举与所述主机连接的每个设备中的每个应用中的容
器对象,根据枚举到的每个设备中的每个应用中的容器对象的属性和容器名创
建对应的容器列表和所述容器列表的引用,根据枚举到的容器对象在所述容器
列表中建立对应的容器对象引用,将所述容器列表的引用保存到应用列表的相
应位置;返回步骤S1;
步骤S5:所述中间件获取设备名和容器名,根据所述设备名在所述设备信
息列表中定位当前智能密钥设备;
步骤S6:所述中间件判断定位的当前智能密钥设备中的所有容器列表中是
否存在所述容器名,是则报错,结束,否则执行步骤S7;
步骤S7:所述中间件根据所述容器名在当前智能密钥设备的当前应用中创
建容器对象,为所述创建的容器对象分配容器句柄和容器对象引用,将所述容
器句柄、所述容器对象引用和所述容器对象的属性保存在当前应用中的容器列
表的相应位置,返回所述容器句柄,返回步骤S1;
步骤S8:所述中间件判断接收到的容器句柄是否合法,是则执行步骤S9,
否则报错;
步骤S9:所述中间件根据所述容器句柄定位容器对象,判断所述定位的容
\t器对象的属性中是否存在密钥ID,是则报错,结束,否则执行步骤S10;
步骤S10:所述中间件创建密钥对象,为所述密钥对象分配对应的密钥ID,
将所述密钥ID和密钥用途存储到所述密钥对象中,将所述密钥ID保存到所述
定位的容器对象的属性中;
步骤S11:所述中间件为所述密钥对象分配一个密钥句柄并保存,将所述密
钥句柄返回,返回步骤S1;
步骤S12:所述中间件获取设备名和容器名,根据所述设备名在所述设备信
息列表中定位当前智能密钥设备;
步骤S13:所述中间件判断定位的当前智能密钥设备中的所有容器列表中是
否存在所述容器名,是则执行步骤S14,否则报错,结束;
步骤S14:所述中间判断判断定位的当前智能密钥设备中的所有容器列表中
是否只有1个所述容器名,是则执行步骤S16,否则执行步骤S15;
步骤S15:所述中间件输出选择容器对话框,等待并接收用户选择的当前智
能密钥设备下的当前应用中的容器名,执行步骤S16;
步骤S16:所述中间件根据所述容器名删除对应的容器对象,更新所述容器
列表,返回步骤S1。
2.如权利要求1所述的方法,其特征在于,所述步骤S3与步骤S4之间包
括:
所述中间件依次通过设备信息列表中的每个设备名连接对应的智能密钥设
备,并判断是否连接成功,如有至少一个连接成功则执行步骤S4,否则报错。
3.如权利要求1所述的方法,其特征在于,所述步骤S5包括:
步骤S5-1:所述中间件判断容器名缓存区是否为空,是则执行步骤S5-2,
否则执行步骤S5-3;
步骤S5-2:所述中间件采用GUID的算法,根据以太网卡地址、纳秒级时
间、芯片ID生成一个容器名,执行步骤S5-7;
步骤S5-3:所述中间件解析所述容器名缓存区中的数据,判断解析结果是
\t否符合预设格式,是则执行步骤S5-4,否则执行步骤S5-5;
步骤S5-4:所述中间件从解析结果中获取设备名和容器名,执行步骤S5-6;
步骤S5-5:所述中间件获取所述容器名缓存区中的数据并将其作为容器名,
执行步骤S5-6;
步骤S5-6:所述中间件判断设备名是否为空,是则执行步骤S5-7,否则将
与设备名对应的设备作为当前智能密钥设备,执行步骤S6;
步骤S5-7:所述中间件输出选择框,等待并接收用户选择的设备列表中的
设备名;
那种S5-8:所述中间件将与用户选择的设备名所对应的设备作为当前智能
密钥设备,执行步骤S6。
4.如权利要求3所述的方法,其特征在于,所述步骤S6包括:
步骤S6-1:所述中间件从设备信息列表中获取当前智能密钥设备的应用列
表;
步骤S6-2:中间件根据当前智能密钥设备的应用列表中的第一个容器列表
的引用定位对应的容器列表作为当前容器列表;
步骤S6-3:所述中间件判断获取的容器名是否与当前容器列表中的容器名
匹配,是则将所述容器列表的引用所属的应用作为当前应用,执行步骤S7,否
则执行步骤S6-4;
步骤S6-4:所述中间件判断当前智能密钥设备的应用列表中是否还有未处
理的容器列表的引用,是则执行步骤S6-5,否则报错,结束;
步骤S6-5:中间件根据当前智能密钥设备的应用列表中的下一个容器列表
的引用定位对应的容器列表作为当前容器列表,返回步骤S6-3。
5.如权利要求1所述的方法,其特征在于,
如所述中间件的CSP检测到查找容器接口被调用时则执行步骤S17;
步骤S17:所述中间件获取设备名和容器名,根据所述设备名在所述设备信
息列表中定位当前智能密钥设备;
步骤S18:所述中间件判断定位的当前智能密钥设备中的所有容器列表中是
否存在所述容器名,是则执行步骤S19,否则报错,结束;
步骤S19:所述中间判断定位的当前智能密钥设备中的所有容器列表中是否
只有1个所述容器名,是则执行步骤S21,否则执行步骤S20;
步骤S20:所述中间件输出选择容器对话框,等待并接收用户在当前智能密
钥设备下选择的当前应用和所述当前应用中的容器名,执行步骤S21;
步骤S21:所述中间件根据所述容器名在所述容器列表中获取对应的容器对
象引用,为与所述容器对象引用对应的容器对象分配容器句柄,并将所述容器
句柄返回,返回步骤S1。
6.如权利要求5所述的方法,其特征在于,所述步骤S17包括:
步骤S17-1:所述中间件判断容器名缓存区是否为空,是则获取设备信息列
表中的第一个应用列表的引用对应的应用列表中的第一个容器列表引用,为所
述容器列表的引用对应的容器列表中第一个容器对象引用对应容器对象分配容
器句柄,并将所述容器句柄返回,返回步骤S1;否则执行步骤S17-2;
步骤S17-2:所述中间件解析所述容器名缓存区中的数据,判断解析结果是
否符合预设格式,是则执行步骤S17-3,否则执行步骤S17-4;
步骤S17-3:所述中间件从解析结果中提取设备名和容器名,执行步骤
S17-5;
步骤S17-4:所述中间件将所述容器名缓存区中的数据作为容器名,执行步
骤S17-5;
步骤S17-5:所述中间件判断设备名是否为空,是则执行步骤S17-6,否则
执行步骤S17-7;
步骤S17-6:所述中间件获取设备信息列表中的所有设备引用,将第一个设
备引用对应的设备作为当前智能密钥设备,执行步骤S18;
步骤S17-7:所述中间件将与设备名对应的设备作为当前智能密钥设备,执
行步骤S18。
7.如权利要求6所述的方法,其特征在于,所述步骤S18包括:
步骤S18-1:所述中间件从当前智能密钥设备的应用列表中获取第一个应用
ID作为当前应用ID;
步骤S18-2:所述中间件将与当前应用ID对应的应用中的容器列表中的第
一个容器名作为当前容器名;
步骤S18-3:所述中间件判断所述获取的容器名是否与当前容器名一致,是
则执行步骤S18-4,否则执行步骤S18-5;
步骤S18-4:所述中间件更新查找计数值,并保存所述获取的容器名所属的
设备名和应用名,执行步骤S18-5;
步骤S18-5:所述中间件判断当前应用列表中是否还有未处理的容器名,是
则执行步骤S18-6,否则执行步骤S18-7;
步骤S18-6:所述中间件从应用列表中获取下一个容器名作为当前容器名,
返回步骤S18-3;
步骤S18-7:所述中间件判断当前智能密钥设备的设备信息列表中是否还有
未处理的应用ID,是则将下一个应用ID作为当前应用ID,返回步骤S18-2,否
则执行步骤S19。
8.如权利要求1所述的方法,其特征在于,如所述中间件的CSP检测到调
用密钥接口被调用时则执行步骤S22,
步骤S22:所述中间件判断接收到的容器句柄是否合法,是则执行步骤S23,
否则报错;
步骤S23:所述中间件根据所述容器句柄定位容器对象,判断所述定位的容
器对象的属性中是否存在密钥ID,是则执行步骤S24,否则报错,结束;
步骤S24:所中间件根据所述密钥ID定位密钥对象,根据所述密钥对象中
的密钥引用获取对应的密钥,调用所述获取的密钥,返回步骤S1。
9.如权利要求8所述的方法,其特征在于,所述步骤S12包括:
步骤S12-1:所述中间件判断容器名缓存区是否为空,是则获取设备信息列
\t表中的第一个应用列表引用对应的应用列表中的第一个容器列表引用,根据所
述容器列表引用对应的容器列表中的第一个容器对象引用,将对应的容器列表
中对应的容器名、容器引用和对应的容器对象的属性删除,返回步骤S1;否则
执行步骤S12-2;
步骤S12-2:所述中间件解析所述容器名缓存区中的数据,判断解析结果是
否符合预设格式,是则执行步骤S12-3,否则执行步骤S12-4;
步骤S12-3:所述中间件从解析结果中提取设备名和容器名,执行步骤
S12-5;
步骤S12-4:所述中间件将所述容器名缓存区中的数据作为容器名,执行步
骤S12-5;
步骤S12-5:所述中间件判断设备名是否为空,是则执行步骤S12-6,否则
执行步骤S12-7;
步骤S12-6:所述中间件获取设备信息列表中的所有设备引用,将第一个设
备引用对应的设备当前智能密钥设备,执行步骤S13;
步骤S12-7:所述中间件将与设备名对应的设备作为当前智能密钥设备,执
行步骤S13。
10.如权利要求9所述的方法,其特征在于,所述步骤S13包括:
步骤S13-1:所述中间件从当前智能密钥设备的设备信息列表中获取第一个
应用ID作为当前应用ID;
步骤S13-2:所述中间件将与当前应用ID对应的应用中的容器列表中的第
一个容器名作为当前容器名;
步骤S13-3:所述中间件判断所述获取的容器名是否与当前容器名一致,是
则执行步骤S13-4,否则执行步骤S13-5;
步骤S13-4:所述中间件更新查找计数值,并保存容器名所属的设备名,执
行步骤S13-5;
步骤S13-5:所述中间件判断当前应用列表中是否还有未处理的容器名,是
\t则执行步骤S13-6,否则执行步骤S13-7;
步骤S13-6:所述中间件从应用列表中获取下一个容器名作为当前容器名,
返回步骤S13-3;
步骤S13-7:所述中间件判断当前智能密钥设备的设备信息列表中是否还有
未处理的应用ID,是则将下一个应用ID作为当前应用ID,返回步骤S13-2,否
则执行步骤S14。
11.如权利要求1所述的方法,...
【专利技术属性】
技术研发人员:陆舟,于华章,
申请(专利权)人:飞天诚信科技股份有限公司,
类型:发明
国别省市:北京;11
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。