openssl3.2 - 官方demo学习 - pkey - EVP_PKEY_DSA_keygen.c

文章目录

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

openssl3.2 - 官方demo学习 - pkey - EVP_PKEY_DSA_keygen.c

概述

das.h 中有2个公共函数(给pkey目录的所有工程公用):
print_bn() 打印大数值
dsa_print_key() 打印key值

打印_evp_pkey_dsa的共有数据(p,q,g, seed, pcounter) + 公钥/私钥 + DSA参数
每次产生的pkey都不一样(因为seed不一样)

笔记

/*!
\file EVP_PKEY_DSA_keygen.c
\note
openssl3.2 - 官方demo学习 - pkey - EVP_PKEY_DSA_keygen.c
das.h 中有2个公共函数(给pkey目录的所有工程公用):
print_bn() 打印大数值
dsa_print_key() 打印key值打印_evp_pkey_dsa的共有数据(p,q,g, seed, pcounter) + 公钥/私钥 + DSA参数
每次产生的pkey都不一样(因为seed不一样)
*//*-* Copyright 2022-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*//** Example showing how to generate an DSA key pair.*/#include <openssl/evp.h>
#include "dsa.h"#include "my_openSSL_lib.h"/** Generate dsa params using default values.* See the EVP_PKEY_DSA_param_fromdata demo if you need* to load DSA params from raw values.* See the EVP_PKEY_DSA_paramgen demo if you need to* use non default parameters.*/
EVP_PKEY* dsa_genparams(OSSL_LIB_CTX* libctx, const char* propq)
{EVP_PKEY* _evp_pkey_dsa_param = NULL;EVP_PKEY_CTX* _evp_pkey_ctx = NULL;/* Use the dsa params in a EVP_PKEY ctx */_evp_pkey_ctx = EVP_PKEY_CTX_new_from_name(libctx, "DSA", propq);if (_evp_pkey_ctx == NULL) {fprintf(stderr, "EVP_PKEY_CTX_new_from_name() failed\n");return NULL;}if (EVP_PKEY_paramgen_init(_evp_pkey_ctx) <= 0|| EVP_PKEY_paramgen(_evp_pkey_ctx, &_evp_pkey_dsa_param) <= 0) {fprintf(stderr, "DSA paramgen failed\n");goto cleanup;}
cleanup:EVP_PKEY_CTX_free(_evp_pkey_ctx);return _evp_pkey_dsa_param;
}int main(int argc, char** argv)
{int ret = EXIT_FAILURE;OSSL_LIB_CTX* _ossl_lib_ctx = NULL;const char* propq = NULL;EVP_PKEY* _evp_pkey_dsa_param = NULL;EVP_PKEY* _evp_pkey_dsa = NULL;EVP_PKEY_CTX* _evp_pkey_ctx = NULL;/* Generate random dsa params */_evp_pkey_dsa_param = dsa_genparams(_ossl_lib_ctx, propq);if (_evp_pkey_dsa_param == NULL)goto cleanup;/* Use the dsa params in a EVP_PKEY ctx */_evp_pkey_ctx = EVP_PKEY_CTX_new_from_pkey(_ossl_lib_ctx, _evp_pkey_dsa_param, propq);if (_evp_pkey_ctx == NULL) {fprintf(stderr, "EVP_PKEY_CTX_new_from_pkey() failed\n");goto cleanup;}/* Generate a key using the dsa params */if (EVP_PKEY_keygen_init(_evp_pkey_ctx) <= 0|| EVP_PKEY_keygen(_evp_pkey_ctx, &_evp_pkey_dsa) <= 0) {fprintf(stderr, "DSA keygen failed\n");goto cleanup;}/*! 打印_evp_pkey_dsa的共有数据(p,q,g, seed, pcounter) + 公钥/私钥 */if (!dsa_print_key(_evp_pkey_dsa, 1, _ossl_lib_ctx, propq))goto cleanup;/*! 打印_evp_pkey_dsa2的共有数据(p,q,g, seed, pcounter) + DSA参数 */if (!dsa_print_key(_evp_pkey_dsa, 0, _ossl_lib_ctx, propq))goto cleanup;ret = EXIT_SUCCESS;
cleanup:EVP_PKEY_free(_evp_pkey_dsa);EVP_PKEY_free(_evp_pkey_dsa_param);EVP_PKEY_CTX_free(_evp_pkey_ctx);return ret;
}

