基于OpenSSL 1.1.1版实现的SM2签名与验签C程序

    OpenSSL 1.1.1 版提供了对国密 SM4、SM3、SM2 算法的支持。对于 SM2 算法,在源码的 crypto/sm2 目录下,sm2_sign.c 文件中实现了 SM2 签名与验签, sm2_crypt.c 文件中实现了 SM2 加密与解密,这些源码是很好的学习范例。但是 sm2.h, sm3.h, sm4.h 这些头文件是放在源码的 crypto/include/internal 目录下,这就导致用户不能直接调用到 sm2_sign.c 和 sm2_crypt.c 中实现的函数。如果用户需要做 SM2 签名验签或加解密,需要使用统一的 EVP 抽象接口。

    有时候做 SM2 签名验签时,我们并不想通过调用 OpenSSL 的 EVP 接口来实现,调用 EVP 接口需要了解很多 OpenSSL 自定义的数据类型和函数。为了能在不调用 EVP 接口的情况下做 SM2 签名和验签,我针对 OpenSSL 1.1.1 版本,编程实现了以下函数:包含预处理过程的SM3杂凑值计算、SM2 密钥对生成、SM2 签名、SM2验签以及相关的测试函数。程序代码已发布在以下网址:

https://github.com/greendow/SM2-signature-creation-and-verification

你可能感兴趣的:(OpenSSL,密码学与信息安全,OpenSSL)