OpenSSL密码库算法笔记——第 6.1.6章 公私钥信息的读取

新建的密钥(EC_KEY_new)中并没有公私钥信息,所以,在密钥中写入公私钥信息需要使用专门的函数EC_KEY_generate_key(随机生成公私钥对),EC_KEY_set_private_key(设置私钥),EC_KEY_set_public_key(设置公钥)。

读取公私钥信息可以使用EC_KEY_get0_private_key(读取私钥信息)和EC_KEY_get0_public_key(读取公钥信息)。

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

int EC_KEY_generate_key(EC_KEY *eckey)

功能:    生成密钥

输入:    eckey

输出:    eckey【生成了密钥对信息】

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

出处:    ec\ec_key.c

备注:    随机生成私钥,再生成对应的公钥。

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

设置私钥。

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

int EC_KEY_set_private_key(EC_KEY *key, const BIGNUM *priv_key)

功能:    设置私钥

输入:    priv_key

输出:    key【key-> priv_key ←priv_key】

返回:    1 【key->priv_key非空】or 0【key->priv_key空】

出处:    ec\ec_key.c

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

设置公钥。

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

int EC_KEY_set_public_key(EC_KEY *key, const EC_POINT *pub_key)

功能:    设置公钥

输入:    pub_key

输出:    key【key->pub_key ← pub_key】

返回:    1 【key->pub_key非空】or 0【key->pub_key空】

出处:    ec\ec_key.c

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

        读取私钥。

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

const BIGNUM *EC_KEY_get0_private_key(const EC_KEY *key)

功能:    从密钥中获取私钥

输入:    key

输出:    -

返回:    私钥【return key->priv_key】

出处:    ec\ec_key.c

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

        读取公钥。

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

const EC_POINT *EC_KEY_get0_public_key(const EC_KEY *key)

功能:    从密钥中获取公钥

输入:    key

输出:    -

返回:    公钥【return key->pub_key】

出处:    ec\ec_key.c

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

生成的公私钥对是否正确可用,可利用EC_KEY_check_key检查。该函数检查:1) 公钥在曲线上;2) 公钥不是无穷原点,3) 私钥×基点=公钥。如果以上三条检查项目都通过,则密钥正确;否则,密钥出错。

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

int EC_KEY_check_key(const EC_KEY *eckey)

功能:    检查密钥是否正确

输入:    eckey

输出:    -

返回:    1【正确】 or 0【出错】

出处:    ec\ec_key.c

备注:    检查项目:①公钥在曲线上;②公钥不是无穷原点,③私钥×基点=公钥。

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

猜你喜欢

转载自blog.csdn.net/samsho2/article/details/88790765