openssl3.2 - 官方demo学习 - smime - smdec.c

文章目录

    • openssl3.2 - 官方demo学习 - smime - smdec.c
    • 概述
    • 笔记
    • END

openssl3.2 - 官方demo学习 - smime - smdec.c

概述

从pem证书中得到x509*和私钥, 用私钥和证书解密MIME格式的PKCS7密文, 并保存解密后的明文
MIME的数据操作, 都是PKCS7相关的

笔记

/*!
\file smdec.c
\note 
openssl3.2 - 官方demo学习 - smime - smdec.c从pem证书中得到x509*和私钥, 用私钥和证书解密MIME格式的PKCS7密文, 并保存解密后的明文
MIME的数据操作, 都是PKCS7相关的
*//** Copyright 2007-2023 The OpenSSL Project Authors. All Rights Reserved.** Licensed under the Apache License 2.0 (the "License").  You may not use* this file except in compliance with the License.  You can obtain a copy* in the file LICENSE in the source distribution or at* https://www.openssl.org/source/license.html*//* Simple S/MIME signing example */
#include <openssl/pem.h>
#include <openssl/pkcs7.h>
#include <openssl/err.h>#include "my_openSSL_lib.h"int main(int argc, char **argv)
{BIO *_bio_sm = NULL, *_bio_out = NULL, *_bio_pem = NULL;X509 *_x509_pem = NULL;EVP_PKEY *_evp_pkey = NULL;PKCS7 *_pkcs7 = NULL;int ret = EXIT_FAILURE;OpenSSL_add_all_algorithms();ERR_load_crypto_strings();/* Read in recipient certificate and private key */_bio_pem = BIO_new_file("signer.pem", "r");if (!_bio_pem)goto err;_x509_pem = PEM_read_bio_X509(_bio_pem, NULL, 0, NULL);BIO_reset(_bio_pem);_evp_pkey = PEM_read_bio_PrivateKey(_bio_pem, NULL, 0, NULL);if (!_x509_pem || !_evp_pkey)goto err;/* Open content being signed */_bio_sm = BIO_new_file("smencr.txt", "r");if (!_bio_sm)goto err;/* Sign content */_pkcs7 = SMIME_read_PKCS7(_bio_sm, NULL);if (!_pkcs7)goto err;_bio_out = BIO_new_file("encrout.txt", "w");if (!_bio_out)goto err;/* Decrypt S/MIME message */if (!PKCS7_decrypt(_pkcs7, _evp_pkey, _x509_pem, _bio_out, 0))goto err;ret = EXIT_SUCCESS;err:if (ret != EXIT_SUCCESS) {fprintf(stderr, "Error Signing Data\n");ERR_print_errors_fp(stderr);}PKCS7_free(_pkcs7);X509_free(_x509_pem);EVP_PKEY_free(_evp_pkey);BIO_free(_bio_sm);BIO_free(_bio_out);BIO_free(_bio_pem);return ret;}

END

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/633475.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【算法详解】力扣179.最大数

一、题目描述 力扣链接&#xff1a;力扣179.最大数 给定一组非负整数 nums&#xff0c;重新排列每个数的顺序&#xff08;每个数不可拆分&#xff09;使之组成一个最大的整数。 注意&#xff1a;输出结果可能非常大&#xff0c;所以你需要返回一个字符串而不是整数。 示例 1&…

《游戏-01_2D-开发》

首先利用安装好的Unity Hub创建一个unity 2D&#xff08;URP渲染管线&#xff09;项目 选择个人喜欢的操作格局&#xff08;这里采用2 by 3&#xff09; 在Project项目管理中将双栏改为单栏模式&#xff08;个人喜好&#xff09; 找到首选项&#xff08;Preferences&#xff09…

Docker(二)安装指南:主要介绍 Docker 在 Linux 、Windows 10 和 macOS 上的安装

作者主页&#xff1a; 正函数的个人主页 文章收录专栏&#xff1a; Docker 欢迎大家点赞 &#x1f44d; 收藏 ⭐ 加关注哦&#xff01; 安装 Docker Docker 分为 stable test 和 nightly 三个更新频道。 官方网站上有各种环境下的 安装指南&#xff0c;这里主要介绍 Docker 在…

CentOS 7安装 NVIDIA 独立显卡驱动(禁用nouveau)

1.禁用nouveau 安装nvidia显卡驱动首先需要禁用nouveau&#xff0c;不然会碰到冲突的问题&#xff0c;导致无法安装nvidia显卡驱动。 禁用步骤 1.使用su命令切换到root用户下: su root查看nouveau是否禁用 lsmod | grep nouveau如果像这样输出一堆信息&#xff0c;则表示没…

allegro画PCB如何倒板框圆弧角

对板框进行倒圆角:Manufacture-Drafting-Fillet 对板框进行倒圆角:Manufacture-Drafting-Fillet 上图中的25对应的就是弧度半径&#xff0c;默认单位是mil&#xff0c;也可以设置成mm 最后点击相邻的边框线就可以倒成圆弧角了。 效果如下图&#xff1a;

SD卡出现乱码文件怎么修复?

SD卡出现乱码文件的问题是用户在使用过程中经常会遇到的故障。这些乱码文件的出现&#xff0c;可能是由于多种原因引起的&#xff0c;例如文件系统损坏、病毒攻击、设备兼容性问题等。本文将深入分析SD卡出现乱码文件的背后原因&#xff0c;并提供相应的解决方案&#xff0c;帮…

Python数据分析案例36——基于神经网络的AQI多步预测(空气质量预测)

