Win10システムはgmsslレコードをコンパイルしてインストールします

1.ソースコードをダウンロードします:https//github.com/guanzhi/GmSSL/

2.ダウンロードしてインストールしたPerlとNASM:  https://www.perl.org/get.html  、https://www.nasm.us/  。nasmは、実行中のファイルのパスを環境変数に設定します。

3.最新バージョンのVisualStudioをインストールします:https:  //visualstudio.microsoft.com/zh-hans/vs/

4. makefileを生成します。perlVC-WIN64Aを構成するか、-prefix =パラメーターを使用してgmsslインストールディレクトリを指定し、-openssldir =でopensslパスを指定します。

5.コンパイル:nmake

6.インストール:nmake install

7.発生した問題:

(1)perlの問題

D:\ Perl64 \ site \ lib \ ActivePerlConfig.pmファイルを変更し、対応する関数本体の実装コードをコメントアウトします。

my $console;
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";
}

(2)未解決の外部シンボルEVP_get_ciphernames、EVP_get_digestnames

GmSSL-master \ crypto \ evp \ names2.cファイルの最後に次のコードを追加します。

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";
}

参照:https//blog.csdn.net/liuxing9345/article/details/110742166

おすすめ

転載: blog.csdn.net/eidolon_foot/article/details/110915762