openssl3.2 - note - Decoders and Encoders with OpenSSL

news2024/12/22 22:49:45

文章目录

    • openssl3.2 - note - Decoders and Encoders with OpenSSL
    • 概述
    • 笔记
    • 编码器/解码器的调用链
      • OSSL_STORE
    • 编码器/解码器的名称和属性
    • OSSL_FUNC_decoder_freectx_fn
    • OSSL_FUNC_encoder_encode_fn
    • 官方文档
    • END

openssl3.2 - note - Decoders and Encoders with OpenSSL

概述

看了官方文档 Decoders and Encoders with OpenSSL, 做个笔记

笔记

解码器 - 将openssl对象的数据转换为用户面向字节的数据
编码器 - 将用户面向字节的数据转换为openssl对象数据.

编码器和解码器都要创建上下文, 才能使用.

OSSL_DECODER_CTX *OSSL_DECODER_CTX_new(void);

OSSL_DECODER_CTX *
OSSL_DECODER_CTX_new_for_pkey(EVP_PKEY **pkey,
                              const char *input_type,
                              const char *input_structure,
                              const char *keytype, int selection,
                              OSSL_LIB_CTX *libctx, const char *propquery);

OSSL_ENCODER_CTX *OSSL_ENCODER_CTX_new(void);
OSSL_ENCODER_CTX *OSSL_ENCODER_CTX_new_for_pkey(const EVP_PKEY *pkey,
                                                int selection,
                                                const char *output_type,
                                                const char *output_struct,
                                                const char *propquery);

解码器状态

  • 如果能识别输入的数据格式, 进入下一个解码器.
  • 如果不能识别输入的数据格式, 重新定位到输入数据头部, 尝试用剩下的解码器来解码.
  • 如果读取字节输入时发生致命错误, 就退出处理.

编码器状态
编码器比解码器更具确定性. 只有成功,失败2种状态.

OSSL_PARAM
如果要读写什么内容, 干什么活, 都通过相关接口设置 OSSL_PARAM(没找到官方例子代码, 参数设置都没用OSSL_PARAM; 但是在EVP_PKEY的实现, 能看到需要对上下文设置OSSL_PARAM)

编码器/解码器的调用链

在这里插入图片描述

OSSL_STORE

针对输入的数据, 生成一个回溯解码器的链条(即使数据是未知的).
这样就可以用已知的解码器自动去尝试解码用户(或对象带的附加数据)的输入.
如果回溯解码器链条上的所有解码器都处理不了(不认识)输入的数据, 才失败.

编码器/解码器的名称和属性

每个编码器和解码器都有确定的名称和属性, 表明编码/解码器的功能/输入/输出.

OSSL_FUNC_decoder_freectx_fn

OSSL_FUNC_decoder_freectx_fn是解码器函数类型.
没看到谁给openssl的解码器赋值…

OSSL_FUNC_encoder_encode_fn

OSSL_FUNC_encoder_encode_fn是编码器函数类型
编码器的赋值都是用宏来弄的

// e.g. below
MAKE_BLOB_ENCODER(ec, ec, PUBLIC_KEY);

官方文档

file:///D:/3rd_prj/crypt/openssl-3.2.0/doc/html/man7/provider-decoder.html
file:///D:/3rd_prj/crypt/openssl-3.2.0/doc/html/man7/provider-encoder.html
file:///D:/3rd_prj/crypt/openssl-3.2.0/doc/html/man7/provider-object.html

END

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

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

相关文章

大数据Doris(六十八):基于Doris on ES的架构实现总结

文章目录 基于Doris on ES的架构实现总结 一、Mem Join架构遗留的核心问题 二、Doris

河南大学大数据平台技术实验报告二

大数据平台技术课程实验报告 实验二:HDFS操作实践 姓名:杨馥瑞 学号:2212080042 专业:数据科学与大数据技术 年级:2022级 主讲教师:林英豪 实验时间:2024年3月15日3点 至 2024年3月15日4点40 …

力扣经典题:分割平衡字符串

大佬的代码非常简洁 int balancedStringSplit(char * s){short i0,count0,sign0;while(s[i]){signs[i]L?sign1:sign-1;if(sign0) count;}return count; }

安装gpu-torch(已经成功)

### !!!直接使用pip安装,不要使用conda安装,使用conda安装总是会安装成CPU版本。 1.第一次尝试 之前按照官网安装pytorch的命令进行安装,结果安装出来是cpu版本的,试过https://blog.csdn.net/…

【日常记录】【CSS】css下划线动画

文章目录 1、效果2、思路3、代码 1、效果 2、思路 整体可以用 背景来做线:可以用 渐变 配合 background-size 、 background-position 、background-repeat正向动画:可以不断追加 background-size x 轴的大小来控制,当鼠标移入的时候&#x…

【应急响应靶场web2】

文章目录 前言 一、应急响应 1、背景 2、webshell查杀 3、日志排查 1)apache日志 2)nginx日志 3)ftp日志 4、隐藏账户 5、文件筛选 二、漏洞复现 总结 前言 靶场来源:知攻善防实验室 一、应急响应 1、背景 小李在某…

