// 使用 u8 类型的私钥获取 u8 类型的公钥
int get_pub_key_from_priv(u8 *priv_key, size_t priv_key_len, u8 **pub_key, size_t *pub_key_len)
{
EC_KEY *key = NULL;
const EC_GROUP *group;
EC_POINT *pub_point = NULL;
BIGNUM *bn_priv_key = BN_new();
// 初始化 OpenSSL 库
// OpenSSL_add_all_algorithms();
// 将 u8 私钥转换为 BIGNUM
if (!BN_bin2bn(priv_key, priv_key_len, bn_priv_key))
{
BN_free(bn_priv_key);
return 0;
}
// 创建一个新的 EC_KEY 对象
key = EC_KEY_new_by_curve_name(NID_sm2);
if (!key)
{
BN_free(bn_priv_key);
return 0;
}
// 获取椭圆曲线参数
group = EC_KEY_get0_group(key);
// 设置私钥
if (!EC_KEY_set_priva
sm2已知私钥求对应公钥
于 2024-01-30 15:59:45 首次发布
该文章已生成可运行项目,
本文章已经生成可运行项目

最低0.47元/天 解锁文章
1715

被折叠的 条评论
为什么被折叠?



