openssl ans1定义的实体
由于openssl中的ASN1的结构是通过宏来定义的,导致我们经常找不到他的结构在哪里,通过阅读rfc,并且对照OPENSSL,发现OPENSSL中的结构基本是按照相关rfc中的名称,在openssl中进行搜索,就能找到具体的定义了。
搜索这两个结构,基本就能搜索出对应的结构,这些定义在asn1t.h中
ASN1_SEQUENCE
ASN1_SEQUENCE_ref()
- pkcs1中定义的公私钥
某个类的ans1的结构查看rfc,openssl中的asn1结构和rfc中的名称一致
pkcs1 rfc
pkcs1公钥私钥 对应
RSAPrivateKey
RSAPublicKey 定义在rsa_asn1.c中 - pkcs8中定义的私钥
rfc pkcs8
https://www.rfc-editor.org/rfc/rfc5208#section-5
rfc中的名称为PrivateKeyInfo 还有一种EncryptedPrivateKeyInfo
在openssl中搜索PrivateKeyInfo 可以搜索,对应的是PKCS8_PRIV_KEY_INFO
定义在ossl_type.h中
- x509的定义
x509 rfc
https://www.rfc-editor.org/rfc/rfc5280#section-3.1
可以找到证书的定义,定义在x_x509.c中
ASN1_SEQUENCE_ref(X509, x509_cb) = {
ASN1_EMBED(X509, cert_info, X509_CINF),
ASN1_EMBED(X509, sig_alg, X509_ALGOR),
ASN1_EMBED(X509, signature, ASN1_BIT_STRING)
} ASN1_SEQUENCE_END_ref(X509, X509)
- pkcs7的定义
https://www.rfc-editor.org/rfc/rfc2315
openssl定义在pk7_asn1.c中
ASN1_NDEF_SEQUENCE_cb(PKCS7, pk7_cb) = {
ASN1_SIMPLE(PKCS7, type, ASN1_OBJECT),
ASN1_ADB_OBJECT(PKCS7)
}ASN1_NDEF_SEQUENCE_END_cb(PKCS7, PKCS7)
-
sm2密文的定义
sm2密文封装
定义在sm2_crypt.c中
ASN1_SEQUENCE(SM2_Ciphertext) = {
ASN1_SIMPLE(SM2_Ciphertext, C1x, BIGNUM),
ASN1_SIMPLE(SM2_Ciphertext, C1y, BIGNUM),
ASN1_SIMPLE(SM2_Ciphertext, C3, ASN1_OCTET_STRING),
ASN1_SIMPLE(SM2_Ciphertext, C2, ASN1_OCTET_STRING),
} ASN1_SEQUENCE_END(SM2_Ciphertext) -
sm2签名的定义
sm2签名
看sm2_sign.c中,其实生成了ECDSA_SIG,搜索,可得
定义在ec_asn1.c中
ASN1_SEQUENCE(ECDSA_SIG) = {
ASN1_SIMPLE(ECDSA_SIG, r, CBIGNUM),
ASN1_SIMPLE(ECDSA_SIG, s, CBIGNUM)
} static_ASN1_SEQUENCE_END(ECDSA_SIG)
-
ec 公私钥的定义
ec_asn1.c
ASN1_SEQUENCE(EC_PRIVATEKEY) = {
ASN1_EMBED(EC_PRIVATEKEY, version, INT32),
ASN1_SIMPLE(EC_PRIVATEKEY, privateKey, ASN1_OCTET_STRING),
ASN1_EXP_OPT(EC_PRIVATEKEY, parameters, ECPKPARAMETERS, 0),
ASN1_EXP_OPT(EC_PRIVATEKEY, publicKey, ASN1_BIT_STRING, 1)
} static_ASN1_SEQUENCE_END(EC_PRIVATEKEY) -
公钥编码
所有公钥最后都编码成X509_PUBKEY
定义在x_pubkey.c中
ASN1_SEQUENCE_cb(X509_PUBKEY, pubkey_cb) = {
ASN1_SIMPLE(X509_PUBKEY, algor, X509_ALGOR),
ASN1_SIMPLE(X509_PUBKEY, public_key, ASN1_BIT_STRING)
} ASN1_SEQUENCE_END_cb(X509_PUBKEY, X509_PUBKEY)
相关文章:
openssl ans1定义的实体
由于openssl中的ASN1的结构是通过宏来定义的,导致我们经常找不到他的结构在哪里,通过阅读rfc,并且对照OPENSSL,发现OPENSSL中的结构基本是按照相关rfc中的名称,在openssl中进行搜索,就能找到具体的定义了。…...
【Linux Shell】4. 数组
文章目录 【 1. 数组的定义 】【 2. 读取数组 】【 3. 关联数组 】3.1 关联数组的定义3.2 关联数组元素的调用 【 4. 获取数组中的所有元素 】【 5. 获取数组的长度 】 数组中可以存放多个值。 Bash Shell 只支持一维数组(不支持多维数组),初…...
蓝牙运动耳机哪款好用?运动用什么耳机比较好?2024运动耳机推荐
在众多的耳机类型中,运动耳机因其独特的设计和功能而备受青睐。它们不仅要具备出色的音质,还需要能够适应激烈的运动环境,如防水、防汗、牢固耐用等。今天,我想向大家推荐一些在这些方面表现出色的运动耳机,这些耳机…...
XD6500S一款串口SiP模块 射频LoRa芯片 内置sx1262
1.1产品介绍 XD6500S是一款集射频前端和LoRa射频于一体的LoRa SIP模块系列收发器SX1262 senies,支持LoRa⑧和FSK调制。LoRa技术是一种扩频协议优化低数据速率,超长距离和超低功耗用于LPWAN应用的通信。 XD6500S设计具有4.2 mA的有效接收电流消耗&#…...
【华为OD机试真题2023CD卷 JAVAJS】测试用例执行计划
华为OD2023(C&D卷)机试题库全覆盖,刷题指南点这里 测试用例执行计划 时间限制:1s 空间限制:256MB 限定语言:不限 题目描述: 某个产品当前迭代周期内有N个特性()需要进行覆盖测试,每个特性都被评估了对应的优先级,特性使用其ID作为下标进行标识。 设计了M个测试用…...
猫长期吃猫粮好吗?主食冻干猫粮那种好吃又健康
许多铲屎官可能认为,只需给猫咪喂食猫粮就足够了。然而,猫咪实际上是肉食动物,对蛋白质的需求非常高。冻干猫粮采用低温真空干燥处理技术,将鲜肉经过预冻、升华、解析三个过程,去除水分的同时保持蛋白质等营养物质不变…...
计算机毕业设计-----ssm停车位租赁系统
项目介绍 该系统采用了经典的springmvc,spring,mybatis的框架组合,对于物业公司来说,有助于管理车位信息。系统分为了两个角色:车主和租客。 车主主要功能包括: 停车位信息 停车位列表 添加停车位 租赁合…...
Git保姆级安装教程
Git保姆级安装教程 一、去哪下载二、安装2.1 具体安装步骤2.2 设置全局用户签名 一、去哪下载 1、官网(有最新版本):https://git-for-windows.github.io/ 2、本人学习时安装的版本,链接:https://pan.baidu.com/s/1uAo…...
听GPT 讲Rust源代码--compiler(34)
File: rust/compiler/rustc_middle/src/ty/print/mod.rs 在Rust源代码中,文件rust/compiler/rustc_middle/src/ty/print/mod.rs的作用是定义了打印类型和其他相关信息的功能。 具体来说,该文件中定义了三个trait,分别为Print<tcx>、Pri…...
视频融合云平台/智慧监控平台EassyCVR告警警告出错是什么原因?该如何解决?
视频集中存储/云存储/视频监控管理平台EasyCVR能在复杂的网络环境中,将分散的各类视频资源进行统一汇聚、整合、集中管理,实现视频资源的鉴权管理、按需调阅、全网分发、智能分析等。AI智能/大数据视频分析EasyCVR平台已经广泛应用在工地、工厂、园区、楼…...
Gin 路由注册与请求参数获取
Gin 路由注册与请求参数获取 文章目录 Gin 路由注册与请求参数获取一、Web应用开发的两种模式1.前后端不分离模式2.前后端分离模式 二、RESTful介绍三、API接口3.1 RESTful API设计指南3.2 API与用户的通信协议3.3 RestFul API接口设计规范3.3.1 api接口3.3.2 接口文档…...
Linux第11步_解决“挂载后的U盘出现中文乱码”
学习完“通过终端挂载和卸载U盘”,我们发现U盘下的中文文件名会出现乱码,现在讲解怎么解决这个问题。其实就是复习一下“通过终端挂载和卸载U盘”,单独讲解,是为了解决问题,一次性搞好,我们会不长记性。 在…...
【第一节】安装java jdk 21
在 Java Downloads | Oracle 中国 网站下载jdk21的包 查看jdk 命令 /usr/libexec/java_home -V 设置环境变量 配置环境变量 在~/.bash_profile文件里面加入以下环境变量 export JAVA_HOME/Library/Java/JavaVirtualMachines/jdk-21.jdk/Contents/Home export PATH$PATH:$J…...
vue3+echart绘制中国地图并根据后端返回的坐标实现涟漪动画效果
1.效果图 2.前期准备 main.js app.use(BaiduMap, {// ak 是在百度地图开发者平台申请的密钥 详见 http://lbsyun.baidu.com/apiconsole/key */ak: sRDDfAKpCSG5iF1rvwph4Q95M6tDCApL,// v:3.0, // 默认使用3.0// type: WebGL // ||API 默认API (使用此模式 BMapBMapGL) });i…...
HCIA-Datacom题库(自己整理分类的)_09_Telent协议【13道题】
一、单选 1.某公司网络管理员希望能够远程管理分支机构的网络设备,则下面哪个协议会被用到? RSTP CIDR Telnet VLSM 2.以下哪种远程登录方式最安全? Telnet Stelnet v100 Stelnet v2 Stelnet v1 解析: Telnet 明文传输…...
Git专栏篇
一、基础知识 二、常用手段 1. 复制其他提交到本分支 目的:现有git仓库,该仓库有两个分支a和b,将a分支的最近三个版本提交内容复制 到b分支的提交上。 在 Linux 系统中,你可以按照以下步骤将分支 A 的最近三个版本的提交内容复…...
Java-字符串-String类
1 需求 1.1 Field Summary 1.2 Constructor Summary public String() : 空构造public String(byte[] bytes) : 把字节数组转成字符串public String(byte[] bytes,int index, int length) : 把字节数组的一部分转成字符串public String(char[] value) : 把字符数组转成字符串p…...
ubuntu安装docker指定版本
ubuntu安装docker指定版本 https://docs.docker.com/engine/install/ubuntu/ 安装apt源 # Add Dockers official GPG key: sudo apt-get update sudo apt-get install ca-certificates curl gnupg sudo install -m 0755 -d /etc/apt/keyrings curl -fsSL https://download.d…...
说一下 jsp 的 4 种作用域?
说一下 jsp 的 4 种作用域? 在 JSP(JavaServer Pages)中,有四种作用域,它们决定了对象的可见性和生命周期。这四种作用域分别是: 页面作用域(Page Scope): 页面作用域表…...
性能分析与调优: Linux 使用ELRepo升级CentOS内核
目录 一、实验 1.环境 2.agent 服务器使用ELRepo升级CentOS内核 二、问题 1. RHEL-7, SL-7 或者 CentOS-7系统如何安装ELRepo 2.RHEL-8或者RHEL-9系统如何安装ELRepo 一、实验 1.环境 (1)主机 表1-1 主机 主机架构组件IP备注prometheus 监测 系…...
AI编码助手配置框架:六层缰绳架构实现团队规范与上下文持久化
1. 项目概述:为什么你的AI编码助手总像个“健忘的实习生”? 如果你和我一样,已经深度使用Claude Code、Cursor这类AI编码助手超过半年,那你一定经历过这种“血压升高”的时刻:明明昨天刚跟它详细解释过项目的架构规范…...
ARM PMU性能监控单元架构与PMEVTYPER寄存器详解
1. ARM PMU性能监控单元架构解析性能监控单元(Performance Monitoring Unit, PMU)是现代ARM处理器中用于硬件级性能分析的关键组件。作为芯片上的专用硬件计数器,PMU能够在不显著影响程序执行效率的前提下,实时捕获各类微架构事件。与软件层面的性能分析…...
HDLbits实战解析:从异步复位到同步复位,掌握三段式FSM的核心差异与设计要点
1. 异步复位与同步复位的本质区别 在数字电路设计中,复位信号就像电脑的重启按钮,它能将电路恢复到初始状态。但很多初学者第一次在HDLbits上做FSM练习题时,会被"asynchronous reset"和"synchronous reset"这两个概念搞…...
告别WSL安装玄学:从0x80072f78到0x800701bc,一次搞懂Windows 11下的完整避坑指南
从0x80072f78到0x800701bc:Windows 11下WSL完整避坑手册 每次在Windows 11上安装WSL时,那些神秘的错误代码是否让你抓狂?0x80072f78、0x800701bc...它们像是一道道密码,阻挡着你进入Linux开发环境的大门。作为长期在Windows和Linu…...
从IMU到GPS:手把手教你用ESKF实现机器人定位(附代码避坑指南)
从IMU到GPS:手把手教你用ESKF实现机器人定位(附代码避坑指南) 在机器人定位领域,误差状态卡尔曼滤波(Error-State Kalman Filter, ESKF)正逐渐成为处理IMU和GPS数据融合的主流方法。本文将带您深入理解ESK…...
开源协作平台Polar:一体化设计如何重塑开发者工作流
1. 项目概述:一个面向开发者的开源协作平台最近在和一些独立开发者朋友聊天时,大家普遍提到一个痛点:当你想启动一个开源项目,或者和几个朋友一起搞点小东西时,整个协作流程其实挺割裂的。代码托管在GitHub或GitLab&am…...
示波器平均值功能实战:从噪声中精准提取电机故障信号
1. 项目概述:用示波器诊断模型火车电机故障作为一名在电子工程领域摸爬滚打了十几年的老工程师,我手边最离不开的工具,除了万用表,就是示波器。很多人觉得示波器是研发实验室里的高端设备,离日常维修很远,但…...
图解UART串口通信:从电平标准到数据帧的完整解析
1. UART串口通信基础:从物理层到协议层 第一次接触嵌入式开发时,我被UART这个名字唬住了——Universal Asynchronous Receiver/Transmitter(通用异步收发器),听起来像是某种高端设备。直到用USB转TTL模块点亮了第一个L…...
终极Windows热键侦探指南:3分钟解决快捷键冲突难题
终极Windows热键侦探指南:3分钟解决快捷键冲突难题 【免费下载链接】hotkey-detective A small program for investigating stolen key combinations under Windows 7 and later. 项目地址: https://gitcode.com/gh_mirrors/ho/hotkey-detective 你是否曾经遇…...
2026出海技术观察:云API接口迭代的能力边界与业务增量空间
摘要:2026年AI出海告别粗放扩张,底层技术适配能力成为竞争核心。云API接口迭代持续优化跨境对接、算力调度与合规适配体系,补齐传统出海技术短板,为企业全球化精细化运营提供坚实支撑。一、2026 AI出海新格局:底层接口…...
