GMSSL编译安装与VS2019环境配置

  1. 下载并安装 ActivePerl 5.24.0.2402,并设置环境变量
    注意:ActivePerl 5.26/5.28尚不支持
  2. 修改perl配置(否则会报错libcrypto-1_1-x64.def : error LNK2001: 无法解析的外部符号 EVP_get_ciphernames)
    修改 c:\perl64\lib\ActivePerl\Config.pm 文件
sub _warn {
    # my($msg) = @_;
    # unless (-t STDOUT) {
    # print "\n$msg\n";
    # return;
    # }
    # require Win32::Console;
    # unless ($console) {
    # $console = Win32::Console->new(Win32::Console::STD_OUTPUT_HANDLE());
    # }
    # my($col,undef) = $console->Size;
    # print "\n";
    # my $attr = $console->Attr;
    # $console->Attr($Win32::Console::FG_RED | $Win32::Console::BG_WHITE);
    # for (split(/\n/, "$msg")) {
    # $_ .= " " while length() < $col-1;
    # print "$_\n";
    # }
    # $console->Attr($attr);
    # print "\n";
}

gmssl里修修改源代码 crypto/evp/names2.c

/*
Copyright 1995-2016 The OpenSSL Project Authors. All Rights Reserved.
Licensed under the OpenSSL license (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
*/
#include <stdio.h>
#include "internal/cryptlib.h"
#include <openssl/evp.h>
#include <internal/objects.h>
#include <openssl/x509.h>
#include "internal/evp_int.h"

const EVP_CIPHER *EVP_get_default_cipher(void)
{
return NULL;
}

/*

use MD5 as default:
X509_REQ_to_X509 x509_r2x.c
X509_issuer_and_serial_hash x509_cmp.c
X509_NAME_hash_old x509_cmp.c
PEM_ASN1_write_bio pem_lib.c
*/
const EVP_MD *EVP_get_default_digest(void)
{
#if !defined(OPENSSL_NO_MD5)
return EVP_md5();
#elif !defined(OPENSSL_NO_SHA)
return EVP_sha1();
#elif !defined(OPENSSL_NO_SM3)
return EVP_sm3();
#elif !defined(OPENSSL_NO_RIPEMD)
return EVP_rmd160();
#else
return NULL;
#endif
}
static void cipher_name_len(const EVP_CIPHER *cipher, const char *from,
const char *to, void *x)
{
*((int *)x) += strlen(EVP_CIPHER_name(cipher));
}

static void cipher_name(const EVP_CIPHER *cipher, const char *from,
const char *to, void *x)
{
strcat((char *)x, EVP_CIPHER_name(cipher));
}

char *EVP_get_ciphernames(int aliases)
{
char *ret = NULL;
int len = 0;
EVP_CIPHER_do_all_sorted(cipher_name_len, &len);

ret = OPENSSL_zalloc(len);
if (!ret) {
    return NULL;
}

EVP_CIPHER_do_all_sorted(cipher_name, ret);
return ret;
}

char *EVP_get_digestnames(int aliases)
{
return "sm3:sha1:sha256";
}
  1. 下载并安装 NASM

  2. 生成64位版本
    以管理员身份打开Visual Studio 2019下的x64 Native Tools Command Prompt for VS2019控制台并运行

perl Configure VC-WIN64A
nmake
nmake install

注:无法执行nmake install。这个命令需要以管理员的身份执行。
编译、安装成功,安装的默认路径是C:\Program Files (x86)\GmSSL。尝试运行bin目录下的gmssl.exe

5.VS2019环境GMssl的环境配置
为方便统一使用,此处我将主要文件集中在一起,记为Envior文件夹

  • 将安装路径(GmSSL)中的include\openssl文件夹整个复制到Envior

  • 将安装路径(GmSSL)中的lib文件夹复制到Envior(“libcrypto-1_1-x64.dll”和“libssl-1_1-x64.dll”名字和版本号可能不同)

  • 包含头文件

    属性–C/C+±-常规–附加包含目录(添加目录Envior)

  • 项目包含.lib文件所在的目录:

    属性–链接器–常规–附加库目录(添加目录Envior\lib)

  • 项目包含.lib文件

    属性–链接器–输入–附加依赖项(libcrypto.lib;libssl.lib)

如果环境配置后运行还是有问题,重新检查自己环境配置,参考尝试:
https://blog.csdn.net/lingdukafeibj/article/details/107493356

本文主要参考:
Windows+VS2019环境各密码算法库(openssl\GMP\ZLib)的环境配置及用法总结
VS2019下构建GmSSL流程 | 春小麦
GMSSL 编译过程 (Windows10 x64 20H2)

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值