OpenSSL密碼庫算法筆記——第6.3.3章 簽名函數調用關係

數字簽名中用到了多個函數,包括 ECDSA_sign、ECDSA_sign_ex、ECDSA_do_sign、ECDSA_do_sign_ex、ecdsa_do_sign、ECDSA_sign_setup、ecdsa_sign_setup。這些函數有的是用於計算簽名,有的是用於做簽名前的預運算;有的簽名是採用DER編碼,有的是採用ECDSA_SIG。下圖將簡要說明這些函數之間的調用關係。

6.3 簽名所用函數圖

        現對上圖做個簡要說明:

  1. ECDSA_sign和ECDSA_sign_ex的簽名採用的是DER編碼,故需要用i2d_ECDSA_SIG將ECDSA_do_sign_ex得出的ECDSA_SIG格式簽名編碼成DER形式。
  2. ECDSA_sign_setup和ecdsa_sign_setup做簽名前的預運算,是可選函數。所謂的預運算就是指如果外部不輸入kG和 k-1的值((x1,y1) ←kG 是ECDSA簽名算法step1.1.2 需要計算的值,而k-1是step1.2所需中間值),就預先將這兩個值計算出來。參見§6.2.2簽名原理的ECDSA簽名算法。
  3. ecs_ossl.c文件中的函數ecdsa_do_sign是具體實現簽名的函數,ecdsa_sign_setup是具體實現預運算的函數。

下表對以上函數再做一個比較。

 

函數名

簽名採用的編碼方式

可選參數

所在文件

ECDSA_sign

DER編碼

ecs_sign.c

ECDSA_sign_ex

DER編碼

ecs_sign.c

ECDSA_do_sign

ECDSA_SIG

ecs_sign.c

ECDSA_do_sign_ex

ECDSA_SIG

ecs_sign.c

ecdsa_do_sign        

ECDSA_SIG

ecs_ossl.c

ECDSA_sign_setup

ECDSA_SIG

計算可選參數

ecs_sign.c

ecdsa_sign_setup   

ECDSA_SIG

計算可選參數

ecs_ossl.c

表6.4簽名函數對比表

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章