点乘操作是SM2里面最重要,耗时最长的操作。github上面有一个人写了sm2点乘的verilog但是他里面有很多task任务类型不,不用直接使用。后面这个人没有更新了:https://github.com/ljgibbslf/SM2_core
我把他的修改了一下,后面我同学调用我的,验证了是正确的。
模块的输入Gx,Gy是正常仿射坐标,最终的结果x2,y2,z2是jacobin坐标下面的。start是输入开始信号,finish是点乘结束信号。
可以参考椭圆曲线——从仿射坐标到雅可比坐标的转换_p由雅可比坐标表示,而q由仿射坐标表示-CSDN博客,这里有坐标的知识。或者看我的分析文件里面的guid_elliptic_curve_crypyography这本书的3.2节。
点v文件再final_v文件夹下,国密标准在GM-standard下,还有刚刚那本书,其他东西可以不下。
链接: https://pan.baidu.com/s/1ZCYyts2kghgrYEQjh_HxFA?pwd=ipj3 提取码: ipj3