From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mga17.intel.com (mga17.intel.com []) by mx.groups.io with SMTP id smtpd.web11.9492.1596500670882200844 for ; Mon, 03 Aug 2020 17:24:31 -0700 Authentication-Results: mx.groups.io; dkim=missing; spf=fail (domain: intel.com, ip: , mailfrom: christopher.j.zurcher@intel.com) IronPort-SDR: eVJCyg+R9dgkdM79DRqUJ2sEKV6akvK50wG9XpgDU1CFNyOpD0+k7hK2s4yr3LRNHQjViFtsIg 2xy7rGM7bZpg== X-IronPort-AV: E=McAfee;i="6000,8403,9702"; a="132285447" X-IronPort-AV: E=Sophos;i="5.75,432,1589266800"; d="scan'208";a="132285447" X-Amp-Result: SKIPPED(no attachment in message) X-Amp-File-Uploaded: False Received: from fmsmga003.fm.intel.com ([10.253.24.29]) by fmsmga107.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 03 Aug 2020 17:24:29 -0700 IronPort-SDR: Yl3a54MCAN+S003W31kXurQTLpWPxjvBS2W5NMG21OUUz43yVFFWvnVIYCJuop5SFosEYVWD5o L34Ku9q2egMg== X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.75,432,1589266800"; d="scan'208";a="330376417" Received: from cjzurch-desk.amr.corp.intel.com ([10.9.70.181]) by FMSMGA003.fm.intel.com with ESMTP; 03 Aug 2020 17:24:30 -0700 From: "Zurcher, Christopher J" To: devel@edk2.groups.io Cc: Jiewen Yao , Jian J Wang , Xiaoyu Lu , Ard Biesheuvel Subject: [PATCH v2 1/2] CryptoPkg/OpensslLib: Add native instruction support for X64 Date: Mon, 3 Aug 2020 17:24:28 -0700 Message-Id: <20200804002429.3897-2-christopher.j.zurcher@intel.com> X-Mailer: git-send-email 2.28.0.windows.1 In-Reply-To: <20200804002429.3897-1-christopher.j.zurcher@intel.com> References: <20200804002429.3897-1-christopher.j.zurcher@intel.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable BZ: https://bugzilla.tianocore.org/show_bug.cgi?id=3D2507 Adding OpensslLibX64.inf and modifying process_files.pl to process this file and generate the necessary assembly files. ApiHooks.c contains a stub function for a Windows API call. uefi-asm.conf contains the limited assembly configurations for OpenSSL. Cc: Jiewen Yao Cc: Jian J Wang Cc: Xiaoyu Lu Cc: Ard Biesheuvel Signed-off-by: Christopher J Zurcher --- CryptoPkg/Library/OpensslLib/OpensslLib.inf | 2 +- CryptoPkg/Library/OpensslLib/OpensslLibCrypto.inf | 2 +- CryptoPkg/Library/OpensslLib/OpensslLibX64.inf | 656 +++++++++++++++= +++++ CryptoPkg/Library/Include/openssl/opensslconf.h | 3 - CryptoPkg/Library/OpensslLib/ApiHooks.c | 18 + CryptoPkg/Library/OpensslLib/OpensslLibConstructor.c | 34 + CryptoPkg/Library/OpensslLib/process_files.pl | 223 +++++-- CryptoPkg/Library/OpensslLib/uefi-asm.conf | 15 + 8 files changed, 903 insertions(+), 50 deletions(-) diff --git a/CryptoPkg/Library/OpensslLib/OpensslLib.inf b/CryptoPkg/Librar= y/OpensslLib/OpensslLib.inf index dbbe5386a1..bd62d86936 100644 --- a/CryptoPkg/Library/OpensslLib/OpensslLib.inf +++ b/CryptoPkg/Library/OpensslLib/OpensslLib.inf @@ -16,7 +16,7 @@ VERSION_STRING =3D 1.0=0D LIBRARY_CLASS =3D OpensslLib=0D DEFINE OPENSSL_PATH =3D openssl=0D - DEFINE OPENSSL_FLAGS =3D -DL_ENDIAN -DOPENSSL_SMALL_FOOTPRINT = -D_CRT_SECURE_NO_DEPRECATE -D_CRT_NONSTDC_NO_DEPRECATE=0D + DEFINE OPENSSL_FLAGS =3D -DL_ENDIAN -DOPENSSL_SMALL_FOOTPRINT = -D_CRT_SECURE_NO_DEPRECATE -D_CRT_NONSTDC_NO_DEPRECATE -DOPENSSL_NO_ASM=0D =0D #=0D # VALID_ARCHITECTURES =3D IA32 X64 ARM AARCH64=0D diff --git a/CryptoPkg/Library/OpensslLib/OpensslLibCrypto.inf b/CryptoPkg/= Library/OpensslLib/OpensslLibCrypto.inf index 616ccd9f62..2b7324a990 100644 --- a/CryptoPkg/Library/OpensslLib/OpensslLibCrypto.inf +++ b/CryptoPkg/Library/OpensslLib/OpensslLibCrypto.inf @@ -16,7 +16,7 @@ VERSION_STRING =3D 1.0=0D LIBRARY_CLASS =3D OpensslLib=0D DEFINE OPENSSL_PATH =3D openssl=0D - DEFINE OPENSSL_FLAGS =3D -DL_ENDIAN -DOPENSSL_SMALL_FOOTPRINT = -D_CRT_SECURE_NO_DEPRECATE -D_CRT_NONSTDC_NO_DEPRECATE=0D + DEFINE OPENSSL_FLAGS =3D -DL_ENDIAN -DOPENSSL_SMALL_FOOTPRINT = -D_CRT_SECURE_NO_DEPRECATE -D_CRT_NONSTDC_NO_DEPRECATE -DOPENSSL_NO_ASM=0D =0D #=0D # VALID_ARCHITECTURES =3D IA32 X64 ARM AARCH64=0D diff --git a/CryptoPkg/Library/OpensslLib/OpensslLibX64.inf b/CryptoPkg/Lib= rary/OpensslLib/OpensslLibX64.inf new file mode 100644 index 0000000000..825eea0254 --- /dev/null +++ b/CryptoPkg/Library/OpensslLib/OpensslLibX64.inf @@ -0,0 +1,656 @@ +## @file=0D +# This module provides OpenSSL Library implementation.=0D +#=0D +# Copyright (c) 2010 - 2020, Intel Corporation. All rights reserved.
= =0D +# (C) Copyright 2020 Hewlett Packard Enterprise Development LP
=0D +# SPDX-License-Identifier: BSD-2-Clause-Patent=0D +#=0D +##=0D +=0D +[Defines]=0D + INF_VERSION =3D 0x00010005=0D + BASE_NAME =3D OpensslLibX64=0D + MODULE_UNI_FILE =3D OpensslLib.uni=0D + FILE_GUID =3D 18125E50-0117-4DD0-BE54-4784AD995FEF= =0D + MODULE_TYPE =3D BASE=0D + VERSION_STRING =3D 1.0=0D + LIBRARY_CLASS =3D OpensslLib=0D + DEFINE OPENSSL_PATH =3D openssl=0D + DEFINE OPENSSL_FLAGS =3D -DL_ENDIAN -DOPENSSL_SMALL_FOOTPRINT = -D_CRT_SECURE_NO_DEPRECATE -D_CRT_NONSTDC_NO_DEPRECATE=0D + DEFINE OPENSSL_FLAGS_CONFIG =3D -DOPENSSL_CPUID_OBJ -DSHA1_ASM -DSHA2= 56_ASM -DSHA512_ASM -DAESNI_ASM -DVPAES_ASM -DGHASH_ASM=0D + CONSTRUCTOR =3D OpensslLibConstructor=0D +=0D +#=0D +# VALID_ARCHITECTURES =3D X64=0D +#=0D +=0D +[Sources]=0D + OpensslLibConstructor.c=0D + $(OPENSSL_PATH)/e_os.h=0D + $(OPENSSL_PATH)/ms/uplink.h=0D +# Autogenerated files list starts here=0D + X64/crypto/aes/aesni-mb-x86_64.nasm=0D + X64/crypto/aes/aesni-sha1-x86_64.nasm=0D + X64/crypto/aes/aesni-sha256-x86_64.nasm=0D + X64/crypto/aes/aesni-x86_64.nasm=0D + X64/crypto/aes/vpaes-x86_64.nasm=0D + X64/crypto/modes/ghash-x86_64.nasm=0D + X64/crypto/sha/sha1-mb-x86_64.nasm=0D + X64/crypto/sha/sha1-x86_64.nasm=0D + X64/crypto/sha/sha256-mb-x86_64.nasm=0D + X64/crypto/sha/sha256-x86_64.nasm=0D + X64/crypto/sha/sha512-x86_64.nasm=0D + X64/crypto/x86_64cpuid.nasm=0D + $(OPENSSL_PATH)/crypto/aes/aes_cbc.c=0D + $(OPENSSL_PATH)/crypto/aes/aes_cfb.c=0D + $(OPENSSL_PATH)/crypto/aes/aes_core.c=0D + $(OPENSSL_PATH)/crypto/aes/aes_ige.c=0D + $(OPENSSL_PATH)/crypto/aes/aes_misc.c=0D + $(OPENSSL_PATH)/crypto/aes/aes_ofb.c=0D + $(OPENSSL_PATH)/crypto/aes/aes_wrap.c=0D + $(OPENSSL_PATH)/crypto/aria/aria.c=0D + $(OPENSSL_PATH)/crypto/asn1/a_bitstr.c=0D + $(OPENSSL_PATH)/crypto/asn1/a_d2i_fp.c=0D + $(OPENSSL_PATH)/crypto/asn1/a_digest.c=0D + $(OPENSSL_PATH)/crypto/asn1/a_dup.c=0D + $(OPENSSL_PATH)/crypto/asn1/a_gentm.c=0D + $(OPENSSL_PATH)/crypto/asn1/a_i2d_fp.c=0D + $(OPENSSL_PATH)/crypto/asn1/a_int.c=0D + $(OPENSSL_PATH)/crypto/asn1/a_mbstr.c=0D + $(OPENSSL_PATH)/crypto/asn1/a_object.c=0D + $(OPENSSL_PATH)/crypto/asn1/a_octet.c=0D + $(OPENSSL_PATH)/crypto/asn1/a_print.c=0D + $(OPENSSL_PATH)/crypto/asn1/a_sign.c=0D + $(OPENSSL_PATH)/crypto/asn1/a_strex.c=0D + $(OPENSSL_PATH)/crypto/asn1/a_strnid.c=0D + $(OPENSSL_PATH)/crypto/asn1/a_time.c=0D + $(OPENSSL_PATH)/crypto/asn1/a_type.c=0D + $(OPENSSL_PATH)/crypto/asn1/a_utctm.c=0D + $(OPENSSL_PATH)/crypto/asn1/a_utf8.c=0D + $(OPENSSL_PATH)/crypto/asn1/a_verify.c=0D + $(OPENSSL_PATH)/crypto/asn1/ameth_lib.c=0D + $(OPENSSL_PATH)/crypto/asn1/asn1_err.c=0D + $(OPENSSL_PATH)/crypto/asn1/asn1_gen.c=0D + $(OPENSSL_PATH)/crypto/asn1/asn1_item_list.c=0D + $(OPENSSL_PATH)/crypto/asn1/asn1_lib.c=0D + $(OPENSSL_PATH)/crypto/asn1/asn1_par.c=0D + $(OPENSSL_PATH)/crypto/asn1/asn_mime.c=0D + $(OPENSSL_PATH)/crypto/asn1/asn_moid.c=0D + $(OPENSSL_PATH)/crypto/asn1/asn_mstbl.c=0D + $(OPENSSL_PATH)/crypto/asn1/asn_pack.c=0D + $(OPENSSL_PATH)/crypto/asn1/bio_asn1.c=0D + $(OPENSSL_PATH)/crypto/asn1/bio_ndef.c=0D + $(OPENSSL_PATH)/crypto/asn1/d2i_pr.c=0D + $(OPENSSL_PATH)/crypto/asn1/d2i_pu.c=0D + $(OPENSSL_PATH)/crypto/asn1/evp_asn1.c=0D + $(OPENSSL_PATH)/crypto/asn1/f_int.c=0D + $(OPENSSL_PATH)/crypto/asn1/f_string.c=0D + $(OPENSSL_PATH)/crypto/asn1/i2d_pr.c=0D + $(OPENSSL_PATH)/crypto/asn1/i2d_pu.c=0D + $(OPENSSL_PATH)/crypto/asn1/n_pkey.c=0D + $(OPENSSL_PATH)/crypto/asn1/nsseq.c=0D + $(OPENSSL_PATH)/crypto/asn1/p5_pbe.c=0D + $(OPENSSL_PATH)/crypto/asn1/p5_pbev2.c=0D + $(OPENSSL_PATH)/crypto/asn1/p5_scrypt.c=0D + $(OPENSSL_PATH)/crypto/asn1/p8_pkey.c=0D + $(OPENSSL_PATH)/crypto/asn1/t_bitst.c=0D + $(OPENSSL_PATH)/crypto/asn1/t_pkey.c=0D + $(OPENSSL_PATH)/crypto/asn1/t_spki.c=0D + $(OPENSSL_PATH)/crypto/asn1/tasn_dec.c=0D + $(OPENSSL_PATH)/crypto/asn1/tasn_enc.c=0D + $(OPENSSL_PATH)/crypto/asn1/tasn_fre.c=0D + $(OPENSSL_PATH)/crypto/asn1/tasn_new.c=0D + $(OPENSSL_PATH)/crypto/asn1/tasn_prn.c=0D + $(OPENSSL_PATH)/crypto/asn1/tasn_scn.c=0D + $(OPENSSL_PATH)/crypto/asn1/tasn_typ.c=0D + $(OPENSSL_PATH)/crypto/asn1/tasn_utl.c=0D + $(OPENSSL_PATH)/crypto/asn1/x_algor.c=0D + $(OPENSSL_PATH)/crypto/asn1/x_bignum.c=0D + $(OPENSSL_PATH)/crypto/asn1/x_info.c=0D + $(OPENSSL_PATH)/crypto/asn1/x_int64.c=0D + $(OPENSSL_PATH)/crypto/asn1/x_long.c=0D + $(OPENSSL_PATH)/crypto/asn1/x_pkey.c=0D + $(OPENSSL_PATH)/crypto/asn1/x_sig.c=0D + $(OPENSSL_PATH)/crypto/asn1/x_spki.c=0D + $(OPENSSL_PATH)/crypto/asn1/x_val.c=0D + $(OPENSSL_PATH)/crypto/async/arch/async_null.c=0D + $(OPENSSL_PATH)/crypto/async/arch/async_posix.c=0D + $(OPENSSL_PATH)/crypto/async/arch/async_win.c=0D + $(OPENSSL_PATH)/crypto/async/async.c=0D + $(OPENSSL_PATH)/crypto/async/async_err.c=0D + $(OPENSSL_PATH)/crypto/async/async_wait.c=0D + $(OPENSSL_PATH)/crypto/bio/b_addr.c=0D + $(OPENSSL_PATH)/crypto/bio/b_dump.c=0D + $(OPENSSL_PATH)/crypto/bio/b_sock.c=0D + $(OPENSSL_PATH)/crypto/bio/b_sock2.c=0D + $(OPENSSL_PATH)/crypto/bio/bf_buff.c=0D + $(OPENSSL_PATH)/crypto/bio/bf_lbuf.c=0D + $(OPENSSL_PATH)/crypto/bio/bf_nbio.c=0D + $(OPENSSL_PATH)/crypto/bio/bf_null.c=0D + $(OPENSSL_PATH)/crypto/bio/bio_cb.c=0D + $(OPENSSL_PATH)/crypto/bio/bio_err.c=0D + $(OPENSSL_PATH)/crypto/bio/bio_lib.c=0D + $(OPENSSL_PATH)/crypto/bio/bio_meth.c=0D + $(OPENSSL_PATH)/crypto/bio/bss_acpt.c=0D + $(OPENSSL_PATH)/crypto/bio/bss_bio.c=0D + $(OPENSSL_PATH)/crypto/bio/bss_conn.c=0D + $(OPENSSL_PATH)/crypto/bio/bss_dgram.c=0D + $(OPENSSL_PATH)/crypto/bio/bss_fd.c=0D + $(OPENSSL_PATH)/crypto/bio/bss_file.c=0D + $(OPENSSL_PATH)/crypto/bio/bss_log.c=0D + $(OPENSSL_PATH)/crypto/bio/bss_mem.c=0D + $(OPENSSL_PATH)/crypto/bio/bss_null.c=0D + $(OPENSSL_PATH)/crypto/bio/bss_sock.c=0D + $(OPENSSL_PATH)/crypto/bn/bn_add.c=0D + $(OPENSSL_PATH)/crypto/bn/bn_asm.c=0D + $(OPENSSL_PATH)/crypto/bn/bn_blind.c=0D + $(OPENSSL_PATH)/crypto/bn/bn_const.c=0D + $(OPENSSL_PATH)/crypto/bn/bn_ctx.c=0D + $(OPENSSL_PATH)/crypto/bn/bn_depr.c=0D + $(OPENSSL_PATH)/crypto/bn/bn_dh.c=0D + $(OPENSSL_PATH)/crypto/bn/bn_div.c=0D + $(OPENSSL_PATH)/crypto/bn/bn_err.c=0D + $(OPENSSL_PATH)/crypto/bn/bn_exp.c=0D + $(OPENSSL_PATH)/crypto/bn/bn_exp2.c=0D + $(OPENSSL_PATH)/crypto/bn/bn_gcd.c=0D + $(OPENSSL_PATH)/crypto/bn/bn_gf2m.c=0D + $(OPENSSL_PATH)/crypto/bn/bn_intern.c=0D + $(OPENSSL_PATH)/crypto/bn/bn_kron.c=0D + $(OPENSSL_PATH)/crypto/bn/bn_lib.c=0D + $(OPENSSL_PATH)/crypto/bn/bn_mod.c=0D + $(OPENSSL_PATH)/crypto/bn/bn_mont.c=0D + $(OPENSSL_PATH)/crypto/bn/bn_mpi.c=0D + $(OPENSSL_PATH)/crypto/bn/bn_mul.c=0D + $(OPENSSL_PATH)/crypto/bn/bn_nist.c=0D + $(OPENSSL_PATH)/crypto/bn/bn_prime.c=0D + $(OPENSSL_PATH)/crypto/bn/bn_print.c=0D + $(OPENSSL_PATH)/crypto/bn/bn_rand.c=0D + $(OPENSSL_PATH)/crypto/bn/bn_recp.c=0D + $(OPENSSL_PATH)/crypto/bn/bn_shift.c=0D + $(OPENSSL_PATH)/crypto/bn/bn_sqr.c=0D + $(OPENSSL_PATH)/crypto/bn/bn_sqrt.c=0D + $(OPENSSL_PATH)/crypto/bn/bn_srp.c=0D + $(OPENSSL_PATH)/crypto/bn/bn_word.c=0D + $(OPENSSL_PATH)/crypto/bn/bn_x931p.c=0D + $(OPENSSL_PATH)/crypto/buffer/buf_err.c=0D + $(OPENSSL_PATH)/crypto/buffer/buffer.c=0D + $(OPENSSL_PATH)/crypto/cmac/cm_ameth.c=0D + $(OPENSSL_PATH)/crypto/cmac/cm_pmeth.c=0D + $(OPENSSL_PATH)/crypto/cmac/cmac.c=0D + $(OPENSSL_PATH)/crypto/comp/c_zlib.c=0D + $(OPENSSL_PATH)/crypto/comp/comp_err.c=0D + $(OPENSSL_PATH)/crypto/comp/comp_lib.c=0D + $(OPENSSL_PATH)/crypto/conf/conf_api.c=0D + $(OPENSSL_PATH)/crypto/conf/conf_def.c=0D + $(OPENSSL_PATH)/crypto/conf/conf_err.c=0D + $(OPENSSL_PATH)/crypto/conf/conf_lib.c=0D + $(OPENSSL_PATH)/crypto/conf/conf_mall.c=0D + $(OPENSSL_PATH)/crypto/conf/conf_mod.c=0D + $(OPENSSL_PATH)/crypto/conf/conf_sap.c=0D + $(OPENSSL_PATH)/crypto/conf/conf_ssl.c=0D + $(OPENSSL_PATH)/crypto/cpt_err.c=0D + $(OPENSSL_PATH)/crypto/cryptlib.c=0D + $(OPENSSL_PATH)/crypto/ctype.c=0D + $(OPENSSL_PATH)/crypto/cversion.c=0D + $(OPENSSL_PATH)/crypto/dh/dh_ameth.c=0D + $(OPENSSL_PATH)/crypto/dh/dh_asn1.c=0D + $(OPENSSL_PATH)/crypto/dh/dh_check.c=0D + $(OPENSSL_PATH)/crypto/dh/dh_depr.c=0D + $(OPENSSL_PATH)/crypto/dh/dh_err.c=0D + $(OPENSSL_PATH)/crypto/dh/dh_gen.c=0D + $(OPENSSL_PATH)/crypto/dh/dh_kdf.c=0D + $(OPENSSL_PATH)/crypto/dh/dh_key.c=0D + $(OPENSSL_PATH)/crypto/dh/dh_lib.c=0D + $(OPENSSL_PATH)/crypto/dh/dh_meth.c=0D + $(OPENSSL_PATH)/crypto/dh/dh_pmeth.c=0D + $(OPENSSL_PATH)/crypto/dh/dh_prn.c=0D + $(OPENSSL_PATH)/crypto/dh/dh_rfc5114.c=0D + $(OPENSSL_PATH)/crypto/dh/dh_rfc7919.c=0D + $(OPENSSL_PATH)/crypto/dso/dso_dl.c=0D + $(OPENSSL_PATH)/crypto/dso/dso_dlfcn.c=0D + $(OPENSSL_PATH)/crypto/dso/dso_err.c=0D + $(OPENSSL_PATH)/crypto/dso/dso_lib.c=0D + $(OPENSSL_PATH)/crypto/dso/dso_openssl.c=0D + $(OPENSSL_PATH)/crypto/dso/dso_vms.c=0D + $(OPENSSL_PATH)/crypto/dso/dso_win32.c=0D + $(OPENSSL_PATH)/crypto/ebcdic.c=0D + $(OPENSSL_PATH)/crypto/err/err.c=0D + $(OPENSSL_PATH)/crypto/err/err_prn.c=0D + $(OPENSSL_PATH)/crypto/evp/bio_b64.c=0D + $(OPENSSL_PATH)/crypto/evp/bio_enc.c=0D + $(OPENSSL_PATH)/crypto/evp/bio_md.c=0D + $(OPENSSL_PATH)/crypto/evp/bio_ok.c=0D + $(OPENSSL_PATH)/crypto/evp/c_allc.c=0D + $(OPENSSL_PATH)/crypto/evp/c_alld.c=0D + $(OPENSSL_PATH)/crypto/evp/cmeth_lib.c=0D + $(OPENSSL_PATH)/crypto/evp/digest.c=0D + $(OPENSSL_PATH)/crypto/evp/e_aes.c=0D + $(OPENSSL_PATH)/crypto/evp/e_aes_cbc_hmac_sha1.c=0D + $(OPENSSL_PATH)/crypto/evp/e_aes_cbc_hmac_sha256.c=0D + $(OPENSSL_PATH)/crypto/evp/e_aria.c=0D + $(OPENSSL_PATH)/crypto/evp/e_bf.c=0D + $(OPENSSL_PATH)/crypto/evp/e_camellia.c=0D + $(OPENSSL_PATH)/crypto/evp/e_cast.c=0D + $(OPENSSL_PATH)/crypto/evp/e_chacha20_poly1305.c=0D + $(OPENSSL_PATH)/crypto/evp/e_des.c=0D + $(OPENSSL_PATH)/crypto/evp/e_des3.c=0D + $(OPENSSL_PATH)/crypto/evp/e_idea.c=0D + $(OPENSSL_PATH)/crypto/evp/e_null.c=0D + $(OPENSSL_PATH)/crypto/evp/e_old.c=0D + $(OPENSSL_PATH)/crypto/evp/e_rc2.c=0D + $(OPENSSL_PATH)/crypto/evp/e_rc4.c=0D + $(OPENSSL_PATH)/crypto/evp/e_rc4_hmac_md5.c=0D + $(OPENSSL_PATH)/crypto/evp/e_rc5.c=0D + $(OPENSSL_PATH)/crypto/evp/e_seed.c=0D + $(OPENSSL_PATH)/crypto/evp/e_sm4.c=0D + $(OPENSSL_PATH)/crypto/evp/e_xcbc_d.c=0D + $(OPENSSL_PATH)/crypto/evp/encode.c=0D + $(OPENSSL_PATH)/crypto/evp/evp_cnf.c=0D + $(OPENSSL_PATH)/crypto/evp/evp_enc.c=0D + $(OPENSSL_PATH)/crypto/evp/evp_err.c=0D + $(OPENSSL_PATH)/crypto/evp/evp_key.c=0D + $(OPENSSL_PATH)/crypto/evp/evp_lib.c=0D + $(OPENSSL_PATH)/crypto/evp/evp_pbe.c=0D + $(OPENSSL_PATH)/crypto/evp/evp_pkey.c=0D + $(OPENSSL_PATH)/crypto/evp/m_md2.c=0D + $(OPENSSL_PATH)/crypto/evp/m_md4.c=0D + $(OPENSSL_PATH)/crypto/evp/m_md5.c=0D + $(OPENSSL_PATH)/crypto/evp/m_md5_sha1.c=0D + $(OPENSSL_PATH)/crypto/evp/m_mdc2.c=0D + $(OPENSSL_PATH)/crypto/evp/m_null.c=0D + $(OPENSSL_PATH)/crypto/evp/m_ripemd.c=0D + $(OPENSSL_PATH)/crypto/evp/m_sha1.c=0D + $(OPENSSL_PATH)/crypto/evp/m_sha3.c=0D + $(OPENSSL_PATH)/crypto/evp/m_sigver.c=0D + $(OPENSSL_PATH)/crypto/evp/m_wp.c=0D + $(OPENSSL_PATH)/crypto/evp/names.c=0D + $(OPENSSL_PATH)/crypto/evp/p5_crpt.c=0D + $(OPENSSL_PATH)/crypto/evp/p5_crpt2.c=0D + $(OPENSSL_PATH)/crypto/evp/p_dec.c=0D + $(OPENSSL_PATH)/crypto/evp/p_enc.c=0D + $(OPENSSL_PATH)/crypto/evp/p_lib.c=0D + $(OPENSSL_PATH)/crypto/evp/p_open.c=0D + $(OPENSSL_PATH)/crypto/evp/p_seal.c=0D + $(OPENSSL_PATH)/crypto/evp/p_sign.c=0D + $(OPENSSL_PATH)/crypto/evp/p_verify.c=0D + $(OPENSSL_PATH)/crypto/evp/pbe_scrypt.c=0D + $(OPENSSL_PATH)/crypto/evp/pmeth_fn.c=0D + $(OPENSSL_PATH)/crypto/evp/pmeth_gn.c=0D + $(OPENSSL_PATH)/crypto/evp/pmeth_lib.c=0D + $(OPENSSL_PATH)/crypto/ex_data.c=0D + $(OPENSSL_PATH)/crypto/getenv.c=0D + $(OPENSSL_PATH)/crypto/hmac/hm_ameth.c=0D + $(OPENSSL_PATH)/crypto/hmac/hm_pmeth.c=0D + $(OPENSSL_PATH)/crypto/hmac/hmac.c=0D + $(OPENSSL_PATH)/crypto/init.c=0D + $(OPENSSL_PATH)/crypto/kdf/hkdf.c=0D + $(OPENSSL_PATH)/crypto/kdf/kdf_err.c=0D + $(OPENSSL_PATH)/crypto/kdf/scrypt.c=0D + $(OPENSSL_PATH)/crypto/kdf/tls1_prf.c=0D + $(OPENSSL_PATH)/crypto/lhash/lh_stats.c=0D + $(OPENSSL_PATH)/crypto/lhash/lhash.c=0D + $(OPENSSL_PATH)/crypto/md5/md5_dgst.c=0D + $(OPENSSL_PATH)/crypto/md5/md5_one.c=0D + $(OPENSSL_PATH)/crypto/mem.c=0D + $(OPENSSL_PATH)/crypto/mem_dbg.c=0D + $(OPENSSL_PATH)/crypto/mem_sec.c=0D + $(OPENSSL_PATH)/crypto/modes/cbc128.c=0D + $(OPENSSL_PATH)/crypto/modes/ccm128.c=0D + $(OPENSSL_PATH)/crypto/modes/cfb128.c=0D + $(OPENSSL_PATH)/crypto/modes/ctr128.c=0D + $(OPENSSL_PATH)/crypto/modes/cts128.c=0D + $(OPENSSL_PATH)/crypto/modes/gcm128.c=0D + $(OPENSSL_PATH)/crypto/modes/ocb128.c=0D + $(OPENSSL_PATH)/crypto/modes/ofb128.c=0D + $(OPENSSL_PATH)/crypto/modes/wrap128.c=0D + $(OPENSSL_PATH)/crypto/modes/xts128.c=0D + $(OPENSSL_PATH)/crypto/o_dir.c=0D + $(OPENSSL_PATH)/crypto/o_fips.c=0D + $(OPENSSL_PATH)/crypto/o_fopen.c=0D + $(OPENSSL_PATH)/crypto/o_init.c=0D + $(OPENSSL_PATH)/crypto/o_str.c=0D + $(OPENSSL_PATH)/crypto/o_time.c=0D + $(OPENSSL_PATH)/crypto/objects/o_names.c=0D + $(OPENSSL_PATH)/crypto/objects/obj_dat.c=0D + $(OPENSSL_PATH)/crypto/objects/obj_err.c=0D + $(OPENSSL_PATH)/crypto/objects/obj_lib.c=0D + $(OPENSSL_PATH)/crypto/objects/obj_xref.c=0D + $(OPENSSL_PATH)/crypto/ocsp/ocsp_asn.c=0D + $(OPENSSL_PATH)/crypto/ocsp/ocsp_cl.c=0D + $(OPENSSL_PATH)/crypto/ocsp/ocsp_err.c=0D + $(OPENSSL_PATH)/crypto/ocsp/ocsp_ext.c=0D + $(OPENSSL_PATH)/crypto/ocsp/ocsp_ht.c=0D + $(OPENSSL_PATH)/crypto/ocsp/ocsp_lib.c=0D + $(OPENSSL_PATH)/crypto/ocsp/ocsp_prn.c=0D + $(OPENSSL_PATH)/crypto/ocsp/ocsp_srv.c=0D + $(OPENSSL_PATH)/crypto/ocsp/ocsp_vfy.c=0D + $(OPENSSL_PATH)/crypto/ocsp/v3_ocsp.c=0D + $(OPENSSL_PATH)/crypto/pem/pem_all.c=0D + $(OPENSSL_PATH)/crypto/pem/pem_err.c=0D + $(OPENSSL_PATH)/crypto/pem/pem_info.c=0D + $(OPENSSL_PATH)/crypto/pem/pem_lib.c=0D + $(OPENSSL_PATH)/crypto/pem/pem_oth.c=0D + $(OPENSSL_PATH)/crypto/pem/pem_pk8.c=0D + $(OPENSSL_PATH)/crypto/pem/pem_pkey.c=0D + $(OPENSSL_PATH)/crypto/pem/pem_sign.c=0D + $(OPENSSL_PATH)/crypto/pem/pem_x509.c=0D + $(OPENSSL_PATH)/crypto/pem/pem_xaux.c=0D + $(OPENSSL_PATH)/crypto/pem/pvkfmt.c=0D + $(OPENSSL_PATH)/crypto/pkcs12/p12_add.c=0D + $(OPENSSL_PATH)/crypto/pkcs12/p12_asn.c=0D + $(OPENSSL_PATH)/crypto/pkcs12/p12_attr.c=0D + $(OPENSSL_PATH)/crypto/pkcs12/p12_crpt.c=0D + $(OPENSSL_PATH)/crypto/pkcs12/p12_crt.c=0D + $(OPENSSL_PATH)/crypto/pkcs12/p12_decr.c=0D + $(OPENSSL_PATH)/crypto/pkcs12/p12_init.c=0D + $(OPENSSL_PATH)/crypto/pkcs12/p12_key.c=0D + $(OPENSSL_PATH)/crypto/pkcs12/p12_kiss.c=0D + $(OPENSSL_PATH)/crypto/pkcs12/p12_mutl.c=0D + $(OPENSSL_PATH)/crypto/pkcs12/p12_npas.c=0D + $(OPENSSL_PATH)/crypto/pkcs12/p12_p8d.c=0D + $(OPENSSL_PATH)/crypto/pkcs12/p12_p8e.c=0D + $(OPENSSL_PATH)/crypto/pkcs12/p12_sbag.c=0D + $(OPENSSL_PATH)/crypto/pkcs12/p12_utl.c=0D + $(OPENSSL_PATH)/crypto/pkcs12/pk12err.c=0D + $(OPENSSL_PATH)/crypto/pkcs7/bio_pk7.c=0D + $(OPENSSL_PATH)/crypto/pkcs7/pk7_asn1.c=0D + $(OPENSSL_PATH)/crypto/pkcs7/pk7_attr.c=0D + $(OPENSSL_PATH)/crypto/pkcs7/pk7_doit.c=0D + $(OPENSSL_PATH)/crypto/pkcs7/pk7_lib.c=0D + $(OPENSSL_PATH)/crypto/pkcs7/pk7_mime.c=0D + $(OPENSSL_PATH)/crypto/pkcs7/pk7_smime.c=0D + $(OPENSSL_PATH)/crypto/pkcs7/pkcs7err.c=0D + $(OPENSSL_PATH)/crypto/rand/drbg_ctr.c=0D + $(OPENSSL_PATH)/crypto/rand/drbg_lib.c=0D + $(OPENSSL_PATH)/crypto/rand/rand_egd.c=0D + $(OPENSSL_PATH)/crypto/rand/rand_err.c=0D + $(OPENSSL_PATH)/crypto/rand/rand_lib.c=0D + $(OPENSSL_PATH)/crypto/rand/rand_unix.c=0D + $(OPENSSL_PATH)/crypto/rand/rand_vms.c=0D + $(OPENSSL_PATH)/crypto/rand/rand_win.c=0D + $(OPENSSL_PATH)/crypto/rsa/rsa_ameth.c=0D + $(OPENSSL_PATH)/crypto/rsa/rsa_asn1.c=0D + $(OPENSSL_PATH)/crypto/rsa/rsa_chk.c=0D + $(OPENSSL_PATH)/crypto/rsa/rsa_crpt.c=0D + $(OPENSSL_PATH)/crypto/rsa/rsa_depr.c=0D + $(OPENSSL_PATH)/crypto/rsa/rsa_err.c=0D + $(OPENSSL_PATH)/crypto/rsa/rsa_gen.c=0D + $(OPENSSL_PATH)/crypto/rsa/rsa_lib.c=0D + $(OPENSSL_PATH)/crypto/rsa/rsa_meth.c=0D + $(OPENSSL_PATH)/crypto/rsa/rsa_mp.c=0D + $(OPENSSL_PATH)/crypto/rsa/rsa_none.c=0D + $(OPENSSL_PATH)/crypto/rsa/rsa_oaep.c=0D + $(OPENSSL_PATH)/crypto/rsa/rsa_ossl.c=0D + $(OPENSSL_PATH)/crypto/rsa/rsa_pk1.c=0D + $(OPENSSL_PATH)/crypto/rsa/rsa_pmeth.c=0D + $(OPENSSL_PATH)/crypto/rsa/rsa_prn.c=0D + $(OPENSSL_PATH)/crypto/rsa/rsa_pss.c=0D + $(OPENSSL_PATH)/crypto/rsa/rsa_saos.c=0D + $(OPENSSL_PATH)/crypto/rsa/rsa_sign.c=0D + $(OPENSSL_PATH)/crypto/rsa/rsa_ssl.c=0D + $(OPENSSL_PATH)/crypto/rsa/rsa_x931.c=0D + $(OPENSSL_PATH)/crypto/rsa/rsa_x931g.c=0D + $(OPENSSL_PATH)/crypto/sha/keccak1600.c=0D + $(OPENSSL_PATH)/crypto/sha/sha1_one.c=0D + $(OPENSSL_PATH)/crypto/sha/sha1dgst.c=0D + $(OPENSSL_PATH)/crypto/sha/sha256.c=0D + $(OPENSSL_PATH)/crypto/sha/sha512.c=0D + $(OPENSSL_PATH)/crypto/siphash/siphash.c=0D + $(OPENSSL_PATH)/crypto/siphash/siphash_ameth.c=0D + $(OPENSSL_PATH)/crypto/siphash/siphash_pmeth.c=0D + $(OPENSSL_PATH)/crypto/sm3/m_sm3.c=0D + $(OPENSSL_PATH)/crypto/sm3/sm3.c=0D + $(OPENSSL_PATH)/crypto/sm4/sm4.c=0D + $(OPENSSL_PATH)/crypto/stack/stack.c=0D + $(OPENSSL_PATH)/crypto/threads_none.c=0D + $(OPENSSL_PATH)/crypto/threads_pthread.c=0D + $(OPENSSL_PATH)/crypto/threads_win.c=0D + $(OPENSSL_PATH)/crypto/txt_db/txt_db.c=0D + $(OPENSSL_PATH)/crypto/ui/ui_err.c=0D + $(OPENSSL_PATH)/crypto/ui/ui_lib.c=0D + $(OPENSSL_PATH)/crypto/ui/ui_null.c=0D + $(OPENSSL_PATH)/crypto/ui/ui_openssl.c=0D + $(OPENSSL_PATH)/crypto/ui/ui_util.c=0D + $(OPENSSL_PATH)/crypto/uid.c=0D + $(OPENSSL_PATH)/crypto/x509/by_dir.c=0D + $(OPENSSL_PATH)/crypto/x509/by_file.c=0D + $(OPENSSL_PATH)/crypto/x509/t_crl.c=0D + $(OPENSSL_PATH)/crypto/x509/t_req.c=0D + $(OPENSSL_PATH)/crypto/x509/t_x509.c=0D + $(OPENSSL_PATH)/crypto/x509/x509_att.c=0D + $(OPENSSL_PATH)/crypto/x509/x509_cmp.c=0D + $(OPENSSL_PATH)/crypto/x509/x509_d2.c=0D + $(OPENSSL_PATH)/crypto/x509/x509_def.c=0D + $(OPENSSL_PATH)/crypto/x509/x509_err.c=0D + $(OPENSSL_PATH)/crypto/x509/x509_ext.c=0D + $(OPENSSL_PATH)/crypto/x509/x509_lu.c=0D + $(OPENSSL_PATH)/crypto/x509/x509_meth.c=0D + $(OPENSSL_PATH)/crypto/x509/x509_obj.c=0D + $(OPENSSL_PATH)/crypto/x509/x509_r2x.c=0D + $(OPENSSL_PATH)/crypto/x509/x509_req.c=0D + $(OPENSSL_PATH)/crypto/x509/x509_set.c=0D + $(OPENSSL_PATH)/crypto/x509/x509_trs.c=0D + $(OPENSSL_PATH)/crypto/x509/x509_txt.c=0D + $(OPENSSL_PATH)/crypto/x509/x509_v3.c=0D + $(OPENSSL_PATH)/crypto/x509/x509_vfy.c=0D + $(OPENSSL_PATH)/crypto/x509/x509_vpm.c=0D + $(OPENSSL_PATH)/crypto/x509/x509cset.c=0D + $(OPENSSL_PATH)/crypto/x509/x509name.c=0D + $(OPENSSL_PATH)/crypto/x509/x509rset.c=0D + $(OPENSSL_PATH)/crypto/x509/x509spki.c=0D + $(OPENSSL_PATH)/crypto/x509/x509type.c=0D + $(OPENSSL_PATH)/crypto/x509/x_all.c=0D + $(OPENSSL_PATH)/crypto/x509/x_attrib.c=0D + $(OPENSSL_PATH)/crypto/x509/x_crl.c=0D + $(OPENSSL_PATH)/crypto/x509/x_exten.c=0D + $(OPENSSL_PATH)/crypto/x509/x_name.c=0D + $(OPENSSL_PATH)/crypto/x509/x_pubkey.c=0D + $(OPENSSL_PATH)/crypto/x509/x_req.c=0D + $(OPENSSL_PATH)/crypto/x509/x_x509.c=0D + $(OPENSSL_PATH)/crypto/x509/x_x509a.c=0D + $(OPENSSL_PATH)/crypto/x509v3/pcy_cache.c=0D + $(OPENSSL_PATH)/crypto/x509v3/pcy_data.c=0D + $(OPENSSL_PATH)/crypto/x509v3/pcy_lib.c=0D + $(OPENSSL_PATH)/crypto/x509v3/pcy_map.c=0D + $(OPENSSL_PATH)/crypto/x509v3/pcy_node.c=0D + $(OPENSSL_PATH)/crypto/x509v3/pcy_tree.c=0D + $(OPENSSL_PATH)/crypto/x509v3/v3_addr.c=0D + $(OPENSSL_PATH)/crypto/x509v3/v3_admis.c=0D + $(OPENSSL_PATH)/crypto/x509v3/v3_akey.c=0D + $(OPENSSL_PATH)/crypto/x509v3/v3_akeya.c=0D + $(OPENSSL_PATH)/crypto/x509v3/v3_alt.c=0D + $(OPENSSL_PATH)/crypto/x509v3/v3_asid.c=0D + $(OPENSSL_PATH)/crypto/x509v3/v3_bcons.c=0D + $(OPENSSL_PATH)/crypto/x509v3/v3_bitst.c=0D + $(OPENSSL_PATH)/crypto/x509v3/v3_conf.c=0D + $(OPENSSL_PATH)/crypto/x509v3/v3_cpols.c=0D + $(OPENSSL_PATH)/crypto/x509v3/v3_crld.c=0D + $(OPENSSL_PATH)/crypto/x509v3/v3_enum.c=0D + $(OPENSSL_PATH)/crypto/x509v3/v3_extku.c=0D + $(OPENSSL_PATH)/crypto/x509v3/v3_genn.c=0D + $(OPENSSL_PATH)/crypto/x509v3/v3_ia5.c=0D + $(OPENSSL_PATH)/crypto/x509v3/v3_info.c=0D + $(OPENSSL_PATH)/crypto/x509v3/v3_int.c=0D + $(OPENSSL_PATH)/crypto/x509v3/v3_lib.c=0D + $(OPENSSL_PATH)/crypto/x509v3/v3_ncons.c=0D + $(OPENSSL_PATH)/crypto/x509v3/v3_pci.c=0D + $(OPENSSL_PATH)/crypto/x509v3/v3_pcia.c=0D + $(OPENSSL_PATH)/crypto/x509v3/v3_pcons.c=0D + $(OPENSSL_PATH)/crypto/x509v3/v3_pku.c=0D + $(OPENSSL_PATH)/crypto/x509v3/v3_pmaps.c=0D + $(OPENSSL_PATH)/crypto/x509v3/v3_prn.c=0D + $(OPENSSL_PATH)/crypto/x509v3/v3_purp.c=0D + $(OPENSSL_PATH)/crypto/x509v3/v3_skey.c=0D + $(OPENSSL_PATH)/crypto/x509v3/v3_sxnet.c=0D + $(OPENSSL_PATH)/crypto/x509v3/v3_tlsf.c=0D + $(OPENSSL_PATH)/crypto/x509v3/v3_utl.c=0D + $(OPENSSL_PATH)/crypto/x509v3/v3err.c=0D + $(OPENSSL_PATH)/crypto/arm_arch.h=0D + $(OPENSSL_PATH)/crypto/mips_arch.h=0D + $(OPENSSL_PATH)/crypto/ppc_arch.h=0D + $(OPENSSL_PATH)/crypto/s390x_arch.h=0D + $(OPENSSL_PATH)/crypto/sparc_arch.h=0D + $(OPENSSL_PATH)/crypto/vms_rms.h=0D + $(OPENSSL_PATH)/crypto/aes/aes_local.h=0D + $(OPENSSL_PATH)/crypto/asn1/asn1_item_list.h=0D + $(OPENSSL_PATH)/crypto/asn1/asn1_local.h=0D + $(OPENSSL_PATH)/crypto/asn1/charmap.h=0D + $(OPENSSL_PATH)/crypto/asn1/standard_methods.h=0D + $(OPENSSL_PATH)/crypto/asn1/tbl_standard.h=0D + $(OPENSSL_PATH)/crypto/async/async_local.h=0D + $(OPENSSL_PATH)/crypto/async/arch/async_null.h=0D + $(OPENSSL_PATH)/crypto/async/arch/async_posix.h=0D + $(OPENSSL_PATH)/crypto/async/arch/async_win.h=0D + $(OPENSSL_PATH)/crypto/bio/bio_local.h=0D + $(OPENSSL_PATH)/crypto/bn/bn_local.h=0D + $(OPENSSL_PATH)/crypto/bn/bn_prime.h=0D + $(OPENSSL_PATH)/crypto/bn/rsaz_exp.h=0D + $(OPENSSL_PATH)/crypto/comp/comp_local.h=0D + $(OPENSSL_PATH)/crypto/conf/conf_def.h=0D + $(OPENSSL_PATH)/crypto/conf/conf_local.h=0D + $(OPENSSL_PATH)/crypto/dh/dh_local.h=0D + $(OPENSSL_PATH)/crypto/dso/dso_local.h=0D + $(OPENSSL_PATH)/crypto/evp/evp_local.h=0D + $(OPENSSL_PATH)/crypto/hmac/hmac_local.h=0D + $(OPENSSL_PATH)/crypto/lhash/lhash_local.h=0D + $(OPENSSL_PATH)/crypto/md5/md5_local.h=0D + $(OPENSSL_PATH)/crypto/modes/modes_local.h=0D + $(OPENSSL_PATH)/crypto/objects/obj_dat.h=0D + $(OPENSSL_PATH)/crypto/objects/obj_local.h=0D + $(OPENSSL_PATH)/crypto/objects/obj_xref.h=0D + $(OPENSSL_PATH)/crypto/ocsp/ocsp_local.h=0D + $(OPENSSL_PATH)/crypto/pkcs12/p12_local.h=0D + $(OPENSSL_PATH)/crypto/rand/rand_local.h=0D + $(OPENSSL_PATH)/crypto/rsa/rsa_local.h=0D + $(OPENSSL_PATH)/crypto/sha/sha_local.h=0D + $(OPENSSL_PATH)/crypto/siphash/siphash_local.h=0D + $(OPENSSL_PATH)/crypto/sm3/sm3_local.h=0D + $(OPENSSL_PATH)/crypto/store/store_local.h=0D + $(OPENSSL_PATH)/crypto/ui/ui_local.h=0D + $(OPENSSL_PATH)/crypto/x509/x509_local.h=0D + $(OPENSSL_PATH)/crypto/x509v3/ext_dat.h=0D + $(OPENSSL_PATH)/crypto/x509v3/pcy_local.h=0D + $(OPENSSL_PATH)/crypto/x509v3/standard_exts.h=0D + $(OPENSSL_PATH)/crypto/x509v3/v3_admis.h=0D + $(OPENSSL_PATH)/ssl/bio_ssl.c=0D + $(OPENSSL_PATH)/ssl/d1_lib.c=0D + $(OPENSSL_PATH)/ssl/d1_msg.c=0D + $(OPENSSL_PATH)/ssl/d1_srtp.c=0D + $(OPENSSL_PATH)/ssl/methods.c=0D + $(OPENSSL_PATH)/ssl/packet.c=0D + $(OPENSSL_PATH)/ssl/pqueue.c=0D + $(OPENSSL_PATH)/ssl/record/dtls1_bitmap.c=0D + $(OPENSSL_PATH)/ssl/record/rec_layer_d1.c=0D + $(OPENSSL_PATH)/ssl/record/rec_layer_s3.c=0D + $(OPENSSL_PATH)/ssl/record/ssl3_buffer.c=0D + $(OPENSSL_PATH)/ssl/record/ssl3_record.c=0D + $(OPENSSL_PATH)/ssl/record/ssl3_record_tls13.c=0D + $(OPENSSL_PATH)/ssl/s3_cbc.c=0D + $(OPENSSL_PATH)/ssl/s3_enc.c=0D + $(OPENSSL_PATH)/ssl/s3_lib.c=0D + $(OPENSSL_PATH)/ssl/s3_msg.c=0D + $(OPENSSL_PATH)/ssl/ssl_asn1.c=0D + $(OPENSSL_PATH)/ssl/ssl_cert.c=0D + $(OPENSSL_PATH)/ssl/ssl_ciph.c=0D + $(OPENSSL_PATH)/ssl/ssl_conf.c=0D + $(OPENSSL_PATH)/ssl/ssl_err.c=0D + $(OPENSSL_PATH)/ssl/ssl_init.c=0D + $(OPENSSL_PATH)/ssl/ssl_lib.c=0D + $(OPENSSL_PATH)/ssl/ssl_mcnf.c=0D + $(OPENSSL_PATH)/ssl/ssl_rsa.c=0D + $(OPENSSL_PATH)/ssl/ssl_sess.c=0D + $(OPENSSL_PATH)/ssl/ssl_stat.c=0D + $(OPENSSL_PATH)/ssl/ssl_txt.c=0D + $(OPENSSL_PATH)/ssl/ssl_utst.c=0D + $(OPENSSL_PATH)/ssl/statem/extensions.c=0D + $(OPENSSL_PATH)/ssl/statem/extensions_clnt.c=0D + $(OPENSSL_PATH)/ssl/statem/extensions_cust.c=0D + $(OPENSSL_PATH)/ssl/statem/extensions_srvr.c=0D + $(OPENSSL_PATH)/ssl/statem/statem.c=0D + $(OPENSSL_PATH)/ssl/statem/statem_clnt.c=0D + $(OPENSSL_PATH)/ssl/statem/statem_dtls.c=0D + $(OPENSSL_PATH)/ssl/statem/statem_lib.c=0D + $(OPENSSL_PATH)/ssl/statem/statem_srvr.c=0D + $(OPENSSL_PATH)/ssl/t1_enc.c=0D + $(OPENSSL_PATH)/ssl/t1_lib.c=0D + $(OPENSSL_PATH)/ssl/t1_trce.c=0D + $(OPENSSL_PATH)/ssl/tls13_enc.c=0D + $(OPENSSL_PATH)/ssl/tls_srp.c=0D + $(OPENSSL_PATH)/ssl/packet_local.h=0D + $(OPENSSL_PATH)/ssl/ssl_cert_table.h=0D + $(OPENSSL_PATH)/ssl/ssl_local.h=0D + $(OPENSSL_PATH)/ssl/record/record.h=0D + $(OPENSSL_PATH)/ssl/record/record_local.h=0D + $(OPENSSL_PATH)/ssl/statem/statem.h=0D + $(OPENSSL_PATH)/ssl/statem/statem_local.h=0D +# Autogenerated files list ends here=0D + buildinf.h=0D + rand_pool_noise.h=0D + ossl_store.c=0D + rand_pool.c=0D +=0D +[Sources.X64]=0D + rand_pool_noise_tsc.c=0D + ApiHooks.c=0D +=0D +[Packages]=0D + MdePkg/MdePkg.dec=0D + CryptoPkg/CryptoPkg.dec=0D +=0D +[LibraryClasses]=0D + BaseLib=0D + DebugLib=0D + TimerLib=0D + PrintLib=0D +=0D +[BuildOptions]=0D + #=0D + # Disables the following Visual Studio compiler warnings brought by open= ssl source,=0D + # so we do not break the build with /WX option:=0D + # C4090: 'function' : different 'const' qualifiers=0D + # C4132: 'object' : const object should be initialized (tls13_enc.c)=0D + # C4210: nonstandard extension used: function given file scope=0D + # C4244: conversion from type1 to type2, possible loss of data=0D + # C4245: conversion from type1 to type2, signed/unsigned mismatch=0D + # C4267: conversion from size_t to type, possible loss of data=0D + # C4306: 'identifier' : conversion from 'type1' to 'type2' of greater = size=0D + # C4310: cast truncates constant value=0D + # C4389: 'operator' : signed/unsigned mismatch (xxxx)=0D + # C4700: uninitialized local variable 'name' used. (conf_sap.c(71))=0D + # C4702: unreachable code=0D + # C4706: assignment within conditional expression=0D + # C4819: The file contains a character that cannot be represented in t= he current code page=0D + #=0D + MSFT:*_*_X64_CC_FLAGS =3D -U_WIN32 -U_WIN64 -U_MSC_VER $(OPENSSL_FLAG= S) $(OPENSSL_FLAGS_CONFIG) /wd4090 /wd4132 /wd4210 /wd4244 /wd4245 /wd4267 = /wd4306 /wd4310 /wd4700 /wd4389 /wd4702 /wd4706 /wd4819=0D +=0D + INTEL:*_*_X64_CC_FLAGS =3D -U_WIN32 -U_WIN64 -U_MSC_VER -U__ICC $(OPEN= SSL_FLAGS) $(OPENSSL_FLAGS_CONFIG) /w=0D +=0D + #=0D + # Suppress the following build warnings in openssl so we don't break the= build with -Werror=0D + # -Werror=3Dmaybe-uninitialized: there exist some other paths for whic= h the variable is not initialized.=0D + # -Werror=3Dformat: Check calls to printf and scanf, etc., to make sur= e that the arguments supplied have=0D + # types appropriate to the format string specified.=0D + # -Werror=3Dunused-but-set-variable: Warn whenever a local variable is= assigned to, but otherwise unused (aside from its declaration).=0D + #=0D + GCC:*_*_X64_CC_FLAGS =3D -U_WIN32 -U_WIN64 $(OPENSSL_FLAGS) $(OPENSS= L_FLAGS_CONFIG) -Wno-error=3Dmaybe-uninitialized -Wno-error=3Dformat -Wno-f= ormat -Wno-error=3Dunused-but-set-variable -DNO_MSABI_VA_FUNCS=0D +=0D + # suppress the following warnings in openssl so we don't break the build= with warnings-as-errors:=0D + # 1295: Deprecated declaration - give arg types=0D + # 550: was set but never used=0D + # 1293: assignment in condition=0D + # 111: statement is unreachable (invariably "break;" after "return X;" = in case statement)=0D + # 68: integer conversion resulted in a change of sign ("if (Status =3D= =3D -1)")=0D + # 177: was declared but never referenced=0D + # 223: function declared implicitly=0D + # 144: a value of type cannot be used to initialize an entity of= type =0D + # 513: a value of type cannot be assigned to an entity of type <= type>=0D + # 188: enumerated type mixed with another type (i.e. passing an integer= as an enum without a cast)=0D + # 1296: Extended constant initialiser used=0D + # 128: loop is not reachable - may be emitted inappropriately if code f= ollows a conditional return=0D + # from the function that evaluates to true at compile time=0D + # 546: transfer of control bypasses initialization - may be emitted ina= ppropriately if the uninitialized=0D + # variable is never referenced after the jump=0D + # 1: ignore "#1-D: last line of file ends without a newline"=0D + # 3017: may be used before being set (NOTE: This was fixed in O= penSSL 1.1 HEAD with=0D + # commit d9b8b89bec4480de3a10bdaf9425db371c19145b, and can be drop= ped then.)=0D + XCODE:*_*_X64_CC_FLAGS =3D -mmmx -msse -U_WIN32 -U_WIN64 $(OPENSSL_FL= AGS) $(OPENSSL_FLAGS_CONFIG) -w -std=3Dc99 -Wno-error=3Duninitialized=0D diff --git a/CryptoPkg/Library/Include/openssl/opensslconf.h b/CryptoPkg/Li= brary/Include/openssl/opensslconf.h index 3a2544ea5c..e8f73c4d10 100644 --- a/CryptoPkg/Library/Include/openssl/opensslconf.h +++ b/CryptoPkg/Library/Include/openssl/opensslconf.h @@ -112,9 +112,6 @@ extern "C" { #ifndef OPENSSL_NO_ASAN=0D # define OPENSSL_NO_ASAN=0D #endif=0D -#ifndef OPENSSL_NO_ASM=0D -# define OPENSSL_NO_ASM=0D -#endif=0D #ifndef OPENSSL_NO_ASYNC=0D # define OPENSSL_NO_ASYNC=0D #endif=0D diff --git a/CryptoPkg/Library/OpensslLib/ApiHooks.c b/CryptoPkg/Library/Op= ensslLib/ApiHooks.c new file mode 100644 index 0000000000..58cff16838 --- /dev/null +++ b/CryptoPkg/Library/OpensslLib/ApiHooks.c @@ -0,0 +1,18 @@ +/** @file=0D + OpenSSL Library API hooks.=0D +=0D +Copyright (c) 2020, Intel Corporation. All rights reserved.
=0D +SPDX-License-Identifier: BSD-2-Clause-Patent=0D +=0D +**/=0D +=0D +#include =0D +=0D +VOID *=0D +__imp_RtlVirtualUnwind (=0D + VOID * Args=0D + )=0D +{=0D + return NULL;=0D +}=0D +=0D diff --git a/CryptoPkg/Library/OpensslLib/OpensslLibConstructor.c b/CryptoP= kg/Library/OpensslLib/OpensslLibConstructor.c new file mode 100644 index 0000000000..ef20d2b84e --- /dev/null +++ b/CryptoPkg/Library/OpensslLib/OpensslLibConstructor.c @@ -0,0 +1,34 @@ +/** @file=0D + Constructor to initialize CPUID data for OpenSSL assembly operations.=0D +=0D +Copyright (c) 2020, Intel Corporation. All rights reserved.
=0D +SPDX-License-Identifier: BSD-2-Clause-Patent=0D +=0D +**/=0D +=0D +#include =0D +=0D +extern void OPENSSL_cpuid_setup (void);=0D +=0D +/**=0D + Constructor routine for OpensslLib.=0D +=0D + The constructor calls an internal OpenSSL function which fetches a local= copy=0D + of the hardware capability flags, used to enable native crypto instructi= ons.=0D +=0D + @param None=0D +=0D + @retval EFI_SUCCESS The construction succeeded.=0D +=0D +**/=0D +EFI_STATUS=0D +EFIAPI=0D +OpensslLibConstructor (=0D + VOID=0D + )=0D +{=0D + OPENSSL_cpuid_setup ();=0D +=0D + return EFI_SUCCESS;=0D +}=0D +=0D diff --git a/CryptoPkg/Library/OpensslLib/process_files.pl b/CryptoPkg/Libr= ary/OpensslLib/process_files.pl index 57ce195394..472f59bc8e 100755 --- a/CryptoPkg/Library/OpensslLib/process_files.pl +++ b/CryptoPkg/Library/OpensslLib/process_files.pl @@ -9,9 +9,63 @@ # do not need to do this, since the results are stored in the EDK2=0D # git repository for them.=0D #=0D +# Due to the script wrapping required to process the OpenSSL=0D +# configuration data, each native architecture must be processed=0D +# individually by the maintainer (in addition to the standard version):=0D +# ./process_files.pl=0D +# ./process_files.pl X64=0D +# ./process_files.pl [Arch]=0D +=0D use strict;=0D use Cwd;=0D use File::Copy;=0D +use File::Basename;=0D +use File::Path qw(make_path remove_tree);=0D +use Text::Tabs;=0D +=0D +#=0D +# OpenSSL perlasm generator script does not transfer the copyright header= =0D +#=0D +sub copy_license_header=0D +{=0D + my @args =3D split / /, shift; #Separate args by spaces=0D + my $source =3D $args[1]; #Source file is second (after "perl"= )=0D + my $target =3D pop @args; #Target file is always last=0D + chop ($target); #Remove newline char=0D +=0D + my $temp_file_name =3D "license.tmp";=0D + open (my $source_file, "<" . $source) || die $source;=0D + open (my $target_file, "<" . $target) || die $target;=0D + open (my $temp_file, ">" . $temp_file_name) || die $temp_file_name;=0D +=0D + #Add "generated file" warning=0D + $source =3D~ s/^..//; #Remove leading "./"=0D + print ($temp_file "; WARNING: do not edit!\r\n");=0D + print ($temp_file "; Generated from $source\r\n");=0D + print ($temp_file ";\r\n");=0D +=0D + #Copy source file header to temp file=0D + while (my $line =3D <$source_file>) {=0D + next if ($line =3D~ /#!/); #Ignore shebang line=0D + $line =3D~ s/#/;/; #Fix comment character for assembly= =0D + $line =3D~ s/\s+$/\r\n/; #Trim trailing whitepsace, fixup lin= e endings=0D + print ($temp_file $line);=0D + last if ($line =3D~ /http/); #Last line of copyright header conta= ins a web link=0D + }=0D + print ($temp_file "\r\n");=0D + #Retrieve generated assembly contents=0D + while (my $line =3D <$target_file>) {=0D + $line =3D~ s/\s+$/\r\n/; #Trim trailing whitepsace, fixup lin= e endings=0D + print ($temp_file expand ($line)); #expand() replaces tabs with s= paces=0D + }=0D +=0D + close ($source_file);=0D + close ($target_file);=0D + close ($temp_file);=0D +=0D + move ($temp_file_name, $target) ||=0D + die "Cannot replace \"" . $target . "\"!";=0D +}=0D =0D #=0D # Find the openssl directory name for use lib. We have to do this=0D @@ -21,10 +75,41 @@ use File::Copy; #=0D my $inf_file;=0D my $OPENSSL_PATH;=0D +my $uefi_config;=0D +my $extension;=0D +my $arch;=0D my @inf;=0D =0D BEGIN {=0D $inf_file =3D "OpensslLib.inf";=0D + $uefi_config =3D "UEFI";=0D + $arch =3D shift;=0D +=0D + if (defined $arch) {=0D + if (uc ($arch) eq "X64") {=0D + $arch =3D "X64";=0D + $inf_file =3D "OpensslLibX64.inf";=0D + $uefi_config =3D "UEFI-x86_64";=0D + $extension =3D "nasm";=0D + } else {=0D + die "Unsupported architecture \"" . $arch . "\"!";=0D + }=0D + if ($extension eq "nasm") {=0D + if (`nasm -v 2>&1`) {=0D + #Presence of nasm executable will trigger inclusion of AVX= instructions=0D + die "\nCannot run assembly generators with NASM in path!\n= \n";=0D + }=0D + }=0D +=0D + # Prepare assembly folder=0D + if (-d $arch) {=0D + remove_tree ($arch, {safe =3D> 1}) ||=0D + die "Cannot clean assembly folder \"" . $arch . "\"!";=0D + } else {=0D + mkdir $arch ||=0D + die "Cannot create assembly folder \"" . $arch . "\"!";=0D + }=0D + }=0D =0D # Read the contents of the inf file=0D open( FD, "<" . $inf_file ) ||=0D @@ -47,9 +132,9 @@ BEGIN { # Configure UEFI=0D system(=0D "./Configure",=0D - "UEFI",=0D + "--config=3D../uefi-asm.conf",=0D + "$uefi_config",=0D "no-afalgeng",=0D - "no-asm",=0D "no-async",=0D "no-autoerrinit",=0D "no-autoload-config",=0D @@ -129,23 +214,53 @@ BEGIN { # Retrieve file lists from OpenSSL configdata=0D #=0D use configdata qw/%unified_info/;=0D +use configdata qw/%config/;=0D +use configdata qw/%target/;=0D +=0D +#=0D +# Collect build flags from configdata=0D +#=0D +my $flags =3D "";=0D +foreach my $f (@{$config{lib_defines}}) {=0D + $flags .=3D " -D$f";=0D +}=0D =0D my @cryptofilelist =3D ();=0D my @sslfilelist =3D ();=0D +my @asmfilelist =3D ();=0D +my @asmbuild =3D ();=0D foreach my $product ((@{$unified_info{libraries}},=0D @{$unified_info{engines}})) {=0D foreach my $o (@{$unified_info{sources}->{$product}}) {=0D foreach my $s (@{$unified_info{sources}->{$o}}) {=0D - next if ($unified_info{generate}->{$s});=0D - next if $s =3D~ "crypto/bio/b_print.c";=0D -=0D # No need to add unused files in UEFI.=0D # So it can reduce porting time, compile time, library size.=0D + next if $s =3D~ "crypto/bio/b_print.c";=0D next if $s =3D~ "crypto/rand/randfile.c";=0D next if $s =3D~ "crypto/store/";=0D next if $s =3D~ "crypto/err/err_all.c";=0D next if $s =3D~ "crypto/aes/aes_ecb.c";=0D =0D + if ($unified_info{generate}->{$s}) {=0D + if (defined $arch) {=0D + my $buildstring =3D "perl";=0D + foreach my $arg (@{$unified_info{generate}->{$s}}) {=0D + if ($arg =3D~ ".pl") {=0D + $buildstring .=3D " ./openssl/$arg";=0D + } elsif ($arg =3D~ "PERLASM_SCHEME") {=0D + $buildstring .=3D " $target{perlasm_scheme}";= =0D + } elsif ($arg =3D~ "LIB_CFLAGS") {=0D + $buildstring .=3D "$flags";=0D + }=0D + }=0D + ($s, my $path, undef) =3D fileparse($s, qr/\.[^.]*/);= =0D + $buildstring .=3D " ./$arch/$path$s.$extension";=0D + make_path ("./$arch/$path");=0D + push @asmbuild, "$buildstring\n";=0D + push @asmfilelist, " $arch/$path$s.$extension\r\n";=0D + }=0D + next;=0D + }=0D if ($product =3D~ "libssl") {=0D push @sslfilelist, ' $(OPENSSL_PATH)/' . $s . "\r\n";=0D next;=0D @@ -183,15 +298,31 @@ foreach (@headers){ }=0D =0D =0D +#=0D +# Generate assembly files=0D +#=0D +if (@asmbuild) {=0D + print "\n--> Generating assembly files ... ";=0D + foreach my $buildstring (@asmbuild) {=0D + system ("$buildstring");=0D + copy_license_header ($buildstring);=0D + }=0D + print "Done!";=0D +}=0D +=0D #=0D # Update OpensslLib.inf with autogenerated file list=0D #=0D my @new_inf =3D ();=0D my $subbing =3D 0;=0D -print "\n--> Updating OpensslLib.inf ... ";=0D +print "\n--> Updating $inf_file ... ";=0D foreach (@inf) {=0D + if ($_ =3D~ "DEFINE OPENSSL_FLAGS_CONFIG") {=0D + push @new_inf, " DEFINE OPENSSL_FLAGS_CONFIG =3D" . $flags . "= \r\n";=0D + next;=0D + }=0D if ( $_ =3D~ "# Autogenerated files list starts here" ) {=0D - push @new_inf, $_, @cryptofilelist, @sslfilelist;=0D + push @new_inf, $_, @asmfilelist, @cryptofilelist, @sslfilelist;=0D $subbing =3D 1;=0D next;=0D }=0D @@ -216,49 +347,51 @@ rename( $new_inf_file, $inf_file ) || die "rename $inf_file";=0D print "Done!";=0D =0D -#=0D -# Update OpensslLibCrypto.inf with auto-generated file list (no libssl)=0D -#=0D -$inf_file =3D "OpensslLibCrypto.inf";=0D -=0D -# Read the contents of the inf file=0D -@inf =3D ();=0D -@new_inf =3D ();=0D -open( FD, "<" . $inf_file ) ||=0D - die "Cannot open \"" . $inf_file . "\"!";=0D -@inf =3D ();=0D -close(FD) ||=0D - die "Cannot close \"" . $inf_file . "\"!";=0D +if (!defined $arch) {=0D + #=0D + # Update OpensslLibCrypto.inf with auto-generated file list (no libssl= )=0D + #=0D + $inf_file =3D "OpensslLibCrypto.inf";=0D =0D -$subbing =3D 0;=0D -print "\n--> Updating OpensslLibCrypto.inf ... ";=0D -foreach (@inf) {=0D - if ( $_ =3D~ "# Autogenerated files list starts here" ) {=0D - push @new_inf, $_, @cryptofilelist;=0D - $subbing =3D 1;=0D - next;=0D - }=0D - if ( $_ =3D~ "# Autogenerated files list ends here" ) {=0D - push @new_inf, $_;=0D - $subbing =3D 0;=0D - next;=0D + # Read the contents of the inf file=0D + @inf =3D ();=0D + @new_inf =3D ();=0D + open( FD, "<" . $inf_file ) ||=0D + die "Cannot open \"" . $inf_file . "\"!";=0D + @inf =3D ();=0D + close(FD) ||=0D + die "Cannot close \"" . $inf_file . "\"!";=0D +=0D + $subbing =3D 0;=0D + print "\n--> Updating OpensslLibCrypto.inf ... ";=0D + foreach (@inf) {=0D + if ( $_ =3D~ "# Autogenerated files list starts here" ) {=0D + push @new_inf, $_, @cryptofilelist;=0D + $subbing =3D 1;=0D + next;=0D + }=0D + if ( $_ =3D~ "# Autogenerated files list ends here" ) {=0D + push @new_inf, $_;=0D + $subbing =3D 0;=0D + next;=0D + }=0D +=0D + push @new_inf, $_=0D + unless ($subbing);=0D }=0D =0D - push @new_inf, $_=0D - unless ($subbing);=0D + $new_inf_file =3D $inf_file . ".new";=0D + open( FD, ">" . $new_inf_file ) ||=0D + die $new_inf_file;=0D + print( FD @new_inf ) ||=0D + die $new_inf_file;=0D + close(FD) ||=0D + die $new_inf_file;=0D + rename( $new_inf_file, $inf_file ) ||=0D + die "rename $inf_file";=0D + print "Done!";=0D }=0D =0D -$new_inf_file =3D $inf_file . ".new";=0D -open( FD, ">" . $new_inf_file ) ||=0D - die $new_inf_file;=0D -print( FD @new_inf ) ||=0D - die $new_inf_file;=0D -close(FD) ||=0D - die $new_inf_file;=0D -rename( $new_inf_file, $inf_file ) ||=0D - die "rename $inf_file";=0D -print "Done!";=0D -=0D #=0D # Copy opensslconf.h and dso_conf.h generated from OpenSSL Configuration=0D #=0D diff --git a/CryptoPkg/Library/OpensslLib/uefi-asm.conf b/CryptoPkg/Library= /OpensslLib/uefi-asm.conf new file mode 100644 index 0000000000..55eedbf3ba --- /dev/null +++ b/CryptoPkg/Library/OpensslLib/uefi-asm.conf @@ -0,0 +1,15 @@ +## -*- mode: perl; -*-=0D +## UEFI assembly openssl configuration targets.=0D +=0D +my %targets =3D (=0D +#### UEFI=0D + "UEFI-x86_64" =3D> {=0D + perlasm_scheme =3D> "nasm",=0D + # inherit_from =3D> [ "UEFI", asm("x86_64_asm") ],=0D + inherit_from =3D> [ "UEFI" ],=0D + cpuid_asm_src =3D> "x86_64cpuid.s",=0D + aes_asm_src =3D> "aes_core.c aes_cbc.c vpaes-x86_64.s aesni-x8= 6_64.s aesni-sha1-x86_64.s aesni-sha256-x86_64.s aesni-mb-x86_64.s",=0D + sha1_asm_src =3D> "sha1-x86_64.s sha256-x86_64.s sha512-x86_64.= s sha1-mb-x86_64.s sha256-mb-x86_64.s",=0D + modes_asm_src =3D> "ghash-x86_64.s",=0D + },=0D +);=0D --=20 2.28.0.windows.1