一、Tongsuo的编译安装以及测试
-
首先解压源码文件,并在进入源码文件的终端,通过如下的代码进行编译
#配置选项 ./config --prefix=/home/mark/tongsuo-no_opt -Wl,-rpath,/usr/lib #其中/home/mark/tongsuo-no_opt 是指定openssl的安装目录 #-Wl,-rpath,/usr/lib 指定openssl二进制依赖的libcrypto.so 和 libssl.so 目录 相当于设置环境变量 #但是在后续的调用二进制程序中,上述的路径并没有被直接指定,导致了错误? #注意,这里遍历的是没有经过优化过的代码
从图中可见,该优化特性未被打开
-
执行
make
等待编译 -
执行
make install
, 这里可以根据自己的不同需求去进行安装- 只安装library文件
make install_runtime_libs
- 安装头文件
make install_dev
- 只安装铜锁二进制程序和其依赖的library文件
make install_programs
这里我执行
make install
最终结果如下:
图中,可见在目录中编译了4个文件夹分别为bin,include,lib64,ssl
其中bin文件夹中存放的是二进制可执行程序
- 只安装library文件
-
对二进制程序进行测试
发现出现报错,这是因为并没有在环境变量中导入openssl的两个共享库
解决方法如下:
- 永久:通过修改
/etc/ld.so.conf
文件添加动态库的路径,然后通过命令行sudo ldconfig -v
使其生效
解决之后再次测试,tongsuo二进制程序正确运行,配置成功
- 编译优化过的铜锁程序
配置过程同1,不过加入了enable-ec_sm2p_64_gcc_128
命令,然后编译安装过程同上
测试结果如下:
比较两次结果如下:
Event | sm2-opt | sm2-no-opt |
---|---|---|
Sign | 3728.5/s | 3606.8/s |
Verify | 4189.9/s | 4104.0/s |
可以发现,优化的sm2算法和未优化的sm2算法在签名和验签性能上差别不大,没有达到理论的性能提升。
出现上述现象的可能原因:
- 在测试优化SM2算法时,使用的是之前未经优化编译的共享库文件
- to be continued …
解决方法:
- 将之前ld.so.conf中的库文件目录更新为优化过的库文件目录(不过这样的话,之前用来未优化的sm2算法的结果也会有所更改)
最终优化结果如下:
Event | sm2-opt | sm2-no-opt | Improvemnet |
---|---|---|---|
Sign | 16225.2/s | 3606.8/s | +449.9% |
Verify | 8199.8/s | 4104.9/s | +199.8% |