END

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

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

相关文章

[SS]语义分割——基础知识

语义分割前言 一、定义 1、概念 语义分割&#xff08;Semantic Segmentation&#xff09;是计算机视觉中的一项任务&#xff0c;目标是将图像中的每个像素按其语义类别进行分类。与传统的目标检测不同&#xff0c;语义分割对图像中的每个像素都进行分类&#xff0c;而不是只…

Vue 如何把computed里的逻辑提取出来

借用一下百度的ai 项目使用&#xff1a; vue 文件引入 <sidebar-itemv-for"route in routes":key"route.menuCode":item"route":base-path"route.path"click"onColor"/>import { handleroutes } from "./handle…

牛客-寻找第K大、LeetCode215. 数组中的第K个最大元素【中等】

文章目录 前言牛客-寻找第K大、LeetCode215. 数组中的第K个最大元素【中等】题目及类型思路思路1&#xff1a;大顶堆思路2&#xff1a;快排二分随机基准点 前言 博主所有博客文件目录索引&#xff1a;博客目录索引(持续更新) 牛客-寻找第K大、LeetCode215. 数组中的第K个最大元…

vue 开发规范

命名规范 不使用保留字 变量 小驼峰能描述变量内容复数加s // 我的app名称为朝阳的百宝箱 let myAppName 朝阳的百宝箱// 我的书籍有《卓有成效的管理者》、《牧羊少年奇幻之旅》 let myBooks [‘《卓有成效的管理者》’,‘《牧羊少年奇幻之旅》’]常量 全大写用_分隔单词…

ARCGIS PRO SDK Annotation 概念及操作

使用Annotation的API功能。Annotation 的API功能位于ArcGIS.Core.dll中。Annotation API通常与地理数据库、地图创作和编辑结合使用。ArcGIS.Core.dll ArcGIS.Core.Data.map API中的几乎所有方法都应该在MCT上调用。 一、Annotation featureclass 1、从GeodatabaseGeodatabase数…

MyBatis-Plus之内置接口Service接口Mapper接口

目录 1.Service接口 1.1.Save 1.2.SaveOrUpdate 1.3.Remove 1.4.Update 1.5.Get 1.6.List 2.Mapper接口 2.1.Insert 2.2.Delete 2.3.Update 2.4.Select 1.Service接口 Service CRUD 接口说明&#xff1a; 通用 Service CRUD 封装IService接口&#xff0c;进一步封…

C#: CRC8,CRC16,CRC32 校验代码

说明&#xff1a;CRC即循环冗余校验码&#xff08;Cyclic Redundancy Check&#xff09;&#xff1a;是数据通信领域中最常用的一种查错校验码&#xff0c;其特征是信息字段和校验字段的长度可以任意选定。循环冗余检查&#xff08;CRC&#xff09;是一种数据传输检错功能&…

统计学-R语言-5.1

文章目录 前言随机性和规律性概率变量的分布离散型--二项、泊松、几何二项分布几何分布泊松分布 连续型--均匀、正态均匀分布正态分布 其它统计分布--χ2分布、t分布、F分布χ2分布t分布F分布 练习 前言 从本篇文章开始介绍有关概率与分布的介绍。 随机性和规律性 当不能预测…

嵌入式-Stm32-江科大基于标准库的GPIO的八种模式

文章目录 一&#xff1a;GPIO输入输出原理二&#xff1a;GPIO基本结构三&#xff1a;GPIO位结构四&#xff1a;GPIO的八种模式道友&#xff1a;相信别人&#xff0c;更要一百倍地相信自己。 &#xff08;推荐先看文章&#xff1a;《 嵌入式-32单片机-GPIO推挽输出和开漏输出》…

汽车排量中的1.5T是什么意思,常见的排量有哪些?

