implement sm2 2P sign with real network communication
本项目为模仿真实世界通讯,创建了两个文件以模仿两位用户,两文件之间通过socket模块进行通信。
用户A
Sign1
计算
P1=$D^{-1}$G
Sign3
计算
M'=Za||M
e-Hash(M')
Q1=kG
Sign5
求解最终签名,具体算法为:
s=(d*k)*s2+d*s3-r mod n
下面进行主函数介绍:
用户A首先调用Sign1、Sign2函数求得P1、Q1、e,之后通过socket发送给用户B,等待用户B计算完成后从它那里 接收r、s2、s3,并将这三个数据作为参数传到Sign5函数中,得到最终签名值。
用户B
Sign
传入参数P1、Q1、e,求得r、s2、s3。
用户B从用户A处接收P1、Q1、e,并将其传入Sign函数中,得到r、s2、s3,最后将其传回用户A即可。
此作品需先打开用户A进程,之后打开用户B进程连接,即可成功。