背景:前几天接到一个需求:在Linux下基于openssl的SM2算法实现对SE芯片签名的验签,并制作Linux版验签工具。暂且不论SM2 Verify算法及其过程,要实现验签得有sign、pubkey、userid、msg等吧,这些data必须动态加载才能满足客户需求,最常见的方法是使用文件I/O的方式,读取参数,但是这样做,你不仅要使用文件I/O,还要解析参数,会增加代码的复杂性。所以,经过思考我使用如下方式:
(1)将以上参数直接剥离,放到一个新建的config.c中,并在config.h中声明;
(2)编写shell脚本config.sh,判断文件是否存在,存在就将其编译成动态库libconfig.so,并cp到/usr/lib/(以此为例);
note:有可能自己编译的库或者其他需要使用的库,在/usr/lib/下有同名的lib库。如笔者还需要链接libcrypto.so.1.1。
若有同名库,则先备份,在cp;同理,在clean时要回复原有lib库。
(3)在自己的源码中包含config.h头文件,并在编译时链接到libconfig.so即可。
note:ldd <编译后的可执行文件> 查看链接的库,及其位置,因为在shell中cp的目的地必须和其一致。
以上,完毕。