问题描述&#xff1a;汽车排量中的1.5T是什么意思&#xff0c;常见的排量有哪些&#xff1f; 问题解答&#xff1a; 汽车排量通常用来表示发动机的容积&#xff0c;即每个发动机的活塞在运动中从上到下运动一次所能容纳的气体的总体积。排量的单位通常是升&#xff08;L&…

vue-cli解决跨域

在vue.config.js中 找到devServer 在devServer中创建proxy代理 proxy:{ path&#xff08;路径中包含这个path就会导航到target的目标接口&#xff09;&#xff1a;{ target:"目标接口" } } 例&#xff1a; 1 同源策略只针对于浏览器&#xff0c;代理服务器到后端接…

spring boot 引入redis报错

bug描述&#xff1a; org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name ‘assetChangeOrderController’: Unsatisfied dependency expressed through field ‘redisTemplate’; nested exception is org.springframework.be…

操作系统课程设计-Linux 进程控制

目录 前言 1 实验题目 2 实验目的 3 实验内容 3.1 进程的创建 3.1.1 步骤 3.1.2 关键代码 3.2 子进程执行新任务 3.2.1 步骤 3.2.2 关键代码 4 实验结果与分析 4.1 进程的创建 4.2 子进程执行新任务 5 代码 5.1 进程的创建 5.2 子进程执行新任务 前言 本实验为课…

Electron+React项目打包踩坑记录

首先&#xff0c;如何打包 写下本文的时间是 2024/01/16&#xff0c;搜索了网络上 ElectronReact 的打包方式&#xff0c;中间行不通&#xff0c;本文采用的方式是记录本文时 Electron 快速入门(https://www.electronjs.org/zh/docs/latest/tutorial/quick-start)记录的打包方式…

Stream API 函数式编程 - 告别for循环,代码竟能写的如此优雅?

目录 一、Stream API 函数式编程 1.1、Stream 简介 a&#xff09;为什么引入 Stream&#xff1f;Stream 的出现就是为了让关于集合的操作更加简单&#xff1a; b&#xff09;Stream 的特性&#xff1a; c&#xff09;对stream的操作分为为两类&#xff0c;中间操作 和 结束…

响应式Web开发项目教程(HTML5+CSS3+Bootstrap)第2版 例4-3 textarea

代码 <!doctype html> <html> <head> <meta charset"utf-8"> <title>textarea</title> </head><body> <h2>多行文本框:</h2> <!--textarea&#xff08;文本域&#xff09;cols(列) rows(行)--> …

Template Engine-06-模板引擎 Handlebars 入门介绍

拓展阅读 java 表达式引擎 logstash 日志加工处理-08-表达式执行引擎 AviatorScriptMVELOGNLSpELJEXLJUELJanino QLExpress 阿里表达式引擎系统学习 什么是 Handlebars&#xff1f; Handlebars 是一种简单的模板语言。 它使用模板和输入对象生成 HTML 或其他文本格式。Ha…

go语言(一)----声明常量

package mainimport ("fmt""time" )func main() {fmt.Print("hello go!")time.Sleep(1 * time.Second)}运行后&#xff0c;结果如下&#xff1a; 1、golang表达式中&#xff0c;加&#xff1b;和不加&#xff1b;都可以 2、函数的{和函数名一…

【Qt之模型视图】1. 模型和视图架构

1. 模型/视图架构是什么及有什么用 MVC&#xff08;Model-View-Control&#xff09;是一种源自Smalltalk的设计模式&#xff0c;通常用于构建用户界面。 MVC由三种类型的对象组成。模型是应用对象&#xff0c;用来表示数据&#xff1b;视图是模型的用户界面&#xff0c;用来显…

【征服redis5】redis的Redisson客户端

目录 1 Redisson介绍 2. 与其他Java Redis客户端的比较 3.基本的配置与连接池 3.1 依赖和SDK 3.2 配置内容解析 4 实战案例&#xff1a;优雅的让Hash的某个Field过期 5 Redisson的强大功能 1 Redisson介绍 Redisson 最初由 GitHub 用户 “mrniko” 创建&#xff0c;并在…