OpenSSL密碼庫算法筆記——第6.3.4章 簽名函數說明

接下來詳細介紹各個簽名函數。

───────────────────────────────────────

int    ECDSA_sign(int type, const unsigned char *dgst, int dgstlen, unsigned char *sig, unsigned int *siglen, EC_KEY *eckey)

功能:    計算簽名,簽名採用DER編碼格式

輸入:    type【無用】,dgst【等待簽名的hash值】,dgstlen【hash值長度】,eckey【密鑰】

輸出:    sig【簽名】,siglen【簽名長度】,

返回:    1【正確】 or 0【出錯】

出處:    ecdsa\ecs_sign.c

備註:    return ECDSA_sign_ex(type, dgst, dlen, sig, siglen, NULL, NULL, eckey);

───────────────────────────────────────

被ECDSA_sign調用的ECDSA_sign_ex函數如下。

───────────────────────────────────────

int    ECDSA_sign_ex(int type, const unsigned char *dgst, int dgstlen, unsigned char *sig, unsigned int *siglen, const BIGNUM *kinv, const BIGNUM *rp, EC_KEY *eckey)

功能:    計算簽名,簽名採用DER編碼格式

輸入:    type【無用】,dgst【等待簽名的hash值】,dgstlen【hash值長度】,eckey【密鑰】,

kinv【可選參數,k-1 mod order】,rp【可選參數,k×G的x座標】

輸出:    sig【簽名】,siglen【簽名長度】,

返回:    1【正確】 or 0【出錯】

出處:    ecdsa\ecs_sign.c

───────────────────────────────────────

 

───────────────────────────────────────

ECDSA_SIG *ECDSA_do_sign(const unsigned char *dgst, int dlen, EC_KEY *eckey)

功能:    計算簽名

輸入:    dgst【等待簽名的hash值】,dgstlen【hash值長度】,eckey【密鑰】,

輸出:    sig【簽名】,siglen【簽名長度】,

返回:    1【正確】 or 0【出錯】

出處:    ecdsa\ecs_sign.c

備註:    return ECDSA_do_sign_ex(dgst, dlen, NULL, NULL, eckey);

───────────────────────────────────────

被ECDSA_sign_ex和 ECDSA_do_sign調用的ECDSA_do_sign_ex函數如下。

───────────────────────────────────────

ECDSA_SIG *ECDSA_do_sign_ex(const unsigned char *dgst, int dlen, const BIGNUM *kinv, const BIGNUM *rp, EC_KEY *eckey)

功能:    計算簽名

輸入:    dgst【等待簽名的hash值】,dgstlen【hash值長度】,eckey【密鑰】,

kinv【可選參數,k-1 mod order】,rp【可選參數,k×G的x座標】

輸出:    -

返回:    簽名

出處:    ecdsa\ecs_sign.c

───────────────────────────────────────

被ECDSA_do_sign_ex調用的ecdsa_do_sign函數如下。

───────────────────────────────────────

static ECDSA_SIG *ecdsa_do_sign(const unsigned char *dgst, int dgst_len, const BIGNUM *in_kinv, const BIGNUM *in_r, EC_KEY *eckey)

功能:    計算簽名

輸入:    dgst【等待簽名的hash值】,dgstlen【hash值長度】,eckey【密鑰】,

kinv【可選參數,k-1 mod order】,in_r【可選參數,k×G的x座標】

輸出:    -

返回:    簽名

出處:    ecdsa\ecs_ossl.c

───────────────────────────────────────

可能會被ecdsa_do_sign調用的預計算函數ECDSA_sign_setup如下。

───────────────────────────────────────

int ECDSA_sign_setup(EC_KEY *eckey, BN_CTX *ctx_in, BIGNUM **kinvp, BIGNUM **rp)

功能:    簽名的預計算部分

輸入:    eckey 【含私鑰】,ctx

輸出:    kinvp【k的逆】,rp【k×G的x座標】

返回:    1【正常】or 0【出錯】

出處:    ecdsa\ecs_sign.c

備註:    return ecdsa->meth->ecdsa_sign_setup(eckey, ctx_in, kinvp, rp);

───────────────────────────────────────

被ECDSA_sign_setup調用的實現預計算的ecdsa_sign_setup函數如下。

───────────────────────────────────────

static int ecdsa_sign_setup(EC_KEY *eckey, BN_CTX *ctx_in, BIGNUM **kinvp, BIGNUM **rp)

功能:    簽名的預計算部分

輸入:    eckey 【含私鑰】,ctx

輸出:    kinvp【k的逆】,rp【k×G的x座標】

返回:    1【正常】or 0【出錯】

出處:    ecdsa\ecs_ossl.c

───────────────────────────────────────

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