在C++ GUI Qt中使用QCA进行安全性编程之二

上一篇中我们完成了QCA框架的安装,接下去我们开始安装一个加密算法库的提供者,以便我们可以开发实际的应用。之前我们已经下载了提供者——qca-ossl-2.0.0-beta3.tar.bz2。将其解压缩,放在我们之前QCA框架的目录中,例如:D:\qca\qca-ossl-2.0.0-beta3。然后我们打开一个命令行窗口,将当前目录切换到qca-ossl-2.0.0-beta3下。按照官方的文档,我们执行configwin.bat rd,如下图所示:

(图一)

其中的参数rd表示,我们要生成该提供者库的release和debug版本,并且同时生成动态链接库。接着我们执行qmake命令,让其生成makefile文件,如下图所示:

(图二)

在执行qmake的时候报错了,提示信息中描述了未找到一个叫“winlocal.prf”的文件。网上有对此问题的解释,不过经过我的测试,网上的那种解决方法还是有点小复杂。所以这里介绍一个比较简单的方法。其实这个错误的根源就是这个提供者库是依赖openssl库的,所以在对其进行编译的时候一定要告诉它openssl的头文件和库文件的路径。之前我们已经安装过OpenSSL了,在我的系统中其安装目录为:C:\OpenSSL,只要先创建一个叫winlocal.prf的文件,然后在该文件中配置一个叫WINLOCAL_PREFIX变量并将OpenSSL的安装路径赋值给这个变量即可(其实只要打开qca-ossl.pro文件看一下就明白是这么回事了)。winlocal.prf文件需要放在%QTDIR%\mkspecs\features目录中。下图为winlocal.prf文件的内容:

(图三)

这里要注意一点,就是路径分隔符要使用unix格式的,不能使用windows下的格式。然后继续执行qmake命令,如下图所示:

(图四)

这次不再报错了,但是有警告。这是由于路径分隔符的缘故造成的,打开%QTDIR%\mkspecs\features目录下的crypto.prf文件,将第一行和第二行中的windows路径分隔符改成unix路径分隔符(即将“\”改成“/”即可),再次执行qmake命令,如下图所示:

(图五)

这次不再报任何错误和警告了。我们开始编译源代码,输入make命令,如下图所示:

(图六)

这次是编译报错,提示信息说“EVP_md2没有定义”。网上查询了一下,的确存在这个问题,原来是我们的OpenSSL版本太高,有些函数名称已经发生变更了。好吧,那我们就用预编译指令来屏蔽它,这里有一个修改之后的源文件,点击这里下载。将其覆盖原来的文件,再次输入make指令,如下图所示:

(图七)

如果看到上图中的内容,则表示提供者库编译成功了,会在D:\qca\qca-ossl-2.0.0-beta3\lib目录中生成动态库文件,如下图所示:

(图八)

其中包含了release版本和debug版本的动态库文件(文件名中带“d”就是Debug版本)。最后将qca-ossl2.dll和qca-ossld2.dll复制到%QTDIR%\plugins\crypto目录中即可(如果没有crypto目录则自己创建一个),将libqca-ossl2.a和libqca-ossl2d.a文件复制到%QTDIR%\lib目录中即可。

到此,我们就完成了QCA框架以及提供者加密库的编译和安装。接下去,我们仍然用qcatool2工具来测试一下,安装和配置是否正确,如下图所示:

(图九)

从上图红框中可以看到,之前这栏是<none>,现在已经有可用的提供者了,这表示QCA已经完全安装和配置成功了。如果要看一下该提供者支持哪些加密算法,我们可以输入:qcatool2 plugins --debug命令,如下图所示:

(图十)

红色框中的就是该提供者支持的所有加密算法(由于窗口大小的关系,这里没有显示完全)。另外,我们可以看到其中有个错误,就是在加载qca-ossld2.dll时失败了,这是由于这个DLL是Debug版本的,该工具不支持而已,我们可以忽略之。

好了,到目前为止,我们已经详细的讲解了QCA安全框架在windows下的安装。其实,在linux下安装基本上差不多,而且比windows下安装更加的简单点,这里就留给各位同学自己去尝试吧。接下去,我们就要开始编写基于QCA框架的代码了,我们以一个读取数字证书,并获取证书公钥对一个明文加密做为实践的例子,另外我们还增加了判断数字证书有效期的代码。敬请关注后续的文章!


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值