openssl3.2 - 官方demo学习 - cms - cms_denc.c

文章目录

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

openssl3.2 - 官方demo学习 - cms - cms_denc.c

概述

将CMS数据结构写入PEM文件, 并将分离后的加密数据单独写到数据文件.

笔记

/*! \file cms_denc.c
* \note openssl3.2 - 官方demo学习 - cms - cms_denc.c
* 将CMS数据结构写入PEM文件
*/ /** Copyright 2008-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*//** S/MIME detached data encrypt example: rarely done but should the need* arise this is an example....*/
#include <openssl/pem.h>
#include <openssl/cms.h>
#include <openssl/err.h>#include "my_openSSL_lib.h"int main(int argc, char **argv)
{BIO *in = NULL, *out = NULL, *tbio = NULL, *dout = NULL;X509 *rcert = NULL;STACK_OF(X509) *recips = NULL;CMS_ContentInfo *cms = NULL;int ret = EXIT_FAILURE;int flags = CMS_STREAM | CMS_DETACHED;OpenSSL_add_all_algorithms();ERR_load_crypto_strings();/* Read in recipient certificate */tbio = BIO_new_file("signer.pem", "r");if (!tbio)goto err;rcert = PEM_read_bio_X509(tbio, NULL, 0, NULL);if (!rcert)goto err;/* Create recipient STACK and add recipient cert to it */recips = sk_X509_new_null();if (!recips || !sk_X509_push(recips, rcert))goto err;/** OSSL_STACK_OF_X509_free() free up recipient STACK and its contents* so set rcert to NULL so it isn't freed up twice.*/rcert = NULL;/* Open content being encrypted */in = BIO_new_file("encr.txt", "r");dout = BIO_new_file("smencr.out", "wb");if (!in)goto err;/* encrypt content */cms = CMS_encrypt(recips, in, EVP_des_ede3_cbc(), flags);if (!cms)goto err;out = BIO_new_file("smencr.pem", "w");if (!out)goto err;if (!CMS_final(cms, in, dout, flags))goto err;/* Write out CMS structure without content */if (!PEM_write_bio_CMS(out, cms))goto err;ret = EXIT_SUCCESS;err:if (ret != EXIT_SUCCESS) {fprintf(stderr, "Error Encrypting Data\n");ERR_print_errors_fp(stderr);}CMS_ContentInfo_free(cms);X509_free(rcert);OSSL_STACK_OF_X509_free(recips);BIO_free(in);BIO_free(out);BIO_free(dout);BIO_free(tbio);return ret;
}

END

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

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

相关文章

AI与编程学习

在C语言中&#xff0c;指针通常与字符数组或字符串打交道时会涉及到ASCII码的转换&#xff0c;而不是用于表现多位数的第一位。48这个值对应的是ASCII码表中数字字符0的编码。 如果你有一个表示多位数的字符数组&#xff0c;例如&#xff1a; c char number[] "1234&qu…

【DC快速上手教程--1 Setup the DC】

DC快速上手教程--1 Setup the DC 0 Intro1 DC Demo 本篇系列教程介绍总结DC Flow&#xff0c;为了不涉密&#xff0c;在这里以DC labs为Demo做一个入门的介绍&#xff1b;目标&#xff1a;用起来EDA 工具是最基础也是最简单的&#xff1b;重点是如何去分析报告&#xff0c;依据…

vue3实现动态侧边菜单栏的几种方式总结

