openssl3.2 - 编译

文章目录

    • openssl3.2 - 编译
    • 概述
    • OpenSSL源码下载
    • 编译目标
    • 如何编译
    • 前置环境 - perl
    • 前置环境 - VS
    • 前置环境 - NASM
    • 快速编译步骤
    • 编译 - Quick start
    • Install Perl
    • Install NASM
    • Use Visual Studio Developer Command Prompt with administrative privileges
    • From the root of the OpenSSL source directory enter
    • END

openssl3.2 - 编译

概述

ECC实现没有轻量级的工程, 那就只能用openssl了.
先从头编译一个OpenSSL.

OpenSSL源码下载

当前OpenSSL稳定版为3.2, 官方源码包url : https://www.openssl.org/source/openssl-3.2.0.tar.gz
将OpenSSL工程迁出到本地(学习和查找资料) : https://github.com/openssl/openssl.git

编译目标

在win10下编译成x64版本的OpenSSL, 用VS2019来编译源码包.

如何编译

看源码包中的README.md

在这里插入图片描述
在这里插入图片描述

前置环境 - perl

在这里插入图片描述

前置环境 - VS

我这已经有了VS2019企业版
在这里插入图片描述

前置环境 - NASM

去NASM官方, 看到当前稳定版为2.16.01, 选win64版本.
在这里插入图片描述

快速编译步骤

在这里插入图片描述
不过, 看到文档中有说, 如果OpenSSL的编译选用运行时库(忘了那个文档这么说, 反正是官方的), 要和应用程序选用的运行时库配套, 否则有问题.
在这里插入图片描述
所以不想采用快速编译步骤.
想再看看INSTALL.md, 看看编译参数怎么写. 编译出供VS2019用的debug版和release版的OpenSSL输出. 包含4种运行时库的版本. 我们平时主要用的运行时库就2种(/MD, /MDd), 因为都使用DLL版本的运行时库, 不静态包含运行时库.
在这里插入图片描述
INSTALL.md写的挺详细的, 有编译选项怎么写, 我主要关注怎么选择不同的运行时库.
在这里插入图片描述
看了一圈没看到如何选择运行时库.
算了, 那就按照快速编译的文档, 将编译命令整理一下, 执行编译. 也许编译完, 安装后, 就有不同运行时库的版本.

编译 - Quick start

在这里插入图片描述

Install Perl

这步有了, 前面已经装了 ActivePerl-5.26.0.2600-MSWin32-x86-64int-403866.rar
且在命令行下可以直接访问到Perl

C:\Users\chenx>perl --versionThis is perl 5, version 26, subversion 0 (v5.26.0) built for MSWin32-x86-multi-thread-64int
(with 1 registered patch, see perl -V for more detail)Copyright 1987-2017, Larry WallBinary build 2600 [403866] provided by ActiveState http://www.ActiveState.com
Built Aug 30 2017 16:46:44Perl may be copied only under the terms of either the Artistic License or the
GNU General Public License, which may be found in the Perl 5 source kit.Complete documentation for Perl, including FAQ lists, should be found on
this system using "man perl" or "perldoc perl".  If you have access to the
Internet, point your browser at http://www.perl.org/, the Perl Home Page.

Install NASM

装了nasm-2.16.01-installer-x64.exe, 安装位置 c:\nasm
打开命令行, nasm.exe并不在PATH环境变量中.
因为nasm仅仅在编译时使用, 准备在命令行中临时加环境变量的方法, 可以减轻环境变量的污染.

Use Visual Studio Developer Command Prompt with administrative privileges

要编译x64版本, 打开vs2019x64本地命令行, 选择管理员身份运行.
在这里插入图片描述
设置临时变量, 加入nasm路径

**********************************************************************
** Visual Studio 2019 Developer Command Prompt v16.11.32
** Copyright (c) 2021 Microsoft Corporation
**********************************************************************
[vcvarsall.bat] Environment initialized for: 'x64'C:\Program Files (x86)\Microsoft Visual Studio\2019\Enterprise>set path=c:\nasm;%path%

测试一下, nasm是否可以访问

C:\Program Files (x86)\Microsoft Visual Studio\2019\Enterprise>nasm -v
NASM version 2.16.01 compiled on Dec 21 2022

在vs2019命令行中也能访问到perl, 和普通命令行中一致.

From the root of the OpenSSL source directory enter

进入openssl源码包路径, 用perl配置openssl, 选择输出路径前缀, 选择VS x64版本
在这里插入图片描述
默认的安装路径要改一下, 不想用.

cd /d D:\3rd_prj\crypt\openssl-3.2.0
perl Configure VC-WIN64A --prefix=c:\openssl_3d2 --openssldir=c:\openssl_3d2\common

在这里插入图片描述
openssl提示, 说缺nmake.exe或者dmake.exe.
但是nmake是可以在当前命令行运行的.
如果在vs2019命令行中, 不能运行nmake, 那还了得…
应该是openssl搞错了, 不理这个错误提示.

nmake

编译的时间好长, 等编译完成.

