建筑物32位openssl fips(nmake f ms ntdll.mak):宏中的非法字符



我的目标是在32位中构建openssl(openssl-1.0.2n)共享库(dlls),并启用了FIPS。根据openssl.org(https://www.openssl.org/docs/fips/fips/userguide-2.0.pdf)的程序,我做了我所做的:

  1. perl配置VC-WIN32 FIPS -with-fipslibdir = C: usr locar locar ssl ssl fips-2.0
  2. MS do_nasm
  3. nmake f ms ntdll.mak

最后一个(nmake f ms ntdll.msk)抛出此错误:

makefile(243):致命错误U1001:语法错误:非法字符'{'in Macro stop。

指导?这很棘手,因为OpenSSL FIPS说明非常具体,即不修改文件以保持FIPS的符合性。我的绳肌。

X86 VS2017命令提示符的完整列表(在管理模式下运行):

**********************************************************************
** Visual Studio 2017 Developer Command Prompt v15.4.5
** Copyright (c) 2017 Microsoft Corporation
**********************************************************************
[vcvarsall.bat] Environment initialized for: 'x86'
C:Usersjlairdsource>cd C:OpenSSL_Source32bitopenssl-1.0.2n
C:OpenSSL_Source32bitopenssl-1.0.2n>perl Configure VC-WIN32 fips --with-fipslibdir=C:usrlocalsslfips-2.0
Configuring for VC-WIN32
    no-ec_nistp_64_gcc_128 [default]  OPENSSL_NO_EC_NISTP_64_GCC_128 (skip dir)
    no-gmp          [default]  OPENSSL_NO_GMP (skip dir)
    no-jpake        [experimental] OPENSSL_NO_JPAKE (skip dir)
    no-krb5         [krb5-flavor not specified] OPENSSL_NO_KRB5
    no-libunbound   [experimental] OPENSSL_NO_LIBUNBOUND (skip dir)
    no-md2          [default]  OPENSSL_NO_MD2 (skip dir)
    no-rc5          [default]  OPENSSL_NO_RC5 (skip dir)
    no-rfc3779      [default]  OPENSSL_NO_RFC3779 (skip dir)
    no-rsax         [forced]   OPENSSL_NO_RSAX (skip dir)
    no-sctp         [default]  OPENSSL_NO_SCTP (skip dir)
    no-shared       [default]
    no-ssl-trace    [default]  OPENSSL_NO_SSL_TRACE (skip dir)
    no-ssl2         [default]  OPENSSL_NO_SSL2 (skip dir)
    no-store        [experimental] OPENSSL_NO_STORE (skip dir)
    no-unit-test    [default]  OPENSSL_NO_UNIT_TEST (skip dir)
    no-weak-ssl-ciphers [default]  OPENSSL_NO_WEAK_SSL_CIPHERS (skip dir)
    no-zlib         [default]
    no-zlib-dynamic [default]
IsMK1MF=1
CC            =cl
CFLAG         =-DOPENSSL_THREADS  -DDSO_WIN32 -W3 -WX -Gs0 -GF -Gy -nologo -DOPENSSL_SYSNAME_WIN32 -DWIN32_LEAN_AND_MEAN -DL_ENDIAN -D_CRT_SECURE_NO_DEPRECATE -D_WINSOCK_DEPRECATED_NO_WARNINGS -DOPENSSL_BN_ASM_PART_WORDS -DOPENSSL_IA32_SSE2 -DOPENSSL_BN_ASM_MONT -DOPENSSL_BN_ASM_GF2m -I$(FIPSDIR)/include -DRC4_ASM -DSHA1_ASM -DSHA256_ASM -DSHA512_ASM -DMD5_ASM -DRMD160_ASM -DAES_ASM -DVPAES_ASM -DWHIRLPOOL_ASM -DGHASH_ASM
EX_LIBS       =
CPUID_OBJ     =x86cpuid.o
BN_ASM        =bn-586.o co-586.o x86-mont.o x86-gf2m.o
EC_ASM        =
DES_ENC       =des-586.o crypt586.o
AES_ENC       =aes-586.o vpaes-x86.o aesni-x86.o
BF_ENC        =bf-586.o
CAST_ENC      =cast-586.o
RC4_ENC       =rc4-586.o
RC5_ENC       =rc5-586.o
MD5_OBJ_ASM   =md5-586.o
SHA1_OBJ_ASM  =sha1-586.o sha256-586.o sha512-586.o
RMD160_OBJ_ASM=rmd-586.o
CMLL_ENC      =cmll-x86.o
MODES_OBJ     =ghash-x86.o
ENGINES_OBJ   =
PROCESSOR     =
RANLIB        =true
ARFLAGS       =
PERL          =perl
THIRTY_TWO_BIT mode
BN_LLONG mode
RC4_INDEX mode
RC4_CHUNK is undefined
Configured for VC-WIN32.
C:OpenSSL_Source32bitopenssl-1.0.2n>msdo_nasm
C:OpenSSL_Source32bitopenssl-1.0.2n>perl utilmkfiles.pl  1>MINFO
C:OpenSSL_Source32bitopenssl-1.0.2n>perl utilmk1mf.pl nasm VC-WIN32  1>msnt.mak
C:OpenSSL_Source32bitopenssl-1.0.2n>perl utilmk1mf.pl dll nasm VC-WIN32  1>msntdll.mak
C:OpenSSL_Source32bitopenssl-1.0.2n>perl utilmk1mf.pl nasm BC-NT  1>msbcb.mak
C:OpenSSL_Source32bitopenssl-1.0.2n>perl utilmkdef.pl 32 libeay  1>mslibeay32.def
C:OpenSSL_Source32bitopenssl-1.0.2n>perl utilmkdef.pl 32 ssleay  1>msssleay32.def
C:OpenSSL_Source32bitopenssl-1.0.2n>nmake ­f msntdll.mak
Microsoft (R) Program Maintenance Utility Version 14.11.25547.0
Copyright (C) Microsoft Corporation.  All rights reserved.
makefile(243) : fatal error U1001: syntax error : illegal character '{' in macro
Stop.

看起来这是在GitHub上以前版本的OpenSSL中指出的,但是没有发布的分辨率...问题只是关闭,我不知道该怎么办:https://github.com/openssl/openssl/issues/4352

我将ntdll.mak文件上传到此处的Google Drive:https://drive.google.com/file/d/1b2giwjjjdyoxr6ycclq8opv4skhg2n8ob/view?usp = sharing

第243行(不是真正有用的,但在这里):

$(OBJ_D)ecb3_enc.obj $(OBJ_D)cfb64enc.obj $(OBJ_D)cfb64ede.obj 

您只是在命令中的'f'之前缺少一个小破折号,确切命令应为:

nmake -­f msntdll.mak

缺少破折号,您实际上是在顶级目录中的makefile上调用nmake,恰好存在但与Nmake不相容,因此错误。

我找到了,因为在Windows上构建OpenSSL时,我收到了相同的错误消息,就我而言,我只是在没有任何参数的情况下调用Nmake(因为我没有费心阅读install.w32文件...)

并不是说这很有帮助,但是有问题的字符在openSSL源的根源中。我将从第241行开始粘贴:

    ENGINES_ASM_OBJ='$(ENGINES_ASM_OBJ)'        
    PERLASM_SCHEME='$(PERLASM_SCHEME)'      
    FIPSLIBDIR='${FIPSLIBDIR}'          
    FIPSDIR='${FIPSDIR}'                
    FIPSCANLIB="$${FIPSCANLIB:-$(FIPSCANLIB)}"  
    THIS=$${THIS:-$@} MAKEFILE=Makefile MAKEOVERRIDES=

最新更新