上一章我们讲到了铜锁和 BoringSSL,本章从最简单的国密算法 SM3 摘要算法入手,说明一下 SM3 算法的移植要点。
SM3 算法本身并不复杂,详细算法说明参考《GB∕T 32905-2016信息安全技术 SM3密码杂凑算法》这份文档。因为铜锁开源项目有实现代码,直接照搬过来。
将 crypto/sm3 目录下的代码复制到 BoringSSL 下,解决编译和链接问题即可。算法中有汇编实现,这个可以先暂时不用移植。具体代码可以参看 mojo-ssl。
由于 BoringSSL 和 铜锁代码结构并不完全一致,所以移植代码时,有几点需要注意:
- 新增代码的添加
BoringSSL 虽然使用了 cmake 构建系统,但可能考虑到 bazel、gn 等构建系统,所以要编译的源代码是定义在 build.json 文件中。所以我们添加的 sm3.c 和 sm3_test.cc 文件需要加入到 build.json 文件中。
添加之后,还需要运行如下