duanhongyi / gmssl

a python crypto for sm2/sm3/sm4
MIT License
479 stars 140 forks source link

建议增加带Za值的签名,验签接口 #33

Open wjsuperstar opened 3 years ago

wjsuperstar commented 3 years ago

根据PBOC3.0规范第17部分8.2《中国金融集成电路(IC)卡规范 第17部分:借记贷记应用安全增强规范》描述,签名,验签时需要先生成一个Za值,把原始数据和Za拼接起来,再进行sm2签名。 规范节选: 对任意长度的数据组成的报文MSG计算签名S的过程如下: a) 计算ZA=SM3[ENTLA || IDA || a || b || xG ||yG || xA || yA]。其中IDA固定设置为16字节定 长的十六进制数据0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38; ENTLA值为两个字节数据0x00, 0x80; b) 计算报文MSG的32字节的HASH值 h:= SM3 [ZA||MSG]; c) 计算Sign(SK)[h],得到两个数字r和s; d) 数字签名S被定义为S:= r||s,即数字签名S由数字r和s串联而成

参考帖子: https://blog.csdn.net/qq_40964308/article/details/103939700 参考网站: http://i.goto327.top:85/CryptTools/SM2.aspx