接上篇

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

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

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

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

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

以及服务端的公钥:

1、校验sign2签名结果;

现在我们用openssl库来处理。

来看看我这边的代码

int gb35114_module_init()
{X509 *x = NULL;EVP_PKEY *pkey = NULL;BIO *priio = NULL;EC_KEY  *prikey = NULL;do{auth = malloc(GB_AUTH_T_LEN);if(NULL == auth){return 0;}memset(auth,0,GB_AUTH_T_LEN);x = load_cert(GB35114_SERCER_FILE, FORMAT_PEM, "Certificate");if(NULL == x){DBG_WARN("load cert ERR\n");break;}//read cer pubkeypkey = X509_get_pubkey(x);if(NULL == pkey){DBG_WARN("get_pubkey ERR\n");break;}auth->key.ec_skey = (EC_KEY *)pkey->pkey.ec;/*  证书验签暂时不做,未完成             bob 20191219if(!gb35114_verf_sercers(x)){break;}*///read dev prikeypriio = BIO_new_file(GB35114_PRIV_KEY, "rb");if( NULL == priio){DBG_ERR("open private key file err\n");break;}prikey = PEM_read_bio_ECPrivateKey(priio, &prikey, NULL, NULL);if( NULL == prikey){DBG_ERR("read private key file err\n");break;}auth->key.ec_dkey = prikey;auth->init_flag = 1;gb35114_load_conf();DBG_INFO("35114 module init\n");}while(0);if(1 != auth->init_flag){DBG_ERR("35114 module init fail\n");}//增加eckey不释放数据         bob//X509_free(x);//BIO_free(priio);//EC_KEY_free(prikey);return 1;
}

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

GB35114---SM3withSM2证书生成及读取(二)相关推荐

  1. 一行代码,生成和读取二维码!

    文 | 闲欢 来源:Python 技术「ID: pythonall」 二维码是用某种特定的几何图形按一定规律在平面(二维方向上)分布的.黑白相间的.记录数据符号信息的图形. 二维码被称为快速响应码,可 ...

  2. 利用ZXing生成和读取二维码

    在日常生活中二维码的使用非常频繁,给我们带来了极大的方便,避免了许多不必要的输入,也减少了在输入过程中的错误. 刚学完利用ZXing生成二维码的简单例子,在此给出最基本的源码,关于ZXing的jar文 ...

  3. jquery-qrcode 生成和读取二维码

    首先要导入jar包(生成二维码的jar和读取二维码的jar) 生成二维码: package com.imooc.qrcode;import java.awt.Color; import java.aw ...

  4. OpenCV基础(22)使用OpenCV生成及读取二维码以及与Zbar比较

    二维码(QR码)是一种矩阵条形码,是一种机器可读的光学标签,其中包含有关其所附着物品的信息.实际上,二维码(QR码)码通常包含指向网站或应用程序的定位器,标识符或跟踪器的数据. 最近,OpenCV 4 ...

  5. python生成和读取二维码

    目录 生产二维码 普通二维码 艺术二维码 二维码读取 CV2 pyzbar zxing 生产二维码

  6. ios使用AVFoundation读取二维码的方法

    二维码(Quick Response Code,简称QR Code)是由水平和垂直两个方向上的线条设计而成的一种二维条形码(barcode).可以编码网址.电话号码.文本等内容,能够存储大量的数据信息 ...

  7. 个人用户永久免费,可自动升级版Excel插件,使用VSTO开发,Excel催化剂功能第12波-快速生成、读取、导出条形码二维码...

    根据指定的内容生成对应的条形码或二维码,在如今移动互联网时代,并不是一件什么新鲜事,随便百度一下,都能找到好多的软件或在线网站可以帮我们做到,但细想一下,如果很偶然地只是生成一个两这样的图形,百度一下 ...

  8. iOS开发 - 二维码的生成与读取

    二维码的生成 从iOS7開始集成了二维码的生成和读取功能 此前被广泛使用的zbarsdk眼下不支持64位处理器 生成二维码的步骤: 导入CoreImage框架 通过滤镜CIFilter生成二维码 二维 ...

  9. 生成二维码,读取二维码,这很Python(23)

    小朋友们好,大朋友们好! 我是猫妹,一名爱上Python编程的小学生. 欢迎和猫妹一起,趣味学Python. 今日主题 如何用Python生成二维码. 如何用Python读取二维码. 什么是二维码 二 ...

  10. 【Python】二维码生成与读取

    1.生成二维码 # 2021/11/27 import qrcode #v-5.3#数据 data = 'https://www.baidu.com/' #文件 filename = 'QRcodel ...

最新文章

  1. 聊一聊:你都用什么方式回忆青春呢?
  2. hdu2065(指数型母函数+快速幂)
  3. java 链接mysql 产生500W数据模拟生成环境
  4. Jquery操作CSS常用方法
  5. nginx做服务器入口_Nginx实现http反向代理
  6. vue打包成app后,背景图片不显示
  7. 大数据学习笔记09:MapReduce概述
  8. View Horizon Mirage安装手册(四)——Mirage Management Console安装
  9. R 语言之数据分析高级方法「GLM 广义线性模型」
  10. 蠕虫病毒与一般计算机病毒的区别,蠕虫和病毒的区别是什么啊!
  11. Excel数据的快速填充
  12. markdown在线编辑器
  13. 微信小程序前端解密获取用户信息
  14. 关于PostgreSQL执行计划中的Bitmap Heap Scan、Bitmap Index Scan、Recheck Cond
  15. 360浏览器切换内核数据丢失
  16. 台式u盘显示计算机未响应怎么办,u盘插上去电脑没反应怎么办_u盘插上后无任何反应的解决教程-系统城...
  17. 如何把png/jpg文件生成为字体图标(css icon-font)
  18. 比 Elasticsearch 更快, RediSearch + RedisJSON = 王炸
  19. 什么是API?(详细解说)
  20. Win7环境下opensuse13.1与SLED 11 sp3的硬盘安装

热门文章

  1. 行政区村界线_中国各省界线是如何形成的?古代行政区划界原则
  2. 软考——论文写作基本介绍
  3. linux安装文泉驿字体,centos 安装文泉驿字体教程,centos文泉驿字体下载字体(URL:h...
  4. 黑马程序员全套Java教程_Java基础教程_API(十四)
  5. UVC协议学习2--UVC请求格式分析
  6. 国二计算机百度云,2016Office二级全套视频教程 全国计算机二级考试Office考试视频教程...
  7. 2021Java春招,java求职简历模板下载
  8. 读《About Face 4 交互设计精髓》9
  9. 虚拟显示器软件(win10及以上)
  10. linux安装工具的过程