基于自建json数据的动态侧边菜单栏 后端接口json数据 src/api/menuList.js const menuList [{url: ,name: 人员管理,icon: icon-renyuan,menuId: 1,children: [{url: /user,name: 用户管理,icon: icon-jurassic_user,menuId: 1001,children: []},{url: /role,name: 角色管…

探索短链接:让网络分享更便捷

短链接是一种将长网址缩短为简洁形式的编码&#xff0c;它在互联网领域具有广泛的应用。本文将从多个方面介绍短链接的原理、类型、优势及应用场景&#xff0c;帮助您深入了解这一重要的网络技术。 短链接 | 一个覆盖广泛主题工具的高效在线平台(amd794.com) https://amd794.…

如何自动化部署和发布系统?

如何自动化部署和发布系统&#xff1f; 自动化部署和发布系统可以帮助开发人员更高效地部署和发布代码&#xff0c;减少手动操作的风险和错误。以下是一些自动化部署和发布系统的基本步骤&#xff1a; 选择合适的工具&#xff1a;选择适合你的项目和团队需求的自动化部署和发…

【LabVIEW FPGA 编程入门】使用FPGA IO进行编程

1.在项目中新建一个VI&#xff0c;命名为FPGA IO Test。 2. 可以直接将项目中的FPGA IO拖入程序框图中。 FPGA IO的类型&#xff1a; 数字线&#xff1a; 数字端口&#xff1a; 模拟IO&#xff1a; 其他&#xff1a; 3.如果新增加了FPGA资源&#xff0c;不是创建项目时扫描到的…

Linux centos stream9 parted

在Linux中&#xff0c;常用的磁盘管理工具包括 fdisk、parted、gdisk 等。它们可以用于创建、删除、调整分区、查看分区表等操作。 传统的MBR分区表(即主引导记录)大家都很熟悉&#xff0c;是过去我们使用windows时常见的。所支持的最大卷2T&#xff0c;且对分区有限制&#x…

ubuntu通过virtualbox安装win虚拟机

系统&#xff1a;Ubuntu22.04 需要准备&#xff1a;下载你想用的windows的iso镜像&#xff0c;官方传送门。 一、安装virtualbox sudo apt-get install virtualbox安装完成后&#xff0c;打开Applications&#xff0c;找到virtualbox&#xff0c;点击启动 二、安装windows虚…

【Microsoft Edge】版本 109.0.1518.55 (正式版本) (64 位) 更新失败解决方案

Microsoft Edge 版本号 109.0.1518.55&#xff08;正式版本&#xff09;&#xff08;64位&#xff09; 更新直接报错 检查更新时出错: 无法创建该组件(错误代码 3: 0x80040154 – system level) 问题出现之前 之前电脑日常硬盘百分百&#xff08;删文件和移动文件都慢得像…

漏洞复现-金和OA GetAttOut接口SQL注入漏洞(附漏洞检测脚本)

免责声明 文章中涉及的漏洞均已修复&#xff0c;敏感信息均已做打码处理&#xff0c;文章仅做经验分享用途&#xff0c;切勿当真&#xff0c;未授权的攻击属于非法行为&#xff01;文章中敏感信息均已做多层打马处理。传播、利用本文章所提供的信息而造成的任何直接或者间接的…

Linux配置JAR包为服务实现自启动

一、实现bash脚本 1.1 绘图工具 绘图需安装idea的插件plantUML-Integration 只需要上图一个就可以&#xff0c;别的也不需要装。 启动服务的逻辑如下 关闭服务的逻辑如下 1.2 逻辑实现 在/root路径下创建entrance文件&#xff0c;实现逻辑如下 #!/usr/bin/env bash # 2>…

数学建模.皮尔逊相关系数假设检验

一、步骤 查表找临界值 二、更好的方法 三、使用条件 作图可以使用spss 这个图对不对还不好说&#xff0c;因为还没进行正态分布的验证 四、正态分布验证 &#xff08;1&#xff09;JB检验 所以之前的数据的那个表是错的&#xff0c;因为不满足正态分布 &#xff08;2&#xff…

js垃圾回收机制

JavaScript 使用自动垃圾回收&#xff08;Garbage Collection&#xff09;机制来管理内存&#xff0c;以确保不再使用的对象被及时清理&#xff0c;释放内存资源。下面是 JavaScript 的垃圾回收机制的一般原则&#xff1a; 标记清除&#xff08;Mark and Sweep&#xff09;&…

设置了uni.chooseLocation,小程序中打不开

设置了uni.chooseLocation&#xff0c;在小程序打不开&#xff0c;点击没反应&#xff0c;地图显现不出来&#xff1b; 解决方案&#xff1a; 1.Hbuilder——微信开发者工具路径没有配置 打开工具——>设置 2.微信小程序服务端口没有开 解决方法&#xff1a;打开微信开发…

[Linux 进程(三)] 进程优先级,进程间切换,main函数参数,环境变量

文章目录 1、进程优先级1.1 Linux下查看进程优先级1.2 Linux 进程优先级的修改PRI and NItop命令配合操作更改优先级 1.3 竞争 独立 并行 并发 2、进程间切换3、Linux2.6内核进程调度队列3.1 活跃进程3.2 过期进程 4 main函数参数 — 命令行参数4.1 利用main函数的参数实现一个…

强化学习应用(一):基于Q-learning的物流配送路径规划研究(提供Python代码)

一、Q-learning算法简介 Q-learning是一种强化学习算法&#xff0c;用于解决基于马尔可夫决策过程&#xff08;MDP&#xff09;的问题。它通过学习一个值函数来指导智能体在环境中做出决策&#xff0c;以最大化累积奖励。 Q-learning算法的核心思想是使用一个Q值函数来估计每…

在CentOS上设置和管理静态HTTP网站的版本控制

在CentOS上设置和管理静态HTTP网站的版本控制是一项重要的任务&#xff0c;它可以帮助您跟踪和回滚对网站所做的更改&#xff0c;确保数据的一致性和完整性。以下是在CentOS上设置和管理静态HTTP网站的版本控制的步骤&#xff1a; 安装版本控制系统在CentOS上安装Git或其他版本…

dcat admin框架开发前台

前言 dcat admin框架是一款后台框架&#xff0c;我们需要使用laravel开发前台框架&#xff0c;dcat admin本身基于laravel&#xff0c;没必要在重新创建前台项目&#xff0c;这篇文章记录我的开发过程。 开发过程 1. 迁移数据库(非必要) 对于dcat admin来说本身存在一个后台…

GPT-4V的图片识别和分析能力原创

GPT-4V是OpenAI开发的大型语言模型&#xff0c;是GPT-4的升级版本。GPT-4V在以下几个方面进行了改进&#xff1a; 模型规模更大&#xff1a;GPT-4V的参数量达到了1.37T&#xff0c;是GPT-4的10倍。 训练数据更丰富&#xff1a;GPT-4V的训练数据包括了1.56T的文本和代码数据。 …

PyCharm连接服务器 - 2

文章目录 PyCharm连接服务器-21.如何连接服务器&#xff1f;2.如何在终端窗口打开SSH连接&#xff1f;3.Terminal终端出现中文乱码的解决办法&#xff1f;4.如何查看远程服务器的树目录结构&#xff1f;5.如何配置代码同步&#xff1f;6.如何为项目配置远程服务器中的python解释…