使用sm2签名并验签efi文件

[sbsigntool]是一个开源的软件包,他完成了对efi文件的签名和验签工作,其使用的签名算法是sha256。由于项目需要,我们需要使用国密的签名算法sm3,正好用到gmssl的API可以完成相关工作。
该工具原本是用的pkcs#7的加密标准,在签名的过程可以添加入证书,这是由于其标准决定的(?)。由于在gmssl中使用的sm3签名的过程中并没有涉及到证,所以改变过后的工具签名的时候并没有使用到证书,只是使用到了私钥。在验签的过程中,读入证书,并从证书中读取公钥,然后进行验签即可。
在该工具包的改写过程中,感觉以下几点可以记录一下:

  1. 编译时导入环境变量

    在liunx上面编译源代码的时候,会使用到./configure命令进行依赖包的确认,有时候可能安装的软件包并没有在系统的路径下,这时候可以通过export导入相应的文件位置:

//导入include文件位置
export CFLAGS="-I/usr/local/ssl/include"
//导入libXXX.a的文件位置
export LDFLAGS="-L/usr/local/ssl/lib"
//添加编译时的动态链接库
export LIBS="-ldl"
  1. 需要内存分配代码的编写

    在对某些代码进行编写的时候,可能需要去读文件或者对字符串数组进行赋值,可能需要先传入一个空的指针,获取长度后,然后分配空间,传入指针,获取内容。

  2. gmssl生成密钥和证书方法

gmssl ecparam -genkey  -name secp112r1 -out eckey.pem
gmssl req -new -x509 -key eckey.pem -out eckey.cert

完成后的编写代码可以在sbsigntool_sm2下载

使用sm2签名并验签efi文件相关推荐

  1. 基于OpenSSL 1.1.1版实现的SM2签名与验签C程序

    OpenSSL 1.1.1 版提供了对国密 SM4.SM3.SM2 算法的支持.对于 SM2 算法,在源码的 crypto/sm2 目录下,sm2_sign.c 文件中实现了 SM2 签名与验签, s ...

  2. 基于mbedTLS算法库实现国密SM2签名和验签算法

    网上有大量的基于OpenSSL实现的国密算法库,比如著名的GmSSL,可以直接拿来用.我自己常用的是mbedTLS的算法库,比较小巧简单,在mbedTLS的大数算法的基础上实现了国密SM2的签名和验签 ...

  3. 使用 openssl 对文件签名和验签

    这里介绍:文件签名和验签做了什么,openssl 命令行工具进行签名和验签. 文件签名和验签 签名 有文件 test.txt,使用摘要算法(如 SHA256)计算出文件的摘要,再使用私钥(privat ...

  4. STM32F103驱动RJMU401实现SM2加解密、签名与验签

    目录 前言 一.什么是加密.硬件加密以及加密芯片品牌? 二.开发记录 1.开发环境 2.开发流程 3.常见问题汇总 总结 前言 项目需要加密并且需要采用硬件加密,加密方式为非对称–SM2,之前只接触过 ...

  5. Java应用服务系统安全性,签名和验签浅析

    1 前言 随着互联网的普及,分布式服务部署越来越流行,服务之间通信的安全性也是越来越值得关注.这里,笔者把应用与服务之间通信时,进行的的安全性相关,加签与验签,进行了一个简单的记录. 2 安全性痛点 ...

  6. 数字证书应用综合揭秘(包括证书生成、加密、解密、签名、验签)

    引言 数字证书是一个经证书授权中心数字签名的包含公开密钥拥有者信息以及公开密钥的文件.为现实网络安全化标准如今大部分的 B2B.B2C.P2P.O2O 等商业网站含有重要企业资料个人资料的信息资信网站 ...

  7. PHP SHA1withRSA加密生成签名及验签

    最近公司对接XX第三方支付平台的代付业务,由于对方公司只有JAVA的demo,所以只能根据文档自己整合PHP的签名加密,网上找过几个方法,踩到各种各样的坑,还好最后算是搞定了,话不多说,代码分享出来. ...

  8. 支付宝支付API之签名与验签

    支付宝开发平台支付API文档: https://docs.open.alipay.com/291/106130 对接支付API出现问题的主要原因:数据被转义,所以在调试时先把数据可以写死 注意:在调试 ...

  9. 使用RSA、MD5对参数生成签名与验签

    在日常的工作中,我们对外提供的接口或调用三方的接口往往有一步生成签名或验签的步骤,这个步骤主要是验证调用方是 不是合法的以及内容是否被修改.比如:对于某些网上公开下载的软件,视频,尤其是镜像文件.如果 ...

  10. ios rsa加密 java解密_iOS RSA加密与解密 签名与验签(附Java端处理)

    本篇文章将涉及以下几个操作: 1.iOS端使用RSA公钥加密,iOS端使用RSA私钥解密. 2.iOS端使用RSA私钥加签,iOS端使用RSA公钥验签. 3.iOS端使用RSA公钥加密,Java端使用 ...

最新文章

  1. php foreach是什么,php中foreach的用法是什么
  2. 计算机专业英文简历和求职信,计算机专业生英文求职信范文
  3. 2016第三本《曾国藩的正面和侧面》
  4. SpringCloud 应用在 Kubernetes 上的最佳实践 — 部署篇(开发部署)
  5. MS CRM 2011插件调试工具
  6. delphi中处理数据类型错误的方法
  7. django.core.exceptions.ImproperlyConfiguredmysqlclient 1.3.13 ornewer is required you have 0.9.2(亲测)
  8. why there is error after adding DocumentHistories
  9. 2019.01.26 codeforces 1096G. Lucky Tickets(生成函数)
  10. inputstream示例_Java InputStream close()方法与示例
  11. 音视频开发(13)---视频监控系统必须知道的一些基础知识
  12. 书店管理系统(C++初学者友好版)
  13. 检索 COM 类工厂中 CLSID 为 {000209FF-0000-0000-C000-000000000046} 的组件时失败,原因是出现以下错误: 8000401a
  14. 视频剪辑软件产品调研分析
  15. centos 关机命令_全了 Linux 常用命令大汇集
  16. 集成学习【三】:Bagging结合神经网络及代码实现
  17. 爬虫之-bilibili视频下载-下载链接获取
  18. 什么是毫米波雷达?飞睿科技雷达传感器,雷达感应技术
  19. Dell R730服务器inter 500系列网卡与光模块不兼容**
  20. 大翻盘!超80亿美元Java侵权案落槌,谷歌胜诉!

热门文章

  1. Android仿miui11风格,华为手机适配安装MIUI11风格的主题-添加百变锁屏
  2. 真正实现再wine上安装VC6.0,并编译调试程序
  3. 细说php完美分页类
  4. 【Python实现】运输问题的表上作业法(二):利用位势法判断当前解的最优性
  5. Ubuntu 14.04下360/小米/百度等随身Wifi驱动安装方法
  6. 递归的经典例子 java_java递归算法经典实例
  7. CAD迷你看图 4.4.3 中文版 (最强 CAD 看图工具)
  8. 大学生数学建模竞赛心得(提高篇) 转
  9. Nachos操作系统实习-lab1
  10. iPhone6爆炸真是小概率事件吗?