案例背景 不知道大家发现了没&#xff0c;现在的神经网络做时间序列的预测都是单步预测&#xff0c;即(需要使用X的t-n期到X的t-1期的数据去预测X的t期的数据)&#xff0c;这种预测只能预测一个点&#xff0c;我需要预测X的t1期的数据就没办法了&#xff0c;有的同学说可以把预…

跑monkey以及停止monkey

跑monkey命令&#xff1a; adb shell monkey -p com.test.app --ignore-crashes --hprof --ignore-timeouts --ignore-security-exceptions --ignore-native-crashes --monitor-native-crashes -s 800 --throttle 400 100000 解析&#xff1a; 这个monkey命令是用于在Androi…

C++设计模式(李建忠)笔记4(完结)

C设计模式&#xff08;李建忠&#xff09; 本文是学习笔记&#xff0c;如有侵权&#xff0c;请联系删除。 参考链接 Youtube: C设计模式 Gtihub源码与PPT&#xff1a;https://github.com/ZachL1/Bilibili-plus 豆瓣: 设计模式–可复用面向对象软件的基础 总结23种设计模式…

Java中怎么使用equals()方法比较

在 Java 中&#xff0c;equals() 方法用于比较两个对象是否相等。equals() 方法是 Object 类的方法&#xff0c;可以被所有的类继承和使用。 要使用 equals() 方法&#xff0c;需要按照以下步骤进行操作&#xff1a; 1.确保你要比较的对象不为 null。否则&#xff0c;如果你尝…

5-数组-矩阵置零

这是数组的第5篇算法&#xff0c;力扣链接。 给定一个 m x n 的矩阵&#xff0c;如果一个元素为 0 &#xff0c;则将其所在行和列的所有元素都设为 0 。请使用 原地 算法。 示例 1&#xff1a; 输入&#xff1a;matrix [[1,1,1],[1,0,1],[1,1,1]] 输出&#xff1a;[[1,0,1],[0…

VMware 安装 CentOS7

目录 镜像下载VMware创建创建新的虚拟机直接自定义了选择镜像所在位置更改虚拟机的名称和存储位置&#xff08;尽量不要使用默认位置&#xff09;设置虚拟机的配置&#xff08;根据自己的情况而定&#xff09;设置虚拟机的内存&#xff08;根据自己情况而定&#xff09;设置网络…

浅谈2023-2024年中国人工智能计算力发展

2023年是人工智能发展的重要转折年&#xff0c;企业正加速从业务数字化迈向业务智能化。大模型和生成式人工智能的发展将引发计算范式之变、产业动量之变&#xff0c;以及算力服务格局之变。从感知智能到生成式智能&#xff0c;人工智能算力需求快速增长。大模型和生成式人工智…

投资有道:分析、交易与等待的艺术

投资过程可以分为分析、交易和等待三个阶段。在这三个阶段中&#xff0c;分析和交易是相互联系的&#xff0c;而等待则是连接这两端的关键。分析的核心在于具备商业理解力和概率思维&#xff0c;而交易的核心则在于掌握赔率和逆向思维。在这三个阶段中&#xff0c;等待是最难把…

机器视觉系统在汽车车轮毂检测上的应用

将机器视觉用于轮毂检测&#xff0c;可以利用图像分析的方法来测量轮毂特征尺寸、判断轮毂形状&#xff0c;并获取其位置坐标等信息&#xff0c;从而能够辨识流水生产线上的各种款式和型号的汽车轮毂。 市面上对汽车车轮毂具体检测要求如下 &#xff1a; 1.为了分辨流水线上…

ARM day5、day6 硬件编程

一、硬件 fs4412 sd卡 串口线 电源 二、根据原理图点灯 1、确定需求&#xff1a; 点灯&#xff08;亮 or 灭&#xff09; 2、查看原理图 2.1 外设原理图 devboard 查找LED2->CHG_COK(核心板) 2.2 核心板原理图 coreboard 查找CHG_COK->XEINT23/KP_ROW7/ALV_DBG…

【python】数值类型

整数类型 表示的数值没有小数部分的数值&#xff0c;包含正整数、复数和0 进制种类引导符号描述十进制无默认情况&#xff0c;例如&#xff1a;365&#xff0c;786二进制0b或0B由字符0和1组成&#xff0c;例如0b10101八进制0o或0O由字符0到7组成&#xff0c;例如0o763十六进制…

golang面试题大全

go基础类 1、与其他语言相比&#xff0c;使用 Go 有什么好处&#xff1f; 与其他作为学术实验开始的语言不同&#xff0c; Go 代码的设计是务实的。每个功能和语法决策都旨在让程序员的生活更轻松。Golang 针对并发进行了优化&#xff0c;并且在规模上运行良好。由于单一的标…

蓝桥杯(C++ 矩形总面积 错误票据 分糖果1 三国游戏 分糖果2)

目录 一、矩形总面积 思路&#xff1a; 代码&#xff1a; 二、错误票据 思路&#xff1a; 代码&#xff1a; 三、分糖果1 思路&#xff1a; 代码&#xff1a; 四、三国游戏 思路&#xff1a; 代码&#xff1a; 五、分糖果2 思路&#xff1a; 代码&#xff1a;…

uniapp 微信小程序自带实时线上日志

找个位置建上js文件 var log wx.getRealtimeLogManager ? wx.getRealtimeLogManager() : nullmodule.exports {info() {if (!log) returnlog.info.apply(log, arguments)},warn() {if (!log) returnlog.warn.apply(log, arguments)}, error() {if (!log) returnlog.error.a…