2021SC@SDUSC
签名前准备函数?(应该是在这个翻译吧
EC:椭圆曲线
EC_KEY:elliptic curve keys ec-key - npm
This project defines a wrapper for Elliptic Curve (EC) private and public keys.
BN_CTX((bignum_ctx)是一个保存BIGNUM临时变量的结构
BIGNUM:
①初始化函数
BIGNUM *BN_new(void); 新生成一个BIGNUM结构
void BN_free(BIGNUM *a); 释放一个BIGNUM结构,释放完后a=NULL;
void BN_init(BIGNUM *); 初始化所有项均为0,一般为BN_ init(&c)
void BN_clear(BIGNUM *a); 将a中所有项均赋值为0,但是内存并没有释放
void BN_clear_free(BIGNUM *a); 相当与将BN_free和BN_clear综合,要不就赋值0,要不就释放空间。
更多的函数内容可以看Openssl 之大数运算函数 BN_无与伦比BLOG-CSDN博客_openssl大数运算
定义局部变量(上图)
java类中ec_point,表示仿射坐标中椭圆曲线(EC)上的点
ECPoint 包/类/方法中文说明 - Java 11 API中文版 - 手册 - 时代Java
⬆ 两种会出现error的情况下
⬆ 新建三个BIGNUM结构体
⬆五种会出现SM2err的情况
void BN_clear_free(BIGNUM *a); 相当与将BN_free和BN_clear综合,要不就赋值0,要不就释放空间。
我的理解是,这一步为签名算法成功实现扫清障碍,一切会出现SM2err的情况,都会在这一步会被排除,保证下一步do-sign顺利进行。