【算法训练营】周测1

清华大学驭风计划课程链接 学堂在线 - 精品在线课程学习平台 (xuetangx.com) 如果需要答案代码可以私聊博主 有任何疑问或者问题,也欢迎私信博主,大家可以相互讨论交流哟~~ 考题11-1 题目描述 有一个初始时为空的序列,你的任务是维护这个…

SpringBoot(异常处理)

SpringBoot(异常处理) 1.基本介绍 2.debug异常处理机制 1.找到 DefaultErrorViewResolver 2.下断点 3.debug启动,浏览器输出一个不存在的页面 4.第一次查找 error/404 1.查看目前要找的视图名 2.准备去查找资源 3.准备从四个默认存放静态资…

使用 FastAPI APIRouter 构建高效的 API

FastAPI 是一个现代的、高性能的 Python Web 框架,它提供了 APIRouter 来帮助组织和管理路由。APIRouter 是一个可用于组织和分组路由的类,使得代码结构更加清晰和可维护。本文将介绍 FastAPI APIRouter 的用法,包括实践案例以及在 IDE 编辑器…

【商业|数据科学主题会议推荐】2024年商业分析与数据科学国际学术会议(ICBADS 2024)

【商业|数据科学主题会议推荐】2024年商业分析与数据科学国际学术会议(ICBADS 2024) 征稿主题 (以下主题包括但不限于) 多媒体决策 决策理论与决策科学 数字市场设计与运营 降维 电子商务 道德决策 财务分析 群体决策与软件 医疗保…

podman proxy 【podman 代理】

文章目录 方法1: 为当前用户设置环境变量方法2:为 Podman 服务设置配置文件方法3: 为单个 Podman 命令设置代理方法四: 配置 http-proxy.conf 方法1: 为当前用户设置环境变量 您可以为当前用户设置 HTTP_PROXY 和 HTTPS_PROXY 环境变量,Podman 将自动读取这些环境变…

C语言从入门到熟悉------第四阶段

指针 地址和指针的概念 要明白什么是指针,必须先要弄清楚数据在内存中是如何存储的,又是如何被读取的。如果在程序中定义了一个变量,在对程序进行编译时,系统就会为这个变量分配内存单元。编译系统根据程序中定义的变量类型分配…

【项目笔记】java微服务:黑马头条(day04)

文章目录 自媒体文章-自动审核1)自媒体文章自动审核流程2)内容安全第三方接口2.1)概述2.2)准备工作2.3)文本内容审核接口2.4)图片审核接口2.5)项目集成 3)app端文章保存接口3.1)表结构说明3.2)分布式id3.3)思路分析3.4)feign接口 4)自媒体文章自动审核功能实现4.1)表结构说明4.…

linux ffmpeg编译

下载源码 https://ffmpeg.org/ csdn下载源码包 不想编译可以直接下载使用静态版本 https://ffmpeg.org/download.html https://johnvansickle.com/ffmpeg/ 根据cpu类型,下载解压后就可以直接使用了。 linux编译 安装底层依赖 yum install gcc yum isntall …

mysql用存储过程更新表

打开workbench,点击下面的按钮 编写存储过程 CREATE DEFINERrootlocalhost PROCEDURE new_procedure10(IN myId int,IN myTitle varchar(20),IN myContent varchar(20)) BEGIN if myTitle is NULL then select title into myTitle from blog where idmyId; end if; if myC…

学习通刷视频刷题脚本及安装使用过程

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 前言一、安装插件二、复制脚本文件链接三、启动脚本四、登录学习通(切记一倍速就行不然被封哦)五、最好先把答题关掉先刷视频 前言 解决学习…

C++中的多值返回:解锁函数返回值的神奇力量

C中的多值返回:解锁函数返回值的神奇力量 在C编程中,有时候我们需要从函数中返回多个值。虽然C中的函数通常只能返回一个值,但有几种技术和惯用法可以实现返回多个值的效果。本文将介绍C中实现多值返回的几种常用方法,包括引用、指…

JavaWeb(p116-p134)

#驱动类名称 spring.datasource.driver-class-namecom.mysql.cj.jdbc.Driver #数据库连接的ur1 spring.datasource.urljdbc:mysql://localhost:3306/mybatis #连接数据库的用户名 spring.datasource.usernameroot #连接数据库的密码 spring.datasource.password**********2.1 数…

【分布式websocket 】前端vuex管理客户端消息crud!使用localStorage来存储【第19期】

前言 聊天系统客户端是要存储消息的,因为所有所有的历史消息都从服务器拉的话一方面服务器压力大,另一方面也耗费用户流量。所以客户端存储消息是势在必行的。如何存储呢上一篇文章也写了,大概就是浏览器的话是localStorage或者IndexedDB。然…

029—pandas 遍历行非向量化修改数据

前言 在 pandas 中,向量化计算是指利用 pandas 对象的内置方法和函数,将操作应用到整个数据结构的每个元素,从而在单个操作中完成大量的计算。 但在一些需求中,我们无法使用向量化计算,就需要迭代操作,本例…