当前位置:   article > 正文

GB35114---SM3withSM2证书生成及读取(二)_35114 cryptkey

35114 cryptkey

接上篇

GB35114---SM3withSM2证书生成及读取(一)

作为相机,我们需要读取设备端(自己)的私钥

        1、对random2+random1+sip服务器id做数字签名;

        2、对cryptkey进行解密得到VKEK;

        3、对METHOD+From+to+CallID+Date+VKEK+消息体进行散列运算。

以及服务端的公钥:

         1、校验sign2签名结果;

现在我们用openssl库来处理。

来看看我这边的代码

  1. int gb35114_module_init()
  2. {
  3. X509 *x = NULL;
  4. EVP_PKEY *pkey = NULL;
  5. BIO *priio = NULL;
  6. EC_KEY *prikey = NULL;
  7. do
  8. {
  9. auth = malloc(GB_AUTH_T_LEN);
  10. if(NULL == auth)
  11. {
  12. return 0;
  13. }
  14. memset(auth,0,GB_AUTH_T_LEN);
  15. x = load_cert(GB35114_SERCER_FILE, FORMAT_PEM, "Certificate");
  16. if(NULL == x)
  17. {
  18. DBG_WARN("load cert ERR\n");
  19. break;
  20. }
  21. //read cer pubkey
  22. pkey = X509_get_pubkey(x);
  23. if(NULL == pkey)
  24. {
  25. DBG_WARN("get_pubkey ERR\n");
  26. break;
  27. }
  28. auth->key.ec_skey = (EC_KEY *)pkey->pkey.ec;
  29. /* 证书验签暂时不做,未完成 bob 20191219
  30. if(!gb35114_verf_sercers(x))
  31. {
  32. break;
  33. }
  34. */
  35. //read dev prikey
  36. priio = BIO_new_file(GB35114_PRIV_KEY, "rb");
  37. if( NULL == priio)
  38. {
  39. DBG_ERR("open private key file err\n");
  40. break;
  41. }
  42. prikey = PEM_read_bio_ECPrivateKey(priio, &prikey, NULL, NULL);
  43. if( NULL == prikey)
  44. {
  45. DBG_ERR("read private key file err\n");
  46. break;
  47. }
  48. auth->key.ec_dkey = prikey;
  49. auth->init_flag = 1;
  50. gb35114_load_conf();
  51. DBG_INFO("35114 module init\n");
  52. }while(0);
  53. if(1 != auth->init_flag)
  54. {
  55. DBG_ERR("35114 module init fail\n");
  56. }
  57. //增加eckey不释放数据 bob
  58. //X509_free(x);
  59. //BIO_free(priio);
  60. //EC_KEY_free(prikey);
  61. return 1;
  62. }

openssl提供了

PEM_read_bio_ECPrivateKey函数来读取私钥文件;

通过

X509 *load_cert(const char *file, int format, const char *cert_descrip);
EVP_PKEY *X509_get_pubkey(X509 *x);

函数来获取证书中的公钥。
另注:gb35114的证书的交换是通过与认证机构进行物理交换所完成的。跟ssl认证不一样。

有错误请留言,谢谢。

                                  bob  2020-03-24

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/盐析白兔/article/detail/259681
推荐阅读
相关标签
  

闽ICP备14008679号