一种自动向应用程序加载pkcs#11模块的方法及装置的制造方法

文档序号:9887423阅读:646来源:国知局
一种自动向应用程序加载pkcs#11模块的方法及装置的制造方法
【技术领域】
[0001]本发明涉及信息安全领域,尤其涉及一种自动向应用程序加载PKCS#11模块的方法及装置。
【背景技术】
[0002]在密码系统中,PKCS#11是公钥加密标准(PKCS,Public-Key CryptographyStandards)中的一份子,它定义了一套独立于技术的程序设计接口。由于PKCS#11只提供接口的定义,而不包括接口的实现,因此一般接口的实现是由设备提供商提供的,例如,智能密码钥匙的生产厂商会提供符合PKCS#11接口标准的API的实现,即PKCS#11模块,在智能密钥钥匙被使用之前,需要将PKCS#11模块加载到相应应用,这样最终用户才可以通过智能密钥钥匙访问该应用。现有技术中存在以下缺陷:一些应用程序需要用户手动加载PKCS#11模块,且不同应用程序的手动加载方法常常存在差异,例如Mozilla Firefox需要用户通过工具一选项一高级一加密一安全设备手动加载PKCS#11模块,而Mozilla Thunderbird需要用户通过工具一选项一高级一证书一安全设备手动加载PKCS#11模块,因此手动加载PKCS#11模块不仅操作起来耗时长而且效率低。

【发明内容】