nmake test
// 测试的时间也好长
All tests successful.
Files=294, Tests=3408, 867 wallclock secs ( 4.92 usr +  0.98 sys =  5.91 CPU)
Result: PASS

测试通过了, 从里面能看出有些特性没有, 以后如果需要, 可以在配置中加上, 重新编译, 如果没有特殊要求, 就用openSSL默认的编译输出.

01-test_fipsmodule_cnf.t ................ skipped: Test only supported in a fips build
01-test_symbol_presence.t ............... skipped: This is unsupported on platforms that don't have 'nm'
03-test_fipsinstall.t ................... skipped: Test only supported in a fips build
04-test_bio_tfo.t ....................... skipped: This test requires enable-tfo
05-test_rc5.t ........................... skipped: rc5 is not supported by this OpenSSL build
07-test_bio_comp.t ...................... skipped: No compression algorithms
20-test_cli_fips.t ...................... skipped: Test only supported in a fips build with security checks
30-test_acvp.t .......................... skipped: ACVP is not supported by this test
30-test_afalg.t ......................... skipped: test_afalg not supported for this build
30-test_pairwise_fail.t ................. skipped: These tests are unsupported in a non fips build
40-test_rehash.t ........................ skipped: test_rehash is not available on this platform
60-test_x509_store.t .................... skipped: test_rehash is not available on this platform
70-test_tls13certcomp.t ................. skipped: test_tls13certcomp needs compression and algorithms enabled
80-test_pkcs12.t ........................ skipped: Non-Greek system locale
82-test_tfo_cli.t ....................... skipped: test_tfo_cli needs tfo enabled
90-test_cert_comp.t ..................... skipped: Certificate compression is disabled in this OpenSSL build
90-test_fipsload.t ...................... skipped: Test is disabled with disabled fips

从测试结果来看, 缺的特性: fips, tfo, rc5, compression algorithms, ACVP, afalg, rehash,
安装

nmake install

安装后的目录结构

C:\openssl_3d2>tree
文件夹 PATH 列表
卷序列号为 BA70-59B2
C:.
├─bin
├─common
│  ├─certs
│  ├─misc
│  └─private
├─html
│  ├─man1
│  ├─man3
│  ├─man5
│  └─man7
│      └─img
├─include
│  └─openssl
└─lib├─engines-3└─ossl-modules

安装后的html/manx目录中都是.html文件, 方便查资料.
安装后的目录里面没有demo工程, 需要去看源码包内的demo.
在这里插入图片描述

END

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

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

相关文章

SV-7042T 15W网络有源音箱 商场广播音箱 酒店广播音箱

SV-7042T 15W网络有源音箱 商场广播音箱 酒店广播音箱 一、描述 SV-7042T是深圳锐科达电子有限公司的一款壁挂式网络有源音箱,具有10/100M以太网接口,可将网络音源通过自带的功放和喇叭输出播放,可达到功率15W。同时它可以外接一个15W的无源…

【已解决】Pytorch RuntimeError: expected scalar type Double but found Float

本文作者: slience_me 文章目录 项目场景:问题描述原因分析:解决方案: 项目场景: 在训练模型时候,将数据集输入到网络中去,在执行卷积nn.conv1d()的时候,报出此错误 问题描述 报错…

IEDA中tomcat日志乱码解决

文章目录 乱码样式原因解决方案参考 乱码样式 原因 乱码原因是编码格式的问题,编码格式不统一,导致显示乱码。 解决方案 统一编码格式。 打开tomcat的配置文件,conf/logging.properties,进行如下修改 进入idea的安装文件中,b…

【docker笔记】Docker网络

Docker网络 容器间的互联和通信以及端口映射 容器IP变动时候可以通过服务名直接网络通信而不受到影响 常用命令 查看网络 docker network ls创建网络 docker network create XXX网络名字查看网络源数据 docker network inspect XXX网络名字删除网络 docker network rm…

竞赛保研 基于深度学习的人脸性别年龄识别 - 图像识别 opencv

文章目录 0 前言1 课题描述2 实现效果3 算法实现原理3.1 数据集3.2 深度学习识别算法3.3 特征提取主干网络3.4 总体实现流程 4 具体实现4.1 预训练数据格式4.2 部分实现代码 5 最后 0 前言 🔥 优质竞赛项目系列,今天要分享的是 🚩 毕业设计…

Linux基础知识点-(七-线程)

目录 一、线程和进程 1.1 线程的基本概念 1.2 线程的优缺点 二、创建线程 2.1 pthread_create() - 创建线程函数 三、线程属性 3.1 pthread_attr_t类型 3.2 phread_t类型 四、线程退出 4.1 pthread_exit() 4.2 pthread_join() 4.3 pthread_detach() 一、线程和进…

2019数据结构----单链表真题

思路&#xff1a; (1)找到中间节点,将原链表一分为二 (2)后半段链表原地逆置 (3)合并链表 #include <stdio.h> #include <stdlib.h>//定义节点类型 typedef struct LNode {int data;//数据域struct LNode *next;//指针域 } LNode, *LinkList;void tailList(Link…

