C语言获取证书序列号的函数,Openssl 怎么样获取ECC sm2证书公钥数据

本人现在通过调用x509系列API接口函数可以解析sm2证书,获取出证书的信息例如:序列号,CN值等,

但是获取公钥数据时出错。

直接上代码吧

EVP_PKEY * pubKey ;

X509 *x509Cert = NULL;

x509Cert = d2i_X509(NULL,usrCertificate,usrCertificateLen);

//获取证书版本,能正确获取到值

Version = X509_get_version(x509Cert);

//这里省略一些解析证书的代码

//下面是获取公钥数据的代码

if ( x509Cert->cert_info == NULL)

return ;

pubKey = X509_PUBKEY_get(x509Cert->cert_info->key); 这里获取到的pubKey为空,导致获取不到公钥数据

是不是这种解析方法有问题!

应该怎样获取到公钥数据呢?大家帮忙解决下吧,谢谢了!

解决方案

8

ecc的过程与rsa相比有很大的不同,ecc涉及到了很多额外的概念,例如group等等,另外ecc包含两套截然不同的机制ecdh ,ecdsa

struct ec_key_st {

int version;

EC_GROUP *group;

EC_POINT *pub_key;

BIGNUM     *priv_key;

unsigned int enc_flag;

point_conversion_form_t conv_form;

int     references;

EC_EXTRA_DATA *method_data;

} /* EC_KEY */;

2

本人最近也有这个问题,但说实话,ECC没人或没几个人能说的清楚。

网上的东西,都搬来搬去。

例如,最大的问题就是ECC算法的非对称加密解密。

网上根本没人谈及到过。

10

有两种方案,比较简单的一种是本人封个接口去cert_info的pub_key里读data解析,另一种就是通过get_pubkey接口了,不过这个需要加入sm2的曲线参数,算法oid也要加,原因是sm2和Openssl的ecc不太一样,中间还要改一些东西,一步一步的调试跟下来

a8607fe1c3b572fbe4b2e939f62c2139.gif

CodeBye 版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA协议进行授权 , 转载请注明Openssl 怎么样获取ECC sm2证书公钥数据!

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值