[0003]本发明的目的是克服现有技术的缺陷,提供一种自动向应用程序加载PKCS#11模块的方法及装置。
[0004]本发明是通过下述技术方案实现的:
[0005]—方面本发明提供一种自动向应用程序加载PKCS#11模块的方法,所述PKCS#11模块是符合PKCS#11接口标准的API的实现,所述方法包括:
[0006]步骤S1、获取应用程序的缓存目录,打开所述应用程序的缓存目录下的安全模块数据库,生成安全模块数据库已加载模块列表;
[0007]步骤S2、获取所述安全模块数据库已加载模块列表的指针;
[0008]步骤S3、根据所述安全模块数据库已加载模块列表的指针访问所述安全模块数据库已加载模块列表,判断所述安全模块数据库已加载模块列表中是否包含所述PKCS#11模块的模块名,是则所述PKCS#11模块已加载,结束,否则执行步骤S4;
[0009]步骤S4、更新所述安全模块数据库已加载模块列表,向所述安全模块数据库已加载模块列表中写入所述PKCS#11模块的模块名和绝对目录;
[0010]步骤S5、保存更新后的安全模块数据库已加载模块列表。
[0011]具体地,所述步骤SI可以具体包括:根据所述应用程序的缓存目录和安全模块数据库的名称打开应用程序的安全模块数据库,生成安全模块数据库已加载模块列表。
[0012]所述获取应用程序的缓存目录可以具体包括:获取应用程序配置文件的存储目录,通过所述存储目录访问应用程序配置文件,读取所述应用程序配置文件中的路径项,根据所述存储目录和所述路径项组合得到应用程序的缓存目录。
[0013]所述步骤S3可以具体包括:根据所述安全模块数据库已加载模块列表的指针依次访问所述安全模块数据库已加载模块列表的每个结点,直至当前访问的结点的数据域中的数据元素为所述PKCS#11模块的模块名,或者当前访问的结点的指针域为空;若当前访问的结点的数据域中的数据元素为所述PKCS#11模块的模块名,则所述安全模块数据库已加载模块列表中包含所述PKCS#11模块的模块名,所述PKCS#11模块已加载,结束;若当前访问的结点的指针域为空则所述安全模块数据库已加载模块列表中不包含所述PKCS#11模块的模块名,执行步骤S4。
[0014]另一方面,本发明还提供一种自动向应用程序加载PKCS#11模块的装置,所述PKCS#11模块是符合PKCS#11接口标准的API的实现,所述装置包括:
[0015]获取目录模块,用于获取应用程序的缓存目录;
[0016]生成列表模块,用于打开所述获取目录模块获取到的应用程序的缓存目录下的安全模块数据库,生成安全模块数据库已加载模块列表;
[0017]获取列表指针模块,用于获取所述生成列表模块生成的安全模块数据库已加载模块列表的指针;
[0018]判断模块,用于根据所述获取列表指针模块获取到的安全模块数据库已加载模块列表的指针访问所述生成列表模块生成的安全模块数据库已加载模块列表,判断所述安全模块数据库已加载模块列表中是否包含所述PKCS#11模块的模块名;
[0019]加载模块,用于当所述判断模块判断所述安全模块数据库已加载模块列表中不包含所述PKCS#11模块的模块名时,更新所述生成列表模块生成的安全模块数据库已加载模块列表,向所述安全模块数据库已加载模块列表中写入所述PKCS#11模块的模块名和绝对目录;
[0020]保存模块,用于保存所述加载模块更新后的安全模块数据库已加载模块列表。
[0021]具体地,所述生成列表模块可以具体用于:根据安全模块数据库的名称和所述获取目录模块获取到的应用程序的缓存目录打开应用程序的安全模块数据库,生成安全模块数据库已加载模块列表。
[0022]所述获取目录模块可以具体用于:获取应用程序配置文件的存储目录,通过所述存储目录访问应用程序配置文件,读取所述应用程序配置文件中的路径项,根据所述存储目录和所述路径项组合得到应用程序的缓存目录。
[0023]所述判断模块可以具体用于:根据所述获取列表指针模块获取到的安全模块数据库已加载模块列表的指针依次访问生成列表模块生成的安全模块数据库已加载模块列表的每个结点,直至当前访问的结点的数据域中的数据元素为所述PKCS#11模块的模块名,或者当前访问的结点的指针域为空;若当前访问的结点的数据域中的数据元素为所述PKCS#11模块的模块名则所述安全模块数据库已加载模块列表中包含所述PKCS#11模块的模块名,若当前访问的结点的指针域为空则所述安全模块数据库已加载模块列表中不包含所述PKCS#11模块的模块名。
[0024]本发明的有益效果在于:采用本发明提供的技术方案向应用程序中自动加载PKCS#11模块,不仅可以省去用户手动操作的麻烦,还能够提高PKCS#11模块的加载效率。
【附图说明】
[0025]为了更清楚的说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单的介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
[0026]图1为本发明实施例1提供的一种自动向应用程序加载PKCS#11模块的方法的流程图;
[0027]图2为本发明实施例2提供的一种自动向应用程序加载PKCS#11模块的方法的流程图;
[0028]图3为本发明实施例3提供的一种自动向应用程序加载PKCS#11模块的装置的方框图。
【具体实施方式】
[0029]下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
[0030]实施例1
[0031]本实施例提供一种自动向应用程序加载PKCS#11模块的方法,所述方法通过运行可执行文件实现,如图1所示,所述方法包括:
[0032]步骤S1、获取应用程序的缓存目录,打开应用程序的缓存目录下的安全模块数据库,生成安全模块数据库已加载模块列表;
[0033]具体地,获取应用程序的缓存目录可以具体包括:获取应用程序配置文件的存储目录,通过所述存储目录访问应用程序配置文件,读取所述应用程序配置文件中的路径项,根据所述存储目录和所述路径项组合得到应用程序的缓存目录;
[0034]步骤SI可以具体包括:根据所述应用程序的缓存目录和安全模块数据库的名称打开应用程序的安全模块数据库,生成安全模块数据库已加载模块列表。
[0035]步骤S2、获取安全模块数据库已加载模块列表的指针;
[0036]步骤S3、根据安全模块数据库已加载模块列表的指针访问安全模块数据库已加载模块列表,判断安全模块数据库已加载模块列表中是否包含所述PKCS#11模块的模块名,是则所述PKCS#11模块已加载,结束,
当前第1页1 2 3 4 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1