Rational rose 安装和使用 教程

前言 win10和win11都可以用&#xff0c;亲测了win10 Unified Modeling Language (UML)又称统─建模语言或标准建模语言&#xff0c;是始于1997年一个OMG标准&#xff0c;它是一个支持模型化和软件系统开发的图形化语言&#xff0c;为软件开发的所有阶段提供模型化和可视化支持…

Spark---RDD算子(单值类型转换算子)

文章目录 1.RDD算子介绍2.转换算子2.1 Value类型2.1.1 map2.1.2 mapPartitions2.1.3 mapPartitionsWithIndex2.1.4 flatMap2.1.5 glom2.1.6 groupBy2.1.7 filter2.1.8 sample2.1.9 distinct2.1.10 coalesce2.1.11 repartition2.1.12 sortBy 1.RDD算子介绍 RDD算子是用于对RDD进…

15K star! 搭建个人PDF工具箱,和广告、泄密说拜拜

我相信很多人都曾经遇到过这样的麻烦&#xff1a;一大堆PDF文档摆在面前要处理&#xff0c;拆分、标页码、调顺序、加签名。手忙脚乱的在网上找了几个工具&#xff0c;但是要么需要付费&#xff0c;要么各种广告还不好用&#xff0c;更容易出现隐私泄露的问题。 今天我们推荐的…

轨迹合并 合并轨迹

搜索微信小程序 merge gpx

测试电脑的公网ip

发现ip地址总是变化&#xff0c;想要了解变化规律 操作 反复关闭打开浏览器&#xff0c;查询ip地址&#xff0c;共查询了15次。出现了5种不同的地址&#xff0c;还好&#xff0c;不是无穷的。

python 各级目录文件读取

目录结构 import pytestdef test_01():# 同级文件with open(1.txt, r, encodingutf-8) as file:content file.read()print(content)def test_02():# 同级目录的下的文件with open(rupfile/2.txt, r, encodingutf-8) as file:content file.read()print(content)def test_03():…

IDEA[Debug]简单说明

目录 &#x1f95e;1.打断点 &#x1f32d;2.第一组按钮 &#x1f9c2;3.第二组按钮 &#x1f953;4.参数查看 1.打断点 1.在需要断点处打上断点&#xff0c;然后点击debug运行 2.执行debug&#xff0c;直接执行到断点处 2.第一组按钮 共有8按钮&#xff0c;从左往右依…

Linux实验——页面置换算法模拟

页面置换算法模拟 【实验目的】 &#xff08;1&#xff09;理解虚拟内存管理的原理和技术。 &#xff08;2&#xff09;掌握请求分页存储管理的思想。 &#xff08;3&#xff09;理解常用页面置换算法的思想。 【实验原理/实验基础知识】 存储器是计算机系统的重要资源之…

可怜的小猪

题目 有 buckets 桶液体&#xff0c;其中 正好有一桶 含有毒药&#xff0c;其余装的都是水。它们从外观看起来都一样。为了弄清楚哪只水桶含有毒药&#xff0c;你可以喂一些猪喝&#xff0c;通过观察猪是否会死进行判断。不幸的是&#xff0c;你只有 minutesToTest 分钟时间来…

msvcp140.dll丢失的解决方法,从两个方向解决msvcp140.dll丢失

在Windows操作系统上&#xff0c;msvcp140.dll是Visual C Redistributable for Visual Studio 2015的一部分&#xff0c;如果msvcp140.dll文件丢失&#xff0c;可能在尝试启动使用C运行时库的程序时遇到错误&#xff0c;应用程序可能也会相应的无法打开&#xff0c;那么有什么m…

Qt/C++摄像头采集/二维码解析/同时采集多路/图片传输/分辨率帧率可调/自动重连

一、前言 本地摄像头的采集可以有多种方式&#xff0c;一般本地摄像头会通过USB的方式连接&#xff0c;在嵌入式上可能大部分是CMOS之类的软带的接口&#xff0c;这些都统称本地摄像头&#xff0c;和网络摄像头最大区别就是一个是通过网络来通信&#xff0c;一个是直接本地通信…

浅谈顺序表基本操作

&#x1f937;‍♀️&#x1f937;‍♀️&#x1f937;‍♀️ 今天给大家带来的是数据结构——顺序表的实现(增删查改)。 清风的CSDN博客主页 &#x1f389;欢迎&#x1f44d;点赞✍评论❤️收藏 &#x1f61b;&#x1f61b;&#x1f61b;希望我的文章能对你有所帮助&#xff…

JavaWeb基础(2)- Web概述、HTTP协议、Servlet、Request与Response

JavaWeb基础&#xff08;2&#xff09;- Web概述、HTTP协议、Servlet、Request与Response 文章目录 JavaWeb基础&#xff08;2&#xff09;- Web概述、HTTP协议、Servlet、Request与Response3 Web概述3.1 Web和JavaWeb的概念3.2 JavaWeb技术栈3.2.1 B/S架构**3.2.2 静态资源**3…