接上篇GB35114---基于openssl加密库进行开发(一)
-----------------------------------------------------------------------------------------------------------------------------
openssl的两个.so动态库libcrypto.so.1.1 and libssl.so.1.1不能直接调用sm2签名及加密函数。
但是它里面集成了sm2的椭圆曲线,那我们就根据sm2曲线算法直接写个签名函数。
其实在openssl的sm2_sign.c内已经有相关算法,那我们就伸手了。
BIGNUM *sm2_compute_msg_hash(const EVP_MD *digest,
const EC_KEY *key,
const uint8_t *id,
const int id_len,
const uint8_t *msg, int msg_len)
{
EVP_MD_CTX *hash = EVP_MD_CTX_new();
const int md_size = EVP_MD_size(digest);
uint8_t *z = NULL;
BIGNUM *e = NULL;
if (md_size < 0) {
goto done;
}
z = OPENSSL_zalloc(md_size);
if (hash =&