<output id="qn6qe"></output>

    1. <output id="qn6qe"><tt id="qn6qe"></tt></output>
    2. <strike id="qn6qe"></strike>

      亚洲 日本 欧洲 欧美 视频,日韩中文字幕有码av,一本一道av中文字幕无码,国产线播放免费人成视频播放,人妻少妇偷人无码视频,日夜啪啪一区二区三区,国产尤物精品自在拍视频首页,久热这里只有精品12

      Win10系統下編譯GmSSL庫

      源碼下載地址:https://github.com/guanzhi/GmSSL/releases

      編譯文檔地址:http://gmssl.org/docs/install.html

      一、環境準備

      1.安裝ActivePerl和Visual Studio

      ActivePerl下載地址:https://www.activestate.com/products/perl/

      Visual Studio下載地址:https://visualstudio.microsoft.com/zh-hans/

      我這邊ActivePerl使用的5.28,Visual Studio使用的2019

      二、編譯步驟

      【注意】需要使用Visual Studio中的命令行工具執行,x64和ia32需要使用不同版本的命令行工具執行。不要使用cmd執行,不要使用vscode控制臺執行。

      1.32位版本

      perl Configure VC-WIN32
      nmake

      2.64位版本

      perl Configure VC-WIN64A
      nmake

      如果執行過nmake命令,可以執行nmake clean清除編譯過程文件

      執行perl Configure -h 可以查看支持編譯的平臺和架構信息

      三、中間遇到的問題

      1.解決缺少Win32::Console問題

      打開C:\Perl64\site\lib\ActivePerl\Cofnig.pm文件,注釋掉以下代碼,我這版本在393行

      # Prevent calling Win32::Console::DESTROY on a STDOUT handle
      # 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.fatal error LNK1112:模塊計算機類型“x86”與目標計算機類型“x64”沖突

      NMAKE:fatal error U1007:"link":返回代碼“0x1”

      此錯誤是perl Configure xxx生成的版本和nmake執行的版本不同造成的

      比如perl Configure VC-WIN32生成配置,nmake是在64位的控制臺里執行或者perl Configure VC-WIN64A生成配置,nmake在32位控制臺執行。

      3.error LNK2001:無法解析外部符號 EVP_get_ciphernames

         error LNK2001:無法解析外部符號 EVP_get_digestnames

      NMAKE:fatal error U1007:"link":返回代碼“0x1”

      此錯誤是,因為GmSLL當前代碼版本【crypto\evp\names2.c】在windows平臺有問題

      修源碼改成為一下版本,此源碼來源于GmSSL-gmbrowser-v0.1,下載地址:https://github.com/guanzhi/GmSSL/releases

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

       

      posted @ 2022-10-03 10:25  廣林  閱讀(945)  評論(0)    收藏  舉報
      主站蜘蛛池模板: 成人免费毛片aaaaaa片| 国产91小视频在线观看| 开心五月深深爱天天天操| a4yy私人毛片| 国产色无码专区在线观看| 不卡一区二区三区四区视频| 久久精品国产亚洲av麻豆小说| 中文字幕日韩精品人妻| 中文字幕久久熟女蜜桃| 亚欧洲乱码视频一二三区| 亚洲自偷自拍另类小说| 男人下部进女人下部视频| 高清无码爆乳潮喷在线观看| a级黑人大硬长爽猛出猛进| 国产欧美一区二区三区免费视频| 久久国内精品一国内精品| 少妇粗大进出白浆嘿嘿视频| 国产一卡2卡三卡4卡免费网站| 一出一进一爽一粗一大视频| 国产精品一区在线蜜臀| 洞头县| 亚洲国产成人久久综合一区77 | 亚洲乱码日产精品一二三| 亚洲精品日本久久久中文字幕| 国产日韩精品视频无码| 国产激情一区二区三区不卡| 国产女人和拘做受视频免费| 亚洲综合色网一区二区三区| 一本精品99久久精品77| 亚洲色欲色欲www| 人妻聚色窝窝人体WWW一区| 久久SE精品一区精品二区| 国产精品午夜精品福利| 国产成人99亚洲综合精品| 色综合色综合久久综合频道| 啊灬啊灬啊灬快灬高潮了电影片段| 元码人妻精品一区二区三区9| 亚洲国产日韩伦中文字幕| 人妻有码av中文字幕久久琪| 亚洲中文字幕有综合久久| 国产精品 欧美 亚洲 制服|