[edk2-devel] [Patch 06/12] CryptoPkg/Library/OpensslLib: Combine all performance optimized INFs

Christopher Zurcher christopher.zurcher at outlook.com
Tue Oct 11 23:20:23 UTC 2022


I would generally object to this change being made without the corresponding updates to process_files.pl, as all the manual changes to the .inf files here would have to be re-implemented for every update to the openssl submodule, and the updates to the perl script will result in their own set of architectural changes to these .inf files as well.

Thanks,
Christopher Zurcher

> -----Original Message-----
> From: devel at edk2.groups.io <devel at edk2.groups.io> On Behalf Of Michael D
> Kinney
> Sent: Tuesday, October 11, 2022 08:04
> To: devel at edk2.groups.io
> Cc: Jiewen Yao <jiewen.yao at intel.com>; Jian J Wang <jian.j.wang at intel.com>;
> Xiaoyu Lu <xiaoyu1.lu at intel.com>; Guomin Jiang <guomin.jiang at intel.com>;
> Christopher Zurcher <christopher.zurcher at microsoft.com>
> Subject: [edk2-devel] [Patch 06/12] CryptoPkg/Library/OpensslLib: Combine all
> performance optimized INFs
> 
> * Remove IA32/X64 specific INF files for performance
>   optimized OpensslLib and combine into OpensslLibAccel.inf
>   and OpensslLibFullAccel.inf.
> * Remove use of PcdOpensslEcEnabled and let the platform
>   select the EC feature by using either OpensslLibFull.inf
>   or OpensslLibFullAccel.inf.
> * With PcdOpensslEcEnabled removed, roll back style of opensslconf.h
>   and remove  opensslconf_generated.h.  Move the choice to disable
>   EC/SM2 into OpensslLib INF files using OPENSSL_FLAGS define.
> * Update OpensslLibContructor() API to be compatible with all
>   FW phases by using types from Base.h and using RETURN_STATUS
>   type and values instead of EFI_STATUS type and values.
> 
> Cc: Jiewen Yao <jiewen.yao at intel.com>
> Cc: Jian J Wang <jian.j.wang at intel.com>
> Cc: Xiaoyu Lu <xiaoyu1.lu at intel.com>
> Cc: Guomin Jiang <guomin.jiang at intel.com>
> Cc: Christopher Zurcher <christopher.zurcher at microsoft.com>
> Signed-off-by: Michael D Kinney <michael.d.kinney at intel.com>
> ---
>  CryptoPkg/CryptoPkg.ci.yaml                   |   8 +-
>  .../Library/Include/openssl/opensslconf.h     | 328 +++++++-
>  .../Include/openssl/opensslconf_generated.h   | 333 ---------
>  CryptoPkg/Library/OpensslLib/OpensslLib.inf   | 130 ++--
>  CryptoPkg/Library/OpensslLib/OpensslLib.uni   |  10 +-
>  ...OpensslLibIa32.inf => OpensslLibAccel.inf} | 186 +++--
>  .../Library/OpensslLib/OpensslLibAccel.uni    |  14 +
>  .../OpensslLib/OpensslLibConstructor.c        |   6 +-
>  .../Library/OpensslLib/OpensslLibCrypto.inf   | 182 +++--
>  .../Library/OpensslLib/OpensslLibCrypto.uni   |  11 +-
>  .../{OpensslLib.inf => OpensslLibFull.inf}    | 140 ++--
>  .../{OpensslLib.uni => OpensslLibFull.uni}    |  10 +-
>  ...LibIa32Gcc.inf => OpensslLibFullAccel.inf} | 189 +++--
>  .../OpensslLib/OpensslLibFullAccel.uni        |  14 +
>  .../Library/OpensslLib/OpensslLibX64.inf      | 706 ------------------
>  .../Library/OpensslLib/OpensslLibX64Gcc.inf   | 706 ------------------
>  16 files changed, 848 insertions(+), 2125 deletions(-)
>  delete mode 100644 CryptoPkg/Library/Include/openssl/opensslconf_generated.h
>  rename CryptoPkg/Library/OpensslLib/{OpensslLibIa32.inf =>
> OpensslLibAccel.inf} (79%)
>  create mode 100644 CryptoPkg/Library/OpensslLib/OpensslLibAccel.uni
>  copy CryptoPkg/Library/OpensslLib/{OpensslLib.inf => OpensslLibFull.inf}
> (80%)
>  copy CryptoPkg/Library/OpensslLib/{OpensslLib.uni => OpensslLibFull.uni}
> (56%)
>  rename CryptoPkg/Library/OpensslLib/{OpensslLibIa32Gcc.inf =>
> OpensslLibFullAccel.inf} (79%)
>  create mode 100644 CryptoPkg/Library/OpensslLib/OpensslLibFullAccel.uni
>  delete mode 100644 CryptoPkg/Library/OpensslLib/OpensslLibX64.inf
>  delete mode 100644 CryptoPkg/Library/OpensslLib/OpensslLibX64Gcc.inf
> 
> diff --git a/CryptoPkg/CryptoPkg.ci.yaml b/CryptoPkg/CryptoPkg.ci.yaml
> index ca129d6ae56c..47f29759676d 100644
> --- a/CryptoPkg/CryptoPkg.ci.yaml
> +++ b/CryptoPkg/CryptoPkg.ci.yaml
> @@ -73,13 +73,7 @@
>      },
>      "DscCompleteCheck": {
>          "DscPath": "CryptoPkg.dsc",
> -        "IgnoreInf": [
> -            # These are alternatives to OpensslLib.inf
> -            "CryptoPkg/Library/OpensslLib/OpensslLibIa32.inf",
> -            "CryptoPkg/Library/OpensslLib/OpensslLibIa32Gcc.inf",
> -            "CryptoPkg/Library/OpensslLib/OpensslLibX64.inf",
> -            "CryptoPkg/Library/OpensslLib/OpensslLibX64Gcc.inf"
> -        ]
> +        "IgnoreInf": []
>      },
>      "GuidCheck": {
>          "IgnoreGuidName": [],
> diff --git a/CryptoPkg/Library/Include/openssl/opensslconf.h
> b/CryptoPkg/Library/Include/openssl/opensslconf.h
> index 53dd8c3efbe6..b98b068b3d3b 100644
> --- a/CryptoPkg/Library/Include/openssl/opensslconf.h
> +++ b/CryptoPkg/Library/Include/openssl/opensslconf.h
> @@ -9,32 +9,324 @@
>   * in the file LICENSE in the source distribution or at
>   * https://www.openssl.org/source/license.html
>   */
> -#include <Library/PcdLib.h>
> -#include <openssl/opensslconf_generated.h>
> +
> +#include <openssl/opensslv.h>
> 
>  #ifdef  __cplusplus
>  extern "C" {
>  #endif
> 
> -/* Autogenerated conditional openssl feature list starts here */
> -#if !FixedPcdGetBool (PcdOpensslEcEnabled)
> -# ifndef OPENSSL_NO_EC
> -#  define OPENSSL_NO_EC
> -# endif
> -# ifndef OPENSSL_NO_ECDH
> -#  define OPENSSL_NO_ECDH
> -# endif
> -# ifndef OPENSSL_NO_ECDSA
> -#  define OPENSSL_NO_ECDSA
> -# endif
> -# ifndef OPENSSL_NO_TLS1_3
> -#  define OPENSSL_NO_TLS1_3
> +#ifdef OPENSSL_ALGORITHM_DEFINES
> +# error OPENSSL_ALGORITHM_DEFINES no longer supported
> +#endif
> +
> +/*
> + * OpenSSL was configured with the following options:
> + */
> +
> +#ifndef OPENSSL_SYS_UEFI
> +# define OPENSSL_SYS_UEFI 1
> +#endif
> +#define OPENSSL_MIN_API 0x10100000L
> +#ifndef OPENSSL_NO_BF
> +# define OPENSSL_NO_BF
> +#endif
> +#ifndef OPENSSL_NO_BLAKE2
> +# define OPENSSL_NO_BLAKE2
> +#endif
> +#ifndef OPENSSL_NO_CAMELLIA
> +# define OPENSSL_NO_CAMELLIA
> +#endif
> +#ifndef OPENSSL_NO_CAST
> +# define OPENSSL_NO_CAST
> +#endif
> +#ifndef OPENSSL_NO_CHACHA
> +# define OPENSSL_NO_CHACHA
> +#endif
> +#ifndef OPENSSL_NO_CMS
> +# define OPENSSL_NO_CMS
> +#endif
> +#ifndef OPENSSL_NO_CT
> +# define OPENSSL_NO_CT
> +#endif
> +#ifndef OPENSSL_NO_DES
> +# define OPENSSL_NO_DES
> +#endif
> +#ifndef OPENSSL_NO_DSA
> +# define OPENSSL_NO_DSA
> +#endif
> +#ifndef OPENSSL_NO_IDEA
> +# define OPENSSL_NO_IDEA
> +#endif
> +#ifndef OPENSSL_NO_MD2
> +# define OPENSSL_NO_MD2
> +#endif
> +#ifndef OPENSSL_NO_MD4
> +# define OPENSSL_NO_MD4
> +#endif
> +#ifndef OPENSSL_NO_MDC2
> +# define OPENSSL_NO_MDC2
> +#endif
> +#ifndef OPENSSL_NO_POLY1305
> +# define OPENSSL_NO_POLY1305
> +#endif
> +#ifndef OPENSSL_NO_RC2
> +# define OPENSSL_NO_RC2
> +#endif
> +#ifndef OPENSSL_NO_RC4
> +# define OPENSSL_NO_RC4
> +#endif
> +#ifndef OPENSSL_NO_RC5
> +# define OPENSSL_NO_RC5
> +#endif
> +#ifndef OPENSSL_NO_RMD160
> +# define OPENSSL_NO_RMD160
> +#endif
> +#ifndef OPENSSL_NO_SEED
> +# define OPENSSL_NO_SEED
> +#endif
> +#ifndef OPENSSL_NO_SRP
> +# define OPENSSL_NO_SRP
> +#endif
> +#ifndef OPENSSL_NO_TS
> +# define OPENSSL_NO_TS
> +#endif
> +#ifndef OPENSSL_NO_WHIRLPOOL
> +# define OPENSSL_NO_WHIRLPOOL
> +#endif
> +#ifndef OPENSSL_RAND_SEED_NONE
> +# define OPENSSL_RAND_SEED_NONE
> +#endif
> +#ifndef OPENSSL_NO_AFALGENG
> +# define OPENSSL_NO_AFALGENG
> +#endif
> +#ifndef OPENSSL_NO_APPS
> +# define OPENSSL_NO_APPS
> +#endif
> +#ifndef OPENSSL_NO_ASAN
> +# define OPENSSL_NO_ASAN
> +#endif
> +#ifndef OPENSSL_NO_ASYNC
> +# define OPENSSL_NO_ASYNC
> +#endif
> +#ifndef OPENSSL_NO_AUTOERRINIT
> +# define OPENSSL_NO_AUTOERRINIT
> +#endif
> +#ifndef OPENSSL_NO_AUTOLOAD_CONFIG
> +# define OPENSSL_NO_AUTOLOAD_CONFIG
> +#endif
> +#ifndef OPENSSL_NO_CAPIENG
> +# define OPENSSL_NO_CAPIENG
> +#endif
> +#ifndef OPENSSL_NO_CRYPTO_MDEBUG
> +# define OPENSSL_NO_CRYPTO_MDEBUG
> +#endif
> +#ifndef OPENSSL_NO_CRYPTO_MDEBUG_BACKTRACE
> +# define OPENSSL_NO_CRYPTO_MDEBUG_BACKTRACE
> +#endif
> +#ifndef OPENSSL_NO_DEPRECATED
> +# define OPENSSL_NO_DEPRECATED
> +#endif
> +#ifndef OPENSSL_NO_DEVCRYPTOENG
> +# define OPENSSL_NO_DEVCRYPTOENG
> +#endif
> +#ifndef OPENSSL_NO_DGRAM
> +# define OPENSSL_NO_DGRAM
> +#endif
> +#ifndef OPENSSL_NO_DTLS
> +# define OPENSSL_NO_DTLS
> +#endif
> +#ifndef OPENSSL_NO_DTLS1
> +# define OPENSSL_NO_DTLS1
> +#endif
> +#ifndef OPENSSL_NO_DTLS1_2
> +# define OPENSSL_NO_DTLS1_2
> +#endif
> +#ifndef OPENSSL_NO_EC2M
> +# define OPENSSL_NO_EC2M
> +#endif
> +#ifndef OPENSSL_NO_EC_NISTP_64_GCC_128
> +# define OPENSSL_NO_EC_NISTP_64_GCC_128
> +#endif
> +#ifndef OPENSSL_NO_EGD
> +# define OPENSSL_NO_EGD
> +#endif
> +#ifndef OPENSSL_NO_ENGINE
> +# define OPENSSL_NO_ENGINE
> +#endif
> +#ifndef OPENSSL_NO_ERR
> +# define OPENSSL_NO_ERR
> +#endif
> +#ifndef OPENSSL_NO_EXTERNAL_TESTS
> +# define OPENSSL_NO_EXTERNAL_TESTS
> +#endif
> +#ifndef OPENSSL_NO_FILENAMES
> +# define OPENSSL_NO_FILENAMES
> +#endif
> +#ifndef OPENSSL_NO_FUZZ_AFL
> +# define OPENSSL_NO_FUZZ_AFL
> +#endif
> +#ifndef OPENSSL_NO_FUZZ_LIBFUZZER
> +# define OPENSSL_NO_FUZZ_LIBFUZZER
> +#endif
> +#ifndef OPENSSL_NO_GOST
> +# define OPENSSL_NO_GOST
> +#endif
> +#ifndef OPENSSL_NO_HEARTBEATS
> +# define OPENSSL_NO_HEARTBEATS
> +#endif
> +#ifndef OPENSSL_NO_HW
> +# define OPENSSL_NO_HW
> +#endif
> +#ifndef OPENSSL_NO_MSAN
> +# define OPENSSL_NO_MSAN
> +#endif
> +#ifndef OPENSSL_NO_OCB
> +# define OPENSSL_NO_OCB
> +#endif
> +#ifndef OPENSSL_NO_POSIX_IO
> +# define OPENSSL_NO_POSIX_IO
> +#endif
> +#ifndef OPENSSL_NO_RFC3779
> +# define OPENSSL_NO_RFC3779
> +#endif
> +#ifndef OPENSSL_NO_SCRYPT
> +# define OPENSSL_NO_SCRYPT
> +#endif
> +#ifndef OPENSSL_NO_SCTP
> +# define OPENSSL_NO_SCTP
> +#endif
> +#ifndef OPENSSL_NO_SOCK
> +# define OPENSSL_NO_SOCK
> +#endif
> +#ifndef OPENSSL_NO_SSL_TRACE
> +# define OPENSSL_NO_SSL_TRACE
> +#endif
> +#ifndef OPENSSL_NO_SSL3
> +# define OPENSSL_NO_SSL3
> +#endif
> +#ifndef OPENSSL_NO_SSL3_METHOD
> +# define OPENSSL_NO_SSL3_METHOD
> +#endif
> +#ifndef OPENSSL_NO_STDIO
> +# define OPENSSL_NO_STDIO
> +#endif
> +#ifndef OPENSSL_NO_TESTS
> +# define OPENSSL_NO_TESTS
> +#endif
> +#ifndef OPENSSL_NO_UBSAN
> +# define OPENSSL_NO_UBSAN
> +#endif
> +#ifndef OPENSSL_NO_UI_CONSOLE
> +# define OPENSSL_NO_UI_CONSOLE
> +#endif
> +#ifndef OPENSSL_NO_UNIT_TEST
> +# define OPENSSL_NO_UNIT_TEST
> +#endif
> +#ifndef OPENSSL_NO_WEAK_SSL_CIPHERS
> +# define OPENSSL_NO_WEAK_SSL_CIPHERS
> +#endif
> +#ifndef OPENSSL_NO_DYNAMIC_ENGINE
> +# define OPENSSL_NO_DYNAMIC_ENGINE
> +#endif
> +
> +
> +/*
> + * Sometimes OPENSSSL_NO_xxx ends up with an empty file and some compilers
> + * don't like that.  This will hopefully silence them.
> + */
> +#define NON_EMPTY_TRANSLATION_UNIT static void *dummy = &dummy;
> +
> +/*
> + * Applications should use -DOPENSSL_API_COMPAT=<version> to suppress the
> + * declarations of functions deprecated in or before <version>. Otherwise,
> they
> + * still won't see them if the library has been built to disable deprecated
> + * functions.
> + */
> +#ifndef DECLARE_DEPRECATED
> +# define DECLARE_DEPRECATED(f)   f;
> +# ifdef __GNUC__
> +#  if __GNUC__ > 3 || (__GNUC__ == 3 && __GNUC_MINOR__ > 0)
> +#   undef DECLARE_DEPRECATED
> +#   define DECLARE_DEPRECATED(f)    f __attribute__ ((deprecated));
> +#  endif
> +#elif defined(__SUNPRO_C)
> +#if (__SUNPRO_C >= 0x5130)
> +#undef DECLARE_DEPRECATED
> +#define DECLARE_DEPRECATED(f)    f __attribute__ ((deprecated));
> +#endif
>  # endif
> -# ifndef OPENSSL_NO_SM2
> -#  define OPENSSL_NO_SM2
> +#endif
> +
> +#ifndef OPENSSL_FILE
> +# ifdef OPENSSL_NO_FILENAMES
> +#  define OPENSSL_FILE ""
> +#  define OPENSSL_LINE 0
> +# else
> +#  define OPENSSL_FILE __FILE__
> +#  define OPENSSL_LINE __LINE__
>  # endif
>  #endif
> -/* Autogenerated conditional openssl feature list ends here */
> +
> +#ifndef OPENSSL_MIN_API
> +# define OPENSSL_MIN_API 0
> +#endif
> +
> +#if !defined(OPENSSL_API_COMPAT) || OPENSSL_API_COMPAT < OPENSSL_MIN_API
> +# undef OPENSSL_API_COMPAT
> +# define OPENSSL_API_COMPAT OPENSSL_MIN_API
> +#endif
> +
> +/*
> + * Do not deprecate things to be deprecated in version 1.2.0 before the
> + * OpenSSL version number matches.
> + */
> +#if OPENSSL_VERSION_NUMBER < 0x10200000L
> +# define DEPRECATEDIN_1_2_0(f)   f;
> +#elif OPENSSL_API_COMPAT < 0x10200000L
> +# define DEPRECATEDIN_1_2_0(f)   DECLARE_DEPRECATED(f)
> +#else
> +# define DEPRECATEDIN_1_2_0(f)
> +#endif
> +
> +#if OPENSSL_API_COMPAT < 0x10100000L
> +# define DEPRECATEDIN_1_1_0(f)   DECLARE_DEPRECATED(f)
> +#else
> +# define DEPRECATEDIN_1_1_0(f)
> +#endif
> +
> +#if OPENSSL_API_COMPAT < 0x10000000L
> +# define DEPRECATEDIN_1_0_0(f)   DECLARE_DEPRECATED(f)
> +#else
> +# define DEPRECATEDIN_1_0_0(f)
> +#endif
> +
> +#if OPENSSL_API_COMPAT < 0x00908000L
> +# define DEPRECATEDIN_0_9_8(f)   DECLARE_DEPRECATED(f)
> +#else
> +# define DEPRECATEDIN_0_9_8(f)
> +#endif
> +
> +/* Generate 80386 code? */
> +#undef I386_ONLY
> +
> +#undef OPENSSL_UNISTD
> +#define OPENSSL_UNISTD <unistd.h>
> +
> +#undef OPENSSL_EXPORT_VAR_AS_FUNCTION
> +
> +/*
> + * The following are cipher-specific, but are part of the public API.
> + */
> +#if !defined(OPENSSL_SYS_UEFI)
> +# undef BN_LLONG
> +/* Only one for the following should be defined */
> +# undef SIXTY_FOUR_BIT_LONG
> +# undef SIXTY_FOUR_BIT
> +# define THIRTY_TWO_BIT
> +#endif
> +
> +#define RC4_INT unsigned int
> 
>  #ifdef  __cplusplus
>  }
> diff --git a/CryptoPkg/Library/Include/openssl/opensslconf_generated.h
> b/CryptoPkg/Library/Include/openssl/opensslconf_generated.h
> deleted file mode 100644
> index 09a6641ffcf9..000000000000
> --- a/CryptoPkg/Library/Include/openssl/opensslconf_generated.h
> +++ /dev/null
> @@ -1,333 +0,0 @@
> -/*
> - * WARNING: do not edit!
> - * Generated from include/openssl/opensslconf.h.in
> - *
> - * Copyright 2016-2020 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 <openssl/opensslv.h>
> -
> -#ifdef  __cplusplus
> -extern "C" {
> -#endif
> -
> -#ifdef OPENSSL_ALGORITHM_DEFINES
> -# error OPENSSL_ALGORITHM_DEFINES no longer supported
> -#endif
> -
> -/*
> - * OpenSSL was configured with the following options:
> - */
> -
> -#ifndef OPENSSL_SYS_UEFI
> -# define OPENSSL_SYS_UEFI 1
> -#endif
> -#define OPENSSL_MIN_API 0x10100000L
> -#ifndef OPENSSL_NO_BF
> -# define OPENSSL_NO_BF
> -#endif
> -#ifndef OPENSSL_NO_BLAKE2
> -# define OPENSSL_NO_BLAKE2
> -#endif
> -#ifndef OPENSSL_NO_CAMELLIA
> -# define OPENSSL_NO_CAMELLIA
> -#endif
> -#ifndef OPENSSL_NO_CAST
> -# define OPENSSL_NO_CAST
> -#endif
> -#ifndef OPENSSL_NO_CHACHA
> -# define OPENSSL_NO_CHACHA
> -#endif
> -#ifndef OPENSSL_NO_CMS
> -# define OPENSSL_NO_CMS
> -#endif
> -#ifndef OPENSSL_NO_CT
> -# define OPENSSL_NO_CT
> -#endif
> -#ifndef OPENSSL_NO_DES
> -# define OPENSSL_NO_DES
> -#endif
> -#ifndef OPENSSL_NO_DSA
> -# define OPENSSL_NO_DSA
> -#endif
> -#ifndef OPENSSL_NO_IDEA
> -# define OPENSSL_NO_IDEA
> -#endif
> -#ifndef OPENSSL_NO_MD2
> -# define OPENSSL_NO_MD2
> -#endif
> -#ifndef OPENSSL_NO_MD4
> -# define OPENSSL_NO_MD4
> -#endif
> -#ifndef OPENSSL_NO_MDC2
> -# define OPENSSL_NO_MDC2
> -#endif
> -#ifndef OPENSSL_NO_POLY1305
> -# define OPENSSL_NO_POLY1305
> -#endif
> -#ifndef OPENSSL_NO_RC2
> -# define OPENSSL_NO_RC2
> -#endif
> -#ifndef OPENSSL_NO_RC4
> -# define OPENSSL_NO_RC4
> -#endif
> -#ifndef OPENSSL_NO_RC5
> -# define OPENSSL_NO_RC5
> -#endif
> -#ifndef OPENSSL_NO_RMD160
> -# define OPENSSL_NO_RMD160
> -#endif
> -#ifndef OPENSSL_NO_SEED
> -# define OPENSSL_NO_SEED
> -#endif
> -#ifndef OPENSSL_NO_SRP
> -# define OPENSSL_NO_SRP
> -#endif
> -#ifndef OPENSSL_NO_TS
> -# define OPENSSL_NO_TS
> -#endif
> -#ifndef OPENSSL_NO_WHIRLPOOL
> -# define OPENSSL_NO_WHIRLPOOL
> -#endif
> -#ifndef OPENSSL_RAND_SEED_NONE
> -# define OPENSSL_RAND_SEED_NONE
> -#endif
> -#ifndef OPENSSL_NO_AFALGENG
> -# define OPENSSL_NO_AFALGENG
> -#endif
> -#ifndef OPENSSL_NO_APPS
> -# define OPENSSL_NO_APPS
> -#endif
> -#ifndef OPENSSL_NO_ASAN
> -# define OPENSSL_NO_ASAN
> -#endif
> -#ifndef OPENSSL_NO_ASYNC
> -# define OPENSSL_NO_ASYNC
> -#endif
> -#ifndef OPENSSL_NO_AUTOERRINIT
> -# define OPENSSL_NO_AUTOERRINIT
> -#endif
> -#ifndef OPENSSL_NO_AUTOLOAD_CONFIG
> -# define OPENSSL_NO_AUTOLOAD_CONFIG
> -#endif
> -#ifndef OPENSSL_NO_CAPIENG
> -# define OPENSSL_NO_CAPIENG
> -#endif
> -#ifndef OPENSSL_NO_CRYPTO_MDEBUG
> -# define OPENSSL_NO_CRYPTO_MDEBUG
> -#endif
> -#ifndef OPENSSL_NO_CRYPTO_MDEBUG_BACKTRACE
> -# define OPENSSL_NO_CRYPTO_MDEBUG_BACKTRACE
> -#endif
> -#ifndef OPENSSL_NO_DEPRECATED
> -# define OPENSSL_NO_DEPRECATED
> -#endif
> -#ifndef OPENSSL_NO_DEVCRYPTOENG
> -# define OPENSSL_NO_DEVCRYPTOENG
> -#endif
> -#ifndef OPENSSL_NO_DGRAM
> -# define OPENSSL_NO_DGRAM
> -#endif
> -#ifndef OPENSSL_NO_DTLS
> -# define OPENSSL_NO_DTLS
> -#endif
> -#ifndef OPENSSL_NO_DTLS1
> -# define OPENSSL_NO_DTLS1
> -#endif
> -#ifndef OPENSSL_NO_DTLS1_2
> -# define OPENSSL_NO_DTLS1_2
> -#endif
> -#ifndef OPENSSL_NO_EC2M
> -# define OPENSSL_NO_EC2M
> -#endif
> -#ifndef OPENSSL_NO_EC_NISTP_64_GCC_128
> -# define OPENSSL_NO_EC_NISTP_64_GCC_128
> -#endif
> -#ifndef OPENSSL_NO_EGD
> -# define OPENSSL_NO_EGD
> -#endif
> -#ifndef OPENSSL_NO_ENGINE
> -# define OPENSSL_NO_ENGINE
> -#endif
> -#ifndef OPENSSL_NO_ERR
> -# define OPENSSL_NO_ERR
> -#endif
> -#ifndef OPENSSL_NO_EXTERNAL_TESTS
> -# define OPENSSL_NO_EXTERNAL_TESTS
> -#endif
> -#ifndef OPENSSL_NO_FILENAMES
> -# define OPENSSL_NO_FILENAMES
> -#endif
> -#ifndef OPENSSL_NO_FUZZ_AFL
> -# define OPENSSL_NO_FUZZ_AFL
> -#endif
> -#ifndef OPENSSL_NO_FUZZ_LIBFUZZER
> -# define OPENSSL_NO_FUZZ_LIBFUZZER
> -#endif
> -#ifndef OPENSSL_NO_GOST
> -# define OPENSSL_NO_GOST
> -#endif
> -#ifndef OPENSSL_NO_HEARTBEATS
> -# define OPENSSL_NO_HEARTBEATS
> -#endif
> -#ifndef OPENSSL_NO_HW
> -# define OPENSSL_NO_HW
> -#endif
> -#ifndef OPENSSL_NO_MSAN
> -# define OPENSSL_NO_MSAN
> -#endif
> -#ifndef OPENSSL_NO_OCB
> -# define OPENSSL_NO_OCB
> -#endif
> -#ifndef OPENSSL_NO_POSIX_IO
> -# define OPENSSL_NO_POSIX_IO
> -#endif
> -#ifndef OPENSSL_NO_RFC3779
> -# define OPENSSL_NO_RFC3779
> -#endif
> -#ifndef OPENSSL_NO_SCRYPT
> -# define OPENSSL_NO_SCRYPT
> -#endif
> -#ifndef OPENSSL_NO_SCTP
> -# define OPENSSL_NO_SCTP
> -#endif
> -#ifndef OPENSSL_NO_SOCK
> -# define OPENSSL_NO_SOCK
> -#endif
> -#ifndef OPENSSL_NO_SSL_TRACE
> -# define OPENSSL_NO_SSL_TRACE
> -#endif
> -#ifndef OPENSSL_NO_SSL3
> -# define OPENSSL_NO_SSL3
> -#endif
> -#ifndef OPENSSL_NO_SSL3_METHOD
> -# define OPENSSL_NO_SSL3_METHOD
> -#endif
> -#ifndef OPENSSL_NO_STDIO
> -# define OPENSSL_NO_STDIO
> -#endif
> -#ifndef OPENSSL_NO_TESTS
> -# define OPENSSL_NO_TESTS
> -#endif
> -#ifndef OPENSSL_NO_UBSAN
> -# define OPENSSL_NO_UBSAN
> -#endif
> -#ifndef OPENSSL_NO_UI_CONSOLE
> -# define OPENSSL_NO_UI_CONSOLE
> -#endif
> -#ifndef OPENSSL_NO_UNIT_TEST
> -# define OPENSSL_NO_UNIT_TEST
> -#endif
> -#ifndef OPENSSL_NO_WEAK_SSL_CIPHERS
> -# define OPENSSL_NO_WEAK_SSL_CIPHERS
> -#endif
> -#ifndef OPENSSL_NO_DYNAMIC_ENGINE
> -# define OPENSSL_NO_DYNAMIC_ENGINE
> -#endif
> -
> -
> -/*
> - * Sometimes OPENSSSL_NO_xxx ends up with an empty file and some compilers
> - * don't like that.  This will hopefully silence them.
> - */
> -#define NON_EMPTY_TRANSLATION_UNIT static void *dummy = &dummy;
> -
> -/*
> - * Applications should use -DOPENSSL_API_COMPAT=<version> to suppress the
> - * declarations of functions deprecated in or before <version>. Otherwise,
> they
> - * still won't see them if the library has been built to disable deprecated
> - * functions.
> - */
> -#ifndef DECLARE_DEPRECATED
> -# define DECLARE_DEPRECATED(f)   f;
> -# ifdef __GNUC__
> -#  if __GNUC__ > 3 || (__GNUC__ == 3 && __GNUC_MINOR__ > 0)
> -#   undef DECLARE_DEPRECATED
> -#   define DECLARE_DEPRECATED(f)    f __attribute__ ((deprecated));
> -#  endif
> -# elif defined(__SUNPRO_C)
> -#  if (__SUNPRO_C >= 0x5130)
> -#   undef DECLARE_DEPRECATED
> -#   define DECLARE_DEPRECATED(f)    f __attribute__ ((deprecated));
> -#  endif
> -# endif
> -#endif
> -
> -#ifndef OPENSSL_FILE
> -# ifdef OPENSSL_NO_FILENAMES
> -#  define OPENSSL_FILE ""
> -#  define OPENSSL_LINE 0
> -# else
> -#  define OPENSSL_FILE __FILE__
> -#  define OPENSSL_LINE __LINE__
> -# endif
> -#endif
> -
> -#ifndef OPENSSL_MIN_API
> -# define OPENSSL_MIN_API 0
> -#endif
> -
> -#if !defined(OPENSSL_API_COMPAT) || OPENSSL_API_COMPAT < OPENSSL_MIN_API
> -# undef OPENSSL_API_COMPAT
> -# define OPENSSL_API_COMPAT OPENSSL_MIN_API
> -#endif
> -
> -/*
> - * Do not deprecate things to be deprecated in version 1.2.0 before the
> - * OpenSSL version number matches.
> - */
> -#if OPENSSL_VERSION_NUMBER < 0x10200000L
> -# define DEPRECATEDIN_1_2_0(f)   f;
> -#elif OPENSSL_API_COMPAT < 0x10200000L
> -# define DEPRECATEDIN_1_2_0(f)   DECLARE_DEPRECATED(f)
> -#else
> -# define DEPRECATEDIN_1_2_0(f)
> -#endif
> -
> -#if OPENSSL_API_COMPAT < 0x10100000L
> -# define DEPRECATEDIN_1_1_0(f)   DECLARE_DEPRECATED(f)
> -#else
> -# define DEPRECATEDIN_1_1_0(f)
> -#endif
> -
> -#if OPENSSL_API_COMPAT < 0x10000000L
> -# define DEPRECATEDIN_1_0_0(f)   DECLARE_DEPRECATED(f)
> -#else
> -# define DEPRECATEDIN_1_0_0(f)
> -#endif
> -
> -#if OPENSSL_API_COMPAT < 0x00908000L
> -# define DEPRECATEDIN_0_9_8(f)   DECLARE_DEPRECATED(f)
> -#else
> -# define DEPRECATEDIN_0_9_8(f)
> -#endif
> -
> -/* Generate 80386 code? */
> -#undef I386_ONLY
> -
> -#undef OPENSSL_UNISTD
> -#define OPENSSL_UNISTD <unistd.h>
> -
> -#undef OPENSSL_EXPORT_VAR_AS_FUNCTION
> -
> -/*
> - * The following are cipher-specific, but are part of the public API.
> - */
> -#if !defined(OPENSSL_SYS_UEFI)
> -# undef BN_LLONG
> -/* Only one for the following should be defined */
> -# undef SIXTY_FOUR_BIT_LONG
> -# undef SIXTY_FOUR_BIT
> -# define THIRTY_TWO_BIT
> -#endif
> -
> -#define RC4_INT unsigned int
> -
> -#ifdef  __cplusplus
> -}
> -#endif
> diff --git a/CryptoPkg/Library/OpensslLib/OpensslLib.inf
> b/CryptoPkg/Library/OpensslLib/OpensslLib.inf
> index c899b811b149..7d4b729bf7c7 100644
> --- a/CryptoPkg/Library/OpensslLib/OpensslLib.inf
> +++ b/CryptoPkg/Library/OpensslLib/OpensslLib.inf
> @@ -1,5 +1,5 @@
>  ## @file
> -#  This module provides OpenSSL Library implementation.
> +#  This module provides OpenSSL Library implementation with TLS features.
>  #
>  #  Copyright (c) 2010 - 2020, Intel Corporation. All rights reserved.<BR>
>  #  (C) Copyright 2020 Hewlett Packard Enterprise Development LP<BR>
> @@ -15,14 +15,18 @@ [Defines]
>    MODULE_TYPE                    = BASE
>    VERSION_STRING                 = 1.0
>    LIBRARY_CLASS                  = OpensslLib
> +  CONSTRUCTOR                    = OpensslLibConstructor
> +
>    DEFINE OPENSSL_PATH            = openssl
> -  DEFINE OPENSSL_FLAGS           = -DL_ENDIAN -DOPENSSL_SMALL_FOOTPRINT -
> D_CRT_SECURE_NO_DEPRECATE -D_CRT_NONSTDC_NO_DEPRECATE -DOPENSSL_NO_ASM
> +  DEFINE OPENSSL_FLAGS           = -DL_ENDIAN -DOPENSSL_SMALL_FOOTPRINT -
> D_CRT_SECURE_NO_DEPRECATE -D_CRT_NONSTDC_NO_DEPRECATE -DOPENSSL_NO_EC -
> DOPENSSL_NO_ECDH -DOPENSSL_NO_ECDSA -DOPENSSL_NO_TLS1_3 -DOPENSSL_NO_SM2 -
> DOPENSSL_NO_ASM
> +  DEFINE OPENSSL_FLAGS_CONFIG    =
> 
>  #
>  #  VALID_ARCHITECTURES           = IA32 X64 ARM AARCH64
>  #
> 
>  [Sources]
> +  OpensslLibConstructor.c
>    $(OPENSSL_PATH)/e_os.h
>    $(OPENSSL_PATH)/ms/uplink.h
>  # Autogenerated files list starts here
> @@ -199,43 +203,43 @@ [Sources]
>    $(OPENSSL_PATH)/crypto/dso/dso_vms.c
>    $(OPENSSL_PATH)/crypto/dso/dso_win32.c
>    $(OPENSSL_PATH)/crypto/ebcdic.c
> -  $(OPENSSL_PATH)/crypto/ec/curve25519.c
> |*|*|*|gEfiCryptoPkgTokenSpaceGuid.PcdOpensslEcEnabled
> -  $(OPENSSL_PATH)/crypto/ec/curve448/arch_32/f_impl.c
> |*|*|*|gEfiCryptoPkgTokenSpaceGuid.PcdOpensslEcEnabled
> -  $(OPENSSL_PATH)/crypto/ec/curve448/curve448.c
> |*|*|*|gEfiCryptoPkgTokenSpaceGuid.PcdOpensslEcEnabled
> -  $(OPENSSL_PATH)/crypto/ec/curve448/curve448_tables.c
> |*|*|*|gEfiCryptoPkgTokenSpaceGuid.PcdOpensslEcEnabled
> -  $(OPENSSL_PATH)/crypto/ec/curve448/eddsa.c
> |*|*|*|gEfiCryptoPkgTokenSpaceGuid.PcdOpensslEcEnabled
> -  $(OPENSSL_PATH)/crypto/ec/curve448/f_generic.c
> |*|*|*|gEfiCryptoPkgTokenSpaceGuid.PcdOpensslEcEnabled
> -  $(OPENSSL_PATH)/crypto/ec/curve448/scalar.c
> |*|*|*|gEfiCryptoPkgTokenSpaceGuid.PcdOpensslEcEnabled
> -  $(OPENSSL_PATH)/crypto/ec/ec2_oct.c
> |*|*|*|gEfiCryptoPkgTokenSpaceGuid.PcdOpensslEcEnabled
> -  $(OPENSSL_PATH)/crypto/ec/ec2_smpl.c
> |*|*|*|gEfiCryptoPkgTokenSpaceGuid.PcdOpensslEcEnabled
> -  $(OPENSSL_PATH)/crypto/ec/ec_ameth.c
> |*|*|*|gEfiCryptoPkgTokenSpaceGuid.PcdOpensslEcEnabled
> -  $(OPENSSL_PATH)/crypto/ec/ec_asn1.c
> |*|*|*|gEfiCryptoPkgTokenSpaceGuid.PcdOpensslEcEnabled
> -  $(OPENSSL_PATH)/crypto/ec/ec_check.c
> |*|*|*|gEfiCryptoPkgTokenSpaceGuid.PcdOpensslEcEnabled
> -  $(OPENSSL_PATH)/crypto/ec/ec_curve.c
> |*|*|*|gEfiCryptoPkgTokenSpaceGuid.PcdOpensslEcEnabled
> -  $(OPENSSL_PATH)/crypto/ec/ec_cvt.c
> |*|*|*|gEfiCryptoPkgTokenSpaceGuid.PcdOpensslEcEnabled
> -  $(OPENSSL_PATH)/crypto/ec/ec_err.c
> |*|*|*|gEfiCryptoPkgTokenSpaceGuid.PcdOpensslEcEnabled
> -  $(OPENSSL_PATH)/crypto/ec/ec_key.c
> |*|*|*|gEfiCryptoPkgTokenSpaceGuid.PcdOpensslEcEnabled
> -  $(OPENSSL_PATH)/crypto/ec/ec_kmeth.c
> |*|*|*|gEfiCryptoPkgTokenSpaceGuid.PcdOpensslEcEnabled
> -  $(OPENSSL_PATH)/crypto/ec/ec_lib.c
> |*|*|*|gEfiCryptoPkgTokenSpaceGuid.PcdOpensslEcEnabled
> -  $(OPENSSL_PATH)/crypto/ec/ec_mult.c
> |*|*|*|gEfiCryptoPkgTokenSpaceGuid.PcdOpensslEcEnabled
> -  $(OPENSSL_PATH)/crypto/ec/ec_oct.c
> |*|*|*|gEfiCryptoPkgTokenSpaceGuid.PcdOpensslEcEnabled
> -  $(OPENSSL_PATH)/crypto/ec/ec_pmeth.c
> |*|*|*|gEfiCryptoPkgTokenSpaceGuid.PcdOpensslEcEnabled
> -  $(OPENSSL_PATH)/crypto/ec/ec_print.c
> |*|*|*|gEfiCryptoPkgTokenSpaceGuid.PcdOpensslEcEnabled
> -  $(OPENSSL_PATH)/crypto/ec/ecdh_kdf.c
> |*|*|*|gEfiCryptoPkgTokenSpaceGuid.PcdOpensslEcEnabled
> -  $(OPENSSL_PATH)/crypto/ec/ecdh_ossl.c
> |*|*|*|gEfiCryptoPkgTokenSpaceGuid.PcdOpensslEcEnabled
> -  $(OPENSSL_PATH)/crypto/ec/ecdsa_ossl.c
> |*|*|*|gEfiCryptoPkgTokenSpaceGuid.PcdOpensslEcEnabled
> -  $(OPENSSL_PATH)/crypto/ec/ecdsa_sign.c
> |*|*|*|gEfiCryptoPkgTokenSpaceGuid.PcdOpensslEcEnabled
> -  $(OPENSSL_PATH)/crypto/ec/ecdsa_vrf.c
> |*|*|*|gEfiCryptoPkgTokenSpaceGuid.PcdOpensslEcEnabled
> -  $(OPENSSL_PATH)/crypto/ec/eck_prn.c
> |*|*|*|gEfiCryptoPkgTokenSpaceGuid.PcdOpensslEcEnabled
> -  $(OPENSSL_PATH)/crypto/ec/ecp_mont.c
> |*|*|*|gEfiCryptoPkgTokenSpaceGuid.PcdOpensslEcEnabled
> -  $(OPENSSL_PATH)/crypto/ec/ecp_nist.c
> |*|*|*|gEfiCryptoPkgTokenSpaceGuid.PcdOpensslEcEnabled
> -  $(OPENSSL_PATH)/crypto/ec/ecp_nistp224.c
> |*|*|*|gEfiCryptoPkgTokenSpaceGuid.PcdOpensslEcEnabled
> -  $(OPENSSL_PATH)/crypto/ec/ecp_nistp256.c
> |*|*|*|gEfiCryptoPkgTokenSpaceGuid.PcdOpensslEcEnabled
> -  $(OPENSSL_PATH)/crypto/ec/ecp_nistp521.c
> |*|*|*|gEfiCryptoPkgTokenSpaceGuid.PcdOpensslEcEnabled
> -  $(OPENSSL_PATH)/crypto/ec/ecp_nistputil.c
> |*|*|*|gEfiCryptoPkgTokenSpaceGuid.PcdOpensslEcEnabled
> -  $(OPENSSL_PATH)/crypto/ec/ecp_oct.c
> |*|*|*|gEfiCryptoPkgTokenSpaceGuid.PcdOpensslEcEnabled
> -  $(OPENSSL_PATH)/crypto/ec/ecp_smpl.c
> |*|*|*|gEfiCryptoPkgTokenSpaceGuid.PcdOpensslEcEnabled
> -  $(OPENSSL_PATH)/crypto/ec/ecx_meth.c
> |*|*|*|gEfiCryptoPkgTokenSpaceGuid.PcdOpensslEcEnabled
> +#  $(OPENSSL_PATH)/crypto/ec/curve25519.c
> +#  $(OPENSSL_PATH)/crypto/ec/curve448/arch_32/f_impl.c
> +#  $(OPENSSL_PATH)/crypto/ec/curve448/curve448.c
> +#  $(OPENSSL_PATH)/crypto/ec/curve448/curve448_tables.c
> +#  $(OPENSSL_PATH)/crypto/ec/curve448/eddsa.c
> +#  $(OPENSSL_PATH)/crypto/ec/curve448/f_generic.c
> +#  $(OPENSSL_PATH)/crypto/ec/curve448/scalar.c
> +#  $(OPENSSL_PATH)/crypto/ec/ec2_oct.c
> +#  $(OPENSSL_PATH)/crypto/ec/ec2_smpl.c
> +#  $(OPENSSL_PATH)/crypto/ec/ec_ameth.c
> +#  $(OPENSSL_PATH)/crypto/ec/ec_asn1.c
> +#  $(OPENSSL_PATH)/crypto/ec/ec_check.c
> +#  $(OPENSSL_PATH)/crypto/ec/ec_curve.c
> +#  $(OPENSSL_PATH)/crypto/ec/ec_cvt.c
> +#  $(OPENSSL_PATH)/crypto/ec/ec_err.c
> +#  $(OPENSSL_PATH)/crypto/ec/ec_key.c
> +#  $(OPENSSL_PATH)/crypto/ec/ec_kmeth.c
> +#  $(OPENSSL_PATH)/crypto/ec/ec_lib.c
> +#  $(OPENSSL_PATH)/crypto/ec/ec_mult.c
> +#  $(OPENSSL_PATH)/crypto/ec/ec_oct.c
> +#  $(OPENSSL_PATH)/crypto/ec/ec_pmeth.c
> +#  $(OPENSSL_PATH)/crypto/ec/ec_print.c
> +#  $(OPENSSL_PATH)/crypto/ec/ecdh_kdf.c
> +#  $(OPENSSL_PATH)/crypto/ec/ecdh_ossl.c
> +#  $(OPENSSL_PATH)/crypto/ec/ecdsa_ossl.c
> +#  $(OPENSSL_PATH)/crypto/ec/ecdsa_sign.c
> +#  $(OPENSSL_PATH)/crypto/ec/ecdsa_vrf.c
> +#  $(OPENSSL_PATH)/crypto/ec/eck_prn.c
> +#  $(OPENSSL_PATH)/crypto/ec/ecp_mont.c
> +#  $(OPENSSL_PATH)/crypto/ec/ecp_nist.c
> +#  $(OPENSSL_PATH)/crypto/ec/ecp_nistp224.c
> +#  $(OPENSSL_PATH)/crypto/ec/ecp_nistp256.c
> +#  $(OPENSSL_PATH)/crypto/ec/ecp_nistp521.c
> +#  $(OPENSSL_PATH)/crypto/ec/ecp_nistputil.c
> +#  $(OPENSSL_PATH)/crypto/ec/ecp_oct.c
> +#  $(OPENSSL_PATH)/crypto/ec/ecp_smpl.c
> +#  $(OPENSSL_PATH)/crypto/ec/ecx_meth.c
>    $(OPENSSL_PATH)/crypto/err/err.c
>    $(OPENSSL_PATH)/crypto/err/err_prn.c
>    $(OPENSSL_PATH)/crypto/evp/bio_b64.c
> @@ -421,10 +425,10 @@ [Sources]
>    $(OPENSSL_PATH)/crypto/siphash/siphash.c
>    $(OPENSSL_PATH)/crypto/siphash/siphash_ameth.c
>    $(OPENSSL_PATH)/crypto/siphash/siphash_pmeth.c
> -  $(OPENSSL_PATH)/crypto/sm2/sm2_crypt.c
> |*|*|*|gEfiCryptoPkgTokenSpaceGuid.PcdOpensslEcEnabled
> -  $(OPENSSL_PATH)/crypto/sm2/sm2_err.c
> |*|*|*|gEfiCryptoPkgTokenSpaceGuid.PcdOpensslEcEnabled
> -  $(OPENSSL_PATH)/crypto/sm2/sm2_pmeth.c
> |*|*|*|gEfiCryptoPkgTokenSpaceGuid.PcdOpensslEcEnabled
> -  $(OPENSSL_PATH)/crypto/sm2/sm2_sign.c
> |*|*|*|gEfiCryptoPkgTokenSpaceGuid.PcdOpensslEcEnabled
> +#  $(OPENSSL_PATH)/crypto/sm2/sm2_crypt.c
> +#  $(OPENSSL_PATH)/crypto/sm2/sm2_err.c
> +#  $(OPENSSL_PATH)/crypto/sm2/sm2_pmeth.c
> +#  $(OPENSSL_PATH)/crypto/sm2/sm2_sign.c
>    $(OPENSSL_PATH)/crypto/sm3/m_sm3.c
>    $(OPENSSL_PATH)/crypto/sm3/sm3.c
>    $(OPENSSL_PATH)/crypto/sm4/sm4.c
> @@ -537,15 +541,15 @@ [Sources]
>    $(OPENSSL_PATH)/crypto/conf/conf_local.h
>    $(OPENSSL_PATH)/crypto/dh/dh_local.h
>    $(OPENSSL_PATH)/crypto/dso/dso_local.h
> -  $(OPENSSL_PATH)/crypto/ec/ec_local.h
> |*|*|*|gEfiCryptoPkgTokenSpaceGuid.PcdOpensslEcEnabled
> -  $(OPENSSL_PATH)/crypto/ec/curve448/curve448_local.h
> |*|*|*|gEfiCryptoPkgTokenSpaceGuid.PcdOpensslEcEnabled
> -  $(OPENSSL_PATH)/crypto/ec/curve448/curve448utils.h
> |*|*|*|gEfiCryptoPkgTokenSpaceGuid.PcdOpensslEcEnabled
> -  $(OPENSSL_PATH)/crypto/ec/curve448/ed448.h
> |*|*|*|gEfiCryptoPkgTokenSpaceGuid.PcdOpensslEcEnabled
> -  $(OPENSSL_PATH)/crypto/ec/curve448/field.h
> |*|*|*|gEfiCryptoPkgTokenSpaceGuid.PcdOpensslEcEnabled
> -  $(OPENSSL_PATH)/crypto/ec/curve448/point_448.h
> |*|*|*|gEfiCryptoPkgTokenSpaceGuid.PcdOpensslEcEnabled
> -  $(OPENSSL_PATH)/crypto/ec/curve448/word.h
> |*|*|*|gEfiCryptoPkgTokenSpaceGuid.PcdOpensslEcEnabled
> -  $(OPENSSL_PATH)/crypto/ec/curve448/arch_32/arch_intrinsics.h
> |*|*|*|gEfiCryptoPkgTokenSpaceGuid.PcdOpensslEcEnabled
> -  $(OPENSSL_PATH)/crypto/ec/curve448/arch_32/f_impl.h
> |*|*|*|gEfiCryptoPkgTokenSpaceGuid.PcdOpensslEcEnabled
> +#  $(OPENSSL_PATH)/crypto/ec/ec_local.h
> +#  $(OPENSSL_PATH)/crypto/ec/curve448/curve448_local.h
> +#  $(OPENSSL_PATH)/crypto/ec/curve448/curve448utils.h
> +#  $(OPENSSL_PATH)/crypto/ec/curve448/ed448.h
> +#  $(OPENSSL_PATH)/crypto/ec/curve448/field.h
> +#  $(OPENSSL_PATH)/crypto/ec/curve448/point_448.h
> +#  $(OPENSSL_PATH)/crypto/ec/curve448/word.h
> +#  $(OPENSSL_PATH)/crypto/ec/curve448/arch_32/arch_intrinsics.h
> +#  $(OPENSSL_PATH)/crypto/ec/curve448/arch_32/f_impl.h
>    $(OPENSSL_PATH)/crypto/evp/evp_local.h
>    $(OPENSSL_PATH)/crypto/hmac/hmac_local.h
>    $(OPENSSL_PATH)/crypto/lhash/lhash_local.h
> @@ -637,15 +641,13 @@ [LibraryClasses]
>  [LibraryClasses.ARM]
>    ArmSoftFloatLib
> 
> -[FixedPcd]
> -  gEfiCryptoPkgTokenSpaceGuid.PcdOpensslEcEnabled      ## CONSUMES
> -
>  [BuildOptions]
>    #
>    # Disables the following Visual Studio compiler warnings brought by
> openssl source,
>    # so we do not break the build with /WX option:
>    #   C4090: 'function' : different 'const' qualifiers
>    #   C4132: 'object' : const object should be initialized (tls13_enc.c)
> +  #   C4210: nonstandard extension used: function given file scope
>    #   C4244: conversion from type1 to type2, possible loss of data
>    #   C4245: conversion from type1 to type2, signed/unsigned mismatch
>    #   C4267: conversion from size_t to type, possible loss of data
> @@ -657,11 +659,11 @@ [BuildOptions]
>    #   C4706: assignment within conditional expression
>    #   C4819: The file contains a character that cannot be represented in the
> current code page
>    #
> -  MSFT:*_*_IA32_CC_FLAGS   = -U_WIN32 -U_WIN64 -U_MSC_VER $(OPENSSL_FLAGS)
> /wd4090 /wd4132 /wd4244 /wd4245 /wd4267 /wd4310 /wd4389 /wd4700 /wd4702
> /wd4706 /wd4819
> -  MSFT:*_*_X64_CC_FLAGS    = -U_WIN32 -U_WIN64 -U_MSC_VER $(OPENSSL_FLAGS)
> /wd4090 /wd4132 /wd4244 /wd4245 /wd4267 /wd4306 /wd4310 /wd4700 /wd4389
> /wd4702 /wd4706 /wd4819
> +  MSFT:*_*_IA32_CC_FLAGS   = -U_WIN32 -U_WIN64 -U_MSC_VER $(OPENSSL_FLAGS)
> $(OPENSSL_FLAGS_CONFIG) /wd4090 /wd4132 /wd4210 /wd4244 /wd4245 /wd4267
> /wd4310 /wd4389 /wd4700 /wd4702 /wd4706 /wd4819
> +  MSFT:*_*_X64_CC_FLAGS    = -U_WIN32 -U_WIN64 -U_MSC_VER $(OPENSSL_FLAGS)
> $(OPENSSL_FLAGS_CONFIG) /wd4090 /wd4132 /wd4210 /wd4244 /wd4245 /wd4267
> /wd4306 /wd4310 /wd4700 /wd4389 /wd4702 /wd4706 /wd4819
> 
> -  INTEL:*_*_IA32_CC_FLAGS  = -U_WIN32 -U_WIN64 -U_MSC_VER -U__ICC
> $(OPENSSL_FLAGS) /w
> -  INTEL:*_*_X64_CC_FLAGS   = -U_WIN32 -U_WIN64 -U_MSC_VER -U__ICC
> $(OPENSSL_FLAGS) /w
> +  INTEL:*_*_IA32_CC_FLAGS  = -U_WIN32 -U_WIN64 -U_MSC_VER -U__ICC
> $(OPENSSL_FLAGS) $(OPENSSL_FLAGS_CONFIG) /w
> +  INTEL:*_*_X64_CC_FLAGS   = -U_WIN32 -U_WIN64 -U_MSC_VER -U__ICC
> $(OPENSSL_FLAGS) $(OPENSSL_FLAGS_CONFIG) /w
> 
>    #
>    # Suppress the following build warnings in openssl so we don't break the
> build with -Werror
> @@ -670,10 +672,10 @@ [BuildOptions]
>    #                   types appropriate to the format string specified.
>    #   -Werror=unused-but-set-variable: Warn whenever a local variable is
> assigned to, but otherwise unused (aside from its declaration).
>    #
> -  GCC:*_*_IA32_CC_FLAGS    = -U_WIN32 -U_WIN64 $(OPENSSL_FLAGS) -Wno-
> error=maybe-uninitialized -Wno-error=unused-but-set-variable
> -  GCC:*_*_X64_CC_FLAGS     = -U_WIN32 -U_WIN64 $(OPENSSL_FLAGS) -Wno-
> error=maybe-uninitialized -Wno-error=format -Wno-format -Wno-error=unused-
> but-set-variable -DNO_MSABI_VA_FUNCS
> +  GCC:*_*_IA32_CC_FLAGS    = -U_WIN32 -U_WIN64 $(OPENSSL_FLAGS)
> $(OPENSSL_FLAGS_CONFIG) -Wno-error=maybe-uninitialized -Wno-error=unused-but-
> set-variable
> +  GCC:*_*_X64_CC_FLAGS     = -U_WIN32 -U_WIN64 $(OPENSSL_FLAGS)
> $(OPENSSL_FLAGS_CONFIG) -Wno-error=maybe-uninitialized -Wno-error=format -
> Wno-format -Wno-error=unused-but-set-variable -DNO_MSABI_VA_FUNCS
>    GCC:*_*_ARM_CC_FLAGS     = $(OPENSSL_FLAGS) -Wno-error=maybe-uninitialized
> -Wno-error=unused-but-set-variable
> -  GCC:*_*_AARCH64_CC_FLAGS = $(OPENSSL_FLAGS) -Wno-error=maybe-uninitialized
> -Wno-format -Wno-error=unused-but-set-variable
> +  GCC:*_*_AARCH64_CC_FLAGS = $(OPENSSL_FLAGS) -Wno-error=maybe-uninitialized
> -Wno-format -Wno-error=unused-but-set-variable -Wno-error=format
>    GCC:*_*_RISCV64_CC_FLAGS = $(OPENSSL_FLAGS) -Wno-error=maybe-uninitialized
> -Wno-format -Wno-error=unused-but-set-variable
>    GCC:*_CLANG35_*_CC_FLAGS = -std=c99 -Wno-error=uninitialized
>    GCC:*_CLANG38_*_CC_FLAGS = -std=c99 -Wno-error=uninitialized
> @@ -698,8 +700,8 @@ [BuildOptions]
>    #    1: ignore "#1-D: last line of file ends without a newline"
>    # 3017: <entity> may be used before being set (NOTE: This was fixed in
> OpenSSL 1.1 HEAD with
>    #       commit d9b8b89bec4480de3a10bdaf9425db371c19145b, and can be
> dropped then.)
> -  XCODE:*_*_IA32_CC_FLAGS   = -mmmx -msse -U_WIN32 -U_WIN64 $(OPENSSL_FLAGS)
> -w -std=c99 -Wno-error=uninitialized
> -  XCODE:*_*_X64_CC_FLAGS    = -mmmx -msse -U_WIN32 -U_WIN64 $(OPENSSL_FLAGS)
> -w -std=c99 -Wno-error=uninitialized
> +  XCODE:*_*_IA32_CC_FLAGS   = -mmmx -msse -U_WIN32 -U_WIN64 $(OPENSSL_FLAGS)
> $(OPENSSL_FLAGS_CONFIG) -w -std=c99 -Wno-error=uninitialized
> +  XCODE:*_*_X64_CC_FLAGS    = -mmmx -msse -U_WIN32 -U_WIN64 $(OPENSSL_FLAGS)
> $(OPENSSL_FLAGS_CONFIG) -w -std=c99 -Wno-error=uninitialized
> 
>    #
>    # AARCH64 uses strict alignment and avoids SIMD registers for code that
> may execute
> diff --git a/CryptoPkg/Library/OpensslLib/OpensslLib.uni
> b/CryptoPkg/Library/OpensslLib/OpensslLib.uni
> index abaff8a3c37f..6b62c46040f9 100644
> --- a/CryptoPkg/Library/OpensslLib/OpensslLib.uni
> +++ b/CryptoPkg/Library/OpensslLib/OpensslLib.uni
> @@ -1,7 +1,5 @@
>  // /** @file
> -// This module provides openSSL Library implementation.
> -//
> -// This module provides OpenSSL Library implementation.
> +// This module provides OpenSSL Library implementation with TLS features.
>  //
>  // Copyright (c) 2010 - 2018, Intel Corporation. All rights reserved.<BR>
>  //
> @@ -9,8 +7,6 @@
>  //
>  // **/
> 
> +#string STR_MODULE_ABSTRACT             #language en-US "OpenSSL Library
> implementation with TLS features."
> 
> -#string STR_MODULE_ABSTRACT             #language en-US "OpenSSL Library
> implementation"
> -
> -#string STR_MODULE_DESCRIPTION          #language en-US "This module
> provides OpenSSL Library implementation."
> -
> +#string STR_MODULE_DESCRIPTION          #language en-US "This module
> provides OpenSSL Library implementation with TLS features."
> diff --git a/CryptoPkg/Library/OpensslLib/OpensslLibIa32.inf
> b/CryptoPkg/Library/OpensslLib/OpensslLibAccel.inf
> similarity index 79%
> rename from CryptoPkg/Library/OpensslLib/OpensslLibIa32.inf
> rename to CryptoPkg/Library/OpensslLib/OpensslLibAccel.inf
> index b6ee718edeff..b552b011e2bf 100644
> --- a/CryptoPkg/Library/OpensslLib/OpensslLibIa32.inf
> +++ b/CryptoPkg/Library/OpensslLib/OpensslLibAccel.inf
> @@ -1,5 +1,7 @@
>  ## @file
> -#  This module provides OpenSSL Library implementation.
> +#  This module provides OpenSSL Library implementation with TLS features
> +#  along with performance optimized implementations of SHA1, SHA256, SHA512,
> +#  AESNI, VPAED, and GHASH for IA32 and X64.
>  #
>  #  Copyright (c) 2010 - 2020, Intel Corporation. All rights reserved.<BR>
>  #  (C) Copyright 2020 Hewlett Packard Enterprise Development LP<BR>
> @@ -9,33 +11,27 @@
> 
>  [Defines]
>    INF_VERSION                    = 0x00010005
> -  BASE_NAME                      = OpensslLibIa32
> -  MODULE_UNI_FILE                = OpensslLib.uni
> -  FILE_GUID                      = 5805D1D4-F8EE-4FBA-BDD8-74465F16A534
> +  BASE_NAME                      = OpensslLibAccel
> +  MODULE_UNI_FILE                = OpensslLibAccel.uni
> +  FILE_GUID                      = 96A34760-B04A-44EB-9680-AC7606E9776B
>    MODULE_TYPE                    = BASE
>    VERSION_STRING                 = 1.0
>    LIBRARY_CLASS                  = OpensslLib
> +  CONSTRUCTOR                    = OpensslLibConstructor
> +
>    DEFINE OPENSSL_PATH            = openssl
> -  DEFINE OPENSSL_FLAGS           = -DL_ENDIAN -DOPENSSL_SMALL_FOOTPRINT -
> D_CRT_SECURE_NO_DEPRECATE -D_CRT_NONSTDC_NO_DEPRECATE
> +  DEFINE OPENSSL_FLAGS           = -DL_ENDIAN -DOPENSSL_SMALL_FOOTPRINT -
> D_CRT_SECURE_NO_DEPRECATE -D_CRT_NONSTDC_NO_DEPRECATE -DOPENSSL_NO_EC -
> DOPENSSL_NO_ECDH -DOPENSSL_NO_ECDSA -DOPENSSL_NO_TLS1_3 -DOPENSSL_NO_SM2
>    DEFINE OPENSSL_FLAGS_CONFIG    = -DOPENSSL_CPUID_OBJ -DSHA1_ASM -
> DSHA256_ASM -DSHA512_ASM -DAESNI_ASM -DVPAES_ASM -DGHASH_ASM
> -  CONSTRUCTOR                    = OpensslLibConstructor
> 
>  #
> -#  VALID_ARCHITECTURES           = IA32
> +#  VALID_ARCHITECTURES           = IA32 X64
>  #
> 
> -[Sources.IA32]
> +[Sources]
>    OpensslLibConstructor.c
>    $(OPENSSL_PATH)/e_os.h
>    $(OPENSSL_PATH)/ms/uplink.h
>  # Autogenerated files list starts here
> -  IA32/crypto/aes/aesni-x86.nasm
> -  IA32/crypto/aes/vpaes-x86.nasm
> -  IA32/crypto/modes/ghash-x86.nasm
> -  IA32/crypto/sha/sha1-586.nasm
> -  IA32/crypto/sha/sha256-586.nasm
> -  IA32/crypto/sha/sha512-586.nasm
> -  IA32/crypto/x86cpuid.nasm
>    $(OPENSSL_PATH)/crypto/aes/aes_cbc.c
>    $(OPENSSL_PATH)/crypto/aes/aes_cfb.c
>    $(OPENSSL_PATH)/crypto/aes/aes_core.c
> @@ -209,43 +205,43 @@ [Sources.IA32]
>    $(OPENSSL_PATH)/crypto/dso/dso_vms.c
>    $(OPENSSL_PATH)/crypto/dso/dso_win32.c
>    $(OPENSSL_PATH)/crypto/ebcdic.c
> -  $(OPENSSL_PATH)/crypto/ec/curve25519.c
> |*|*|*|gEfiCryptoPkgTokenSpaceGuid.PcdOpensslEcEnabled
> -  $(OPENSSL_PATH)/crypto/ec/curve448/arch_32/f_impl.c
> |*|*|*|gEfiCryptoPkgTokenSpaceGuid.PcdOpensslEcEnabled
> -  $(OPENSSL_PATH)/crypto/ec/curve448/curve448.c
> |*|*|*|gEfiCryptoPkgTokenSpaceGuid.PcdOpensslEcEnabled
> -  $(OPENSSL_PATH)/crypto/ec/curve448/curve448_tables.c
> |*|*|*|gEfiCryptoPkgTokenSpaceGuid.PcdOpensslEcEnabled
> -  $(OPENSSL_PATH)/crypto/ec/curve448/eddsa.c
> |*|*|*|gEfiCryptoPkgTokenSpaceGuid.PcdOpensslEcEnabled
> -  $(OPENSSL_PATH)/crypto/ec/curve448/f_generic.c
> |*|*|*|gEfiCryptoPkgTokenSpaceGuid.PcdOpensslEcEnabled
> -  $(OPENSSL_PATH)/crypto/ec/curve448/scalar.c
> |*|*|*|gEfiCryptoPkgTokenSpaceGuid.PcdOpensslEcEnabled
> -  $(OPENSSL_PATH)/crypto/ec/ec2_oct.c
> |*|*|*|gEfiCryptoPkgTokenSpaceGuid.PcdOpensslEcEnabled
> -  $(OPENSSL_PATH)/crypto/ec/ec2_smpl.c
> |*|*|*|gEfiCryptoPkgTokenSpaceGuid.PcdOpensslEcEnabled
> -  $(OPENSSL_PATH)/crypto/ec/ec_ameth.c
> |*|*|*|gEfiCryptoPkgTokenSpaceGuid.PcdOpensslEcEnabled
> -  $(OPENSSL_PATH)/crypto/ec/ec_asn1.c
> |*|*|*|gEfiCryptoPkgTokenSpaceGuid.PcdOpensslEcEnabled
> -  $(OPENSSL_PATH)/crypto/ec/ec_check.c
> |*|*|*|gEfiCryptoPkgTokenSpaceGuid.PcdOpensslEcEnabled
> -  $(OPENSSL_PATH)/crypto/ec/ec_curve.c
> |*|*|*|gEfiCryptoPkgTokenSpaceGuid.PcdOpensslEcEnabled
> -  $(OPENSSL_PATH)/crypto/ec/ec_cvt.c
> |*|*|*|gEfiCryptoPkgTokenSpaceGuid.PcdOpensslEcEnabled
> -  $(OPENSSL_PATH)/crypto/ec/ec_err.c
> |*|*|*|gEfiCryptoPkgTokenSpaceGuid.PcdOpensslEcEnabled
> -  $(OPENSSL_PATH)/crypto/ec/ec_key.c
> |*|*|*|gEfiCryptoPkgTokenSpaceGuid.PcdOpensslEcEnabled
> -  $(OPENSSL_PATH)/crypto/ec/ec_kmeth.c
> |*|*|*|gEfiCryptoPkgTokenSpaceGuid.PcdOpensslEcEnabled
> -  $(OPENSSL_PATH)/crypto/ec/ec_lib.c
> |*|*|*|gEfiCryptoPkgTokenSpaceGuid.PcdOpensslEcEnabled
> -  $(OPENSSL_PATH)/crypto/ec/ec_mult.c
> |*|*|*|gEfiCryptoPkgTokenSpaceGuid.PcdOpensslEcEnabled
> -  $(OPENSSL_PATH)/crypto/ec/ec_oct.c
> |*|*|*|gEfiCryptoPkgTokenSpaceGuid.PcdOpensslEcEnabled
> -  $(OPENSSL_PATH)/crypto/ec/ec_pmeth.c
> |*|*|*|gEfiCryptoPkgTokenSpaceGuid.PcdOpensslEcEnabled
> -  $(OPENSSL_PATH)/crypto/ec/ec_print.c
> |*|*|*|gEfiCryptoPkgTokenSpaceGuid.PcdOpensslEcEnabled
> -  $(OPENSSL_PATH)/crypto/ec/ecdh_kdf.c
> |*|*|*|gEfiCryptoPkgTokenSpaceGuid.PcdOpensslEcEnabled
> -  $(OPENSSL_PATH)/crypto/ec/ecdh_ossl.c
> |*|*|*|gEfiCryptoPkgTokenSpaceGuid.PcdOpensslEcEnabled
> -  $(OPENSSL_PATH)/crypto/ec/ecdsa_ossl.c
> |*|*|*|gEfiCryptoPkgTokenSpaceGuid.PcdOpensslEcEnabled
> -  $(OPENSSL_PATH)/crypto/ec/ecdsa_sign.c
> |*|*|*|gEfiCryptoPkgTokenSpaceGuid.PcdOpensslEcEnabled
> -  $(OPENSSL_PATH)/crypto/ec/ecdsa_vrf.c
> |*|*|*|gEfiCryptoPkgTokenSpaceGuid.PcdOpensslEcEnabled
> -  $(OPENSSL_PATH)/crypto/ec/eck_prn.c
> |*|*|*|gEfiCryptoPkgTokenSpaceGuid.PcdOpensslEcEnabled
> -  $(OPENSSL_PATH)/crypto/ec/ecp_mont.c
> |*|*|*|gEfiCryptoPkgTokenSpaceGuid.PcdOpensslEcEnabled
> -  $(OPENSSL_PATH)/crypto/ec/ecp_nist.c
> |*|*|*|gEfiCryptoPkgTokenSpaceGuid.PcdOpensslEcEnabled
> -  $(OPENSSL_PATH)/crypto/ec/ecp_nistp224.c
> |*|*|*|gEfiCryptoPkgTokenSpaceGuid.PcdOpensslEcEnabled
> -  $(OPENSSL_PATH)/crypto/ec/ecp_nistp256.c
> |*|*|*|gEfiCryptoPkgTokenSpaceGuid.PcdOpensslEcEnabled
> -  $(OPENSSL_PATH)/crypto/ec/ecp_nistp521.c
> |*|*|*|gEfiCryptoPkgTokenSpaceGuid.PcdOpensslEcEnabled
> -  $(OPENSSL_PATH)/crypto/ec/ecp_nistputil.c
> |*|*|*|gEfiCryptoPkgTokenSpaceGuid.PcdOpensslEcEnabled
> -  $(OPENSSL_PATH)/crypto/ec/ecp_oct.c
> |*|*|*|gEfiCryptoPkgTokenSpaceGuid.PcdOpensslEcEnabled
> -  $(OPENSSL_PATH)/crypto/ec/ecp_smpl.c
> |*|*|*|gEfiCryptoPkgTokenSpaceGuid.PcdOpensslEcEnabled
> -  $(OPENSSL_PATH)/crypto/ec/ecx_meth.c
> |*|*|*|gEfiCryptoPkgTokenSpaceGuid.PcdOpensslEcEnabled
> +#  $(OPENSSL_PATH)/crypto/ec/curve25519.c
> +#  $(OPENSSL_PATH)/crypto/ec/curve448/arch_32/f_impl.c
> +#  $(OPENSSL_PATH)/crypto/ec/curve448/curve448.c
> +#  $(OPENSSL_PATH)/crypto/ec/curve448/curve448_tables.c
> +#  $(OPENSSL_PATH)/crypto/ec/curve448/eddsa.c
> +#  $(OPENSSL_PATH)/crypto/ec/curve448/f_generic.c
> +#  $(OPENSSL_PATH)/crypto/ec/curve448/scalar.c
> +#  $(OPENSSL_PATH)/crypto/ec/ec2_oct.c
> +#  $(OPENSSL_PATH)/crypto/ec/ec2_smpl.c
> +#  $(OPENSSL_PATH)/crypto/ec/ec_ameth.c
> +#  $(OPENSSL_PATH)/crypto/ec/ec_asn1.c
> +#  $(OPENSSL_PATH)/crypto/ec/ec_check.c
> +#  $(OPENSSL_PATH)/crypto/ec/ec_curve.c
> +#  $(OPENSSL_PATH)/crypto/ec/ec_cvt.c
> +#  $(OPENSSL_PATH)/crypto/ec/ec_err.c
> +#  $(OPENSSL_PATH)/crypto/ec/ec_key.c
> +#  $(OPENSSL_PATH)/crypto/ec/ec_kmeth.c
> +#  $(OPENSSL_PATH)/crypto/ec/ec_lib.c
> +#  $(OPENSSL_PATH)/crypto/ec/ec_mult.c
> +#  $(OPENSSL_PATH)/crypto/ec/ec_oct.c
> +#  $(OPENSSL_PATH)/crypto/ec/ec_pmeth.c
> +#  $(OPENSSL_PATH)/crypto/ec/ec_print.c
> +#  $(OPENSSL_PATH)/crypto/ec/ecdh_kdf.c
> +#  $(OPENSSL_PATH)/crypto/ec/ecdh_ossl.c
> +#  $(OPENSSL_PATH)/crypto/ec/ecdsa_ossl.c
> +#  $(OPENSSL_PATH)/crypto/ec/ecdsa_sign.c
> +#  $(OPENSSL_PATH)/crypto/ec/ecdsa_vrf.c
> +#  $(OPENSSL_PATH)/crypto/ec/eck_prn.c
> +#  $(OPENSSL_PATH)/crypto/ec/ecp_mont.c
> +#  $(OPENSSL_PATH)/crypto/ec/ecp_nist.c
> +#  $(OPENSSL_PATH)/crypto/ec/ecp_nistp224.c
> +#  $(OPENSSL_PATH)/crypto/ec/ecp_nistp256.c
> +#  $(OPENSSL_PATH)/crypto/ec/ecp_nistp521.c
> +#  $(OPENSSL_PATH)/crypto/ec/ecp_nistputil.c
> +#  $(OPENSSL_PATH)/crypto/ec/ecp_oct.c
> +#  $(OPENSSL_PATH)/crypto/ec/ecp_smpl.c
> +#  $(OPENSSL_PATH)/crypto/ec/ecx_meth.c
>    $(OPENSSL_PATH)/crypto/err/err.c
>    $(OPENSSL_PATH)/crypto/err/err_prn.c
>    $(OPENSSL_PATH)/crypto/evp/bio_b64.c
> @@ -324,6 +320,7 @@ [Sources.IA32]
>    $(OPENSSL_PATH)/crypto/md5/md5_dgst.c
>    $(OPENSSL_PATH)/crypto/md5/md5_one.c
>    $(OPENSSL_PATH)/crypto/mem.c
> +#  $(OPENSSL_PATH)/crypto/mem_clr.c   # Replaced by assembly optimized
> NASM/S files
>    $(OPENSSL_PATH)/crypto/mem_dbg.c
>    $(OPENSSL_PATH)/crypto/mem_sec.c
>    $(OPENSSL_PATH)/crypto/modes/cbc128.c
> @@ -430,10 +427,10 @@ [Sources.IA32]
>    $(OPENSSL_PATH)/crypto/siphash/siphash.c
>    $(OPENSSL_PATH)/crypto/siphash/siphash_ameth.c
>    $(OPENSSL_PATH)/crypto/siphash/siphash_pmeth.c
> -  $(OPENSSL_PATH)/crypto/sm2/sm2_crypt.c
> |*|*|*|gEfiCryptoPkgTokenSpaceGuid.PcdOpensslEcEnabled
> -  $(OPENSSL_PATH)/crypto/sm2/sm2_err.c
> |*|*|*|gEfiCryptoPkgTokenSpaceGuid.PcdOpensslEcEnabled
> -  $(OPENSSL_PATH)/crypto/sm2/sm2_pmeth.c
> |*|*|*|gEfiCryptoPkgTokenSpaceGuid.PcdOpensslEcEnabled
> -  $(OPENSSL_PATH)/crypto/sm2/sm2_sign.c
> |*|*|*|gEfiCryptoPkgTokenSpaceGuid.PcdOpensslEcEnabled
> +#  $(OPENSSL_PATH)/crypto/sm2/sm2_crypt.c
> +#  $(OPENSSL_PATH)/crypto/sm2/sm2_err.c
> +#  $(OPENSSL_PATH)/crypto/sm2/sm2_pmeth.c
> +#  $(OPENSSL_PATH)/crypto/sm2/sm2_sign.c
>    $(OPENSSL_PATH)/crypto/sm3/m_sm3.c
>    $(OPENSSL_PATH)/crypto/sm3/sm3.c
>    $(OPENSSL_PATH)/crypto/sm4/sm4.c
> @@ -546,15 +543,15 @@ [Sources.IA32]
>    $(OPENSSL_PATH)/crypto/conf/conf_local.h
>    $(OPENSSL_PATH)/crypto/dh/dh_local.h
>    $(OPENSSL_PATH)/crypto/dso/dso_local.h
> -  $(OPENSSL_PATH)/crypto/ec/ec_local.h
> |*|*|*|gEfiCryptoPkgTokenSpaceGuid.PcdOpensslEcEnabled
> -  $(OPENSSL_PATH)/crypto/ec/curve448/curve448_local.h
> |*|*|*|gEfiCryptoPkgTokenSpaceGuid.PcdOpensslEcEnabled
> -  $(OPENSSL_PATH)/crypto/ec/curve448/curve448utils.h
> |*|*|*|gEfiCryptoPkgTokenSpaceGuid.PcdOpensslEcEnabled
> -  $(OPENSSL_PATH)/crypto/ec/curve448/ed448.h
> |*|*|*|gEfiCryptoPkgTokenSpaceGuid.PcdOpensslEcEnabled
> -  $(OPENSSL_PATH)/crypto/ec/curve448/field.h
> |*|*|*|gEfiCryptoPkgTokenSpaceGuid.PcdOpensslEcEnabled
> -  $(OPENSSL_PATH)/crypto/ec/curve448/point_448.h
> |*|*|*|gEfiCryptoPkgTokenSpaceGuid.PcdOpensslEcEnabled
> -  $(OPENSSL_PATH)/crypto/ec/curve448/word.h
> |*|*|*|gEfiCryptoPkgTokenSpaceGuid.PcdOpensslEcEnabled
> -  $(OPENSSL_PATH)/crypto/ec/curve448/arch_32/arch_intrinsics.h
> |*|*|*|gEfiCryptoPkgTokenSpaceGuid.PcdOpensslEcEnabled
> -  $(OPENSSL_PATH)/crypto/ec/curve448/arch_32/f_impl.h
> |*|*|*|gEfiCryptoPkgTokenSpaceGuid.PcdOpensslEcEnabled
> +#  $(OPENSSL_PATH)/crypto/ec/ec_local.h
> +#  $(OPENSSL_PATH)/crypto/ec/curve448/curve448_local.h
> +#  $(OPENSSL_PATH)/crypto/ec/curve448/curve448utils.h
> +#  $(OPENSSL_PATH)/crypto/ec/curve448/ed448.h
> +#  $(OPENSSL_PATH)/crypto/ec/curve448/field.h
> +#  $(OPENSSL_PATH)/crypto/ec/curve448/point_448.h
> +#  $(OPENSSL_PATH)/crypto/ec/curve448/word.h
> +#  $(OPENSSL_PATH)/crypto/ec/curve448/arch_32/arch_intrinsics.h
> +#  $(OPENSSL_PATH)/crypto/ec/curve448/arch_32/f_impl.h
>    $(OPENSSL_PATH)/crypto/evp/evp_local.h
>    $(OPENSSL_PATH)/crypto/hmac/hmac_local.h
>    $(OPENSSL_PATH)/crypto/lhash/lhash_local.h
> @@ -633,6 +630,53 @@ [Sources.IA32]
>    ossl_store.c
>    rand_pool.c
> 
> +[Sources.IA32]
> +  IA32/crypto/aes/aesni-x86.nasm    | MSFT
> +  IA32/crypto/aes/vpaes-x86.nasm    | MSFT
> +  IA32/crypto/modes/ghash-x86.nasm  | MSFT
> +  IA32/crypto/sha/sha1-586.nasm     | MSFT
> +  IA32/crypto/sha/sha256-586.nasm   | MSFT
> +  IA32/crypto/sha/sha512-586.nasm   | MSFT
> +  IA32/crypto/x86cpuid.nasm         | MSFT
> +
> +  IA32Gcc/crypto/aes/aesni-x86.S    | GCC
> +  IA32Gcc/crypto/aes/vpaes-x86.S    | GCC
> +  IA32Gcc/crypto/modes/ghash-x86.S  | GCC
> +  IA32Gcc/crypto/sha/sha1-586.S     | GCC
> +  IA32Gcc/crypto/sha/sha256-586.S   | GCC
> +  IA32Gcc/crypto/sha/sha512-586.S   | GCC
> +  IA32Gcc/crypto/x86cpuid.S         | GCC
> +
> +[Sources.X64]
> +  X64/ApiHooks.c
> +  X64/crypto/aes/aesni-mb-x86_64.nasm      | MSFT
> +  X64/crypto/aes/aesni-sha1-x86_64.nasm    | MSFT
> +  X64/crypto/aes/aesni-sha256-x86_64.nasm  | MSFT
> +  X64/crypto/aes/aesni-x86_64.nasm         | MSFT
> +  X64/crypto/aes/vpaes-x86_64.nasm         | MSFT
> +  X64/crypto/modes/aesni-gcm-x86_64.nasm   | MSFT
> +  X64/crypto/modes/ghash-x86_64.nasm       | MSFT
> +  X64/crypto/sha/sha1-mb-x86_64.nasm       | MSFT
> +  X64/crypto/sha/sha1-x86_64.nasm          | MSFT
> +  X64/crypto/sha/sha256-mb-x86_64.nasm     | MSFT
> +  X64/crypto/sha/sha256-x86_64.nasm        | MSFT
> +  X64/crypto/sha/sha512-x86_64.nasm        | MSFT
> +  X64/crypto/x86_64cpuid.nasm              | MSFT
> +
> +  X64Gcc/crypto/aes/aesni-mb-x86_64.S      | GCC
> +  X64Gcc/crypto/aes/aesni-sha1-x86_64.S    | GCC
> +  X64Gcc/crypto/aes/aesni-sha256-x86_64.S  | GCC
> +  X64Gcc/crypto/aes/aesni-x86_64.S         | GCC
> +  X64Gcc/crypto/aes/vpaes-x86_64.S         | GCC
> +  X64Gcc/crypto/modes/aesni-gcm-x86_64.S   | GCC
> +  X64Gcc/crypto/modes/ghash-x86_64.S       | GCC
> +  X64Gcc/crypto/sha/sha1-mb-x86_64.S       | GCC
> +  X64Gcc/crypto/sha/sha1-x86_64.S          | GCC
> +  X64Gcc/crypto/sha/sha256-mb-x86_64.S     | GCC
> +  X64Gcc/crypto/sha/sha256-x86_64.S        | GCC
> +  X64Gcc/crypto/sha/sha512-x86_64.S        | GCC
> +  X64Gcc/crypto/x86_64cpuid.S              | GCC
> +
>  [Packages]
>    MdePkg/MdePkg.dec
>    CryptoPkg/CryptoPkg.dec
> @@ -643,9 +687,6 @@ [LibraryClasses]
>    RngLib
>    PrintLib
> 
> -[FixedPcd]
> -  gEfiCryptoPkgTokenSpaceGuid.PcdOpensslEcEnabled      ## CONSUMES
> -
>  [BuildOptions]
>    #
>    # Disables the following Visual Studio compiler warnings brought by
> openssl source,
> @@ -665,8 +706,10 @@ [BuildOptions]
>    #   C4819: The file contains a character that cannot be represented in the
> current code page
>    #
>    MSFT:*_*_IA32_CC_FLAGS   = -U_WIN32 -U_WIN64 -U_MSC_VER $(OPENSSL_FLAGS)
> $(OPENSSL_FLAGS_CONFIG) /wd4090 /wd4132 /wd4210 /wd4244 /wd4245 /wd4267
> /wd4310 /wd4389 /wd4700 /wd4702 /wd4706 /wd4819
> +  MSFT:*_*_X64_CC_FLAGS    = -U_WIN32 -U_WIN64 -U_MSC_VER $(OPENSSL_FLAGS)
> $(OPENSSL_FLAGS_CONFIG) /wd4090 /wd4132 /wd4210 /wd4244 /wd4245 /wd4267
> /wd4306 /wd4310 /wd4700 /wd4389 /wd4702 /wd4706 /wd4819
> 
>    INTEL:*_*_IA32_CC_FLAGS  = -U_WIN32 -U_WIN64 -U_MSC_VER -U__ICC
> $(OPENSSL_FLAGS) $(OPENSSL_FLAGS_CONFIG) /w
> +  INTEL:*_*_X64_CC_FLAGS   = -U_WIN32 -U_WIN64 -U_MSC_VER -U__ICC
> $(OPENSSL_FLAGS) $(OPENSSL_FLAGS_CONFIG) /w
> 
>    #
>    # Suppress the following build warnings in openssl so we don't break the
> build with -Werror
> @@ -675,7 +718,11 @@ [BuildOptions]
>    #                   types appropriate to the format string specified.
>    #   -Werror=unused-but-set-variable: Warn whenever a local variable is
> assigned to, but otherwise unused (aside from its declaration).
>    #
> -  GCC:*_*_IA32_CC_FLAGS    = -UWIN32 -U_WIN32 -U_WIN64 $(OPENSSL_FLAGS)
> $(OPENSSL_FLAGS_CONFIG) -Wno-error=maybe-uninitialized -Wno-error=unused-but-
> set-variable
> +  GCC:*_*_IA32_CC_FLAGS    = -U_WIN32 -U_WIN64 $(OPENSSL_FLAGS)
> $(OPENSSL_FLAGS_CONFIG) -Wno-error=maybe-uninitialized -Wno-error=unused-but-
> set-variable
> +  GCC:*_*_X64_CC_FLAGS     = -U_WIN32 -U_WIN64 $(OPENSSL_FLAGS)
> $(OPENSSL_FLAGS_CONFIG) -Wno-error=maybe-uninitialized -Wno-error=format -
> Wno-format -Wno-error=unused-but-set-variable -DNO_MSABI_VA_FUNCS
> +  GCC:*_CLANG35_*_CC_FLAGS = -std=c99 -Wno-error=uninitialized
> +  GCC:*_CLANG38_*_CC_FLAGS = -std=c99 -Wno-error=uninitialized
> +  GCC:*_CLANGPDB_*_CC_FLAGS = -std=c99 -Wno-error=uninitialized -Wno-
> error=incompatible-pointer-types -Wno-error=pointer-sign -Wno-error=implicit-
> function-declaration -Wno-error=ignored-pragma-optimize
> 
>    # suppress the following warnings in openssl so we don't break the build
> with warnings-as-errors:
>    # 1295: Deprecated declaration <entity> - give arg types
> @@ -697,3 +744,4 @@ [BuildOptions]
>    # 3017: <entity> may be used before being set (NOTE: This was fixed in
> OpenSSL 1.1 HEAD with
>    #       commit d9b8b89bec4480de3a10bdaf9425db371c19145b, and can be
> dropped then.)
>    XCODE:*_*_IA32_CC_FLAGS   = -mmmx -msse -U_WIN32 -U_WIN64 $(OPENSSL_FLAGS)
> $(OPENSSL_FLAGS_CONFIG) -w -std=c99 -Wno-error=uninitialized
> +  XCODE:*_*_X64_CC_FLAGS    = -mmmx -msse -U_WIN32 -U_WIN64 $(OPENSSL_FLAGS)
> $(OPENSSL_FLAGS_CONFIG) -w -std=c99 -Wno-error=uninitialized
> diff --git a/CryptoPkg/Library/OpensslLib/OpensslLibAccel.uni
> b/CryptoPkg/Library/OpensslLib/OpensslLibAccel.uni
> new file mode 100644
> index 000000000000..e547a0c1e816
> --- /dev/null
> +++ b/CryptoPkg/Library/OpensslLib/OpensslLibAccel.uni
> @@ -0,0 +1,14 @@
> +// /** @file
> +// This module provides OpenSSL Library implementation with TLS features
> +// along with performance optimized implementations of SHA1, SHA256, SHA512,
> +// AESNI, VPAED, and GHASH for IA32 and X64.
> +//
> +// Copyright (c) 2010 - 2018, Intel Corporation. All rights reserved.<BR>
> +//
> +// SPDX-License-Identifier: BSD-2-Clause-Patent
> +//
> +// **/
> +
> +#string STR_MODULE_ABSTRACT             #language en-US "OpenSSL Library
> implementation with TLS features and performance optimizations"
> +
> +#string STR_MODULE_DESCRIPTION          #language en-US "This module
> provides OpenSSL Library implementation with TLS features along with
> performance optimized implementations of SHA1, SHA256, SHA512, AESNI, VPAED,
> and GHASH for IA32 and X64."
> diff --git a/CryptoPkg/Library/OpensslLib/OpensslLibConstructor.c
> b/CryptoPkg/Library/OpensslLib/OpensslLibConstructor.c
> index 18d8a5612808..5daf73a54710 100644
> --- a/CryptoPkg/Library/OpensslLib/OpensslLibConstructor.c
> +++ b/CryptoPkg/Library/OpensslLib/OpensslLibConstructor.c
> @@ -6,7 +6,7 @@ SPDX-License-Identifier: BSD-2-Clause-Patent
> 
>  **/
> 
> -#include <Uefi.h>
> +#include <Base.h>
> 
>  /**
>    An internal OpenSSL function which fetches a local copy of the hardware
> @@ -30,7 +30,7 @@ OPENSSL_cpuid_setup (
>    @retval EFI_SUCCESS         The construction succeeded.
> 
>  **/
> -EFI_STATUS
> +RETURN_STATUS
>  EFIAPI
>  OpensslLibConstructor (
>    VOID
> @@ -38,5 +38,5 @@ OpensslLibConstructor (
>  {
>    OPENSSL_cpuid_setup ();
> 
> -  return EFI_SUCCESS;
> +  return RETURN_SUCCESS;
>  }
> diff --git a/CryptoPkg/Library/OpensslLib/OpensslLibCrypto.inf
> b/CryptoPkg/Library/OpensslLib/OpensslLibCrypto.inf
> index 0ec372454119..5492865ddb2d 100644
> --- a/CryptoPkg/Library/OpensslLib/OpensslLibCrypto.inf
> +++ b/CryptoPkg/Library/OpensslLib/OpensslLibCrypto.inf
> @@ -1,5 +1,6 @@
>  ## @file
> -#  This module provides OpenSSL Library implementation.
> +#  This module provides OpenSSL Library implementation with ECC and TLS
> +#  features removed and features have performance optimizations enabled.
>  #
>  #  Copyright (c) 2010 - 2020, Intel Corporation. All rights reserved.<BR>
>  #  (C) Copyright 2020 Hewlett Packard Enterprise Development LP<BR>
> @@ -15,14 +16,18 @@ [Defines]
>    MODULE_TYPE                    = BASE
>    VERSION_STRING                 = 1.0
>    LIBRARY_CLASS                  = OpensslLib
> +  CONSTRUCTOR                    = OpensslLibConstructor
> +
>    DEFINE OPENSSL_PATH            = openssl
> -  DEFINE OPENSSL_FLAGS           = -DL_ENDIAN -DOPENSSL_SMALL_FOOTPRINT -
> D_CRT_SECURE_NO_DEPRECATE -D_CRT_NONSTDC_NO_DEPRECATE -DOPENSSL_NO_ASM
> +  DEFINE OPENSSL_FLAGS           = -DL_ENDIAN -DOPENSSL_SMALL_FOOTPRINT -
> D_CRT_SECURE_NO_DEPRECATE -D_CRT_NONSTDC_NO_DEPRECATE -DOPENSSL_NO_EC -
> DOPENSSL_NO_ECDH -DOPENSSL_NO_ECDSA -DOPENSSL_NO_TLS1_3 -DOPENSSL_NO_SM2 -
> DOPENSSL_NO_ASM
> +  DEFINE OPENSSL_FLAGS_CONFIG    =
> 
>  #
>  #  VALID_ARCHITECTURES           = IA32 X64 ARM AARCH64
>  #
> 
>  [Sources]
> +  OpensslLibConstructor.c
>    $(OPENSSL_PATH)/e_os.h
>    $(OPENSSL_PATH)/ms/uplink.h
>  # Autogenerated files list starts here
> @@ -199,43 +204,43 @@ [Sources]
>    $(OPENSSL_PATH)/crypto/dso/dso_vms.c
>    $(OPENSSL_PATH)/crypto/dso/dso_win32.c
>    $(OPENSSL_PATH)/crypto/ebcdic.c
> -  $(OPENSSL_PATH)/crypto/ec/curve25519.c
> |*|*|*|gEfiCryptoPkgTokenSpaceGuid.PcdOpensslEcEnabled
> -  $(OPENSSL_PATH)/crypto/ec/curve448/arch_32/f_impl.c
> |*|*|*|gEfiCryptoPkgTokenSpaceGuid.PcdOpensslEcEnabled
> -  $(OPENSSL_PATH)/crypto/ec/curve448/curve448.c
> |*|*|*|gEfiCryptoPkgTokenSpaceGuid.PcdOpensslEcEnabled
> -  $(OPENSSL_PATH)/crypto/ec/curve448/curve448_tables.c
> |*|*|*|gEfiCryptoPkgTokenSpaceGuid.PcdOpensslEcEnabled
> -  $(OPENSSL_PATH)/crypto/ec/curve448/eddsa.c
> |*|*|*|gEfiCryptoPkgTokenSpaceGuid.PcdOpensslEcEnabled
> -  $(OPENSSL_PATH)/crypto/ec/curve448/f_generic.c
> |*|*|*|gEfiCryptoPkgTokenSpaceGuid.PcdOpensslEcEnabled
> -  $(OPENSSL_PATH)/crypto/ec/curve448/scalar.c
> |*|*|*|gEfiCryptoPkgTokenSpaceGuid.PcdOpensslEcEnabled
> -  $(OPENSSL_PATH)/crypto/ec/ec2_oct.c
> |*|*|*|gEfiCryptoPkgTokenSpaceGuid.PcdOpensslEcEnabled
> -  $(OPENSSL_PATH)/crypto/ec/ec2_smpl.c
> |*|*|*|gEfiCryptoPkgTokenSpaceGuid.PcdOpensslEcEnabled
> -  $(OPENSSL_PATH)/crypto/ec/ec_ameth.c
> |*|*|*|gEfiCryptoPkgTokenSpaceGuid.PcdOpensslEcEnabled
> -  $(OPENSSL_PATH)/crypto/ec/ec_asn1.c
> |*|*|*|gEfiCryptoPkgTokenSpaceGuid.PcdOpensslEcEnabled
> -  $(OPENSSL_PATH)/crypto/ec/ec_check.c
> |*|*|*|gEfiCryptoPkgTokenSpaceGuid.PcdOpensslEcEnabled
> -  $(OPENSSL_PATH)/crypto/ec/ec_curve.c
> |*|*|*|gEfiCryptoPkgTokenSpaceGuid.PcdOpensslEcEnabled
> -  $(OPENSSL_PATH)/crypto/ec/ec_cvt.c
> |*|*|*|gEfiCryptoPkgTokenSpaceGuid.PcdOpensslEcEnabled
> -  $(OPENSSL_PATH)/crypto/ec/ec_err.c
> |*|*|*|gEfiCryptoPkgTokenSpaceGuid.PcdOpensslEcEnabled
> -  $(OPENSSL_PATH)/crypto/ec/ec_key.c
> |*|*|*|gEfiCryptoPkgTokenSpaceGuid.PcdOpensslEcEnabled
> -  $(OPENSSL_PATH)/crypto/ec/ec_kmeth.c
> |*|*|*|gEfiCryptoPkgTokenSpaceGuid.PcdOpensslEcEnabled
> -  $(OPENSSL_PATH)/crypto/ec/ec_lib.c
> |*|*|*|gEfiCryptoPkgTokenSpaceGuid.PcdOpensslEcEnabled
> -  $(OPENSSL_PATH)/crypto/ec/ec_mult.c
> |*|*|*|gEfiCryptoPkgTokenSpaceGuid.PcdOpensslEcEnabled
> -  $(OPENSSL_PATH)/crypto/ec/ec_oct.c
> |*|*|*|gEfiCryptoPkgTokenSpaceGuid.PcdOpensslEcEnabled
> -  $(OPENSSL_PATH)/crypto/ec/ec_pmeth.c
> |*|*|*|gEfiCryptoPkgTokenSpaceGuid.PcdOpensslEcEnabled
> -  $(OPENSSL_PATH)/crypto/ec/ec_print.c
> |*|*|*|gEfiCryptoPkgTokenSpaceGuid.PcdOpensslEcEnabled
> -  $(OPENSSL_PATH)/crypto/ec/ecdh_kdf.c
> |*|*|*|gEfiCryptoPkgTokenSpaceGuid.PcdOpensslEcEnabled
> -  $(OPENSSL_PATH)/crypto/ec/ecdh_ossl.c
> |*|*|*|gEfiCryptoPkgTokenSpaceGuid.PcdOpensslEcEnabled
> -  $(OPENSSL_PATH)/crypto/ec/ecdsa_ossl.c
> |*|*|*|gEfiCryptoPkgTokenSpaceGuid.PcdOpensslEcEnabled
> -  $(OPENSSL_PATH)/crypto/ec/ecdsa_sign.c
> |*|*|*|gEfiCryptoPkgTokenSpaceGuid.PcdOpensslEcEnabled
> -  $(OPENSSL_PATH)/crypto/ec/ecdsa_vrf.c
> |*|*|*|gEfiCryptoPkgTokenSpaceGuid.PcdOpensslEcEnabled
> -  $(OPENSSL_PATH)/crypto/ec/eck_prn.c
> |*|*|*|gEfiCryptoPkgTokenSpaceGuid.PcdOpensslEcEnabled
> -  $(OPENSSL_PATH)/crypto/ec/ecp_mont.c
> |*|*|*|gEfiCryptoPkgTokenSpaceGuid.PcdOpensslEcEnabled
> -  $(OPENSSL_PATH)/crypto/ec/ecp_nist.c
> |*|*|*|gEfiCryptoPkgTokenSpaceGuid.PcdOpensslEcEnabled
> -  $(OPENSSL_PATH)/crypto/ec/ecp_nistp224.c
> |*|*|*|gEfiCryptoPkgTokenSpaceGuid.PcdOpensslEcEnabled
> -  $(OPENSSL_PATH)/crypto/ec/ecp_nistp256.c
> |*|*|*|gEfiCryptoPkgTokenSpaceGuid.PcdOpensslEcEnabled
> -  $(OPENSSL_PATH)/crypto/ec/ecp_nistp521.c
> |*|*|*|gEfiCryptoPkgTokenSpaceGuid.PcdOpensslEcEnabled
> -  $(OPENSSL_PATH)/crypto/ec/ecp_nistputil.c
> |*|*|*|gEfiCryptoPkgTokenSpaceGuid.PcdOpensslEcEnabled
> -  $(OPENSSL_PATH)/crypto/ec/ecp_oct.c
> |*|*|*|gEfiCryptoPkgTokenSpaceGuid.PcdOpensslEcEnabled
> -  $(OPENSSL_PATH)/crypto/ec/ecp_smpl.c
> |*|*|*|gEfiCryptoPkgTokenSpaceGuid.PcdOpensslEcEnabled
> -  $(OPENSSL_PATH)/crypto/ec/ecx_meth.c
> |*|*|*|gEfiCryptoPkgTokenSpaceGuid.PcdOpensslEcEnabled
> +#  $(OPENSSL_PATH)/crypto/ec/curve25519.c
> +#  $(OPENSSL_PATH)/crypto/ec/curve448/arch_32/f_impl.c
> +#  $(OPENSSL_PATH)/crypto/ec/curve448/curve448.c
> +#  $(OPENSSL_PATH)/crypto/ec/curve448/curve448_tables.c
> +#  $(OPENSSL_PATH)/crypto/ec/curve448/eddsa.c
> +#  $(OPENSSL_PATH)/crypto/ec/curve448/f_generic.c
> +#  $(OPENSSL_PATH)/crypto/ec/curve448/scalar.c
> +#  $(OPENSSL_PATH)/crypto/ec/ec2_oct.c
> +#  $(OPENSSL_PATH)/crypto/ec/ec2_smpl.c
> +#  $(OPENSSL_PATH)/crypto/ec/ec_ameth.c
> +#  $(OPENSSL_PATH)/crypto/ec/ec_asn1.c
> +#  $(OPENSSL_PATH)/crypto/ec/ec_check.c
> +#  $(OPENSSL_PATH)/crypto/ec/ec_curve.c
> +#  $(OPENSSL_PATH)/crypto/ec/ec_cvt.c
> +#  $(OPENSSL_PATH)/crypto/ec/ec_err.c
> +#  $(OPENSSL_PATH)/crypto/ec/ec_key.c
> +#  $(OPENSSL_PATH)/crypto/ec/ec_kmeth.c
> +#  $(OPENSSL_PATH)/crypto/ec/ec_lib.c
> +#  $(OPENSSL_PATH)/crypto/ec/ec_mult.c
> +#  $(OPENSSL_PATH)/crypto/ec/ec_oct.c
> +#  $(OPENSSL_PATH)/crypto/ec/ec_pmeth.c
> +#  $(OPENSSL_PATH)/crypto/ec/ec_print.c
> +#  $(OPENSSL_PATH)/crypto/ec/ecdh_kdf.c
> +#  $(OPENSSL_PATH)/crypto/ec/ecdh_ossl.c
> +#  $(OPENSSL_PATH)/crypto/ec/ecdsa_ossl.c
> +#  $(OPENSSL_PATH)/crypto/ec/ecdsa_sign.c
> +#  $(OPENSSL_PATH)/crypto/ec/ecdsa_vrf.c
> +#  $(OPENSSL_PATH)/crypto/ec/eck_prn.c
> +#  $(OPENSSL_PATH)/crypto/ec/ecp_mont.c
> +#  $(OPENSSL_PATH)/crypto/ec/ecp_nist.c
> +#  $(OPENSSL_PATH)/crypto/ec/ecp_nistp224.c
> +#  $(OPENSSL_PATH)/crypto/ec/ecp_nistp256.c
> +#  $(OPENSSL_PATH)/crypto/ec/ecp_nistp521.c
> +#  $(OPENSSL_PATH)/crypto/ec/ecp_nistputil.c
> +#  $(OPENSSL_PATH)/crypto/ec/ecp_oct.c
> +#  $(OPENSSL_PATH)/crypto/ec/ecp_smpl.c
> +#  $(OPENSSL_PATH)/crypto/ec/ecx_meth.c
>    $(OPENSSL_PATH)/crypto/err/err.c
>    $(OPENSSL_PATH)/crypto/err/err_prn.c
>    $(OPENSSL_PATH)/crypto/evp/bio_b64.c
> @@ -421,10 +426,10 @@ [Sources]
>    $(OPENSSL_PATH)/crypto/siphash/siphash.c
>    $(OPENSSL_PATH)/crypto/siphash/siphash_ameth.c
>    $(OPENSSL_PATH)/crypto/siphash/siphash_pmeth.c
> -  $(OPENSSL_PATH)/crypto/sm2/sm2_crypt.c
> |*|*|*|gEfiCryptoPkgTokenSpaceGuid.PcdOpensslEcEnabled
> -  $(OPENSSL_PATH)/crypto/sm2/sm2_err.c
> |*|*|*|gEfiCryptoPkgTokenSpaceGuid.PcdOpensslEcEnabled
> -  $(OPENSSL_PATH)/crypto/sm2/sm2_pmeth.c
> |*|*|*|gEfiCryptoPkgTokenSpaceGuid.PcdOpensslEcEnabled
> -  $(OPENSSL_PATH)/crypto/sm2/sm2_sign.c
> |*|*|*|gEfiCryptoPkgTokenSpaceGuid.PcdOpensslEcEnabled
> +#  $(OPENSSL_PATH)/crypto/sm2/sm2_crypt.c
> +#  $(OPENSSL_PATH)/crypto/sm2/sm2_err.c
> +#  $(OPENSSL_PATH)/crypto/sm2/sm2_pmeth.c
> +#  $(OPENSSL_PATH)/crypto/sm2/sm2_sign.c
>    $(OPENSSL_PATH)/crypto/sm3/m_sm3.c
>    $(OPENSSL_PATH)/crypto/sm3/sm3.c
>    $(OPENSSL_PATH)/crypto/sm4/sm4.c
> @@ -537,15 +542,15 @@ [Sources]
>    $(OPENSSL_PATH)/crypto/conf/conf_local.h
>    $(OPENSSL_PATH)/crypto/dh/dh_local.h
>    $(OPENSSL_PATH)/crypto/dso/dso_local.h
> -  $(OPENSSL_PATH)/crypto/ec/ec_local.h
> |*|*|*|gEfiCryptoPkgTokenSpaceGuid.PcdOpensslEcEnabled
> -  $(OPENSSL_PATH)/crypto/ec/curve448/curve448_local.h
> |*|*|*|gEfiCryptoPkgTokenSpaceGuid.PcdOpensslEcEnabled
> -  $(OPENSSL_PATH)/crypto/ec/curve448/curve448utils.h
> |*|*|*|gEfiCryptoPkgTokenSpaceGuid.PcdOpensslEcEnabled
> -  $(OPENSSL_PATH)/crypto/ec/curve448/ed448.h
> |*|*|*|gEfiCryptoPkgTokenSpaceGuid.PcdOpensslEcEnabled
> -  $(OPENSSL_PATH)/crypto/ec/curve448/field.h
> |*|*|*|gEfiCryptoPkgTokenSpaceGuid.PcdOpensslEcEnabled
> -  $(OPENSSL_PATH)/crypto/ec/curve448/point_448.h
> |*|*|*|gEfiCryptoPkgTokenSpaceGuid.PcdOpensslEcEnabled
> -  $(OPENSSL_PATH)/crypto/ec/curve448/word.h
> |*|*|*|gEfiCryptoPkgTokenSpaceGuid.PcdOpensslEcEnabled
> -  $(OPENSSL_PATH)/crypto/ec/curve448/arch_32/arch_intrinsics.h
> |*|*|*|gEfiCryptoPkgTokenSpaceGuid.PcdOpensslEcEnabled
> -  $(OPENSSL_PATH)/crypto/ec/curve448/arch_32/f_impl.h
> |*|*|*|gEfiCryptoPkgTokenSpaceGuid.PcdOpensslEcEnabled
> +#  $(OPENSSL_PATH)/crypto/ec/ec_local.h
> +#  $(OPENSSL_PATH)/crypto/ec/curve448/curve448_local.h
> +#  $(OPENSSL_PATH)/crypto/ec/curve448/curve448utils.h
> +#  $(OPENSSL_PATH)/crypto/ec/curve448/ed448.h
> +#  $(OPENSSL_PATH)/crypto/ec/curve448/field.h
> +#  $(OPENSSL_PATH)/crypto/ec/curve448/point_448.h
> +#  $(OPENSSL_PATH)/crypto/ec/curve448/word.h
> +#  $(OPENSSL_PATH)/crypto/ec/curve448/arch_32/arch_intrinsics.h
> +#  $(OPENSSL_PATH)/crypto/ec/curve448/arch_32/f_impl.h
>    $(OPENSSL_PATH)/crypto/evp/evp_local.h
>    $(OPENSSL_PATH)/crypto/hmac/hmac_local.h
>    $(OPENSSL_PATH)/crypto/lhash/lhash_local.h
> @@ -568,6 +573,57 @@ [Sources]
>    $(OPENSSL_PATH)/crypto/x509v3/pcy_local.h
>    $(OPENSSL_PATH)/crypto/x509v3/standard_exts.h
>    $(OPENSSL_PATH)/crypto/x509v3/v3_admis.h
> +#  $(OPENSSL_PATH)/ssl/bio_ssl.c
> +#  $(OPENSSL_PATH)/ssl/d1_lib.c
> +#  $(OPENSSL_PATH)/ssl/d1_msg.c
> +#  $(OPENSSL_PATH)/ssl/d1_srtp.c
> +#  $(OPENSSL_PATH)/ssl/methods.c
> +#  $(OPENSSL_PATH)/ssl/packet.c
> +#  $(OPENSSL_PATH)/ssl/pqueue.c
> +#  $(OPENSSL_PATH)/ssl/record/dtls1_bitmap.c
> +#  $(OPENSSL_PATH)/ssl/record/rec_layer_d1.c
> +#  $(OPENSSL_PATH)/ssl/record/rec_layer_s3.c
> +#  $(OPENSSL_PATH)/ssl/record/ssl3_buffer.c
> +#  $(OPENSSL_PATH)/ssl/record/ssl3_record.c
> +#  $(OPENSSL_PATH)/ssl/record/ssl3_record_tls13.c
> +#  $(OPENSSL_PATH)/ssl/s3_cbc.c
> +#  $(OPENSSL_PATH)/ssl/s3_enc.c
> +#  $(OPENSSL_PATH)/ssl/s3_lib.c
> +#  $(OPENSSL_PATH)/ssl/s3_msg.c
> +#  $(OPENSSL_PATH)/ssl/ssl_asn1.c
> +#  $(OPENSSL_PATH)/ssl/ssl_cert.c
> +#  $(OPENSSL_PATH)/ssl/ssl_ciph.c
> +#  $(OPENSSL_PATH)/ssl/ssl_conf.c
> +#  $(OPENSSL_PATH)/ssl/ssl_err.c
> +#  $(OPENSSL_PATH)/ssl/ssl_init.c
> +#  $(OPENSSL_PATH)/ssl/ssl_lib.c
> +#  $(OPENSSL_PATH)/ssl/ssl_mcnf.c
> +#  $(OPENSSL_PATH)/ssl/ssl_rsa.c
> +#  $(OPENSSL_PATH)/ssl/ssl_sess.c
> +#  $(OPENSSL_PATH)/ssl/ssl_stat.c
> +#  $(OPENSSL_PATH)/ssl/ssl_txt.c
> +#  $(OPENSSL_PATH)/ssl/ssl_utst.c
> +#  $(OPENSSL_PATH)/ssl/statem/extensions.c
> +#  $(OPENSSL_PATH)/ssl/statem/extensions_clnt.c
> +#  $(OPENSSL_PATH)/ssl/statem/extensions_cust.c
> +#  $(OPENSSL_PATH)/ssl/statem/extensions_srvr.c
> +#  $(OPENSSL_PATH)/ssl/statem/statem.c
> +#  $(OPENSSL_PATH)/ssl/statem/statem_clnt.c
> +#  $(OPENSSL_PATH)/ssl/statem/statem_dtls.c
> +#  $(OPENSSL_PATH)/ssl/statem/statem_lib.c
> +#  $(OPENSSL_PATH)/ssl/statem/statem_srvr.c
> +#  $(OPENSSL_PATH)/ssl/t1_enc.c
> +#  $(OPENSSL_PATH)/ssl/t1_lib.c
> +#  $(OPENSSL_PATH)/ssl/t1_trce.c
> +#  $(OPENSSL_PATH)/ssl/tls13_enc.c
> +#  $(OPENSSL_PATH)/ssl/tls_srp.c
> +#  $(OPENSSL_PATH)/ssl/packet_local.h
> +#  $(OPENSSL_PATH)/ssl/ssl_cert_table.h
> +#  $(OPENSSL_PATH)/ssl/ssl_local.h
> +#  $(OPENSSL_PATH)/ssl/record/record.h
> +#  $(OPENSSL_PATH)/ssl/record/record_local.h
> +#  $(OPENSSL_PATH)/ssl/statem/statem.h
> +#  $(OPENSSL_PATH)/ssl/statem/statem_local.h
>  # Autogenerated files list ends here
>    buildinf.h
>    ossl_store.c
> @@ -586,15 +642,13 @@ [LibraryClasses]
>  [LibraryClasses.ARM]
>    ArmSoftFloatLib
> 
> -[FixedPcd]
> -  gEfiCryptoPkgTokenSpaceGuid.PcdOpensslEcEnabled      ## CONSUMES
> -
>  [BuildOptions]
>    #
>    # Disables the following Visual Studio compiler warnings brought by
> openssl source,
>    # so we do not break the build with /WX option:
>    #   C4090: 'function' : different 'const' qualifiers
>    #   C4132: 'object' : const object should be initialized (tls13_enc.c)
> +  #   C4210: nonstandard extension used: function given file scope
>    #   C4244: conversion from type1 to type2, possible loss of data
>    #   C4245: conversion from type1 to type2, signed/unsigned mismatch
>    #   C4267: conversion from size_t to type, possible loss of data
> @@ -606,11 +660,11 @@ [BuildOptions]
>    #   C4706: assignment within conditional expression
>    #   C4819: The file contains a character that cannot be represented in the
> current code page
>    #
> -  MSFT:*_*_IA32_CC_FLAGS   = -U_WIN32 -U_WIN64 -U_MSC_VER $(OPENSSL_FLAGS)
> /wd4090 /wd4132 /wd4244 /wd4245 /wd4267 /wd4310 /wd4389 /wd4700 /wd4702
> /wd4706 /wd4819
> -  MSFT:*_*_X64_CC_FLAGS    = -U_WIN32 -U_WIN64 -U_MSC_VER $(OPENSSL_FLAGS)
> /wd4090 /wd4132 /wd4244 /wd4245 /wd4267 /wd4306 /wd4310 /wd4700 /wd4389
> /wd4702 /wd4706 /wd4819
> +  MSFT:*_*_IA32_CC_FLAGS   = -U_WIN32 -U_WIN64 -U_MSC_VER $(OPENSSL_FLAGS)
> $(OPENSSL_FLAGS_CONFIG) /wd4090 /wd4132 /wd4210 /wd4244 /wd4245 /wd4267
> /wd4310 /wd4389 /wd4700 /wd4702 /wd4706 /wd4819
> +  MSFT:*_*_X64_CC_FLAGS    = -U_WIN32 -U_WIN64 -U_MSC_VER $(OPENSSL_FLAGS)
> $(OPENSSL_FLAGS_CONFIG) /wd4090 /wd4132 /wd4210 /wd4244 /wd4245 /wd4267
> /wd4306 /wd4310 /wd4700 /wd4389 /wd4702 /wd4706 /wd4819
> 
> -  INTEL:*_*_IA32_CC_FLAGS  = -U_WIN32 -U_WIN64 -U_MSC_VER -U__ICC
> $(OPENSSL_FLAGS) /w
> -  INTEL:*_*_X64_CC_FLAGS   = -U_WIN32 -U_WIN64 -U_MSC_VER -U__ICC
> $(OPENSSL_FLAGS) /w
> +  INTEL:*_*_IA32_CC_FLAGS  = -U_WIN32 -U_WIN64 -U_MSC_VER -U__ICC
> $(OPENSSL_FLAGS) $(OPENSSL_FLAGS_CONFIG) /w
> +  INTEL:*_*_X64_CC_FLAGS   = -U_WIN32 -U_WIN64 -U_MSC_VER -U__ICC
> $(OPENSSL_FLAGS) $(OPENSSL_FLAGS_CONFIG) /w
> 
>    #
>    # Suppress the following build warnings in openssl so we don't break the
> build with -Werror
> @@ -619,10 +673,10 @@ [BuildOptions]
>    #                   types appropriate to the format string specified.
>    #   -Werror=unused-but-set-variable: Warn whenever a local variable is
> assigned to, but otherwise unused (aside from its declaration).
>    #
> -  GCC:*_*_IA32_CC_FLAGS    = -U_WIN32 -U_WIN64 $(OPENSSL_FLAGS) -Wno-
> error=maybe-uninitialized -Wno-error=unused-but-set-variable
> -  GCC:*_*_X64_CC_FLAGS     = -U_WIN32 -U_WIN64 $(OPENSSL_FLAGS) -Wno-
> error=maybe-uninitialized -Wno-error=format -Wno-format -Wno-error=unused-
> but-set-variable -DNO_MSABI_VA_FUNCS
> +  GCC:*_*_IA32_CC_FLAGS    = -U_WIN32 -U_WIN64 $(OPENSSL_FLAGS)
> $(OPENSSL_FLAGS_CONFIG) -Wno-error=maybe-uninitialized -Wno-error=unused-but-
> set-variable
> +  GCC:*_*_X64_CC_FLAGS     = -U_WIN32 -U_WIN64 $(OPENSSL_FLAGS)
> $(OPENSSL_FLAGS_CONFIG) -Wno-error=maybe-uninitialized -Wno-error=format -
> Wno-format -Wno-error=unused-but-set-variable -DNO_MSABI_VA_FUNCS
>    GCC:*_*_ARM_CC_FLAGS     = $(OPENSSL_FLAGS) -Wno-error=maybe-uninitialized
> -Wno-error=unused-but-set-variable
> -  GCC:*_*_AARCH64_CC_FLAGS = $(OPENSSL_FLAGS) -Wno-error=maybe-uninitialized
> -Wno-format -Wno-error=unused-but-set-variable
> +  GCC:*_*_AARCH64_CC_FLAGS = $(OPENSSL_FLAGS) -Wno-error=maybe-uninitialized
> -Wno-format -Wno-error=unused-but-set-variable -Wno-error=format
>    GCC:*_*_RISCV64_CC_FLAGS = $(OPENSSL_FLAGS) -Wno-error=maybe-uninitialized
> -Wno-format -Wno-error=unused-but-set-variable
>    GCC:*_CLANG35_*_CC_FLAGS = -std=c99 -Wno-error=uninitialized
>    GCC:*_CLANG38_*_CC_FLAGS = -std=c99 -Wno-error=uninitialized
> @@ -647,8 +701,8 @@ [BuildOptions]
>    #    1: ignore "#1-D: last line of file ends without a newline"
>    # 3017: <entity> may be used before being set (NOTE: This was fixed in
> OpenSSL 1.1 HEAD with
>    #       commit d9b8b89bec4480de3a10bdaf9425db371c19145b, and can be
> dropped then.)
> -  XCODE:*_*_IA32_CC_FLAGS   = -mmmx -msse -U_WIN32 -U_WIN64 $(OPENSSL_FLAGS)
> -w -std=c99 -Wno-error=uninitialized
> -  XCODE:*_*_X64_CC_FLAGS    = -mmmx -msse -U_WIN32 -U_WIN64 $(OPENSSL_FLAGS)
> -w -std=c99 -Wno-error=uninitialized
> +  XCODE:*_*_IA32_CC_FLAGS   = -mmmx -msse -U_WIN32 -U_WIN64 $(OPENSSL_FLAGS)
> $(OPENSSL_FLAGS_CONFIG) -w -std=c99 -Wno-error=uninitialized
> +  XCODE:*_*_X64_CC_FLAGS    = -mmmx -msse -U_WIN32 -U_WIN64 $(OPENSSL_FLAGS)
> $(OPENSSL_FLAGS_CONFIG) -w -std=c99 -Wno-error=uninitialized
> 
>    #
>    # AARCH64 uses strict alignment and avoids SIMD registers for code that
> may execute
> diff --git a/CryptoPkg/Library/OpensslLib/OpensslLibCrypto.uni
> b/CryptoPkg/Library/OpensslLib/OpensslLibCrypto.uni
> index d3f12e178cae..462ccf4355f7 100644
> --- a/CryptoPkg/Library/OpensslLib/OpensslLibCrypto.uni
> +++ b/CryptoPkg/Library/OpensslLib/OpensslLibCrypto.uni
> @@ -1,7 +1,6 @@
>  // /** @file
> -// This module provides openSSL Library implementation (libcrypto only, no
> libssl).
> -//
> -// This module provides OpenSSL Library implementation (libcrypto only, no
> libssl).
> +// This module provides OpenSSL Library implementation (libcrypto only, no
> +// libssl or ecc).
>  //
>  // Copyright (c) 2010 - 2018, Intel Corporation. All rights reserved.<BR>
>  //
> @@ -9,8 +8,6 @@
>  //
>  // **/
> 
> +#string STR_MODULE_ABSTRACT             #language en-US "OpenSSL Library
> implementation (libcrypto only, no libssl or ecc)"
> 
> -#string STR_MODULE_ABSTRACT             #language en-US "OpenSSL Library
> implementation (libcrypto only, no libssl)"
> -
> -#string STR_MODULE_DESCRIPTION          #language en-US "This module
> provides OpenSSL Library implementation (libcrypto only, no libssl)."
> -
> +#string STR_MODULE_DESCRIPTION          #language en-US "This module
> provides OpenSSL Library implementation (libcrypto only, no libssl or ecc)."
> diff --git a/CryptoPkg/Library/OpensslLib/OpensslLib.inf
> b/CryptoPkg/Library/OpensslLib/OpensslLibFull.inf
> similarity index 80%
> copy from CryptoPkg/Library/OpensslLib/OpensslLib.inf
> copy to CryptoPkg/Library/OpensslLib/OpensslLibFull.inf
> index c899b811b149..1b5d9fa42405 100644
> --- a/CryptoPkg/Library/OpensslLib/OpensslLib.inf
> +++ b/CryptoPkg/Library/OpensslLib/OpensslLibFull.inf
> @@ -1,5 +1,11 @@
>  ## @file
> -#  This module provides OpenSSL Library implementation.
> +#  This module provides OpenSSL Library implementation with ECC and TLS
> +#  features.
> +#
> +#  This library should be used if a module module needs ECC in TLS, or
> +#  asymmetric cryptography services such as X509 certificate or PEM format
> +#  data processing.  This library increases the size overhead up to ~115 KB
> +#  compared to OpensslLib.inf library instance.
>  #
>  #  Copyright (c) 2010 - 2020, Intel Corporation. All rights reserved.<BR>
>  #  (C) Copyright 2020 Hewlett Packard Enterprise Development LP<BR>
> @@ -9,20 +15,24 @@
> 
>  [Defines]
>    INF_VERSION                    = 0x00010005
> -  BASE_NAME                      = OpensslLib
> -  MODULE_UNI_FILE                = OpensslLib.uni
> -  FILE_GUID                      = C873A7D0-9824-409f-9B42-2C158B992E69
> +  BASE_NAME                      = OpensslLibFull
> +  MODULE_UNI_FILE                = OpensslLibFull.uni
> +  FILE_GUID                      = AB9E2231-D8FC-433F-9F27-FA293B64FB2C
>    MODULE_TYPE                    = BASE
>    VERSION_STRING                 = 1.0
>    LIBRARY_CLASS                  = OpensslLib
> +  CONSTRUCTOR                    = OpensslLibConstructor
> +
>    DEFINE OPENSSL_PATH            = openssl
>    DEFINE OPENSSL_FLAGS           = -DL_ENDIAN -DOPENSSL_SMALL_FOOTPRINT -
> D_CRT_SECURE_NO_DEPRECATE -D_CRT_NONSTDC_NO_DEPRECATE -DOPENSSL_NO_ASM
> +  DEFINE OPENSSL_FLAGS_CONFIG    =
> 
>  #
>  #  VALID_ARCHITECTURES           = IA32 X64 ARM AARCH64
>  #
> 
>  [Sources]
> +  OpensslLibConstructor.c
>    $(OPENSSL_PATH)/e_os.h
>    $(OPENSSL_PATH)/ms/uplink.h
>  # Autogenerated files list starts here
> @@ -199,43 +209,43 @@ [Sources]
>    $(OPENSSL_PATH)/crypto/dso/dso_vms.c
>    $(OPENSSL_PATH)/crypto/dso/dso_win32.c
>    $(OPENSSL_PATH)/crypto/ebcdic.c
> -  $(OPENSSL_PATH)/crypto/ec/curve25519.c
> |*|*|*|gEfiCryptoPkgTokenSpaceGuid.PcdOpensslEcEnabled
> -  $(OPENSSL_PATH)/crypto/ec/curve448/arch_32/f_impl.c
> |*|*|*|gEfiCryptoPkgTokenSpaceGuid.PcdOpensslEcEnabled
> -  $(OPENSSL_PATH)/crypto/ec/curve448/curve448.c
> |*|*|*|gEfiCryptoPkgTokenSpaceGuid.PcdOpensslEcEnabled
> -  $(OPENSSL_PATH)/crypto/ec/curve448/curve448_tables.c
> |*|*|*|gEfiCryptoPkgTokenSpaceGuid.PcdOpensslEcEnabled
> -  $(OPENSSL_PATH)/crypto/ec/curve448/eddsa.c
> |*|*|*|gEfiCryptoPkgTokenSpaceGuid.PcdOpensslEcEnabled
> -  $(OPENSSL_PATH)/crypto/ec/curve448/f_generic.c
> |*|*|*|gEfiCryptoPkgTokenSpaceGuid.PcdOpensslEcEnabled
> -  $(OPENSSL_PATH)/crypto/ec/curve448/scalar.c
> |*|*|*|gEfiCryptoPkgTokenSpaceGuid.PcdOpensslEcEnabled
> -  $(OPENSSL_PATH)/crypto/ec/ec2_oct.c
> |*|*|*|gEfiCryptoPkgTokenSpaceGuid.PcdOpensslEcEnabled
> -  $(OPENSSL_PATH)/crypto/ec/ec2_smpl.c
> |*|*|*|gEfiCryptoPkgTokenSpaceGuid.PcdOpensslEcEnabled
> -  $(OPENSSL_PATH)/crypto/ec/ec_ameth.c
> |*|*|*|gEfiCryptoPkgTokenSpaceGuid.PcdOpensslEcEnabled
> -  $(OPENSSL_PATH)/crypto/ec/ec_asn1.c
> |*|*|*|gEfiCryptoPkgTokenSpaceGuid.PcdOpensslEcEnabled
> -  $(OPENSSL_PATH)/crypto/ec/ec_check.c
> |*|*|*|gEfiCryptoPkgTokenSpaceGuid.PcdOpensslEcEnabled
> -  $(OPENSSL_PATH)/crypto/ec/ec_curve.c
> |*|*|*|gEfiCryptoPkgTokenSpaceGuid.PcdOpensslEcEnabled
> -  $(OPENSSL_PATH)/crypto/ec/ec_cvt.c
> |*|*|*|gEfiCryptoPkgTokenSpaceGuid.PcdOpensslEcEnabled
> -  $(OPENSSL_PATH)/crypto/ec/ec_err.c
> |*|*|*|gEfiCryptoPkgTokenSpaceGuid.PcdOpensslEcEnabled
> -  $(OPENSSL_PATH)/crypto/ec/ec_key.c
> |*|*|*|gEfiCryptoPkgTokenSpaceGuid.PcdOpensslEcEnabled
> -  $(OPENSSL_PATH)/crypto/ec/ec_kmeth.c
> |*|*|*|gEfiCryptoPkgTokenSpaceGuid.PcdOpensslEcEnabled
> -  $(OPENSSL_PATH)/crypto/ec/ec_lib.c
> |*|*|*|gEfiCryptoPkgTokenSpaceGuid.PcdOpensslEcEnabled
> -  $(OPENSSL_PATH)/crypto/ec/ec_mult.c
> |*|*|*|gEfiCryptoPkgTokenSpaceGuid.PcdOpensslEcEnabled
> -  $(OPENSSL_PATH)/crypto/ec/ec_oct.c
> |*|*|*|gEfiCryptoPkgTokenSpaceGuid.PcdOpensslEcEnabled
> -  $(OPENSSL_PATH)/crypto/ec/ec_pmeth.c
> |*|*|*|gEfiCryptoPkgTokenSpaceGuid.PcdOpensslEcEnabled
> -  $(OPENSSL_PATH)/crypto/ec/ec_print.c
> |*|*|*|gEfiCryptoPkgTokenSpaceGuid.PcdOpensslEcEnabled
> -  $(OPENSSL_PATH)/crypto/ec/ecdh_kdf.c
> |*|*|*|gEfiCryptoPkgTokenSpaceGuid.PcdOpensslEcEnabled
> -  $(OPENSSL_PATH)/crypto/ec/ecdh_ossl.c
> |*|*|*|gEfiCryptoPkgTokenSpaceGuid.PcdOpensslEcEnabled
> -  $(OPENSSL_PATH)/crypto/ec/ecdsa_ossl.c
> |*|*|*|gEfiCryptoPkgTokenSpaceGuid.PcdOpensslEcEnabled
> -  $(OPENSSL_PATH)/crypto/ec/ecdsa_sign.c
> |*|*|*|gEfiCryptoPkgTokenSpaceGuid.PcdOpensslEcEnabled
> -  $(OPENSSL_PATH)/crypto/ec/ecdsa_vrf.c
> |*|*|*|gEfiCryptoPkgTokenSpaceGuid.PcdOpensslEcEnabled
> -  $(OPENSSL_PATH)/crypto/ec/eck_prn.c
> |*|*|*|gEfiCryptoPkgTokenSpaceGuid.PcdOpensslEcEnabled
> -  $(OPENSSL_PATH)/crypto/ec/ecp_mont.c
> |*|*|*|gEfiCryptoPkgTokenSpaceGuid.PcdOpensslEcEnabled
> -  $(OPENSSL_PATH)/crypto/ec/ecp_nist.c
> |*|*|*|gEfiCryptoPkgTokenSpaceGuid.PcdOpensslEcEnabled
> -  $(OPENSSL_PATH)/crypto/ec/ecp_nistp224.c
> |*|*|*|gEfiCryptoPkgTokenSpaceGuid.PcdOpensslEcEnabled
> -  $(OPENSSL_PATH)/crypto/ec/ecp_nistp256.c
> |*|*|*|gEfiCryptoPkgTokenSpaceGuid.PcdOpensslEcEnabled
> -  $(OPENSSL_PATH)/crypto/ec/ecp_nistp521.c
> |*|*|*|gEfiCryptoPkgTokenSpaceGuid.PcdOpensslEcEnabled
> -  $(OPENSSL_PATH)/crypto/ec/ecp_nistputil.c
> |*|*|*|gEfiCryptoPkgTokenSpaceGuid.PcdOpensslEcEnabled
> -  $(OPENSSL_PATH)/crypto/ec/ecp_oct.c
> |*|*|*|gEfiCryptoPkgTokenSpaceGuid.PcdOpensslEcEnabled
> -  $(OPENSSL_PATH)/crypto/ec/ecp_smpl.c
> |*|*|*|gEfiCryptoPkgTokenSpaceGuid.PcdOpensslEcEnabled
> -  $(OPENSSL_PATH)/crypto/ec/ecx_meth.c
> |*|*|*|gEfiCryptoPkgTokenSpaceGuid.PcdOpensslEcEnabled
> +  $(OPENSSL_PATH)/crypto/ec/curve25519.c
> +  $(OPENSSL_PATH)/crypto/ec/curve448/arch_32/f_impl.c
> +  $(OPENSSL_PATH)/crypto/ec/curve448/curve448.c
> +  $(OPENSSL_PATH)/crypto/ec/curve448/curve448_tables.c
> +  $(OPENSSL_PATH)/crypto/ec/curve448/eddsa.c
> +  $(OPENSSL_PATH)/crypto/ec/curve448/f_generic.c
> +  $(OPENSSL_PATH)/crypto/ec/curve448/scalar.c
> +  $(OPENSSL_PATH)/crypto/ec/ec2_oct.c
> +  $(OPENSSL_PATH)/crypto/ec/ec2_smpl.c
> +  $(OPENSSL_PATH)/crypto/ec/ec_ameth.c
> +  $(OPENSSL_PATH)/crypto/ec/ec_asn1.c
> +  $(OPENSSL_PATH)/crypto/ec/ec_check.c
> +  $(OPENSSL_PATH)/crypto/ec/ec_curve.c
> +  $(OPENSSL_PATH)/crypto/ec/ec_cvt.c
> +  $(OPENSSL_PATH)/crypto/ec/ec_err.c
> +  $(OPENSSL_PATH)/crypto/ec/ec_key.c
> +  $(OPENSSL_PATH)/crypto/ec/ec_kmeth.c
> +  $(OPENSSL_PATH)/crypto/ec/ec_lib.c
> +  $(OPENSSL_PATH)/crypto/ec/ec_mult.c
> +  $(OPENSSL_PATH)/crypto/ec/ec_oct.c
> +  $(OPENSSL_PATH)/crypto/ec/ec_pmeth.c
> +  $(OPENSSL_PATH)/crypto/ec/ec_print.c
> +  $(OPENSSL_PATH)/crypto/ec/ecdh_kdf.c
> +  $(OPENSSL_PATH)/crypto/ec/ecdh_ossl.c
> +  $(OPENSSL_PATH)/crypto/ec/ecdsa_ossl.c
> +  $(OPENSSL_PATH)/crypto/ec/ecdsa_sign.c
> +  $(OPENSSL_PATH)/crypto/ec/ecdsa_vrf.c
> +  $(OPENSSL_PATH)/crypto/ec/eck_prn.c
> +  $(OPENSSL_PATH)/crypto/ec/ecp_mont.c
> +  $(OPENSSL_PATH)/crypto/ec/ecp_nist.c
> +  $(OPENSSL_PATH)/crypto/ec/ecp_nistp224.c
> +  $(OPENSSL_PATH)/crypto/ec/ecp_nistp256.c
> +  $(OPENSSL_PATH)/crypto/ec/ecp_nistp521.c
> +  $(OPENSSL_PATH)/crypto/ec/ecp_nistputil.c
> +  $(OPENSSL_PATH)/crypto/ec/ecp_oct.c
> +  $(OPENSSL_PATH)/crypto/ec/ecp_smpl.c
> +  $(OPENSSL_PATH)/crypto/ec/ecx_meth.c
>    $(OPENSSL_PATH)/crypto/err/err.c
>    $(OPENSSL_PATH)/crypto/err/err_prn.c
>    $(OPENSSL_PATH)/crypto/evp/bio_b64.c
> @@ -421,10 +431,10 @@ [Sources]
>    $(OPENSSL_PATH)/crypto/siphash/siphash.c
>    $(OPENSSL_PATH)/crypto/siphash/siphash_ameth.c
>    $(OPENSSL_PATH)/crypto/siphash/siphash_pmeth.c
> -  $(OPENSSL_PATH)/crypto/sm2/sm2_crypt.c
> |*|*|*|gEfiCryptoPkgTokenSpaceGuid.PcdOpensslEcEnabled
> -  $(OPENSSL_PATH)/crypto/sm2/sm2_err.c
> |*|*|*|gEfiCryptoPkgTokenSpaceGuid.PcdOpensslEcEnabled
> -  $(OPENSSL_PATH)/crypto/sm2/sm2_pmeth.c
> |*|*|*|gEfiCryptoPkgTokenSpaceGuid.PcdOpensslEcEnabled
> -  $(OPENSSL_PATH)/crypto/sm2/sm2_sign.c
> |*|*|*|gEfiCryptoPkgTokenSpaceGuid.PcdOpensslEcEnabled
> +  $(OPENSSL_PATH)/crypto/sm2/sm2_crypt.c
> +  $(OPENSSL_PATH)/crypto/sm2/sm2_err.c
> +  $(OPENSSL_PATH)/crypto/sm2/sm2_pmeth.c
> +  $(OPENSSL_PATH)/crypto/sm2/sm2_sign.c
>    $(OPENSSL_PATH)/crypto/sm3/m_sm3.c
>    $(OPENSSL_PATH)/crypto/sm3/sm3.c
>    $(OPENSSL_PATH)/crypto/sm4/sm4.c
> @@ -537,15 +547,15 @@ [Sources]
>    $(OPENSSL_PATH)/crypto/conf/conf_local.h
>    $(OPENSSL_PATH)/crypto/dh/dh_local.h
>    $(OPENSSL_PATH)/crypto/dso/dso_local.h
> -  $(OPENSSL_PATH)/crypto/ec/ec_local.h
> |*|*|*|gEfiCryptoPkgTokenSpaceGuid.PcdOpensslEcEnabled
> -  $(OPENSSL_PATH)/crypto/ec/curve448/curve448_local.h
> |*|*|*|gEfiCryptoPkgTokenSpaceGuid.PcdOpensslEcEnabled
> -  $(OPENSSL_PATH)/crypto/ec/curve448/curve448utils.h
> |*|*|*|gEfiCryptoPkgTokenSpaceGuid.PcdOpensslEcEnabled
> -  $(OPENSSL_PATH)/crypto/ec/curve448/ed448.h
> |*|*|*|gEfiCryptoPkgTokenSpaceGuid.PcdOpensslEcEnabled
> -  $(OPENSSL_PATH)/crypto/ec/curve448/field.h
> |*|*|*|gEfiCryptoPkgTokenSpaceGuid.PcdOpensslEcEnabled
> -  $(OPENSSL_PATH)/crypto/ec/curve448/point_448.h
> |*|*|*|gEfiCryptoPkgTokenSpaceGuid.PcdOpensslEcEnabled
> -  $(OPENSSL_PATH)/crypto/ec/curve448/word.h
> |*|*|*|gEfiCryptoPkgTokenSpaceGuid.PcdOpensslEcEnabled
> -  $(OPENSSL_PATH)/crypto/ec/curve448/arch_32/arch_intrinsics.h
> |*|*|*|gEfiCryptoPkgTokenSpaceGuid.PcdOpensslEcEnabled
> -  $(OPENSSL_PATH)/crypto/ec/curve448/arch_32/f_impl.h
> |*|*|*|gEfiCryptoPkgTokenSpaceGuid.PcdOpensslEcEnabled
> +  $(OPENSSL_PATH)/crypto/ec/ec_local.h
> +  $(OPENSSL_PATH)/crypto/ec/curve448/curve448_local.h
> +  $(OPENSSL_PATH)/crypto/ec/curve448/curve448utils.h
> +  $(OPENSSL_PATH)/crypto/ec/curve448/ed448.h
> +  $(OPENSSL_PATH)/crypto/ec/curve448/field.h
> +  $(OPENSSL_PATH)/crypto/ec/curve448/point_448.h
> +  $(OPENSSL_PATH)/crypto/ec/curve448/word.h
> +  $(OPENSSL_PATH)/crypto/ec/curve448/arch_32/arch_intrinsics.h
> +  $(OPENSSL_PATH)/crypto/ec/curve448/arch_32/f_impl.h
>    $(OPENSSL_PATH)/crypto/evp/evp_local.h
>    $(OPENSSL_PATH)/crypto/hmac/hmac_local.h
>    $(OPENSSL_PATH)/crypto/lhash/lhash_local.h
> @@ -637,15 +647,13 @@ [LibraryClasses]
>  [LibraryClasses.ARM]
>    ArmSoftFloatLib
> 
> -[FixedPcd]
> -  gEfiCryptoPkgTokenSpaceGuid.PcdOpensslEcEnabled      ## CONSUMES
> -
>  [BuildOptions]
>    #
>    # Disables the following Visual Studio compiler warnings brought by
> openssl source,
>    # so we do not break the build with /WX option:
>    #   C4090: 'function' : different 'const' qualifiers
>    #   C4132: 'object' : const object should be initialized (tls13_enc.c)
> +  #   C4210: nonstandard extension used: function given file scope
>    #   C4244: conversion from type1 to type2, possible loss of data
>    #   C4245: conversion from type1 to type2, signed/unsigned mismatch
>    #   C4267: conversion from size_t to type, possible loss of data
> @@ -657,11 +665,11 @@ [BuildOptions]
>    #   C4706: assignment within conditional expression
>    #   C4819: The file contains a character that cannot be represented in the
> current code page
>    #
> -  MSFT:*_*_IA32_CC_FLAGS   = -U_WIN32 -U_WIN64 -U_MSC_VER $(OPENSSL_FLAGS)
> /wd4090 /wd4132 /wd4244 /wd4245 /wd4267 /wd4310 /wd4389 /wd4700 /wd4702
> /wd4706 /wd4819
> -  MSFT:*_*_X64_CC_FLAGS    = -U_WIN32 -U_WIN64 -U_MSC_VER $(OPENSSL_FLAGS)
> /wd4090 /wd4132 /wd4244 /wd4245 /wd4267 /wd4306 /wd4310 /wd4700 /wd4389
> /wd4702 /wd4706 /wd4819
> +  MSFT:*_*_IA32_CC_FLAGS   = -U_WIN32 -U_WIN64 -U_MSC_VER $(OPENSSL_FLAGS)
> $(OPENSSL_FLAGS_CONFIG) /wd4090 /wd4132 /wd4210 /wd4244 /wd4245 /wd4267
> /wd4310 /wd4389 /wd4700 /wd4702 /wd4706 /wd4819
> +  MSFT:*_*_X64_CC_FLAGS    = -U_WIN32 -U_WIN64 -U_MSC_VER $(OPENSSL_FLAGS)
> $(OPENSSL_FLAGS_CONFIG) /wd4090 /wd4132 /wd4210 /wd4244 /wd4245 /wd4267
> /wd4306 /wd4310 /wd4700 /wd4389 /wd4702 /wd4706 /wd4819
> 
> -  INTEL:*_*_IA32_CC_FLAGS  = -U_WIN32 -U_WIN64 -U_MSC_VER -U__ICC
> $(OPENSSL_FLAGS) /w
> -  INTEL:*_*_X64_CC_FLAGS   = -U_WIN32 -U_WIN64 -U_MSC_VER -U__ICC
> $(OPENSSL_FLAGS) /w
> +  INTEL:*_*_IA32_CC_FLAGS  = -U_WIN32 -U_WIN64 -U_MSC_VER -U__ICC
> $(OPENSSL_FLAGS) $(OPENSSL_FLAGS_CONFIG) /w
> +  INTEL:*_*_X64_CC_FLAGS   = -U_WIN32 -U_WIN64 -U_MSC_VER -U__ICC
> $(OPENSSL_FLAGS) $(OPENSSL_FLAGS_CONFIG) /w
> 
>    #
>    # Suppress the following build warnings in openssl so we don't break the
> build with -Werror
> @@ -670,10 +678,10 @@ [BuildOptions]
>    #                   types appropriate to the format string specified.
>    #   -Werror=unused-but-set-variable: Warn whenever a local variable is
> assigned to, but otherwise unused (aside from its declaration).
>    #
> -  GCC:*_*_IA32_CC_FLAGS    = -U_WIN32 -U_WIN64 $(OPENSSL_FLAGS) -Wno-
> error=maybe-uninitialized -Wno-error=unused-but-set-variable
> -  GCC:*_*_X64_CC_FLAGS     = -U_WIN32 -U_WIN64 $(OPENSSL_FLAGS) -Wno-
> error=maybe-uninitialized -Wno-error=format -Wno-format -Wno-error=unused-
> but-set-variable -DNO_MSABI_VA_FUNCS
> +  GCC:*_*_IA32_CC_FLAGS    = -U_WIN32 -U_WIN64 $(OPENSSL_FLAGS)
> $(OPENSSL_FLAGS_CONFIG) -Wno-error=maybe-uninitialized -Wno-error=unused-but-
> set-variable
> +  GCC:*_*_X64_CC_FLAGS     = -U_WIN32 -U_WIN64 $(OPENSSL_FLAGS)
> $(OPENSSL_FLAGS_CONFIG) -Wno-error=maybe-uninitialized -Wno-error=format -
> Wno-format -Wno-error=unused-but-set-variable -DNO_MSABI_VA_FUNCS
>    GCC:*_*_ARM_CC_FLAGS     = $(OPENSSL_FLAGS) -Wno-error=maybe-uninitialized
> -Wno-error=unused-but-set-variable
> -  GCC:*_*_AARCH64_CC_FLAGS = $(OPENSSL_FLAGS) -Wno-error=maybe-uninitialized
> -Wno-format -Wno-error=unused-but-set-variable
> +  GCC:*_*_AARCH64_CC_FLAGS = $(OPENSSL_FLAGS) -Wno-error=maybe-uninitialized
> -Wno-format -Wno-error=unused-but-set-variable -Wno-error=format
>    GCC:*_*_RISCV64_CC_FLAGS = $(OPENSSL_FLAGS) -Wno-error=maybe-uninitialized
> -Wno-format -Wno-error=unused-but-set-variable
>    GCC:*_CLANG35_*_CC_FLAGS = -std=c99 -Wno-error=uninitialized
>    GCC:*_CLANG38_*_CC_FLAGS = -std=c99 -Wno-error=uninitialized
> @@ -698,8 +706,8 @@ [BuildOptions]
>    #    1: ignore "#1-D: last line of file ends without a newline"
>    # 3017: <entity> may be used before being set (NOTE: This was fixed in
> OpenSSL 1.1 HEAD with
>    #       commit d9b8b89bec4480de3a10bdaf9425db371c19145b, and can be
> dropped then.)
> -  XCODE:*_*_IA32_CC_FLAGS   = -mmmx -msse -U_WIN32 -U_WIN64 $(OPENSSL_FLAGS)
> -w -std=c99 -Wno-error=uninitialized
> -  XCODE:*_*_X64_CC_FLAGS    = -mmmx -msse -U_WIN32 -U_WIN64 $(OPENSSL_FLAGS)
> -w -std=c99 -Wno-error=uninitialized
> +  XCODE:*_*_IA32_CC_FLAGS   = -mmmx -msse -U_WIN32 -U_WIN64 $(OPENSSL_FLAGS)
> $(OPENSSL_FLAGS_CONFIG) -w -std=c99 -Wno-error=uninitialized
> +  XCODE:*_*_X64_CC_FLAGS    = -mmmx -msse -U_WIN32 -U_WIN64 $(OPENSSL_FLAGS)
> $(OPENSSL_FLAGS_CONFIG) -w -std=c99 -Wno-error=uninitialized
> 
>    #
>    # AARCH64 uses strict alignment and avoids SIMD registers for code that
> may execute
> diff --git a/CryptoPkg/Library/OpensslLib/OpensslLib.uni
> b/CryptoPkg/Library/OpensslLib/OpensslLibFull.uni
> similarity index 56%
> copy from CryptoPkg/Library/OpensslLib/OpensslLib.uni
> copy to CryptoPkg/Library/OpensslLib/OpensslLibFull.uni
> index abaff8a3c37f..ec50adba9f83 100644
> --- a/CryptoPkg/Library/OpensslLib/OpensslLib.uni
> +++ b/CryptoPkg/Library/OpensslLib/OpensslLibFull.uni
> @@ -1,7 +1,5 @@
>  // /** @file
> -// This module provides openSSL Library implementation.
> -//
> -// This module provides OpenSSL Library implementation.
> +// This module provides OpenSSL Library implementation with TLS and ECC
> features.
>  //
>  // Copyright (c) 2010 - 2018, Intel Corporation. All rights reserved.<BR>
>  //
> @@ -9,8 +7,6 @@
>  //
>  // **/
> 
> +#string STR_MODULE_ABSTRACT             #language en-US "OpenSSL Library
> implementation with TLS and ECC features"
> 
> -#string STR_MODULE_ABSTRACT             #language en-US "OpenSSL Library
> implementation"
> -
> -#string STR_MODULE_DESCRIPTION          #language en-US "This module
> provides OpenSSL Library implementation."
> -
> +#string STR_MODULE_DESCRIPTION          #language en-US "This module
> provides OpenSSL Library implementation with TLS and ECC features."
> diff --git a/CryptoPkg/Library/OpensslLib/OpensslLibIa32Gcc.inf
> b/CryptoPkg/Library/OpensslLib/OpensslLibFullAccel.inf
> similarity index 79%
> rename from CryptoPkg/Library/OpensslLib/OpensslLibIa32Gcc.inf
> rename to CryptoPkg/Library/OpensslLib/OpensslLibFullAccel.inf
> index 150a82ec7af1..3c7b33f1e512 100644
> --- a/CryptoPkg/Library/OpensslLib/OpensslLibIa32Gcc.inf
> +++ b/CryptoPkg/Library/OpensslLib/OpensslLibFullAccel.inf
> @@ -1,5 +1,12 @@
>  ## @file
> -#  This module provides OpenSSL Library implementation.
> +#  This module provides OpenSSL Library implementation with ECC and TLS
> +#  features along with performance optimized implementations of SHA1,
> +#  SHA256, SHA512 AESNI, VPAED, and GHASH for IA32 and X64.
> +#
> +#  This library should be used if a module module needs ECC in TLS, or
> +#  asymmetric cryptography services such as X509 certificate or PEM format
> +#  data processing.  This library increases the size overhead up to ~115 KB
> +#  compared to OpensslLibAccel.inf library instance.
>  #
>  #  Copyright (c) 2010 - 2020, Intel Corporation. All rights reserved.<BR>
>  #  (C) Copyright 2020 Hewlett Packard Enterprise Development LP<BR>
> @@ -9,33 +16,27 @@
> 
>  [Defines]
>    INF_VERSION                    = 0x00010005
> -  BASE_NAME                      = OpensslLibIa32Gcc
> -  MODULE_UNI_FILE                = OpensslLib.uni
> -  FILE_GUID                      = B1B32F26-A4E1-4D38-9E34-53A148B8EB11
> +  BASE_NAME                      = OpensslLibFullAccel
> +  MODULE_UNI_FILE                = OpensslLibFullAccel.uni
> +  FILE_GUID                      = AC649FB2-ADCF-450A-9C61-ED3CAFF12864
>    MODULE_TYPE                    = BASE
>    VERSION_STRING                 = 1.0
>    LIBRARY_CLASS                  = OpensslLib
> +  CONSTRUCTOR                    = OpensslLibConstructor
> +
>    DEFINE OPENSSL_PATH            = openssl
>    DEFINE OPENSSL_FLAGS           = -DL_ENDIAN -DOPENSSL_SMALL_FOOTPRINT -
> D_CRT_SECURE_NO_DEPRECATE -D_CRT_NONSTDC_NO_DEPRECATE
>    DEFINE OPENSSL_FLAGS_CONFIG    = -DOPENSSL_CPUID_OBJ -DSHA1_ASM -
> DSHA256_ASM -DSHA512_ASM -DAESNI_ASM -DVPAES_ASM -DGHASH_ASM
> -  CONSTRUCTOR                    = OpensslLibConstructor
> 
>  #
> -#  VALID_ARCHITECTURES           = IA32
> +#  VALID_ARCHITECTURES           = IA32 X64
>  #
> 
> -[Sources.IA32]
> +[Sources]
>    OpensslLibConstructor.c
>    $(OPENSSL_PATH)/e_os.h
>    $(OPENSSL_PATH)/ms/uplink.h
>  # Autogenerated files list starts here
> -  IA32Gcc/crypto/aes/aesni-x86.S
> -  IA32Gcc/crypto/aes/vpaes-x86.S
> -  IA32Gcc/crypto/modes/ghash-x86.S
> -  IA32Gcc/crypto/sha/sha1-586.S
> -  IA32Gcc/crypto/sha/sha256-586.S
> -  IA32Gcc/crypto/sha/sha512-586.S
> -  IA32Gcc/crypto/x86cpuid.S
>    $(OPENSSL_PATH)/crypto/aes/aes_cbc.c
>    $(OPENSSL_PATH)/crypto/aes/aes_cfb.c
>    $(OPENSSL_PATH)/crypto/aes/aes_core.c
> @@ -209,43 +210,43 @@ [Sources.IA32]
>    $(OPENSSL_PATH)/crypto/dso/dso_vms.c
>    $(OPENSSL_PATH)/crypto/dso/dso_win32.c
>    $(OPENSSL_PATH)/crypto/ebcdic.c
> -  $(OPENSSL_PATH)/crypto/ec/curve25519.c
> |*|*|*|gEfiCryptoPkgTokenSpaceGuid.PcdOpensslEcEnabled
> -  $(OPENSSL_PATH)/crypto/ec/curve448/arch_32/f_impl.c
> |*|*|*|gEfiCryptoPkgTokenSpaceGuid.PcdOpensslEcEnabled
> -  $(OPENSSL_PATH)/crypto/ec/curve448/curve448.c
> |*|*|*|gEfiCryptoPkgTokenSpaceGuid.PcdOpensslEcEnabled
> -  $(OPENSSL_PATH)/crypto/ec/curve448/curve448_tables.c
> |*|*|*|gEfiCryptoPkgTokenSpaceGuid.PcdOpensslEcEnabled
> -  $(OPENSSL_PATH)/crypto/ec/curve448/eddsa.c
> |*|*|*|gEfiCryptoPkgTokenSpaceGuid.PcdOpensslEcEnabled
> -  $(OPENSSL_PATH)/crypto/ec/curve448/f_generic.c
> |*|*|*|gEfiCryptoPkgTokenSpaceGuid.PcdOpensslEcEnabled
> -  $(OPENSSL_PATH)/crypto/ec/curve448/scalar.c
> |*|*|*|gEfiCryptoPkgTokenSpaceGuid.PcdOpensslEcEnabled
> -  $(OPENSSL_PATH)/crypto/ec/ec2_oct.c
> |*|*|*|gEfiCryptoPkgTokenSpaceGuid.PcdOpensslEcEnabled
> -  $(OPENSSL_PATH)/crypto/ec/ec2_smpl.c
> |*|*|*|gEfiCryptoPkgTokenSpaceGuid.PcdOpensslEcEnabled
> -  $(OPENSSL_PATH)/crypto/ec/ec_ameth.c
> |*|*|*|gEfiCryptoPkgTokenSpaceGuid.PcdOpensslEcEnabled
> -  $(OPENSSL_PATH)/crypto/ec/ec_asn1.c
> |*|*|*|gEfiCryptoPkgTokenSpaceGuid.PcdOpensslEcEnabled
> -  $(OPENSSL_PATH)/crypto/ec/ec_check.c
> |*|*|*|gEfiCryptoPkgTokenSpaceGuid.PcdOpensslEcEnabled
> -  $(OPENSSL_PATH)/crypto/ec/ec_curve.c
> |*|*|*|gEfiCryptoPkgTokenSpaceGuid.PcdOpensslEcEnabled
> -  $(OPENSSL_PATH)/crypto/ec/ec_cvt.c
> |*|*|*|gEfiCryptoPkgTokenSpaceGuid.PcdOpensslEcEnabled
> -  $(OPENSSL_PATH)/crypto/ec/ec_err.c
> |*|*|*|gEfiCryptoPkgTokenSpaceGuid.PcdOpensslEcEnabled
> -  $(OPENSSL_PATH)/crypto/ec/ec_key.c
> |*|*|*|gEfiCryptoPkgTokenSpaceGuid.PcdOpensslEcEnabled
> -  $(OPENSSL_PATH)/crypto/ec/ec_kmeth.c
> |*|*|*|gEfiCryptoPkgTokenSpaceGuid.PcdOpensslEcEnabled
> -  $(OPENSSL_PATH)/crypto/ec/ec_lib.c
> |*|*|*|gEfiCryptoPkgTokenSpaceGuid.PcdOpensslEcEnabled
> -  $(OPENSSL_PATH)/crypto/ec/ec_mult.c
> |*|*|*|gEfiCryptoPkgTokenSpaceGuid.PcdOpensslEcEnabled
> -  $(OPENSSL_PATH)/crypto/ec/ec_oct.c
> |*|*|*|gEfiCryptoPkgTokenSpaceGuid.PcdOpensslEcEnabled
> -  $(OPENSSL_PATH)/crypto/ec/ec_pmeth.c
> |*|*|*|gEfiCryptoPkgTokenSpaceGuid.PcdOpensslEcEnabled
> -  $(OPENSSL_PATH)/crypto/ec/ec_print.c
> |*|*|*|gEfiCryptoPkgTokenSpaceGuid.PcdOpensslEcEnabled
> -  $(OPENSSL_PATH)/crypto/ec/ecdh_kdf.c
> |*|*|*|gEfiCryptoPkgTokenSpaceGuid.PcdOpensslEcEnabled
> -  $(OPENSSL_PATH)/crypto/ec/ecdh_ossl.c
> |*|*|*|gEfiCryptoPkgTokenSpaceGuid.PcdOpensslEcEnabled
> -  $(OPENSSL_PATH)/crypto/ec/ecdsa_ossl.c
> |*|*|*|gEfiCryptoPkgTokenSpaceGuid.PcdOpensslEcEnabled
> -  $(OPENSSL_PATH)/crypto/ec/ecdsa_sign.c
> |*|*|*|gEfiCryptoPkgTokenSpaceGuid.PcdOpensslEcEnabled
> -  $(OPENSSL_PATH)/crypto/ec/ecdsa_vrf.c
> |*|*|*|gEfiCryptoPkgTokenSpaceGuid.PcdOpensslEcEnabled
> -  $(OPENSSL_PATH)/crypto/ec/eck_prn.c
> |*|*|*|gEfiCryptoPkgTokenSpaceGuid.PcdOpensslEcEnabled
> -  $(OPENSSL_PATH)/crypto/ec/ecp_mont.c
> |*|*|*|gEfiCryptoPkgTokenSpaceGuid.PcdOpensslEcEnabled
> -  $(OPENSSL_PATH)/crypto/ec/ecp_nist.c
> |*|*|*|gEfiCryptoPkgTokenSpaceGuid.PcdOpensslEcEnabled
> -  $(OPENSSL_PATH)/crypto/ec/ecp_nistp224.c
> |*|*|*|gEfiCryptoPkgTokenSpaceGuid.PcdOpensslEcEnabled
> -  $(OPENSSL_PATH)/crypto/ec/ecp_nistp256.c
> |*|*|*|gEfiCryptoPkgTokenSpaceGuid.PcdOpensslEcEnabled
> -  $(OPENSSL_PATH)/crypto/ec/ecp_nistp521.c
> |*|*|*|gEfiCryptoPkgTokenSpaceGuid.PcdOpensslEcEnabled
> -  $(OPENSSL_PATH)/crypto/ec/ecp_nistputil.c
> |*|*|*|gEfiCryptoPkgTokenSpaceGuid.PcdOpensslEcEnabled
> -  $(OPENSSL_PATH)/crypto/ec/ecp_oct.c
> |*|*|*|gEfiCryptoPkgTokenSpaceGuid.PcdOpensslEcEnabled
> -  $(OPENSSL_PATH)/crypto/ec/ecp_smpl.c
> |*|*|*|gEfiCryptoPkgTokenSpaceGuid.PcdOpensslEcEnabled
> -  $(OPENSSL_PATH)/crypto/ec/ecx_meth.c
> |*|*|*|gEfiCryptoPkgTokenSpaceGuid.PcdOpensslEcEnabled
> +  $(OPENSSL_PATH)/crypto/ec/curve25519.c
> +  $(OPENSSL_PATH)/crypto/ec/curve448/arch_32/f_impl.c
> +  $(OPENSSL_PATH)/crypto/ec/curve448/curve448.c
> +  $(OPENSSL_PATH)/crypto/ec/curve448/curve448_tables.c
> +  $(OPENSSL_PATH)/crypto/ec/curve448/eddsa.c
> +  $(OPENSSL_PATH)/crypto/ec/curve448/f_generic.c
> +  $(OPENSSL_PATH)/crypto/ec/curve448/scalar.c
> +  $(OPENSSL_PATH)/crypto/ec/ec2_oct.c
> +  $(OPENSSL_PATH)/crypto/ec/ec2_smpl.c
> +  $(OPENSSL_PATH)/crypto/ec/ec_ameth.c
> +  $(OPENSSL_PATH)/crypto/ec/ec_asn1.c
> +  $(OPENSSL_PATH)/crypto/ec/ec_check.c
> +  $(OPENSSL_PATH)/crypto/ec/ec_curve.c
> +  $(OPENSSL_PATH)/crypto/ec/ec_cvt.c
> +  $(OPENSSL_PATH)/crypto/ec/ec_err.c
> +  $(OPENSSL_PATH)/crypto/ec/ec_key.c
> +  $(OPENSSL_PATH)/crypto/ec/ec_kmeth.c
> +  $(OPENSSL_PATH)/crypto/ec/ec_lib.c
> +  $(OPENSSL_PATH)/crypto/ec/ec_mult.c
> +  $(OPENSSL_PATH)/crypto/ec/ec_oct.c
> +  $(OPENSSL_PATH)/crypto/ec/ec_pmeth.c
> +  $(OPENSSL_PATH)/crypto/ec/ec_print.c
> +  $(OPENSSL_PATH)/crypto/ec/ecdh_kdf.c
> +  $(OPENSSL_PATH)/crypto/ec/ecdh_ossl.c
> +  $(OPENSSL_PATH)/crypto/ec/ecdsa_ossl.c
> +  $(OPENSSL_PATH)/crypto/ec/ecdsa_sign.c
> +  $(OPENSSL_PATH)/crypto/ec/ecdsa_vrf.c
> +  $(OPENSSL_PATH)/crypto/ec/eck_prn.c
> +  $(OPENSSL_PATH)/crypto/ec/ecp_mont.c
> +  $(OPENSSL_PATH)/crypto/ec/ecp_nist.c
> +  $(OPENSSL_PATH)/crypto/ec/ecp_nistp224.c
> +  $(OPENSSL_PATH)/crypto/ec/ecp_nistp256.c
> +  $(OPENSSL_PATH)/crypto/ec/ecp_nistp521.c
> +  $(OPENSSL_PATH)/crypto/ec/ecp_nistputil.c
> +  $(OPENSSL_PATH)/crypto/ec/ecp_oct.c
> +  $(OPENSSL_PATH)/crypto/ec/ecp_smpl.c
> +  $(OPENSSL_PATH)/crypto/ec/ecx_meth.c
>    $(OPENSSL_PATH)/crypto/err/err.c
>    $(OPENSSL_PATH)/crypto/err/err_prn.c
>    $(OPENSSL_PATH)/crypto/evp/bio_b64.c
> @@ -324,6 +325,7 @@ [Sources.IA32]
>    $(OPENSSL_PATH)/crypto/md5/md5_dgst.c
>    $(OPENSSL_PATH)/crypto/md5/md5_one.c
>    $(OPENSSL_PATH)/crypto/mem.c
> +#  $(OPENSSL_PATH)/crypto/mem_clr.c   # Replaced by assembly optimized
> NASM/S files
>    $(OPENSSL_PATH)/crypto/mem_dbg.c
>    $(OPENSSL_PATH)/crypto/mem_sec.c
>    $(OPENSSL_PATH)/crypto/modes/cbc128.c
> @@ -430,10 +432,10 @@ [Sources.IA32]
>    $(OPENSSL_PATH)/crypto/siphash/siphash.c
>    $(OPENSSL_PATH)/crypto/siphash/siphash_ameth.c
>    $(OPENSSL_PATH)/crypto/siphash/siphash_pmeth.c
> -  $(OPENSSL_PATH)/crypto/sm2/sm2_crypt.c
> |*|*|*|gEfiCryptoPkgTokenSpaceGuid.PcdOpensslEcEnabled
> -  $(OPENSSL_PATH)/crypto/sm2/sm2_err.c
> |*|*|*|gEfiCryptoPkgTokenSpaceGuid.PcdOpensslEcEnabled
> -  $(OPENSSL_PATH)/crypto/sm2/sm2_pmeth.c
> |*|*|*|gEfiCryptoPkgTokenSpaceGuid.PcdOpensslEcEnabled
> -  $(OPENSSL_PATH)/crypto/sm2/sm2_sign.c
> |*|*|*|gEfiCryptoPkgTokenSpaceGuid.PcdOpensslEcEnabled
> +  $(OPENSSL_PATH)/crypto/sm2/sm2_crypt.c
> +  $(OPENSSL_PATH)/crypto/sm2/sm2_err.c
> +  $(OPENSSL_PATH)/crypto/sm2/sm2_pmeth.c
> +  $(OPENSSL_PATH)/crypto/sm2/sm2_sign.c
>    $(OPENSSL_PATH)/crypto/sm3/m_sm3.c
>    $(OPENSSL_PATH)/crypto/sm3/sm3.c
>    $(OPENSSL_PATH)/crypto/sm4/sm4.c
> @@ -546,15 +548,15 @@ [Sources.IA32]
>    $(OPENSSL_PATH)/crypto/conf/conf_local.h
>    $(OPENSSL_PATH)/crypto/dh/dh_local.h
>    $(OPENSSL_PATH)/crypto/dso/dso_local.h
> -  $(OPENSSL_PATH)/crypto/ec/ec_local.h
> |*|*|*|gEfiCryptoPkgTokenSpaceGuid.PcdOpensslEcEnabled
> -  $(OPENSSL_PATH)/crypto/ec/curve448/curve448_local.h
> |*|*|*|gEfiCryptoPkgTokenSpaceGuid.PcdOpensslEcEnabled
> -  $(OPENSSL_PATH)/crypto/ec/curve448/curve448utils.h
> |*|*|*|gEfiCryptoPkgTokenSpaceGuid.PcdOpensslEcEnabled
> -  $(OPENSSL_PATH)/crypto/ec/curve448/ed448.h
> |*|*|*|gEfiCryptoPkgTokenSpaceGuid.PcdOpensslEcEnabled
> -  $(OPENSSL_PATH)/crypto/ec/curve448/field.h
> |*|*|*|gEfiCryptoPkgTokenSpaceGuid.PcdOpensslEcEnabled
> -  $(OPENSSL_PATH)/crypto/ec/curve448/point_448.h
> |*|*|*|gEfiCryptoPkgTokenSpaceGuid.PcdOpensslEcEnabled
> -  $(OPENSSL_PATH)/crypto/ec/curve448/word.h
> |*|*|*|gEfiCryptoPkgTokenSpaceGuid.PcdOpensslEcEnabled
> -  $(OPENSSL_PATH)/crypto/ec/curve448/arch_32/arch_intrinsics.h
> |*|*|*|gEfiCryptoPkgTokenSpaceGuid.PcdOpensslEcEnabled
> -  $(OPENSSL_PATH)/crypto/ec/curve448/arch_32/f_impl.h
> |*|*|*|gEfiCryptoPkgTokenSpaceGuid.PcdOpensslEcEnabled
> +  $(OPENSSL_PATH)/crypto/ec/ec_local.h
> +  $(OPENSSL_PATH)/crypto/ec/curve448/curve448_local.h
> +  $(OPENSSL_PATH)/crypto/ec/curve448/curve448utils.h
> +  $(OPENSSL_PATH)/crypto/ec/curve448/ed448.h
> +  $(OPENSSL_PATH)/crypto/ec/curve448/field.h
> +  $(OPENSSL_PATH)/crypto/ec/curve448/point_448.h
> +  $(OPENSSL_PATH)/crypto/ec/curve448/word.h
> +  $(OPENSSL_PATH)/crypto/ec/curve448/arch_32/arch_intrinsics.h
> +  $(OPENSSL_PATH)/crypto/ec/curve448/arch_32/f_impl.h
>    $(OPENSSL_PATH)/crypto/evp/evp_local.h
>    $(OPENSSL_PATH)/crypto/hmac/hmac_local.h
>    $(OPENSSL_PATH)/crypto/lhash/lhash_local.h
> @@ -633,6 +635,53 @@ [Sources.IA32]
>    ossl_store.c
>    rand_pool.c
> 
> +[Sources.IA32]
> +  IA32/crypto/aes/aesni-x86.nasm    | MSFT
> +  IA32/crypto/aes/vpaes-x86.nasm    | MSFT
> +  IA32/crypto/modes/ghash-x86.nasm  | MSFT
> +  IA32/crypto/sha/sha1-586.nasm     | MSFT
> +  IA32/crypto/sha/sha256-586.nasm   | MSFT
> +  IA32/crypto/sha/sha512-586.nasm   | MSFT
> +  IA32/crypto/x86cpuid.nasm         | MSFT
> +
> +  IA32Gcc/crypto/aes/aesni-x86.S    | GCC
> +  IA32Gcc/crypto/aes/vpaes-x86.S    | GCC
> +  IA32Gcc/crypto/modes/ghash-x86.S  | GCC
> +  IA32Gcc/crypto/sha/sha1-586.S     | GCC
> +  IA32Gcc/crypto/sha/sha256-586.S   | GCC
> +  IA32Gcc/crypto/sha/sha512-586.S   | GCC
> +  IA32Gcc/crypto/x86cpuid.S         | GCC
> +
> +[Sources.X64]
> +  X64/ApiHooks.c
> +  X64/crypto/aes/aesni-mb-x86_64.nasm      | MSFT
> +  X64/crypto/aes/aesni-sha1-x86_64.nasm    | MSFT
> +  X64/crypto/aes/aesni-sha256-x86_64.nasm  | MSFT
> +  X64/crypto/aes/aesni-x86_64.nasm         | MSFT
> +  X64/crypto/aes/vpaes-x86_64.nasm         | MSFT
> +  X64/crypto/modes/aesni-gcm-x86_64.nasm   | MSFT
> +  X64/crypto/modes/ghash-x86_64.nasm       | MSFT
> +  X64/crypto/sha/sha1-mb-x86_64.nasm       | MSFT
> +  X64/crypto/sha/sha1-x86_64.nasm          | MSFT
> +  X64/crypto/sha/sha256-mb-x86_64.nasm     | MSFT
> +  X64/crypto/sha/sha256-x86_64.nasm        | MSFT
> +  X64/crypto/sha/sha512-x86_64.nasm        | MSFT
> +  X64/crypto/x86_64cpuid.nasm              | MSFT
> +
> +  X64Gcc/crypto/aes/aesni-mb-x86_64.S      | GCC
> +  X64Gcc/crypto/aes/aesni-sha1-x86_64.S    | GCC
> +  X64Gcc/crypto/aes/aesni-sha256-x86_64.S  | GCC
> +  X64Gcc/crypto/aes/aesni-x86_64.S         | GCC
> +  X64Gcc/crypto/aes/vpaes-x86_64.S         | GCC
> +  X64Gcc/crypto/modes/aesni-gcm-x86_64.S   | GCC
> +  X64Gcc/crypto/modes/ghash-x86_64.S       | GCC
> +  X64Gcc/crypto/sha/sha1-mb-x86_64.S       | GCC
> +  X64Gcc/crypto/sha/sha1-x86_64.S          | GCC
> +  X64Gcc/crypto/sha/sha256-mb-x86_64.S     | GCC
> +  X64Gcc/crypto/sha/sha256-x86_64.S        | GCC
> +  X64Gcc/crypto/sha/sha512-x86_64.S        | GCC
> +  X64Gcc/crypto/x86_64cpuid.S              | GCC
> +
>  [Packages]
>    MdePkg/MdePkg.dec
>    CryptoPkg/CryptoPkg.dec
> @@ -643,9 +692,6 @@ [LibraryClasses]
>    RngLib
>    PrintLib
> 
> -[FixedPcd]
> -  gEfiCryptoPkgTokenSpaceGuid.PcdOpensslEcEnabled      ## CONSUMES
> -
>  [BuildOptions]
>    #
>    # Disables the following Visual Studio compiler warnings brought by
> openssl source,
> @@ -665,8 +711,10 @@ [BuildOptions]
>    #   C4819: The file contains a character that cannot be represented in the
> current code page
>    #
>    MSFT:*_*_IA32_CC_FLAGS   = -U_WIN32 -U_WIN64 -U_MSC_VER $(OPENSSL_FLAGS)
> $(OPENSSL_FLAGS_CONFIG) /wd4090 /wd4132 /wd4210 /wd4244 /wd4245 /wd4267
> /wd4310 /wd4389 /wd4700 /wd4702 /wd4706 /wd4819
> +  MSFT:*_*_X64_CC_FLAGS    = -U_WIN32 -U_WIN64 -U_MSC_VER $(OPENSSL_FLAGS)
> $(OPENSSL_FLAGS_CONFIG) /wd4090 /wd4132 /wd4210 /wd4244 /wd4245 /wd4267
> /wd4306 /wd4310 /wd4700 /wd4389 /wd4702 /wd4706 /wd4819
> 
>    INTEL:*_*_IA32_CC_FLAGS  = -U_WIN32 -U_WIN64 -U_MSC_VER -U__ICC
> $(OPENSSL_FLAGS) $(OPENSSL_FLAGS_CONFIG) /w
> +  INTEL:*_*_X64_CC_FLAGS   = -U_WIN32 -U_WIN64 -U_MSC_VER -U__ICC
> $(OPENSSL_FLAGS) $(OPENSSL_FLAGS_CONFIG) /w
> 
>    #
>    # Suppress the following build warnings in openssl so we don't break the
> build with -Werror
> @@ -675,7 +723,11 @@ [BuildOptions]
>    #                   types appropriate to the format string specified.
>    #   -Werror=unused-but-set-variable: Warn whenever a local variable is
> assigned to, but otherwise unused (aside from its declaration).
>    #
> -  GCC:*_*_IA32_CC_FLAGS    = -UWIN32 -U_WIN32 -U_WIN64 $(OPENSSL_FLAGS)
> $(OPENSSL_FLAGS_CONFIG) -Wno-error=maybe-uninitialized -Wno-error=unused-but-
> set-variable
> +  GCC:*_*_IA32_CC_FLAGS    = -U_WIN32 -U_WIN64 $(OPENSSL_FLAGS)
> $(OPENSSL_FLAGS_CONFIG) -Wno-error=maybe-uninitialized -Wno-error=unused-but-
> set-variable
> +  GCC:*_*_X64_CC_FLAGS     = -U_WIN32 -U_WIN64 $(OPENSSL_FLAGS)
> $(OPENSSL_FLAGS_CONFIG) -Wno-error=maybe-uninitialized -Wno-error=format -
> Wno-format -Wno-error=unused-but-set-variable -DNO_MSABI_VA_FUNCS
> +  GCC:*_CLANG35_*_CC_FLAGS = -std=c99 -Wno-error=uninitialized
> +  GCC:*_CLANG38_*_CC_FLAGS = -std=c99 -Wno-error=uninitialized
> +  GCC:*_CLANGPDB_*_CC_FLAGS = -std=c99 -Wno-error=uninitialized -Wno-
> error=incompatible-pointer-types -Wno-error=pointer-sign -Wno-error=implicit-
> function-declaration -Wno-error=ignored-pragma-optimize
> 
>    # suppress the following warnings in openssl so we don't break the build
> with warnings-as-errors:
>    # 1295: Deprecated declaration <entity> - give arg types
> @@ -697,3 +749,4 @@ [BuildOptions]
>    # 3017: <entity> may be used before being set (NOTE: This was fixed in
> OpenSSL 1.1 HEAD with
>    #       commit d9b8b89bec4480de3a10bdaf9425db371c19145b, and can be
> dropped then.)
>    XCODE:*_*_IA32_CC_FLAGS   = -mmmx -msse -U_WIN32 -U_WIN64 $(OPENSSL_FLAGS)
> $(OPENSSL_FLAGS_CONFIG) -w -std=c99 -Wno-error=uninitialized
> +  XCODE:*_*_X64_CC_FLAGS    = -mmmx -msse -U_WIN32 -U_WIN64 $(OPENSSL_FLAGS)
> $(OPENSSL_FLAGS_CONFIG) -w -std=c99 -Wno-error=uninitialized
> diff --git a/CryptoPkg/Library/OpensslLib/OpensslLibFullAccel.uni
> b/CryptoPkg/Library/OpensslLib/OpensslLibFullAccel.uni
> new file mode 100644
> index 000000000000..b8453b6c902e
> --- /dev/null
> +++ b/CryptoPkg/Library/OpensslLib/OpensslLibFullAccel.uni
> @@ -0,0 +1,14 @@
> +// /** @file
> +// This module provides openSSL Library implementation with ECC and TLS
> +// features along with performance optimized implementations of SHA1,
> +// SHA256, SHA512 AESNI, VPAED, and GHASH for IA32 and X64.
> +//
> +// Copyright (c) 2010 - 2018, Intel Corporation. All rights reserved.<BR>
> +//
> +// SPDX-License-Identifier: BSD-2-Clause-Patent
> +//
> +// **/
> +
> +#string STR_MODULE_ABSTRACT             #language en-US "OpenSSL Library
> implementation with TLS and ECC features and performance optimizations"
> +
> +#string STR_MODULE_DESCRIPTION          #language en-US "This module
> provides OpenSSL Library implementation with TLS and ECC features and
> performance optimizations."
> diff --git a/CryptoPkg/Library/OpensslLib/OpensslLibX64.inf
> b/CryptoPkg/Library/OpensslLib/OpensslLibX64.inf
> deleted file mode 100644
> index 5e92ba0844d5..000000000000
> --- a/CryptoPkg/Library/OpensslLib/OpensslLibX64.inf
> +++ /dev/null
> @@ -1,706 +0,0 @@
> -## @file
> -#  This module provides OpenSSL Library implementation.
> -#
> -#  Copyright (c) 2010 - 2020, Intel Corporation. All rights reserved.<BR>
> -#  (C) Copyright 2020 Hewlett Packard Enterprise Development LP<BR>
> -#  SPDX-License-Identifier: BSD-2-Clause-Patent
> -#
> -##
> -
> -[Defines]
> -  INF_VERSION                    = 0x00010005
> -  BASE_NAME                      = OpensslLibX64
> -  MODULE_UNI_FILE                = OpensslLib.uni
> -  FILE_GUID                      = 18125E50-0117-4DD0-BE54-4784AD995FEF
> -  MODULE_TYPE                    = BASE
> -  VERSION_STRING                 = 1.0
> -  LIBRARY_CLASS                  = OpensslLib
> -  DEFINE OPENSSL_PATH            = openssl
> -  DEFINE OPENSSL_FLAGS           = -DL_ENDIAN -DOPENSSL_SMALL_FOOTPRINT -
> D_CRT_SECURE_NO_DEPRECATE -D_CRT_NONSTDC_NO_DEPRECATE
> -  DEFINE OPENSSL_FLAGS_CONFIG    = -DOPENSSL_CPUID_OBJ -DSHA1_ASM -
> DSHA256_ASM -DSHA512_ASM -DAESNI_ASM -DVPAES_ASM -DGHASH_ASM
> -  CONSTRUCTOR                    = OpensslLibConstructor
> -
> -#
> -#  VALID_ARCHITECTURES           = X64
> -#
> -
> -[Sources.X64]
> -  OpensslLibConstructor.c
> -  $(OPENSSL_PATH)/e_os.h
> -  $(OPENSSL_PATH)/ms/uplink.h
> -# Autogenerated files list starts here
> -  X64/crypto/aes/aesni-mb-x86_64.nasm
> -  X64/crypto/aes/aesni-sha1-x86_64.nasm
> -  X64/crypto/aes/aesni-sha256-x86_64.nasm
> -  X64/crypto/aes/aesni-x86_64.nasm
> -  X64/crypto/aes/vpaes-x86_64.nasm
> -  X64/crypto/modes/aesni-gcm-x86_64.nasm
> -  X64/crypto/modes/ghash-x86_64.nasm
> -  X64/crypto/sha/sha1-mb-x86_64.nasm
> -  X64/crypto/sha/sha1-x86_64.nasm
> -  X64/crypto/sha/sha256-mb-x86_64.nasm
> -  X64/crypto/sha/sha256-x86_64.nasm
> -  X64/crypto/sha/sha512-x86_64.nasm
> -  X64/crypto/x86_64cpuid.nasm
> -  $(OPENSSL_PATH)/crypto/aes/aes_cbc.c
> -  $(OPENSSL_PATH)/crypto/aes/aes_cfb.c
> -  $(OPENSSL_PATH)/crypto/aes/aes_core.c
> -  $(OPENSSL_PATH)/crypto/aes/aes_ige.c
> -  $(OPENSSL_PATH)/crypto/aes/aes_misc.c
> -  $(OPENSSL_PATH)/crypto/aes/aes_ofb.c
> -  $(OPENSSL_PATH)/crypto/aes/aes_wrap.c
> -  $(OPENSSL_PATH)/crypto/aria/aria.c
> -  $(OPENSSL_PATH)/crypto/asn1/a_bitstr.c
> -  $(OPENSSL_PATH)/crypto/asn1/a_d2i_fp.c
> -  $(OPENSSL_PATH)/crypto/asn1/a_digest.c
> -  $(OPENSSL_PATH)/crypto/asn1/a_dup.c
> -  $(OPENSSL_PATH)/crypto/asn1/a_gentm.c
> -  $(OPENSSL_PATH)/crypto/asn1/a_i2d_fp.c
> -  $(OPENSSL_PATH)/crypto/asn1/a_int.c
> -  $(OPENSSL_PATH)/crypto/asn1/a_mbstr.c
> -  $(OPENSSL_PATH)/crypto/asn1/a_object.c
> -  $(OPENSSL_PATH)/crypto/asn1/a_octet.c
> -  $(OPENSSL_PATH)/crypto/asn1/a_print.c
> -  $(OPENSSL_PATH)/crypto/asn1/a_sign.c
> -  $(OPENSSL_PATH)/crypto/asn1/a_strex.c
> -  $(OPENSSL_PATH)/crypto/asn1/a_strnid.c
> -  $(OPENSSL_PATH)/crypto/asn1/a_time.c
> -  $(OPENSSL_PATH)/crypto/asn1/a_type.c
> -  $(OPENSSL_PATH)/crypto/asn1/a_utctm.c
> -  $(OPENSSL_PATH)/crypto/asn1/a_utf8.c
> -  $(OPENSSL_PATH)/crypto/asn1/a_verify.c
> -  $(OPENSSL_PATH)/crypto/asn1/ameth_lib.c
> -  $(OPENSSL_PATH)/crypto/asn1/asn1_err.c
> -  $(OPENSSL_PATH)/crypto/asn1/asn1_gen.c
> -  $(OPENSSL_PATH)/crypto/asn1/asn1_item_list.c
> -  $(OPENSSL_PATH)/crypto/asn1/asn1_lib.c
> -  $(OPENSSL_PATH)/crypto/asn1/asn1_par.c
> -  $(OPENSSL_PATH)/crypto/asn1/asn_mime.c
> -  $(OPENSSL_PATH)/crypto/asn1/asn_moid.c
> -  $(OPENSSL_PATH)/crypto/asn1/asn_mstbl.c
> -  $(OPENSSL_PATH)/crypto/asn1/asn_pack.c
> -  $(OPENSSL_PATH)/crypto/asn1/bio_asn1.c
> -  $(OPENSSL_PATH)/crypto/asn1/bio_ndef.c
> -  $(OPENSSL_PATH)/crypto/asn1/d2i_pr.c
> -  $(OPENSSL_PATH)/crypto/asn1/d2i_pu.c
> -  $(OPENSSL_PATH)/crypto/asn1/evp_asn1.c
> -  $(OPENSSL_PATH)/crypto/asn1/f_int.c
> -  $(OPENSSL_PATH)/crypto/asn1/f_string.c
> -  $(OPENSSL_PATH)/crypto/asn1/i2d_pr.c
> -  $(OPENSSL_PATH)/crypto/asn1/i2d_pu.c
> -  $(OPENSSL_PATH)/crypto/asn1/n_pkey.c
> -  $(OPENSSL_PATH)/crypto/asn1/nsseq.c
> -  $(OPENSSL_PATH)/crypto/asn1/p5_pbe.c
> -  $(OPENSSL_PATH)/crypto/asn1/p5_pbev2.c
> -  $(OPENSSL_PATH)/crypto/asn1/p5_scrypt.c
> -  $(OPENSSL_PATH)/crypto/asn1/p8_pkey.c
> -  $(OPENSSL_PATH)/crypto/asn1/t_bitst.c
> -  $(OPENSSL_PATH)/crypto/asn1/t_pkey.c
> -  $(OPENSSL_PATH)/crypto/asn1/t_spki.c
> -  $(OPENSSL_PATH)/crypto/asn1/tasn_dec.c
> -  $(OPENSSL_PATH)/crypto/asn1/tasn_enc.c
> -  $(OPENSSL_PATH)/crypto/asn1/tasn_fre.c
> -  $(OPENSSL_PATH)/crypto/asn1/tasn_new.c
> -  $(OPENSSL_PATH)/crypto/asn1/tasn_prn.c
> -  $(OPENSSL_PATH)/crypto/asn1/tasn_scn.c
> -  $(OPENSSL_PATH)/crypto/asn1/tasn_typ.c
> -  $(OPENSSL_PATH)/crypto/asn1/tasn_utl.c
> -  $(OPENSSL_PATH)/crypto/asn1/x_algor.c
> -  $(OPENSSL_PATH)/crypto/asn1/x_bignum.c
> -  $(OPENSSL_PATH)/crypto/asn1/x_info.c
> -  $(OPENSSL_PATH)/crypto/asn1/x_int64.c
> -  $(OPENSSL_PATH)/crypto/asn1/x_long.c
> -  $(OPENSSL_PATH)/crypto/asn1/x_pkey.c
> -  $(OPENSSL_PATH)/crypto/asn1/x_sig.c
> -  $(OPENSSL_PATH)/crypto/asn1/x_spki.c
> -  $(OPENSSL_PATH)/crypto/asn1/x_val.c
> -  $(OPENSSL_PATH)/crypto/async/arch/async_null.c
> -  $(OPENSSL_PATH)/crypto/async/arch/async_posix.c
> -  $(OPENSSL_PATH)/crypto/async/arch/async_win.c
> -  $(OPENSSL_PATH)/crypto/async/async.c
> -  $(OPENSSL_PATH)/crypto/async/async_err.c
> -  $(OPENSSL_PATH)/crypto/async/async_wait.c
> -  $(OPENSSL_PATH)/crypto/bio/b_addr.c
> -  $(OPENSSL_PATH)/crypto/bio/b_dump.c
> -  $(OPENSSL_PATH)/crypto/bio/b_sock.c
> -  $(OPENSSL_PATH)/crypto/bio/b_sock2.c
> -  $(OPENSSL_PATH)/crypto/bio/bf_buff.c
> -  $(OPENSSL_PATH)/crypto/bio/bf_lbuf.c
> -  $(OPENSSL_PATH)/crypto/bio/bf_nbio.c
> -  $(OPENSSL_PATH)/crypto/bio/bf_null.c
> -  $(OPENSSL_PATH)/crypto/bio/bio_cb.c
> -  $(OPENSSL_PATH)/crypto/bio/bio_err.c
> -  $(OPENSSL_PATH)/crypto/bio/bio_lib.c
> -  $(OPENSSL_PATH)/crypto/bio/bio_meth.c
> -  $(OPENSSL_PATH)/crypto/bio/bss_acpt.c
> -  $(OPENSSL_PATH)/crypto/bio/bss_bio.c
> -  $(OPENSSL_PATH)/crypto/bio/bss_conn.c
> -  $(OPENSSL_PATH)/crypto/bio/bss_dgram.c
> -  $(OPENSSL_PATH)/crypto/bio/bss_fd.c
> -  $(OPENSSL_PATH)/crypto/bio/bss_file.c
> -  $(OPENSSL_PATH)/crypto/bio/bss_log.c
> -  $(OPENSSL_PATH)/crypto/bio/bss_mem.c
> -  $(OPENSSL_PATH)/crypto/bio/bss_null.c
> -  $(OPENSSL_PATH)/crypto/bio/bss_sock.c
> -  $(OPENSSL_PATH)/crypto/bn/bn_add.c
> -  $(OPENSSL_PATH)/crypto/bn/bn_asm.c
> -  $(OPENSSL_PATH)/crypto/bn/bn_blind.c
> -  $(OPENSSL_PATH)/crypto/bn/bn_const.c
> -  $(OPENSSL_PATH)/crypto/bn/bn_ctx.c
> -  $(OPENSSL_PATH)/crypto/bn/bn_depr.c
> -  $(OPENSSL_PATH)/crypto/bn/bn_dh.c
> -  $(OPENSSL_PATH)/crypto/bn/bn_div.c
> -  $(OPENSSL_PATH)/crypto/bn/bn_err.c
> -  $(OPENSSL_PATH)/crypto/bn/bn_exp.c
> -  $(OPENSSL_PATH)/crypto/bn/bn_exp2.c
> -  $(OPENSSL_PATH)/crypto/bn/bn_gcd.c
> -  $(OPENSSL_PATH)/crypto/bn/bn_gf2m.c
> -  $(OPENSSL_PATH)/crypto/bn/bn_intern.c
> -  $(OPENSSL_PATH)/crypto/bn/bn_kron.c
> -  $(OPENSSL_PATH)/crypto/bn/bn_lib.c
> -  $(OPENSSL_PATH)/crypto/bn/bn_mod.c
> -  $(OPENSSL_PATH)/crypto/bn/bn_mont.c
> -  $(OPENSSL_PATH)/crypto/bn/bn_mpi.c
> -  $(OPENSSL_PATH)/crypto/bn/bn_mul.c
> -  $(OPENSSL_PATH)/crypto/bn/bn_nist.c
> -  $(OPENSSL_PATH)/crypto/bn/bn_prime.c
> -  $(OPENSSL_PATH)/crypto/bn/bn_print.c
> -  $(OPENSSL_PATH)/crypto/bn/bn_rand.c
> -  $(OPENSSL_PATH)/crypto/bn/bn_recp.c
> -  $(OPENSSL_PATH)/crypto/bn/bn_shift.c
> -  $(OPENSSL_PATH)/crypto/bn/bn_sqr.c
> -  $(OPENSSL_PATH)/crypto/bn/bn_sqrt.c
> -  $(OPENSSL_PATH)/crypto/bn/bn_srp.c
> -  $(OPENSSL_PATH)/crypto/bn/bn_word.c
> -  $(OPENSSL_PATH)/crypto/bn/bn_x931p.c
> -  $(OPENSSL_PATH)/crypto/buffer/buf_err.c
> -  $(OPENSSL_PATH)/crypto/buffer/buffer.c
> -  $(OPENSSL_PATH)/crypto/cmac/cm_ameth.c
> -  $(OPENSSL_PATH)/crypto/cmac/cm_pmeth.c
> -  $(OPENSSL_PATH)/crypto/cmac/cmac.c
> -  $(OPENSSL_PATH)/crypto/comp/c_zlib.c
> -  $(OPENSSL_PATH)/crypto/comp/comp_err.c
> -  $(OPENSSL_PATH)/crypto/comp/comp_lib.c
> -  $(OPENSSL_PATH)/crypto/conf/conf_api.c
> -  $(OPENSSL_PATH)/crypto/conf/conf_def.c
> -  $(OPENSSL_PATH)/crypto/conf/conf_err.c
> -  $(OPENSSL_PATH)/crypto/conf/conf_lib.c
> -  $(OPENSSL_PATH)/crypto/conf/conf_mall.c
> -  $(OPENSSL_PATH)/crypto/conf/conf_mod.c
> -  $(OPENSSL_PATH)/crypto/conf/conf_sap.c
> -  $(OPENSSL_PATH)/crypto/conf/conf_ssl.c
> -  $(OPENSSL_PATH)/crypto/cpt_err.c
> -  $(OPENSSL_PATH)/crypto/cryptlib.c
> -  $(OPENSSL_PATH)/crypto/ctype.c
> -  $(OPENSSL_PATH)/crypto/cversion.c
> -  $(OPENSSL_PATH)/crypto/dh/dh_ameth.c
> -  $(OPENSSL_PATH)/crypto/dh/dh_asn1.c
> -  $(OPENSSL_PATH)/crypto/dh/dh_check.c
> -  $(OPENSSL_PATH)/crypto/dh/dh_depr.c
> -  $(OPENSSL_PATH)/crypto/dh/dh_err.c
> -  $(OPENSSL_PATH)/crypto/dh/dh_gen.c
> -  $(OPENSSL_PATH)/crypto/dh/dh_kdf.c
> -  $(OPENSSL_PATH)/crypto/dh/dh_key.c
> -  $(OPENSSL_PATH)/crypto/dh/dh_lib.c
> -  $(OPENSSL_PATH)/crypto/dh/dh_meth.c
> -  $(OPENSSL_PATH)/crypto/dh/dh_pmeth.c
> -  $(OPENSSL_PATH)/crypto/dh/dh_prn.c
> -  $(OPENSSL_PATH)/crypto/dh/dh_rfc5114.c
> -  $(OPENSSL_PATH)/crypto/dh/dh_rfc7919.c
> -  $(OPENSSL_PATH)/crypto/dso/dso_dl.c
> -  $(OPENSSL_PATH)/crypto/dso/dso_dlfcn.c
> -  $(OPENSSL_PATH)/crypto/dso/dso_err.c
> -  $(OPENSSL_PATH)/crypto/dso/dso_lib.c
> -  $(OPENSSL_PATH)/crypto/dso/dso_openssl.c
> -  $(OPENSSL_PATH)/crypto/dso/dso_vms.c
> -  $(OPENSSL_PATH)/crypto/dso/dso_win32.c
> -  $(OPENSSL_PATH)/crypto/ebcdic.c
> -  $(OPENSSL_PATH)/crypto/ec/curve25519.c
> |*|*|*|gEfiCryptoPkgTokenSpaceGuid.PcdOpensslEcEnabled
> -  $(OPENSSL_PATH)/crypto/ec/curve448/arch_32/f_impl.c
> |*|*|*|gEfiCryptoPkgTokenSpaceGuid.PcdOpensslEcEnabled
> -  $(OPENSSL_PATH)/crypto/ec/curve448/curve448.c
> |*|*|*|gEfiCryptoPkgTokenSpaceGuid.PcdOpensslEcEnabled
> -  $(OPENSSL_PATH)/crypto/ec/curve448/curve448_tables.c
> |*|*|*|gEfiCryptoPkgTokenSpaceGuid.PcdOpensslEcEnabled
> -  $(OPENSSL_PATH)/crypto/ec/curve448/eddsa.c
> |*|*|*|gEfiCryptoPkgTokenSpaceGuid.PcdOpensslEcEnabled
> -  $(OPENSSL_PATH)/crypto/ec/curve448/f_generic.c
> |*|*|*|gEfiCryptoPkgTokenSpaceGuid.PcdOpensslEcEnabled
> -  $(OPENSSL_PATH)/crypto/ec/curve448/scalar.c
> |*|*|*|gEfiCryptoPkgTokenSpaceGuid.PcdOpensslEcEnabled
> -  $(OPENSSL_PATH)/crypto/ec/ec2_oct.c
> |*|*|*|gEfiCryptoPkgTokenSpaceGuid.PcdOpensslEcEnabled
> -  $(OPENSSL_PATH)/crypto/ec/ec2_smpl.c
> |*|*|*|gEfiCryptoPkgTokenSpaceGuid.PcdOpensslEcEnabled
> -  $(OPENSSL_PATH)/crypto/ec/ec_ameth.c
> |*|*|*|gEfiCryptoPkgTokenSpaceGuid.PcdOpensslEcEnabled
> -  $(OPENSSL_PATH)/crypto/ec/ec_asn1.c
> |*|*|*|gEfiCryptoPkgTokenSpaceGuid.PcdOpensslEcEnabled
> -  $(OPENSSL_PATH)/crypto/ec/ec_check.c
> |*|*|*|gEfiCryptoPkgTokenSpaceGuid.PcdOpensslEcEnabled
> -  $(OPENSSL_PATH)/crypto/ec/ec_curve.c
> |*|*|*|gEfiCryptoPkgTokenSpaceGuid.PcdOpensslEcEnabled
> -  $(OPENSSL_PATH)/crypto/ec/ec_cvt.c
> |*|*|*|gEfiCryptoPkgTokenSpaceGuid.PcdOpensslEcEnabled
> -  $(OPENSSL_PATH)/crypto/ec/ec_err.c
> |*|*|*|gEfiCryptoPkgTokenSpaceGuid.PcdOpensslEcEnabled
> -  $(OPENSSL_PATH)/crypto/ec/ec_key.c
> |*|*|*|gEfiCryptoPkgTokenSpaceGuid.PcdOpensslEcEnabled
> -  $(OPENSSL_PATH)/crypto/ec/ec_kmeth.c
> |*|*|*|gEfiCryptoPkgTokenSpaceGuid.PcdOpensslEcEnabled
> -  $(OPENSSL_PATH)/crypto/ec/ec_lib.c
> |*|*|*|gEfiCryptoPkgTokenSpaceGuid.PcdOpensslEcEnabled
> -  $(OPENSSL_PATH)/crypto/ec/ec_mult.c
> |*|*|*|gEfiCryptoPkgTokenSpaceGuid.PcdOpensslEcEnabled
> -  $(OPENSSL_PATH)/crypto/ec/ec_oct.c
> |*|*|*|gEfiCryptoPkgTokenSpaceGuid.PcdOpensslEcEnabled
> -  $(OPENSSL_PATH)/crypto/ec/ec_pmeth.c
> |*|*|*|gEfiCryptoPkgTokenSpaceGuid.PcdOpensslEcEnabled
> -  $(OPENSSL_PATH)/crypto/ec/ec_print.c
> |*|*|*|gEfiCryptoPkgTokenSpaceGuid.PcdOpensslEcEnabled
> -  $(OPENSSL_PATH)/crypto/ec/ecdh_kdf.c
> |*|*|*|gEfiCryptoPkgTokenSpaceGuid.PcdOpensslEcEnabled
> -  $(OPENSSL_PATH)/crypto/ec/ecdh_ossl.c
> |*|*|*|gEfiCryptoPkgTokenSpaceGuid.PcdOpensslEcEnabled
> -  $(OPENSSL_PATH)/crypto/ec/ecdsa_ossl.c
> |*|*|*|gEfiCryptoPkgTokenSpaceGuid.PcdOpensslEcEnabled
> -  $(OPENSSL_PATH)/crypto/ec/ecdsa_sign.c
> |*|*|*|gEfiCryptoPkgTokenSpaceGuid.PcdOpensslEcEnabled
> -  $(OPENSSL_PATH)/crypto/ec/ecdsa_vrf.c
> |*|*|*|gEfiCryptoPkgTokenSpaceGuid.PcdOpensslEcEnabled
> -  $(OPENSSL_PATH)/crypto/ec/eck_prn.c
> |*|*|*|gEfiCryptoPkgTokenSpaceGuid.PcdOpensslEcEnabled
> -  $(OPENSSL_PATH)/crypto/ec/ecp_mont.c
> |*|*|*|gEfiCryptoPkgTokenSpaceGuid.PcdOpensslEcEnabled
> -  $(OPENSSL_PATH)/crypto/ec/ecp_nist.c
> |*|*|*|gEfiCryptoPkgTokenSpaceGuid.PcdOpensslEcEnabled
> -  $(OPENSSL_PATH)/crypto/ec/ecp_nistp224.c
> |*|*|*|gEfiCryptoPkgTokenSpaceGuid.PcdOpensslEcEnabled
> -  $(OPENSSL_PATH)/crypto/ec/ecp_nistp256.c
> |*|*|*|gEfiCryptoPkgTokenSpaceGuid.PcdOpensslEcEnabled
> -  $(OPENSSL_PATH)/crypto/ec/ecp_nistp521.c
> |*|*|*|gEfiCryptoPkgTokenSpaceGuid.PcdOpensslEcEnabled
> -  $(OPENSSL_PATH)/crypto/ec/ecp_nistputil.c
> |*|*|*|gEfiCryptoPkgTokenSpaceGuid.PcdOpensslEcEnabled
> -  $(OPENSSL_PATH)/crypto/ec/ecp_oct.c
> |*|*|*|gEfiCryptoPkgTokenSpaceGuid.PcdOpensslEcEnabled
> -  $(OPENSSL_PATH)/crypto/ec/ecp_smpl.c
> |*|*|*|gEfiCryptoPkgTokenSpaceGuid.PcdOpensslEcEnabled
> -  $(OPENSSL_PATH)/crypto/ec/ecx_meth.c
> |*|*|*|gEfiCryptoPkgTokenSpaceGuid.PcdOpensslEcEnabled
> -  $(OPENSSL_PATH)/crypto/err/err.c
> -  $(OPENSSL_PATH)/crypto/err/err_prn.c
> -  $(OPENSSL_PATH)/crypto/evp/bio_b64.c
> -  $(OPENSSL_PATH)/crypto/evp/bio_enc.c
> -  $(OPENSSL_PATH)/crypto/evp/bio_md.c
> -  $(OPENSSL_PATH)/crypto/evp/bio_ok.c
> -  $(OPENSSL_PATH)/crypto/evp/c_allc.c
> -  $(OPENSSL_PATH)/crypto/evp/c_alld.c
> -  $(OPENSSL_PATH)/crypto/evp/cmeth_lib.c
> -  $(OPENSSL_PATH)/crypto/evp/digest.c
> -  $(OPENSSL_PATH)/crypto/evp/e_aes.c
> -  $(OPENSSL_PATH)/crypto/evp/e_aes_cbc_hmac_sha1.c
> -  $(OPENSSL_PATH)/crypto/evp/e_aes_cbc_hmac_sha256.c
> -  $(OPENSSL_PATH)/crypto/evp/e_aria.c
> -  $(OPENSSL_PATH)/crypto/evp/e_bf.c
> -  $(OPENSSL_PATH)/crypto/evp/e_camellia.c
> -  $(OPENSSL_PATH)/crypto/evp/e_cast.c
> -  $(OPENSSL_PATH)/crypto/evp/e_chacha20_poly1305.c
> -  $(OPENSSL_PATH)/crypto/evp/e_des.c
> -  $(OPENSSL_PATH)/crypto/evp/e_des3.c
> -  $(OPENSSL_PATH)/crypto/evp/e_idea.c
> -  $(OPENSSL_PATH)/crypto/evp/e_null.c
> -  $(OPENSSL_PATH)/crypto/evp/e_old.c
> -  $(OPENSSL_PATH)/crypto/evp/e_rc2.c
> -  $(OPENSSL_PATH)/crypto/evp/e_rc4.c
> -  $(OPENSSL_PATH)/crypto/evp/e_rc4_hmac_md5.c
> -  $(OPENSSL_PATH)/crypto/evp/e_rc5.c
> -  $(OPENSSL_PATH)/crypto/evp/e_seed.c
> -  $(OPENSSL_PATH)/crypto/evp/e_sm4.c
> -  $(OPENSSL_PATH)/crypto/evp/e_xcbc_d.c
> -  $(OPENSSL_PATH)/crypto/evp/encode.c
> -  $(OPENSSL_PATH)/crypto/evp/evp_cnf.c
> -  $(OPENSSL_PATH)/crypto/evp/evp_enc.c
> -  $(OPENSSL_PATH)/crypto/evp/evp_err.c
> -  $(OPENSSL_PATH)/crypto/evp/evp_key.c
> -  $(OPENSSL_PATH)/crypto/evp/evp_lib.c
> -  $(OPENSSL_PATH)/crypto/evp/evp_pbe.c
> -  $(OPENSSL_PATH)/crypto/evp/evp_pkey.c
> -  $(OPENSSL_PATH)/crypto/evp/m_md2.c
> -  $(OPENSSL_PATH)/crypto/evp/m_md4.c
> -  $(OPENSSL_PATH)/crypto/evp/m_md5.c
> -  $(OPENSSL_PATH)/crypto/evp/m_md5_sha1.c
> -  $(OPENSSL_PATH)/crypto/evp/m_mdc2.c
> -  $(OPENSSL_PATH)/crypto/evp/m_null.c
> -  $(OPENSSL_PATH)/crypto/evp/m_ripemd.c
> -  $(OPENSSL_PATH)/crypto/evp/m_sha1.c
> -  $(OPENSSL_PATH)/crypto/evp/m_sha3.c
> -  $(OPENSSL_PATH)/crypto/evp/m_sigver.c
> -  $(OPENSSL_PATH)/crypto/evp/m_wp.c
> -  $(OPENSSL_PATH)/crypto/evp/names.c
> -  $(OPENSSL_PATH)/crypto/evp/p5_crpt.c
> -  $(OPENSSL_PATH)/crypto/evp/p5_crpt2.c
> -  $(OPENSSL_PATH)/crypto/evp/p_dec.c
> -  $(OPENSSL_PATH)/crypto/evp/p_enc.c
> -  $(OPENSSL_PATH)/crypto/evp/p_lib.c
> -  $(OPENSSL_PATH)/crypto/evp/p_open.c
> -  $(OPENSSL_PATH)/crypto/evp/p_seal.c
> -  $(OPENSSL_PATH)/crypto/evp/p_sign.c
> -  $(OPENSSL_PATH)/crypto/evp/p_verify.c
> -  $(OPENSSL_PATH)/crypto/evp/pbe_scrypt.c
> -  $(OPENSSL_PATH)/crypto/evp/pmeth_fn.c
> -  $(OPENSSL_PATH)/crypto/evp/pmeth_gn.c
> -  $(OPENSSL_PATH)/crypto/evp/pmeth_lib.c
> -  $(OPENSSL_PATH)/crypto/ex_data.c
> -  $(OPENSSL_PATH)/crypto/getenv.c
> -  $(OPENSSL_PATH)/crypto/hmac/hm_ameth.c
> -  $(OPENSSL_PATH)/crypto/hmac/hm_pmeth.c
> -  $(OPENSSL_PATH)/crypto/hmac/hmac.c
> -  $(OPENSSL_PATH)/crypto/init.c
> -  $(OPENSSL_PATH)/crypto/kdf/hkdf.c
> -  $(OPENSSL_PATH)/crypto/kdf/kdf_err.c
> -  $(OPENSSL_PATH)/crypto/kdf/scrypt.c
> -  $(OPENSSL_PATH)/crypto/kdf/tls1_prf.c
> -  $(OPENSSL_PATH)/crypto/lhash/lh_stats.c
> -  $(OPENSSL_PATH)/crypto/lhash/lhash.c
> -  $(OPENSSL_PATH)/crypto/md5/md5_dgst.c
> -  $(OPENSSL_PATH)/crypto/md5/md5_one.c
> -  $(OPENSSL_PATH)/crypto/mem.c
> -  $(OPENSSL_PATH)/crypto/mem_dbg.c
> -  $(OPENSSL_PATH)/crypto/mem_sec.c
> -  $(OPENSSL_PATH)/crypto/modes/cbc128.c
> -  $(OPENSSL_PATH)/crypto/modes/ccm128.c
> -  $(OPENSSL_PATH)/crypto/modes/cfb128.c
> -  $(OPENSSL_PATH)/crypto/modes/ctr128.c
> -  $(OPENSSL_PATH)/crypto/modes/cts128.c
> -  $(OPENSSL_PATH)/crypto/modes/gcm128.c
> -  $(OPENSSL_PATH)/crypto/modes/ocb128.c
> -  $(OPENSSL_PATH)/crypto/modes/ofb128.c
> -  $(OPENSSL_PATH)/crypto/modes/wrap128.c
> -  $(OPENSSL_PATH)/crypto/modes/xts128.c
> -  $(OPENSSL_PATH)/crypto/o_dir.c
> -  $(OPENSSL_PATH)/crypto/o_fips.c
> -  $(OPENSSL_PATH)/crypto/o_fopen.c
> -  $(OPENSSL_PATH)/crypto/o_init.c
> -  $(OPENSSL_PATH)/crypto/o_str.c
> -  $(OPENSSL_PATH)/crypto/o_time.c
> -  $(OPENSSL_PATH)/crypto/objects/o_names.c
> -  $(OPENSSL_PATH)/crypto/objects/obj_dat.c
> -  $(OPENSSL_PATH)/crypto/objects/obj_err.c
> -  $(OPENSSL_PATH)/crypto/objects/obj_lib.c
> -  $(OPENSSL_PATH)/crypto/objects/obj_xref.c
> -  $(OPENSSL_PATH)/crypto/ocsp/ocsp_asn.c
> -  $(OPENSSL_PATH)/crypto/ocsp/ocsp_cl.c
> -  $(OPENSSL_PATH)/crypto/ocsp/ocsp_err.c
> -  $(OPENSSL_PATH)/crypto/ocsp/ocsp_ext.c
> -  $(OPENSSL_PATH)/crypto/ocsp/ocsp_ht.c
> -  $(OPENSSL_PATH)/crypto/ocsp/ocsp_lib.c
> -  $(OPENSSL_PATH)/crypto/ocsp/ocsp_prn.c
> -  $(OPENSSL_PATH)/crypto/ocsp/ocsp_srv.c
> -  $(OPENSSL_PATH)/crypto/ocsp/ocsp_vfy.c
> -  $(OPENSSL_PATH)/crypto/ocsp/v3_ocsp.c
> -  $(OPENSSL_PATH)/crypto/pem/pem_all.c
> -  $(OPENSSL_PATH)/crypto/pem/pem_err.c
> -  $(OPENSSL_PATH)/crypto/pem/pem_info.c
> -  $(OPENSSL_PATH)/crypto/pem/pem_lib.c
> -  $(OPENSSL_PATH)/crypto/pem/pem_oth.c
> -  $(OPENSSL_PATH)/crypto/pem/pem_pk8.c
> -  $(OPENSSL_PATH)/crypto/pem/pem_pkey.c
> -  $(OPENSSL_PATH)/crypto/pem/pem_sign.c
> -  $(OPENSSL_PATH)/crypto/pem/pem_x509.c
> -  $(OPENSSL_PATH)/crypto/pem/pem_xaux.c
> -  $(OPENSSL_PATH)/crypto/pem/pvkfmt.c
> -  $(OPENSSL_PATH)/crypto/pkcs12/p12_add.c
> -  $(OPENSSL_PATH)/crypto/pkcs12/p12_asn.c
> -  $(OPENSSL_PATH)/crypto/pkcs12/p12_attr.c
> -  $(OPENSSL_PATH)/crypto/pkcs12/p12_crpt.c
> -  $(OPENSSL_PATH)/crypto/pkcs12/p12_crt.c
> -  $(OPENSSL_PATH)/crypto/pkcs12/p12_decr.c
> -  $(OPENSSL_PATH)/crypto/pkcs12/p12_init.c
> -  $(OPENSSL_PATH)/crypto/pkcs12/p12_key.c
> -  $(OPENSSL_PATH)/crypto/pkcs12/p12_kiss.c
> -  $(OPENSSL_PATH)/crypto/pkcs12/p12_mutl.c
> -  $(OPENSSL_PATH)/crypto/pkcs12/p12_npas.c
> -  $(OPENSSL_PATH)/crypto/pkcs12/p12_p8d.c
> -  $(OPENSSL_PATH)/crypto/pkcs12/p12_p8e.c
> -  $(OPENSSL_PATH)/crypto/pkcs12/p12_sbag.c
> -  $(OPENSSL_PATH)/crypto/pkcs12/p12_utl.c
> -  $(OPENSSL_PATH)/crypto/pkcs12/pk12err.c
> -  $(OPENSSL_PATH)/crypto/pkcs7/bio_pk7.c
> -  $(OPENSSL_PATH)/crypto/pkcs7/pk7_asn1.c
> -  $(OPENSSL_PATH)/crypto/pkcs7/pk7_attr.c
> -  $(OPENSSL_PATH)/crypto/pkcs7/pk7_doit.c
> -  $(OPENSSL_PATH)/crypto/pkcs7/pk7_lib.c
> -  $(OPENSSL_PATH)/crypto/pkcs7/pk7_mime.c
> -  $(OPENSSL_PATH)/crypto/pkcs7/pk7_smime.c
> -  $(OPENSSL_PATH)/crypto/pkcs7/pkcs7err.c
> -  $(OPENSSL_PATH)/crypto/rand/drbg_ctr.c
> -  $(OPENSSL_PATH)/crypto/rand/drbg_lib.c
> -  $(OPENSSL_PATH)/crypto/rand/rand_egd.c
> -  $(OPENSSL_PATH)/crypto/rand/rand_err.c
> -  $(OPENSSL_PATH)/crypto/rand/rand_lib.c
> -  $(OPENSSL_PATH)/crypto/rand/rand_unix.c
> -  $(OPENSSL_PATH)/crypto/rand/rand_vms.c
> -  $(OPENSSL_PATH)/crypto/rand/rand_win.c
> -  $(OPENSSL_PATH)/crypto/rsa/rsa_ameth.c
> -  $(OPENSSL_PATH)/crypto/rsa/rsa_asn1.c
> -  $(OPENSSL_PATH)/crypto/rsa/rsa_chk.c
> -  $(OPENSSL_PATH)/crypto/rsa/rsa_crpt.c
> -  $(OPENSSL_PATH)/crypto/rsa/rsa_depr.c
> -  $(OPENSSL_PATH)/crypto/rsa/rsa_err.c
> -  $(OPENSSL_PATH)/crypto/rsa/rsa_gen.c
> -  $(OPENSSL_PATH)/crypto/rsa/rsa_lib.c
> -  $(OPENSSL_PATH)/crypto/rsa/rsa_meth.c
> -  $(OPENSSL_PATH)/crypto/rsa/rsa_mp.c
> -  $(OPENSSL_PATH)/crypto/rsa/rsa_none.c
> -  $(OPENSSL_PATH)/crypto/rsa/rsa_oaep.c
> -  $(OPENSSL_PATH)/crypto/rsa/rsa_ossl.c
> -  $(OPENSSL_PATH)/crypto/rsa/rsa_pk1.c
> -  $(OPENSSL_PATH)/crypto/rsa/rsa_pmeth.c
> -  $(OPENSSL_PATH)/crypto/rsa/rsa_prn.c
> -  $(OPENSSL_PATH)/crypto/rsa/rsa_pss.c
> -  $(OPENSSL_PATH)/crypto/rsa/rsa_saos.c
> -  $(OPENSSL_PATH)/crypto/rsa/rsa_sign.c
> -  $(OPENSSL_PATH)/crypto/rsa/rsa_ssl.c
> -  $(OPENSSL_PATH)/crypto/rsa/rsa_x931.c
> -  $(OPENSSL_PATH)/crypto/rsa/rsa_x931g.c
> -  $(OPENSSL_PATH)/crypto/sha/keccak1600.c
> -  $(OPENSSL_PATH)/crypto/sha/sha1_one.c
> -  $(OPENSSL_PATH)/crypto/sha/sha1dgst.c
> -  $(OPENSSL_PATH)/crypto/sha/sha256.c
> -  $(OPENSSL_PATH)/crypto/sha/sha512.c
> -  $(OPENSSL_PATH)/crypto/siphash/siphash.c
> -  $(OPENSSL_PATH)/crypto/siphash/siphash_ameth.c
> -  $(OPENSSL_PATH)/crypto/siphash/siphash_pmeth.c
> -  $(OPENSSL_PATH)/crypto/sm2/sm2_crypt.c
> |*|*|*|gEfiCryptoPkgTokenSpaceGuid.PcdOpensslEcEnabled
> -  $(OPENSSL_PATH)/crypto/sm2/sm2_err.c
> |*|*|*|gEfiCryptoPkgTokenSpaceGuid.PcdOpensslEcEnabled
> -  $(OPENSSL_PATH)/crypto/sm2/sm2_pmeth.c
> |*|*|*|gEfiCryptoPkgTokenSpaceGuid.PcdOpensslEcEnabled
> -  $(OPENSSL_PATH)/crypto/sm2/sm2_sign.c
> |*|*|*|gEfiCryptoPkgTokenSpaceGuid.PcdOpensslEcEnabled
> -  $(OPENSSL_PATH)/crypto/sm3/m_sm3.c
> -  $(OPENSSL_PATH)/crypto/sm3/sm3.c
> -  $(OPENSSL_PATH)/crypto/sm4/sm4.c
> -  $(OPENSSL_PATH)/crypto/stack/stack.c
> -  $(OPENSSL_PATH)/crypto/threads_none.c
> -  $(OPENSSL_PATH)/crypto/threads_pthread.c
> -  $(OPENSSL_PATH)/crypto/threads_win.c
> -  $(OPENSSL_PATH)/crypto/txt_db/txt_db.c
> -  $(OPENSSL_PATH)/crypto/ui/ui_err.c
> -  $(OPENSSL_PATH)/crypto/ui/ui_lib.c
> -  $(OPENSSL_PATH)/crypto/ui/ui_null.c
> -  $(OPENSSL_PATH)/crypto/ui/ui_openssl.c
> -  $(OPENSSL_PATH)/crypto/ui/ui_util.c
> -  $(OPENSSL_PATH)/crypto/uid.c
> -  $(OPENSSL_PATH)/crypto/x509/by_dir.c
> -  $(OPENSSL_PATH)/crypto/x509/by_file.c
> -  $(OPENSSL_PATH)/crypto/x509/t_crl.c
> -  $(OPENSSL_PATH)/crypto/x509/t_req.c
> -  $(OPENSSL_PATH)/crypto/x509/t_x509.c
> -  $(OPENSSL_PATH)/crypto/x509/x509_att.c
> -  $(OPENSSL_PATH)/crypto/x509/x509_cmp.c
> -  $(OPENSSL_PATH)/crypto/x509/x509_d2.c
> -  $(OPENSSL_PATH)/crypto/x509/x509_def.c
> -  $(OPENSSL_PATH)/crypto/x509/x509_err.c
> -  $(OPENSSL_PATH)/crypto/x509/x509_ext.c
> -  $(OPENSSL_PATH)/crypto/x509/x509_lu.c
> -  $(OPENSSL_PATH)/crypto/x509/x509_meth.c
> -  $(OPENSSL_PATH)/crypto/x509/x509_obj.c
> -  $(OPENSSL_PATH)/crypto/x509/x509_r2x.c
> -  $(OPENSSL_PATH)/crypto/x509/x509_req.c
> -  $(OPENSSL_PATH)/crypto/x509/x509_set.c
> -  $(OPENSSL_PATH)/crypto/x509/x509_trs.c
> -  $(OPENSSL_PATH)/crypto/x509/x509_txt.c
> -  $(OPENSSL_PATH)/crypto/x509/x509_v3.c
> -  $(OPENSSL_PATH)/crypto/x509/x509_vfy.c
> -  $(OPENSSL_PATH)/crypto/x509/x509_vpm.c
> -  $(OPENSSL_PATH)/crypto/x509/x509cset.c
> -  $(OPENSSL_PATH)/crypto/x509/x509name.c
> -  $(OPENSSL_PATH)/crypto/x509/x509rset.c
> -  $(OPENSSL_PATH)/crypto/x509/x509spki.c
> -  $(OPENSSL_PATH)/crypto/x509/x509type.c
> -  $(OPENSSL_PATH)/crypto/x509/x_all.c
> -  $(OPENSSL_PATH)/crypto/x509/x_attrib.c
> -  $(OPENSSL_PATH)/crypto/x509/x_crl.c
> -  $(OPENSSL_PATH)/crypto/x509/x_exten.c
> -  $(OPENSSL_PATH)/crypto/x509/x_name.c
> -  $(OPENSSL_PATH)/crypto/x509/x_pubkey.c
> -  $(OPENSSL_PATH)/crypto/x509/x_req.c
> -  $(OPENSSL_PATH)/crypto/x509/x_x509.c
> -  $(OPENSSL_PATH)/crypto/x509/x_x509a.c
> -  $(OPENSSL_PATH)/crypto/x509v3/pcy_cache.c
> -  $(OPENSSL_PATH)/crypto/x509v3/pcy_data.c
> -  $(OPENSSL_PATH)/crypto/x509v3/pcy_lib.c
> -  $(OPENSSL_PATH)/crypto/x509v3/pcy_map.c
> -  $(OPENSSL_PATH)/crypto/x509v3/pcy_node.c
> -  $(OPENSSL_PATH)/crypto/x509v3/pcy_tree.c
> -  $(OPENSSL_PATH)/crypto/x509v3/v3_addr.c
> -  $(OPENSSL_PATH)/crypto/x509v3/v3_admis.c
> -  $(OPENSSL_PATH)/crypto/x509v3/v3_akey.c
> -  $(OPENSSL_PATH)/crypto/x509v3/v3_akeya.c
> -  $(OPENSSL_PATH)/crypto/x509v3/v3_alt.c
> -  $(OPENSSL_PATH)/crypto/x509v3/v3_asid.c
> -  $(OPENSSL_PATH)/crypto/x509v3/v3_bcons.c
> -  $(OPENSSL_PATH)/crypto/x509v3/v3_bitst.c
> -  $(OPENSSL_PATH)/crypto/x509v3/v3_conf.c
> -  $(OPENSSL_PATH)/crypto/x509v3/v3_cpols.c
> -  $(OPENSSL_PATH)/crypto/x509v3/v3_crld.c
> -  $(OPENSSL_PATH)/crypto/x509v3/v3_enum.c
> -  $(OPENSSL_PATH)/crypto/x509v3/v3_extku.c
> -  $(OPENSSL_PATH)/crypto/x509v3/v3_genn.c
> -  $(OPENSSL_PATH)/crypto/x509v3/v3_ia5.c
> -  $(OPENSSL_PATH)/crypto/x509v3/v3_info.c
> -  $(OPENSSL_PATH)/crypto/x509v3/v3_int.c
> -  $(OPENSSL_PATH)/crypto/x509v3/v3_lib.c
> -  $(OPENSSL_PATH)/crypto/x509v3/v3_ncons.c
> -  $(OPENSSL_PATH)/crypto/x509v3/v3_pci.c
> -  $(OPENSSL_PATH)/crypto/x509v3/v3_pcia.c
> -  $(OPENSSL_PATH)/crypto/x509v3/v3_pcons.c
> -  $(OPENSSL_PATH)/crypto/x509v3/v3_pku.c
> -  $(OPENSSL_PATH)/crypto/x509v3/v3_pmaps.c
> -  $(OPENSSL_PATH)/crypto/x509v3/v3_prn.c
> -  $(OPENSSL_PATH)/crypto/x509v3/v3_purp.c
> -  $(OPENSSL_PATH)/crypto/x509v3/v3_skey.c
> -  $(OPENSSL_PATH)/crypto/x509v3/v3_sxnet.c
> -  $(OPENSSL_PATH)/crypto/x509v3/v3_tlsf.c
> -  $(OPENSSL_PATH)/crypto/x509v3/v3_utl.c
> -  $(OPENSSL_PATH)/crypto/x509v3/v3err.c
> -  $(OPENSSL_PATH)/crypto/arm_arch.h
> -  $(OPENSSL_PATH)/crypto/mips_arch.h
> -  $(OPENSSL_PATH)/crypto/ppc_arch.h
> -  $(OPENSSL_PATH)/crypto/s390x_arch.h
> -  $(OPENSSL_PATH)/crypto/sparc_arch.h
> -  $(OPENSSL_PATH)/crypto/vms_rms.h
> -  $(OPENSSL_PATH)/crypto/aes/aes_local.h
> -  $(OPENSSL_PATH)/crypto/asn1/asn1_item_list.h
> -  $(OPENSSL_PATH)/crypto/asn1/asn1_local.h
> -  $(OPENSSL_PATH)/crypto/asn1/charmap.h
> -  $(OPENSSL_PATH)/crypto/asn1/standard_methods.h
> -  $(OPENSSL_PATH)/crypto/asn1/tbl_standard.h
> -  $(OPENSSL_PATH)/crypto/async/async_local.h
> -  $(OPENSSL_PATH)/crypto/async/arch/async_null.h
> -  $(OPENSSL_PATH)/crypto/async/arch/async_posix.h
> -  $(OPENSSL_PATH)/crypto/async/arch/async_win.h
> -  $(OPENSSL_PATH)/crypto/bio/bio_local.h
> -  $(OPENSSL_PATH)/crypto/bn/bn_local.h
> -  $(OPENSSL_PATH)/crypto/bn/bn_prime.h
> -  $(OPENSSL_PATH)/crypto/bn/rsaz_exp.h
> -  $(OPENSSL_PATH)/crypto/comp/comp_local.h
> -  $(OPENSSL_PATH)/crypto/conf/conf_def.h
> -  $(OPENSSL_PATH)/crypto/conf/conf_local.h
> -  $(OPENSSL_PATH)/crypto/dh/dh_local.h
> -  $(OPENSSL_PATH)/crypto/dso/dso_local.h
> -  $(OPENSSL_PATH)/crypto/ec/ec_local.h
> |*|*|*|gEfiCryptoPkgTokenSpaceGuid.PcdOpensslEcEnabled
> -  $(OPENSSL_PATH)/crypto/ec/curve448/curve448_local.h
> |*|*|*|gEfiCryptoPkgTokenSpaceGuid.PcdOpensslEcEnabled
> -  $(OPENSSL_PATH)/crypto/ec/curve448/curve448utils.h
> |*|*|*|gEfiCryptoPkgTokenSpaceGuid.PcdOpensslEcEnabled
> -  $(OPENSSL_PATH)/crypto/ec/curve448/ed448.h
> |*|*|*|gEfiCryptoPkgTokenSpaceGuid.PcdOpensslEcEnabled
> -  $(OPENSSL_PATH)/crypto/ec/curve448/field.h
> |*|*|*|gEfiCryptoPkgTokenSpaceGuid.PcdOpensslEcEnabled
> -  $(OPENSSL_PATH)/crypto/ec/curve448/point_448.h
> |*|*|*|gEfiCryptoPkgTokenSpaceGuid.PcdOpensslEcEnabled
> -  $(OPENSSL_PATH)/crypto/ec/curve448/word.h
> |*|*|*|gEfiCryptoPkgTokenSpaceGuid.PcdOpensslEcEnabled
> -  $(OPENSSL_PATH)/crypto/ec/curve448/arch_32/arch_intrinsics.h
> |*|*|*|gEfiCryptoPkgTokenSpaceGuid.PcdOpensslEcEnabled
> -  $(OPENSSL_PATH)/crypto/ec/curve448/arch_32/f_impl.h
> |*|*|*|gEfiCryptoPkgTokenSpaceGuid.PcdOpensslEcEnabled
> -  $(OPENSSL_PATH)/crypto/evp/evp_local.h
> -  $(OPENSSL_PATH)/crypto/hmac/hmac_local.h
> -  $(OPENSSL_PATH)/crypto/lhash/lhash_local.h
> -  $(OPENSSL_PATH)/crypto/md5/md5_local.h
> -  $(OPENSSL_PATH)/crypto/modes/modes_local.h
> -  $(OPENSSL_PATH)/crypto/objects/obj_dat.h
> -  $(OPENSSL_PATH)/crypto/objects/obj_local.h
> -  $(OPENSSL_PATH)/crypto/objects/obj_xref.h
> -  $(OPENSSL_PATH)/crypto/ocsp/ocsp_local.h
> -  $(OPENSSL_PATH)/crypto/pkcs12/p12_local.h
> -  $(OPENSSL_PATH)/crypto/rand/rand_local.h
> -  $(OPENSSL_PATH)/crypto/rsa/rsa_local.h
> -  $(OPENSSL_PATH)/crypto/sha/sha_local.h
> -  $(OPENSSL_PATH)/crypto/siphash/siphash_local.h
> -  $(OPENSSL_PATH)/crypto/sm3/sm3_local.h
> -  $(OPENSSL_PATH)/crypto/store/store_local.h
> -  $(OPENSSL_PATH)/crypto/ui/ui_local.h
> -  $(OPENSSL_PATH)/crypto/x509/x509_local.h
> -  $(OPENSSL_PATH)/crypto/x509v3/ext_dat.h
> -  $(OPENSSL_PATH)/crypto/x509v3/pcy_local.h
> -  $(OPENSSL_PATH)/crypto/x509v3/standard_exts.h
> -  $(OPENSSL_PATH)/crypto/x509v3/v3_admis.h
> -  $(OPENSSL_PATH)/ssl/bio_ssl.c
> -  $(OPENSSL_PATH)/ssl/d1_lib.c
> -  $(OPENSSL_PATH)/ssl/d1_msg.c
> -  $(OPENSSL_PATH)/ssl/d1_srtp.c
> -  $(OPENSSL_PATH)/ssl/methods.c
> -  $(OPENSSL_PATH)/ssl/packet.c
> -  $(OPENSSL_PATH)/ssl/pqueue.c
> -  $(OPENSSL_PATH)/ssl/record/dtls1_bitmap.c
> -  $(OPENSSL_PATH)/ssl/record/rec_layer_d1.c
> -  $(OPENSSL_PATH)/ssl/record/rec_layer_s3.c
> -  $(OPENSSL_PATH)/ssl/record/ssl3_buffer.c
> -  $(OPENSSL_PATH)/ssl/record/ssl3_record.c
> -  $(OPENSSL_PATH)/ssl/record/ssl3_record_tls13.c
> -  $(OPENSSL_PATH)/ssl/s3_cbc.c
> -  $(OPENSSL_PATH)/ssl/s3_enc.c
> -  $(OPENSSL_PATH)/ssl/s3_lib.c
> -  $(OPENSSL_PATH)/ssl/s3_msg.c
> -  $(OPENSSL_PATH)/ssl/ssl_asn1.c
> -  $(OPENSSL_PATH)/ssl/ssl_cert.c
> -  $(OPENSSL_PATH)/ssl/ssl_ciph.c
> -  $(OPENSSL_PATH)/ssl/ssl_conf.c
> -  $(OPENSSL_PATH)/ssl/ssl_err.c
> -  $(OPENSSL_PATH)/ssl/ssl_init.c
> -  $(OPENSSL_PATH)/ssl/ssl_lib.c
> -  $(OPENSSL_PATH)/ssl/ssl_mcnf.c
> -  $(OPENSSL_PATH)/ssl/ssl_rsa.c
> -  $(OPENSSL_PATH)/ssl/ssl_sess.c
> -  $(OPENSSL_PATH)/ssl/ssl_stat.c
> -  $(OPENSSL_PATH)/ssl/ssl_txt.c
> -  $(OPENSSL_PATH)/ssl/ssl_utst.c
> -  $(OPENSSL_PATH)/ssl/statem/extensions.c
> -  $(OPENSSL_PATH)/ssl/statem/extensions_clnt.c
> -  $(OPENSSL_PATH)/ssl/statem/extensions_cust.c
> -  $(OPENSSL_PATH)/ssl/statem/extensions_srvr.c
> -  $(OPENSSL_PATH)/ssl/statem/statem.c
> -  $(OPENSSL_PATH)/ssl/statem/statem_clnt.c
> -  $(OPENSSL_PATH)/ssl/statem/statem_dtls.c
> -  $(OPENSSL_PATH)/ssl/statem/statem_lib.c
> -  $(OPENSSL_PATH)/ssl/statem/statem_srvr.c
> -  $(OPENSSL_PATH)/ssl/t1_enc.c
> -  $(OPENSSL_PATH)/ssl/t1_lib.c
> -  $(OPENSSL_PATH)/ssl/t1_trce.c
> -  $(OPENSSL_PATH)/ssl/tls13_enc.c
> -  $(OPENSSL_PATH)/ssl/tls_srp.c
> -  $(OPENSSL_PATH)/ssl/packet_local.h
> -  $(OPENSSL_PATH)/ssl/ssl_cert_table.h
> -  $(OPENSSL_PATH)/ssl/ssl_local.h
> -  $(OPENSSL_PATH)/ssl/record/record.h
> -  $(OPENSSL_PATH)/ssl/record/record_local.h
> -  $(OPENSSL_PATH)/ssl/statem/statem.h
> -  $(OPENSSL_PATH)/ssl/statem/statem_local.h
> -# Autogenerated files list ends here
> -  buildinf.h
> -  ossl_store.c
> -  rand_pool.c
> -  X64/ApiHooks.c
> -
> -[Packages]
> -  MdePkg/MdePkg.dec
> -  CryptoPkg/CryptoPkg.dec
> -
> -[LibraryClasses]
> -  BaseLib
> -  DebugLib
> -  RngLib
> -  PrintLib
> -
> -[FixedPcd]
> -  gEfiCryptoPkgTokenSpaceGuid.PcdOpensslEcEnabled      ## CONSUMES
> -
> -[BuildOptions]
> -  #
> -  # Disables the following Visual Studio compiler warnings brought by
> openssl source,
> -  # so we do not break the build with /WX option:
> -  #   C4090: 'function' : different 'const' qualifiers
> -  #   C4132: 'object' : const object should be initialized (tls13_enc.c)
> -  #   C4210: nonstandard extension used: function given file scope
> -  #   C4244: conversion from type1 to type2, possible loss of data
> -  #   C4245: conversion from type1 to type2, signed/unsigned mismatch
> -  #   C4267: conversion from size_t to type, possible loss of data
> -  #   C4306: 'identifier' : conversion from 'type1' to 'type2' of greater
> size
> -  #   C4310: cast truncates constant value
> -  #   C4389: 'operator' : signed/unsigned mismatch (xxxx)
> -  #   C4700: uninitialized local variable 'name' used. (conf_sap.c(71))
> -  #   C4702: unreachable code
> -  #   C4706: assignment within conditional expression
> -  #   C4819: The file contains a character that cannot be represented in the
> current code page
> -  #
> -  MSFT:*_*_X64_CC_FLAGS    = -U_WIN32 -U_WIN64 -U_MSC_VER $(OPENSSL_FLAGS)
> $(OPENSSL_FLAGS_CONFIG) /wd4090 /wd4132 /wd4210 /wd4244 /wd4245 /wd4267
> /wd4306 /wd4310 /wd4700 /wd4389 /wd4702 /wd4706 /wd4819
> -
> -  INTEL:*_*_X64_CC_FLAGS   = -U_WIN32 -U_WIN64 -U_MSC_VER -U__ICC
> $(OPENSSL_FLAGS) $(OPENSSL_FLAGS_CONFIG) /w
> -
> -  #
> -  # Suppress the following build warnings in openssl so we don't break the
> build with -Werror
> -  #   -Werror=maybe-uninitialized: there exist some other paths for which
> the variable is not initialized.
> -  #   -Werror=format: Check calls to printf and scanf, etc., to make sure
> that the arguments supplied have
> -  #                   types appropriate to the format string specified.
> -  #   -Werror=unused-but-set-variable: Warn whenever a local variable is
> assigned to, but otherwise unused (aside from its declaration).
> -  #
> -  GCC:*_*_X64_CC_FLAGS     = -UWIN32 -U_WIN32 -U_WIN64 $(OPENSSL_FLAGS)
> $(OPENSSL_FLAGS_CONFIG) -Wno-error=maybe-uninitialized -Wno-error=format -
> Wno-format -Wno-error=unused-but-set-variable -DNO_MSABI_VA_FUNCS
> -
> -  # suppress the following warnings in openssl so we don't break the build
> with warnings-as-errors:
> -  # 1295: Deprecated declaration <entity> - give arg types
> -  #  550: <entity> was set but never used
> -  # 1293: assignment in condition
> -  #  111: statement is unreachable (invariably "break;" after "return X;" in
> case statement)
> -  #   68: integer conversion resulted in a change of sign ("if (Status == -
> 1)")
> -  #  177: <entity> was declared but never referenced
> -  #  223: function <entity> declared implicitly
> -  #  144: a value of type <type> cannot be used to initialize an entity of
> type <type>
> -  #  513: a value of type <type> cannot be assigned to an entity of type
> <type>
> -  #  188: enumerated type mixed with another type (i.e. passing an integer
> as an enum without a cast)
> -  # 1296: Extended constant initialiser used
> -  #  128: loop is not reachable - may be emitted inappropriately if code
> follows a conditional return
> -  #       from the function that evaluates to true at compile time
> -  #  546: transfer of control bypasses initialization - may be emitted
> inappropriately if the uninitialized
> -  #       variable is never referenced after the jump
> -  #    1: ignore "#1-D: last line of file ends without a newline"
> -  # 3017: <entity> may be used before being set (NOTE: This was fixed in
> OpenSSL 1.1 HEAD with
> -  #       commit d9b8b89bec4480de3a10bdaf9425db371c19145b, and can be
> dropped then.)
> -  XCODE:*_*_X64_CC_FLAGS    = -mmmx -msse -U_WIN32 -U_WIN64 $(OPENSSL_FLAGS)
> $(OPENSSL_FLAGS_CONFIG) -w -std=c99 -Wno-error=uninitialized
> diff --git a/CryptoPkg/Library/OpensslLib/OpensslLibX64Gcc.inf
> b/CryptoPkg/Library/OpensslLib/OpensslLibX64Gcc.inf
> deleted file mode 100644
> index 0f1b4b16f8b1..000000000000
> --- a/CryptoPkg/Library/OpensslLib/OpensslLibX64Gcc.inf
> +++ /dev/null
> @@ -1,706 +0,0 @@
> -## @file
> -#  This module provides OpenSSL Library implementation.
> -#
> -#  Copyright (c) 2010 - 2020, Intel Corporation. All rights reserved.<BR>
> -#  (C) Copyright 2020 Hewlett Packard Enterprise Development LP<BR>
> -#  SPDX-License-Identifier: BSD-2-Clause-Patent
> -#
> -##
> -
> -[Defines]
> -  INF_VERSION                    = 0x00010005
> -  BASE_NAME                      = OpensslLibX64Gcc
> -  MODULE_UNI_FILE                = OpensslLib.uni
> -  FILE_GUID                      = DD90DB9D-6A3F-4F2B-87BF-A8F2BBEF982F
> -  MODULE_TYPE                    = BASE
> -  VERSION_STRING                 = 1.0
> -  LIBRARY_CLASS                  = OpensslLib
> -  DEFINE OPENSSL_PATH            = openssl
> -  DEFINE OPENSSL_FLAGS           = -DL_ENDIAN -DOPENSSL_SMALL_FOOTPRINT -
> D_CRT_SECURE_NO_DEPRECATE -D_CRT_NONSTDC_NO_DEPRECATE
> -  DEFINE OPENSSL_FLAGS_CONFIG    = -DOPENSSL_CPUID_OBJ -DSHA1_ASM -
> DSHA256_ASM -DSHA512_ASM -DAESNI_ASM -DVPAES_ASM -DGHASH_ASM
> -  CONSTRUCTOR                    = OpensslLibConstructor
> -
> -#
> -#  VALID_ARCHITECTURES           = X64
> -#
> -
> -[Sources.X64]
> -  OpensslLibConstructor.c
> -  $(OPENSSL_PATH)/e_os.h
> -  $(OPENSSL_PATH)/ms/uplink.h
> -# Autogenerated files list starts here
> -  X64Gcc/crypto/aes/aesni-mb-x86_64.S
> -  X64Gcc/crypto/aes/aesni-sha1-x86_64.S
> -  X64Gcc/crypto/aes/aesni-sha256-x86_64.S
> -  X64Gcc/crypto/aes/aesni-x86_64.S
> -  X64Gcc/crypto/aes/vpaes-x86_64.S
> -  X64Gcc/crypto/modes/aesni-gcm-x86_64.S
> -  X64Gcc/crypto/modes/ghash-x86_64.S
> -  X64Gcc/crypto/sha/sha1-mb-x86_64.S
> -  X64Gcc/crypto/sha/sha1-x86_64.S
> -  X64Gcc/crypto/sha/sha256-mb-x86_64.S
> -  X64Gcc/crypto/sha/sha256-x86_64.S
> -  X64Gcc/crypto/sha/sha512-x86_64.S
> -  X64Gcc/crypto/x86_64cpuid.S
> -  $(OPENSSL_PATH)/crypto/aes/aes_cbc.c
> -  $(OPENSSL_PATH)/crypto/aes/aes_cfb.c
> -  $(OPENSSL_PATH)/crypto/aes/aes_core.c
> -  $(OPENSSL_PATH)/crypto/aes/aes_ige.c
> -  $(OPENSSL_PATH)/crypto/aes/aes_misc.c
> -  $(OPENSSL_PATH)/crypto/aes/aes_ofb.c
> -  $(OPENSSL_PATH)/crypto/aes/aes_wrap.c
> -  $(OPENSSL_PATH)/crypto/aria/aria.c
> -  $(OPENSSL_PATH)/crypto/asn1/a_bitstr.c
> -  $(OPENSSL_PATH)/crypto/asn1/a_d2i_fp.c
> -  $(OPENSSL_PATH)/crypto/asn1/a_digest.c
> -  $(OPENSSL_PATH)/crypto/asn1/a_dup.c
> -  $(OPENSSL_PATH)/crypto/asn1/a_gentm.c
> -  $(OPENSSL_PATH)/crypto/asn1/a_i2d_fp.c
> -  $(OPENSSL_PATH)/crypto/asn1/a_int.c
> -  $(OPENSSL_PATH)/crypto/asn1/a_mbstr.c
> -  $(OPENSSL_PATH)/crypto/asn1/a_object.c
> -  $(OPENSSL_PATH)/crypto/asn1/a_octet.c
> -  $(OPENSSL_PATH)/crypto/asn1/a_print.c
> -  $(OPENSSL_PATH)/crypto/asn1/a_sign.c
> -  $(OPENSSL_PATH)/crypto/asn1/a_strex.c
> -  $(OPENSSL_PATH)/crypto/asn1/a_strnid.c
> -  $(OPENSSL_PATH)/crypto/asn1/a_time.c
> -  $(OPENSSL_PATH)/crypto/asn1/a_type.c
> -  $(OPENSSL_PATH)/crypto/asn1/a_utctm.c
> -  $(OPENSSL_PATH)/crypto/asn1/a_utf8.c
> -  $(OPENSSL_PATH)/crypto/asn1/a_verify.c
> -  $(OPENSSL_PATH)/crypto/asn1/ameth_lib.c
> -  $(OPENSSL_PATH)/crypto/asn1/asn1_err.c
> -  $(OPENSSL_PATH)/crypto/asn1/asn1_gen.c
> -  $(OPENSSL_PATH)/crypto/asn1/asn1_item_list.c
> -  $(OPENSSL_PATH)/crypto/asn1/asn1_lib.c
> -  $(OPENSSL_PATH)/crypto/asn1/asn1_par.c
> -  $(OPENSSL_PATH)/crypto/asn1/asn_mime.c
> -  $(OPENSSL_PATH)/crypto/asn1/asn_moid.c
> -  $(OPENSSL_PATH)/crypto/asn1/asn_mstbl.c
> -  $(OPENSSL_PATH)/crypto/asn1/asn_pack.c
> -  $(OPENSSL_PATH)/crypto/asn1/bio_asn1.c
> -  $(OPENSSL_PATH)/crypto/asn1/bio_ndef.c
> -  $(OPENSSL_PATH)/crypto/asn1/d2i_pr.c
> -  $(OPENSSL_PATH)/crypto/asn1/d2i_pu.c
> -  $(OPENSSL_PATH)/crypto/asn1/evp_asn1.c
> -  $(OPENSSL_PATH)/crypto/asn1/f_int.c
> -  $(OPENSSL_PATH)/crypto/asn1/f_string.c
> -  $(OPENSSL_PATH)/crypto/asn1/i2d_pr.c
> -  $(OPENSSL_PATH)/crypto/asn1/i2d_pu.c
> -  $(OPENSSL_PATH)/crypto/asn1/n_pkey.c
> -  $(OPENSSL_PATH)/crypto/asn1/nsseq.c
> -  $(OPENSSL_PATH)/crypto/asn1/p5_pbe.c
> -  $(OPENSSL_PATH)/crypto/asn1/p5_pbev2.c
> -  $(OPENSSL_PATH)/crypto/asn1/p5_scrypt.c
> -  $(OPENSSL_PATH)/crypto/asn1/p8_pkey.c
> -  $(OPENSSL_PATH)/crypto/asn1/t_bitst.c
> -  $(OPENSSL_PATH)/crypto/asn1/t_pkey.c
> -  $(OPENSSL_PATH)/crypto/asn1/t_spki.c
> -  $(OPENSSL_PATH)/crypto/asn1/tasn_dec.c
> -  $(OPENSSL_PATH)/crypto/asn1/tasn_enc.c
> -  $(OPENSSL_PATH)/crypto/asn1/tasn_fre.c
> -  $(OPENSSL_PATH)/crypto/asn1/tasn_new.c
> -  $(OPENSSL_PATH)/crypto/asn1/tasn_prn.c
> -  $(OPENSSL_PATH)/crypto/asn1/tasn_scn.c
> -  $(OPENSSL_PATH)/crypto/asn1/tasn_typ.c
> -  $(OPENSSL_PATH)/crypto/asn1/tasn_utl.c
> -  $(OPENSSL_PATH)/crypto/asn1/x_algor.c
> -  $(OPENSSL_PATH)/crypto/asn1/x_bignum.c
> -  $(OPENSSL_PATH)/crypto/asn1/x_info.c
> -  $(OPENSSL_PATH)/crypto/asn1/x_int64.c
> -  $(OPENSSL_PATH)/crypto/asn1/x_long.c
> -  $(OPENSSL_PATH)/crypto/asn1/x_pkey.c
> -  $(OPENSSL_PATH)/crypto/asn1/x_sig.c
> -  $(OPENSSL_PATH)/crypto/asn1/x_spki.c
> -  $(OPENSSL_PATH)/crypto/asn1/x_val.c
> -  $(OPENSSL_PATH)/crypto/async/arch/async_null.c
> -  $(OPENSSL_PATH)/crypto/async/arch/async_posix.c
> -  $(OPENSSL_PATH)/crypto/async/arch/async_win.c
> -  $(OPENSSL_PATH)/crypto/async/async.c
> -  $(OPENSSL_PATH)/crypto/async/async_err.c
> -  $(OPENSSL_PATH)/crypto/async/async_wait.c
> -  $(OPENSSL_PATH)/crypto/bio/b_addr.c
> -  $(OPENSSL_PATH)/crypto/bio/b_dump.c
> -  $(OPENSSL_PATH)/crypto/bio/b_sock.c
> -  $(OPENSSL_PATH)/crypto/bio/b_sock2.c
> -  $(OPENSSL_PATH)/crypto/bio/bf_buff.c
> -  $(OPENSSL_PATH)/crypto/bio/bf_lbuf.c
> -  $(OPENSSL_PATH)/crypto/bio/bf_nbio.c
> -  $(OPENSSL_PATH)/crypto/bio/bf_null.c
> -  $(OPENSSL_PATH)/crypto/bio/bio_cb.c
> -  $(OPENSSL_PATH)/crypto/bio/bio_err.c
> -  $(OPENSSL_PATH)/crypto/bio/bio_lib.c
> -  $(OPENSSL_PATH)/crypto/bio/bio_meth.c
> -  $(OPENSSL_PATH)/crypto/bio/bss_acpt.c
> -  $(OPENSSL_PATH)/crypto/bio/bss_bio.c
> -  $(OPENSSL_PATH)/crypto/bio/bss_conn.c
> -  $(OPENSSL_PATH)/crypto/bio/bss_dgram.c
> -  $(OPENSSL_PATH)/crypto/bio/bss_fd.c
> -  $(OPENSSL_PATH)/crypto/bio/bss_file.c
> -  $(OPENSSL_PATH)/crypto/bio/bss_log.c
> -  $(OPENSSL_PATH)/crypto/bio/bss_mem.c
> -  $(OPENSSL_PATH)/crypto/bio/bss_null.c
> -  $(OPENSSL_PATH)/crypto/bio/bss_sock.c
> -  $(OPENSSL_PATH)/crypto/bn/bn_add.c
> -  $(OPENSSL_PATH)/crypto/bn/bn_asm.c
> -  $(OPENSSL_PATH)/crypto/bn/bn_blind.c
> -  $(OPENSSL_PATH)/crypto/bn/bn_const.c
> -  $(OPENSSL_PATH)/crypto/bn/bn_ctx.c
> -  $(OPENSSL_PATH)/crypto/bn/bn_depr.c
> -  $(OPENSSL_PATH)/crypto/bn/bn_dh.c
> -  $(OPENSSL_PATH)/crypto/bn/bn_div.c
> -  $(OPENSSL_PATH)/crypto/bn/bn_err.c
> -  $(OPENSSL_PATH)/crypto/bn/bn_exp.c
> -  $(OPENSSL_PATH)/crypto/bn/bn_exp2.c
> -  $(OPENSSL_PATH)/crypto/bn/bn_gcd.c
> -  $(OPENSSL_PATH)/crypto/bn/bn_gf2m.c
> -  $(OPENSSL_PATH)/crypto/bn/bn_intern.c
> -  $(OPENSSL_PATH)/crypto/bn/bn_kron.c
> -  $(OPENSSL_PATH)/crypto/bn/bn_lib.c
> -  $(OPENSSL_PATH)/crypto/bn/bn_mod.c
> -  $(OPENSSL_PATH)/crypto/bn/bn_mont.c
> -  $(OPENSSL_PATH)/crypto/bn/bn_mpi.c
> -  $(OPENSSL_PATH)/crypto/bn/bn_mul.c
> -  $(OPENSSL_PATH)/crypto/bn/bn_nist.c
> -  $(OPENSSL_PATH)/crypto/bn/bn_prime.c
> -  $(OPENSSL_PATH)/crypto/bn/bn_print.c
> -  $(OPENSSL_PATH)/crypto/bn/bn_rand.c
> -  $(OPENSSL_PATH)/crypto/bn/bn_recp.c
> -  $(OPENSSL_PATH)/crypto/bn/bn_shift.c
> -  $(OPENSSL_PATH)/crypto/bn/bn_sqr.c
> -  $(OPENSSL_PATH)/crypto/bn/bn_sqrt.c
> -  $(OPENSSL_PATH)/crypto/bn/bn_srp.c
> -  $(OPENSSL_PATH)/crypto/bn/bn_word.c
> -  $(OPENSSL_PATH)/crypto/bn/bn_x931p.c
> -  $(OPENSSL_PATH)/crypto/buffer/buf_err.c
> -  $(OPENSSL_PATH)/crypto/buffer/buffer.c
> -  $(OPENSSL_PATH)/crypto/cmac/cm_ameth.c
> -  $(OPENSSL_PATH)/crypto/cmac/cm_pmeth.c
> -  $(OPENSSL_PATH)/crypto/cmac/cmac.c
> -  $(OPENSSL_PATH)/crypto/comp/c_zlib.c
> -  $(OPENSSL_PATH)/crypto/comp/comp_err.c
> -  $(OPENSSL_PATH)/crypto/comp/comp_lib.c
> -  $(OPENSSL_PATH)/crypto/conf/conf_api.c
> -  $(OPENSSL_PATH)/crypto/conf/conf_def.c
> -  $(OPENSSL_PATH)/crypto/conf/conf_err.c
> -  $(OPENSSL_PATH)/crypto/conf/conf_lib.c
> -  $(OPENSSL_PATH)/crypto/conf/conf_mall.c
> -  $(OPENSSL_PATH)/crypto/conf/conf_mod.c
> -  $(OPENSSL_PATH)/crypto/conf/conf_sap.c
> -  $(OPENSSL_PATH)/crypto/conf/conf_ssl.c
> -  $(OPENSSL_PATH)/crypto/cpt_err.c
> -  $(OPENSSL_PATH)/crypto/cryptlib.c
> -  $(OPENSSL_PATH)/crypto/ctype.c
> -  $(OPENSSL_PATH)/crypto/cversion.c
> -  $(OPENSSL_PATH)/crypto/dh/dh_ameth.c
> -  $(OPENSSL_PATH)/crypto/dh/dh_asn1.c
> -  $(OPENSSL_PATH)/crypto/dh/dh_check.c
> -  $(OPENSSL_PATH)/crypto/dh/dh_depr.c
> -  $(OPENSSL_PATH)/crypto/dh/dh_err.c
> -  $(OPENSSL_PATH)/crypto/dh/dh_gen.c
> -  $(OPENSSL_PATH)/crypto/dh/dh_kdf.c
> -  $(OPENSSL_PATH)/crypto/dh/dh_key.c
> -  $(OPENSSL_PATH)/crypto/dh/dh_lib.c
> -  $(OPENSSL_PATH)/crypto/dh/dh_meth.c
> -  $(OPENSSL_PATH)/crypto/dh/dh_pmeth.c
> -  $(OPENSSL_PATH)/crypto/dh/dh_prn.c
> -  $(OPENSSL_PATH)/crypto/dh/dh_rfc5114.c
> -  $(OPENSSL_PATH)/crypto/dh/dh_rfc7919.c
> -  $(OPENSSL_PATH)/crypto/dso/dso_dl.c
> -  $(OPENSSL_PATH)/crypto/dso/dso_dlfcn.c
> -  $(OPENSSL_PATH)/crypto/dso/dso_err.c
> -  $(OPENSSL_PATH)/crypto/dso/dso_lib.c
> -  $(OPENSSL_PATH)/crypto/dso/dso_openssl.c
> -  $(OPENSSL_PATH)/crypto/dso/dso_vms.c
> -  $(OPENSSL_PATH)/crypto/dso/dso_win32.c
> -  $(OPENSSL_PATH)/crypto/ebcdic.c
> -  $(OPENSSL_PATH)/crypto/ec/curve25519.c
> |*|*|*|gEfiCryptoPkgTokenSpaceGuid.PcdOpensslEcEnabled
> -  $(OPENSSL_PATH)/crypto/ec/curve448/arch_32/f_impl.c
> |*|*|*|gEfiCryptoPkgTokenSpaceGuid.PcdOpensslEcEnabled
> -  $(OPENSSL_PATH)/crypto/ec/curve448/curve448.c
> |*|*|*|gEfiCryptoPkgTokenSpaceGuid.PcdOpensslEcEnabled
> -  $(OPENSSL_PATH)/crypto/ec/curve448/curve448_tables.c
> |*|*|*|gEfiCryptoPkgTokenSpaceGuid.PcdOpensslEcEnabled
> -  $(OPENSSL_PATH)/crypto/ec/curve448/eddsa.c
> |*|*|*|gEfiCryptoPkgTokenSpaceGuid.PcdOpensslEcEnabled
> -  $(OPENSSL_PATH)/crypto/ec/curve448/f_generic.c
> |*|*|*|gEfiCryptoPkgTokenSpaceGuid.PcdOpensslEcEnabled
> -  $(OPENSSL_PATH)/crypto/ec/curve448/scalar.c
> |*|*|*|gEfiCryptoPkgTokenSpaceGuid.PcdOpensslEcEnabled
> -  $(OPENSSL_PATH)/crypto/ec/ec2_oct.c
> |*|*|*|gEfiCryptoPkgTokenSpaceGuid.PcdOpensslEcEnabled
> -  $(OPENSSL_PATH)/crypto/ec/ec2_smpl.c
> |*|*|*|gEfiCryptoPkgTokenSpaceGuid.PcdOpensslEcEnabled
> -  $(OPENSSL_PATH)/crypto/ec/ec_ameth.c
> |*|*|*|gEfiCryptoPkgTokenSpaceGuid.PcdOpensslEcEnabled
> -  $(OPENSSL_PATH)/crypto/ec/ec_asn1.c
> |*|*|*|gEfiCryptoPkgTokenSpaceGuid.PcdOpensslEcEnabled
> -  $(OPENSSL_PATH)/crypto/ec/ec_check.c
> |*|*|*|gEfiCryptoPkgTokenSpaceGuid.PcdOpensslEcEnabled
> -  $(OPENSSL_PATH)/crypto/ec/ec_curve.c
> |*|*|*|gEfiCryptoPkgTokenSpaceGuid.PcdOpensslEcEnabled
> -  $(OPENSSL_PATH)/crypto/ec/ec_cvt.c
> |*|*|*|gEfiCryptoPkgTokenSpaceGuid.PcdOpensslEcEnabled
> -  $(OPENSSL_PATH)/crypto/ec/ec_err.c
> |*|*|*|gEfiCryptoPkgTokenSpaceGuid.PcdOpensslEcEnabled
> -  $(OPENSSL_PATH)/crypto/ec/ec_key.c
> |*|*|*|gEfiCryptoPkgTokenSpaceGuid.PcdOpensslEcEnabled
> -  $(OPENSSL_PATH)/crypto/ec/ec_kmeth.c
> |*|*|*|gEfiCryptoPkgTokenSpaceGuid.PcdOpensslEcEnabled
> -  $(OPENSSL_PATH)/crypto/ec/ec_lib.c
> |*|*|*|gEfiCryptoPkgTokenSpaceGuid.PcdOpensslEcEnabled
> -  $(OPENSSL_PATH)/crypto/ec/ec_mult.c
> |*|*|*|gEfiCryptoPkgTokenSpaceGuid.PcdOpensslEcEnabled
> -  $(OPENSSL_PATH)/crypto/ec/ec_oct.c
> |*|*|*|gEfiCryptoPkgTokenSpaceGuid.PcdOpensslEcEnabled
> -  $(OPENSSL_PATH)/crypto/ec/ec_pmeth.c
> |*|*|*|gEfiCryptoPkgTokenSpaceGuid.PcdOpensslEcEnabled
> -  $(OPENSSL_PATH)/crypto/ec/ec_print.c
> |*|*|*|gEfiCryptoPkgTokenSpaceGuid.PcdOpensslEcEnabled
> -  $(OPENSSL_PATH)/crypto/ec/ecdh_kdf.c
> |*|*|*|gEfiCryptoPkgTokenSpaceGuid.PcdOpensslEcEnabled
> -  $(OPENSSL_PATH)/crypto/ec/ecdh_ossl.c
> |*|*|*|gEfiCryptoPkgTokenSpaceGuid.PcdOpensslEcEnabled
> -  $(OPENSSL_PATH)/crypto/ec/ecdsa_ossl.c
> |*|*|*|gEfiCryptoPkgTokenSpaceGuid.PcdOpensslEcEnabled
> -  $(OPENSSL_PATH)/crypto/ec/ecdsa_sign.c
> |*|*|*|gEfiCryptoPkgTokenSpaceGuid.PcdOpensslEcEnabled
> -  $(OPENSSL_PATH)/crypto/ec/ecdsa_vrf.c
> |*|*|*|gEfiCryptoPkgTokenSpaceGuid.PcdOpensslEcEnabled
> -  $(OPENSSL_PATH)/crypto/ec/eck_prn.c
> |*|*|*|gEfiCryptoPkgTokenSpaceGuid.PcdOpensslEcEnabled
> -  $(OPENSSL_PATH)/crypto/ec/ecp_mont.c
> |*|*|*|gEfiCryptoPkgTokenSpaceGuid.PcdOpensslEcEnabled
> -  $(OPENSSL_PATH)/crypto/ec/ecp_nist.c
> |*|*|*|gEfiCryptoPkgTokenSpaceGuid.PcdOpensslEcEnabled
> -  $(OPENSSL_PATH)/crypto/ec/ecp_nistp224.c
> |*|*|*|gEfiCryptoPkgTokenSpaceGuid.PcdOpensslEcEnabled
> -  $(OPENSSL_PATH)/crypto/ec/ecp_nistp256.c
> |*|*|*|gEfiCryptoPkgTokenSpaceGuid.PcdOpensslEcEnabled
> -  $(OPENSSL_PATH)/crypto/ec/ecp_nistp521.c
> |*|*|*|gEfiCryptoPkgTokenSpaceGuid.PcdOpensslEcEnabled
> -  $(OPENSSL_PATH)/crypto/ec/ecp_nistputil.c
> |*|*|*|gEfiCryptoPkgTokenSpaceGuid.PcdOpensslEcEnabled
> -  $(OPENSSL_PATH)/crypto/ec/ecp_oct.c
> |*|*|*|gEfiCryptoPkgTokenSpaceGuid.PcdOpensslEcEnabled
> -  $(OPENSSL_PATH)/crypto/ec/ecp_smpl.c
> |*|*|*|gEfiCryptoPkgTokenSpaceGuid.PcdOpensslEcEnabled
> -  $(OPENSSL_PATH)/crypto/ec/ecx_meth.c
> |*|*|*|gEfiCryptoPkgTokenSpaceGuid.PcdOpensslEcEnabled
> -  $(OPENSSL_PATH)/crypto/err/err.c
> -  $(OPENSSL_PATH)/crypto/err/err_prn.c
> -  $(OPENSSL_PATH)/crypto/evp/bio_b64.c
> -  $(OPENSSL_PATH)/crypto/evp/bio_enc.c
> -  $(OPENSSL_PATH)/crypto/evp/bio_md.c
> -  $(OPENSSL_PATH)/crypto/evp/bio_ok.c
> -  $(OPENSSL_PATH)/crypto/evp/c_allc.c
> -  $(OPENSSL_PATH)/crypto/evp/c_alld.c
> -  $(OPENSSL_PATH)/crypto/evp/cmeth_lib.c
> -  $(OPENSSL_PATH)/crypto/evp/digest.c
> -  $(OPENSSL_PATH)/crypto/evp/e_aes.c
> -  $(OPENSSL_PATH)/crypto/evp/e_aes_cbc_hmac_sha1.c
> -  $(OPENSSL_PATH)/crypto/evp/e_aes_cbc_hmac_sha256.c
> -  $(OPENSSL_PATH)/crypto/evp/e_aria.c
> -  $(OPENSSL_PATH)/crypto/evp/e_bf.c
> -  $(OPENSSL_PATH)/crypto/evp/e_camellia.c
> -  $(OPENSSL_PATH)/crypto/evp/e_cast.c
> -  $(OPENSSL_PATH)/crypto/evp/e_chacha20_poly1305.c
> -  $(OPENSSL_PATH)/crypto/evp/e_des.c
> -  $(OPENSSL_PATH)/crypto/evp/e_des3.c
> -  $(OPENSSL_PATH)/crypto/evp/e_idea.c
> -  $(OPENSSL_PATH)/crypto/evp/e_null.c
> -  $(OPENSSL_PATH)/crypto/evp/e_old.c
> -  $(OPENSSL_PATH)/crypto/evp/e_rc2.c
> -  $(OPENSSL_PATH)/crypto/evp/e_rc4.c
> -  $(OPENSSL_PATH)/crypto/evp/e_rc4_hmac_md5.c
> -  $(OPENSSL_PATH)/crypto/evp/e_rc5.c
> -  $(OPENSSL_PATH)/crypto/evp/e_seed.c
> -  $(OPENSSL_PATH)/crypto/evp/e_sm4.c
> -  $(OPENSSL_PATH)/crypto/evp/e_xcbc_d.c
> -  $(OPENSSL_PATH)/crypto/evp/encode.c
> -  $(OPENSSL_PATH)/crypto/evp/evp_cnf.c
> -  $(OPENSSL_PATH)/crypto/evp/evp_enc.c
> -  $(OPENSSL_PATH)/crypto/evp/evp_err.c
> -  $(OPENSSL_PATH)/crypto/evp/evp_key.c
> -  $(OPENSSL_PATH)/crypto/evp/evp_lib.c
> -  $(OPENSSL_PATH)/crypto/evp/evp_pbe.c
> -  $(OPENSSL_PATH)/crypto/evp/evp_pkey.c
> -  $(OPENSSL_PATH)/crypto/evp/m_md2.c
> -  $(OPENSSL_PATH)/crypto/evp/m_md4.c
> -  $(OPENSSL_PATH)/crypto/evp/m_md5.c
> -  $(OPENSSL_PATH)/crypto/evp/m_md5_sha1.c
> -  $(OPENSSL_PATH)/crypto/evp/m_mdc2.c
> -  $(OPENSSL_PATH)/crypto/evp/m_null.c
> -  $(OPENSSL_PATH)/crypto/evp/m_ripemd.c
> -  $(OPENSSL_PATH)/crypto/evp/m_sha1.c
> -  $(OPENSSL_PATH)/crypto/evp/m_sha3.c
> -  $(OPENSSL_PATH)/crypto/evp/m_sigver.c
> -  $(OPENSSL_PATH)/crypto/evp/m_wp.c
> -  $(OPENSSL_PATH)/crypto/evp/names.c
> -  $(OPENSSL_PATH)/crypto/evp/p5_crpt.c
> -  $(OPENSSL_PATH)/crypto/evp/p5_crpt2.c
> -  $(OPENSSL_PATH)/crypto/evp/p_dec.c
> -  $(OPENSSL_PATH)/crypto/evp/p_enc.c
> -  $(OPENSSL_PATH)/crypto/evp/p_lib.c
> -  $(OPENSSL_PATH)/crypto/evp/p_open.c
> -  $(OPENSSL_PATH)/crypto/evp/p_seal.c
> -  $(OPENSSL_PATH)/crypto/evp/p_sign.c
> -  $(OPENSSL_PATH)/crypto/evp/p_verify.c
> -  $(OPENSSL_PATH)/crypto/evp/pbe_scrypt.c
> -  $(OPENSSL_PATH)/crypto/evp/pmeth_fn.c
> -  $(OPENSSL_PATH)/crypto/evp/pmeth_gn.c
> -  $(OPENSSL_PATH)/crypto/evp/pmeth_lib.c
> -  $(OPENSSL_PATH)/crypto/ex_data.c
> -  $(OPENSSL_PATH)/crypto/getenv.c
> -  $(OPENSSL_PATH)/crypto/hmac/hm_ameth.c
> -  $(OPENSSL_PATH)/crypto/hmac/hm_pmeth.c
> -  $(OPENSSL_PATH)/crypto/hmac/hmac.c
> -  $(OPENSSL_PATH)/crypto/init.c
> -  $(OPENSSL_PATH)/crypto/kdf/hkdf.c
> -  $(OPENSSL_PATH)/crypto/kdf/kdf_err.c
> -  $(OPENSSL_PATH)/crypto/kdf/scrypt.c
> -  $(OPENSSL_PATH)/crypto/kdf/tls1_prf.c
> -  $(OPENSSL_PATH)/crypto/lhash/lh_stats.c
> -  $(OPENSSL_PATH)/crypto/lhash/lhash.c
> -  $(OPENSSL_PATH)/crypto/md5/md5_dgst.c
> -  $(OPENSSL_PATH)/crypto/md5/md5_one.c
> -  $(OPENSSL_PATH)/crypto/mem.c
> -  $(OPENSSL_PATH)/crypto/mem_dbg.c
> -  $(OPENSSL_PATH)/crypto/mem_sec.c
> -  $(OPENSSL_PATH)/crypto/modes/cbc128.c
> -  $(OPENSSL_PATH)/crypto/modes/ccm128.c
> -  $(OPENSSL_PATH)/crypto/modes/cfb128.c
> -  $(OPENSSL_PATH)/crypto/modes/ctr128.c
> -  $(OPENSSL_PATH)/crypto/modes/cts128.c
> -  $(OPENSSL_PATH)/crypto/modes/gcm128.c
> -  $(OPENSSL_PATH)/crypto/modes/ocb128.c
> -  $(OPENSSL_PATH)/crypto/modes/ofb128.c
> -  $(OPENSSL_PATH)/crypto/modes/wrap128.c
> -  $(OPENSSL_PATH)/crypto/modes/xts128.c
> -  $(OPENSSL_PATH)/crypto/o_dir.c
> -  $(OPENSSL_PATH)/crypto/o_fips.c
> -  $(OPENSSL_PATH)/crypto/o_fopen.c
> -  $(OPENSSL_PATH)/crypto/o_init.c
> -  $(OPENSSL_PATH)/crypto/o_str.c
> -  $(OPENSSL_PATH)/crypto/o_time.c
> -  $(OPENSSL_PATH)/crypto/objects/o_names.c
> -  $(OPENSSL_PATH)/crypto/objects/obj_dat.c
> -  $(OPENSSL_PATH)/crypto/objects/obj_err.c
> -  $(OPENSSL_PATH)/crypto/objects/obj_lib.c
> -  $(OPENSSL_PATH)/crypto/objects/obj_xref.c
> -  $(OPENSSL_PATH)/crypto/ocsp/ocsp_asn.c
> -  $(OPENSSL_PATH)/crypto/ocsp/ocsp_cl.c
> -  $(OPENSSL_PATH)/crypto/ocsp/ocsp_err.c
> -  $(OPENSSL_PATH)/crypto/ocsp/ocsp_ext.c
> -  $(OPENSSL_PATH)/crypto/ocsp/ocsp_ht.c
> -  $(OPENSSL_PATH)/crypto/ocsp/ocsp_lib.c
> -  $(OPENSSL_PATH)/crypto/ocsp/ocsp_prn.c
> -  $(OPENSSL_PATH)/crypto/ocsp/ocsp_srv.c
> -  $(OPENSSL_PATH)/crypto/ocsp/ocsp_vfy.c
> -  $(OPENSSL_PATH)/crypto/ocsp/v3_ocsp.c
> -  $(OPENSSL_PATH)/crypto/pem/pem_all.c
> -  $(OPENSSL_PATH)/crypto/pem/pem_err.c
> -  $(OPENSSL_PATH)/crypto/pem/pem_info.c
> -  $(OPENSSL_PATH)/crypto/pem/pem_lib.c
> -  $(OPENSSL_PATH)/crypto/pem/pem_oth.c
> -  $(OPENSSL_PATH)/crypto/pem/pem_pk8.c
> -  $(OPENSSL_PATH)/crypto/pem/pem_pkey.c
> -  $(OPENSSL_PATH)/crypto/pem/pem_sign.c
> -  $(OPENSSL_PATH)/crypto/pem/pem_x509.c
> -  $(OPENSSL_PATH)/crypto/pem/pem_xaux.c
> -  $(OPENSSL_PATH)/crypto/pem/pvkfmt.c
> -  $(OPENSSL_PATH)/crypto/pkcs12/p12_add.c
> -  $(OPENSSL_PATH)/crypto/pkcs12/p12_asn.c
> -  $(OPENSSL_PATH)/crypto/pkcs12/p12_attr.c
> -  $(OPENSSL_PATH)/crypto/pkcs12/p12_crpt.c
> -  $(OPENSSL_PATH)/crypto/pkcs12/p12_crt.c
> -  $(OPENSSL_PATH)/crypto/pkcs12/p12_decr.c
> -  $(OPENSSL_PATH)/crypto/pkcs12/p12_init.c
> -  $(OPENSSL_PATH)/crypto/pkcs12/p12_key.c
> -  $(OPENSSL_PATH)/crypto/pkcs12/p12_kiss.c
> -  $(OPENSSL_PATH)/crypto/pkcs12/p12_mutl.c
> -  $(OPENSSL_PATH)/crypto/pkcs12/p12_npas.c
> -  $(OPENSSL_PATH)/crypto/pkcs12/p12_p8d.c
> -  $(OPENSSL_PATH)/crypto/pkcs12/p12_p8e.c
> -  $(OPENSSL_PATH)/crypto/pkcs12/p12_sbag.c
> -  $(OPENSSL_PATH)/crypto/pkcs12/p12_utl.c
> -  $(OPENSSL_PATH)/crypto/pkcs12/pk12err.c
> -  $(OPENSSL_PATH)/crypto/pkcs7/bio_pk7.c
> -  $(OPENSSL_PATH)/crypto/pkcs7/pk7_asn1.c
> -  $(OPENSSL_PATH)/crypto/pkcs7/pk7_attr.c
> -  $(OPENSSL_PATH)/crypto/pkcs7/pk7_doit.c
> -  $(OPENSSL_PATH)/crypto/pkcs7/pk7_lib.c
> -  $(OPENSSL_PATH)/crypto/pkcs7/pk7_mime.c
> -  $(OPENSSL_PATH)/crypto/pkcs7/pk7_smime.c
> -  $(OPENSSL_PATH)/crypto/pkcs7/pkcs7err.c
> -  $(OPENSSL_PATH)/crypto/rand/drbg_ctr.c
> -  $(OPENSSL_PATH)/crypto/rand/drbg_lib.c
> -  $(OPENSSL_PATH)/crypto/rand/rand_egd.c
> -  $(OPENSSL_PATH)/crypto/rand/rand_err.c
> -  $(OPENSSL_PATH)/crypto/rand/rand_lib.c
> -  $(OPENSSL_PATH)/crypto/rand/rand_unix.c
> -  $(OPENSSL_PATH)/crypto/rand/rand_vms.c
> -  $(OPENSSL_PATH)/crypto/rand/rand_win.c
> -  $(OPENSSL_PATH)/crypto/rsa/rsa_ameth.c
> -  $(OPENSSL_PATH)/crypto/rsa/rsa_asn1.c
> -  $(OPENSSL_PATH)/crypto/rsa/rsa_chk.c
> -  $(OPENSSL_PATH)/crypto/rsa/rsa_crpt.c
> -  $(OPENSSL_PATH)/crypto/rsa/rsa_depr.c
> -  $(OPENSSL_PATH)/crypto/rsa/rsa_err.c
> -  $(OPENSSL_PATH)/crypto/rsa/rsa_gen.c
> -  $(OPENSSL_PATH)/crypto/rsa/rsa_lib.c
> -  $(OPENSSL_PATH)/crypto/rsa/rsa_meth.c
> -  $(OPENSSL_PATH)/crypto/rsa/rsa_mp.c
> -  $(OPENSSL_PATH)/crypto/rsa/rsa_none.c
> -  $(OPENSSL_PATH)/crypto/rsa/rsa_oaep.c
> -  $(OPENSSL_PATH)/crypto/rsa/rsa_ossl.c
> -  $(OPENSSL_PATH)/crypto/rsa/rsa_pk1.c
> -  $(OPENSSL_PATH)/crypto/rsa/rsa_pmeth.c
> -  $(OPENSSL_PATH)/crypto/rsa/rsa_prn.c
> -  $(OPENSSL_PATH)/crypto/rsa/rsa_pss.c
> -  $(OPENSSL_PATH)/crypto/rsa/rsa_saos.c
> -  $(OPENSSL_PATH)/crypto/rsa/rsa_sign.c
> -  $(OPENSSL_PATH)/crypto/rsa/rsa_ssl.c
> -  $(OPENSSL_PATH)/crypto/rsa/rsa_x931.c
> -  $(OPENSSL_PATH)/crypto/rsa/rsa_x931g.c
> -  $(OPENSSL_PATH)/crypto/sha/keccak1600.c
> -  $(OPENSSL_PATH)/crypto/sha/sha1_one.c
> -  $(OPENSSL_PATH)/crypto/sha/sha1dgst.c
> -  $(OPENSSL_PATH)/crypto/sha/sha256.c
> -  $(OPENSSL_PATH)/crypto/sha/sha512.c
> -  $(OPENSSL_PATH)/crypto/siphash/siphash.c
> -  $(OPENSSL_PATH)/crypto/siphash/siphash_ameth.c
> -  $(OPENSSL_PATH)/crypto/siphash/siphash_pmeth.c
> -  $(OPENSSL_PATH)/crypto/sm2/sm2_crypt.c
> |*|*|*|gEfiCryptoPkgTokenSpaceGuid.PcdOpensslEcEnabled
> -  $(OPENSSL_PATH)/crypto/sm2/sm2_err.c
> |*|*|*|gEfiCryptoPkgTokenSpaceGuid.PcdOpensslEcEnabled
> -  $(OPENSSL_PATH)/crypto/sm2/sm2_pmeth.c
> |*|*|*|gEfiCryptoPkgTokenSpaceGuid.PcdOpensslEcEnabled
> -  $(OPENSSL_PATH)/crypto/sm2/sm2_sign.c
> |*|*|*|gEfiCryptoPkgTokenSpaceGuid.PcdOpensslEcEnabled
> -  $(OPENSSL_PATH)/crypto/sm3/m_sm3.c
> -  $(OPENSSL_PATH)/crypto/sm3/sm3.c
> -  $(OPENSSL_PATH)/crypto/sm4/sm4.c
> -  $(OPENSSL_PATH)/crypto/stack/stack.c
> -  $(OPENSSL_PATH)/crypto/threads_none.c
> -  $(OPENSSL_PATH)/crypto/threads_pthread.c
> -  $(OPENSSL_PATH)/crypto/threads_win.c
> -  $(OPENSSL_PATH)/crypto/txt_db/txt_db.c
> -  $(OPENSSL_PATH)/crypto/ui/ui_err.c
> -  $(OPENSSL_PATH)/crypto/ui/ui_lib.c
> -  $(OPENSSL_PATH)/crypto/ui/ui_null.c
> -  $(OPENSSL_PATH)/crypto/ui/ui_openssl.c
> -  $(OPENSSL_PATH)/crypto/ui/ui_util.c
> -  $(OPENSSL_PATH)/crypto/uid.c
> -  $(OPENSSL_PATH)/crypto/x509/by_dir.c
> -  $(OPENSSL_PATH)/crypto/x509/by_file.c
> -  $(OPENSSL_PATH)/crypto/x509/t_crl.c
> -  $(OPENSSL_PATH)/crypto/x509/t_req.c
> -  $(OPENSSL_PATH)/crypto/x509/t_x509.c
> -  $(OPENSSL_PATH)/crypto/x509/x509_att.c
> -  $(OPENSSL_PATH)/crypto/x509/x509_cmp.c
> -  $(OPENSSL_PATH)/crypto/x509/x509_d2.c
> -  $(OPENSSL_PATH)/crypto/x509/x509_def.c
> -  $(OPENSSL_PATH)/crypto/x509/x509_err.c
> -  $(OPENSSL_PATH)/crypto/x509/x509_ext.c
> -  $(OPENSSL_PATH)/crypto/x509/x509_lu.c
> -  $(OPENSSL_PATH)/crypto/x509/x509_meth.c
> -  $(OPENSSL_PATH)/crypto/x509/x509_obj.c
> -  $(OPENSSL_PATH)/crypto/x509/x509_r2x.c
> -  $(OPENSSL_PATH)/crypto/x509/x509_req.c
> -  $(OPENSSL_PATH)/crypto/x509/x509_set.c
> -  $(OPENSSL_PATH)/crypto/x509/x509_trs.c
> -  $(OPENSSL_PATH)/crypto/x509/x509_txt.c
> -  $(OPENSSL_PATH)/crypto/x509/x509_v3.c
> -  $(OPENSSL_PATH)/crypto/x509/x509_vfy.c
> -  $(OPENSSL_PATH)/crypto/x509/x509_vpm.c
> -  $(OPENSSL_PATH)/crypto/x509/x509cset.c
> -  $(OPENSSL_PATH)/crypto/x509/x509name.c
> -  $(OPENSSL_PATH)/crypto/x509/x509rset.c
> -  $(OPENSSL_PATH)/crypto/x509/x509spki.c
> -  $(OPENSSL_PATH)/crypto/x509/x509type.c
> -  $(OPENSSL_PATH)/crypto/x509/x_all.c
> -  $(OPENSSL_PATH)/crypto/x509/x_attrib.c
> -  $(OPENSSL_PATH)/crypto/x509/x_crl.c
> -  $(OPENSSL_PATH)/crypto/x509/x_exten.c
> -  $(OPENSSL_PATH)/crypto/x509/x_name.c
> -  $(OPENSSL_PATH)/crypto/x509/x_pubkey.c
> -  $(OPENSSL_PATH)/crypto/x509/x_req.c
> -  $(OPENSSL_PATH)/crypto/x509/x_x509.c
> -  $(OPENSSL_PATH)/crypto/x509/x_x509a.c
> -  $(OPENSSL_PATH)/crypto/x509v3/pcy_cache.c
> -  $(OPENSSL_PATH)/crypto/x509v3/pcy_data.c
> -  $(OPENSSL_PATH)/crypto/x509v3/pcy_lib.c
> -  $(OPENSSL_PATH)/crypto/x509v3/pcy_map.c
> -  $(OPENSSL_PATH)/crypto/x509v3/pcy_node.c
> -  $(OPENSSL_PATH)/crypto/x509v3/pcy_tree.c
> -  $(OPENSSL_PATH)/crypto/x509v3/v3_addr.c
> -  $(OPENSSL_PATH)/crypto/x509v3/v3_admis.c
> -  $(OPENSSL_PATH)/crypto/x509v3/v3_akey.c
> -  $(OPENSSL_PATH)/crypto/x509v3/v3_akeya.c
> -  $(OPENSSL_PATH)/crypto/x509v3/v3_alt.c
> -  $(OPENSSL_PATH)/crypto/x509v3/v3_asid.c
> -  $(OPENSSL_PATH)/crypto/x509v3/v3_bcons.c
> -  $(OPENSSL_PATH)/crypto/x509v3/v3_bitst.c
> -  $(OPENSSL_PATH)/crypto/x509v3/v3_conf.c
> -  $(OPENSSL_PATH)/crypto/x509v3/v3_cpols.c
> -  $(OPENSSL_PATH)/crypto/x509v3/v3_crld.c
> -  $(OPENSSL_PATH)/crypto/x509v3/v3_enum.c
> -  $(OPENSSL_PATH)/crypto/x509v3/v3_extku.c
> -  $(OPENSSL_PATH)/crypto/x509v3/v3_genn.c
> -  $(OPENSSL_PATH)/crypto/x509v3/v3_ia5.c
> -  $(OPENSSL_PATH)/crypto/x509v3/v3_info.c
> -  $(OPENSSL_PATH)/crypto/x509v3/v3_int.c
> -  $(OPENSSL_PATH)/crypto/x509v3/v3_lib.c
> -  $(OPENSSL_PATH)/crypto/x509v3/v3_ncons.c
> -  $(OPENSSL_PATH)/crypto/x509v3/v3_pci.c
> -  $(OPENSSL_PATH)/crypto/x509v3/v3_pcia.c
> -  $(OPENSSL_PATH)/crypto/x509v3/v3_pcons.c
> -  $(OPENSSL_PATH)/crypto/x509v3/v3_pku.c
> -  $(OPENSSL_PATH)/crypto/x509v3/v3_pmaps.c
> -  $(OPENSSL_PATH)/crypto/x509v3/v3_prn.c
> -  $(OPENSSL_PATH)/crypto/x509v3/v3_purp.c
> -  $(OPENSSL_PATH)/crypto/x509v3/v3_skey.c
> -  $(OPENSSL_PATH)/crypto/x509v3/v3_sxnet.c
> -  $(OPENSSL_PATH)/crypto/x509v3/v3_tlsf.c
> -  $(OPENSSL_PATH)/crypto/x509v3/v3_utl.c
> -  $(OPENSSL_PATH)/crypto/x509v3/v3err.c
> -  $(OPENSSL_PATH)/crypto/arm_arch.h
> -  $(OPENSSL_PATH)/crypto/mips_arch.h
> -  $(OPENSSL_PATH)/crypto/ppc_arch.h
> -  $(OPENSSL_PATH)/crypto/s390x_arch.h
> -  $(OPENSSL_PATH)/crypto/sparc_arch.h
> -  $(OPENSSL_PATH)/crypto/vms_rms.h
> -  $(OPENSSL_PATH)/crypto/aes/aes_local.h
> -  $(OPENSSL_PATH)/crypto/asn1/asn1_item_list.h
> -  $(OPENSSL_PATH)/crypto/asn1/asn1_local.h
> -  $(OPENSSL_PATH)/crypto/asn1/charmap.h
> -  $(OPENSSL_PATH)/crypto/asn1/standard_methods.h
> -  $(OPENSSL_PATH)/crypto/asn1/tbl_standard.h
> -  $(OPENSSL_PATH)/crypto/async/async_local.h
> -  $(OPENSSL_PATH)/crypto/async/arch/async_null.h
> -  $(OPENSSL_PATH)/crypto/async/arch/async_posix.h
> -  $(OPENSSL_PATH)/crypto/async/arch/async_win.h
> -  $(OPENSSL_PATH)/crypto/bio/bio_local.h
> -  $(OPENSSL_PATH)/crypto/bn/bn_local.h
> -  $(OPENSSL_PATH)/crypto/bn/bn_prime.h
> -  $(OPENSSL_PATH)/crypto/bn/rsaz_exp.h
> -  $(OPENSSL_PATH)/crypto/comp/comp_local.h
> -  $(OPENSSL_PATH)/crypto/conf/conf_def.h
> -  $(OPENSSL_PATH)/crypto/conf/conf_local.h
> -  $(OPENSSL_PATH)/crypto/dh/dh_local.h
> -  $(OPENSSL_PATH)/crypto/dso/dso_local.h
> -  $(OPENSSL_PATH)/crypto/ec/ec_local.h
> |*|*|*|gEfiCryptoPkgTokenSpaceGuid.PcdOpensslEcEnabled
> -  $(OPENSSL_PATH)/crypto/ec/curve448/curve448_local.h
> |*|*|*|gEfiCryptoPkgTokenSpaceGuid.PcdOpensslEcEnabled
> -  $(OPENSSL_PATH)/crypto/ec/curve448/curve448utils.h
> |*|*|*|gEfiCryptoPkgTokenSpaceGuid.PcdOpensslEcEnabled
> -  $(OPENSSL_PATH)/crypto/ec/curve448/ed448.h
> |*|*|*|gEfiCryptoPkgTokenSpaceGuid.PcdOpensslEcEnabled
> -  $(OPENSSL_PATH)/crypto/ec/curve448/field.h
> |*|*|*|gEfiCryptoPkgTokenSpaceGuid.PcdOpensslEcEnabled
> -  $(OPENSSL_PATH)/crypto/ec/curve448/point_448.h
> |*|*|*|gEfiCryptoPkgTokenSpaceGuid.PcdOpensslEcEnabled
> -  $(OPENSSL_PATH)/crypto/ec/curve448/word.h
> |*|*|*|gEfiCryptoPkgTokenSpaceGuid.PcdOpensslEcEnabled
> -  $(OPENSSL_PATH)/crypto/ec/curve448/arch_32/arch_intrinsics.h
> |*|*|*|gEfiCryptoPkgTokenSpaceGuid.PcdOpensslEcEnabled
> -  $(OPENSSL_PATH)/crypto/ec/curve448/arch_32/f_impl.h
> |*|*|*|gEfiCryptoPkgTokenSpaceGuid.PcdOpensslEcEnabled
> -  $(OPENSSL_PATH)/crypto/evp/evp_local.h
> -  $(OPENSSL_PATH)/crypto/hmac/hmac_local.h
> -  $(OPENSSL_PATH)/crypto/lhash/lhash_local.h
> -  $(OPENSSL_PATH)/crypto/md5/md5_local.h
> -  $(OPENSSL_PATH)/crypto/modes/modes_local.h
> -  $(OPENSSL_PATH)/crypto/objects/obj_dat.h
> -  $(OPENSSL_PATH)/crypto/objects/obj_local.h
> -  $(OPENSSL_PATH)/crypto/objects/obj_xref.h
> -  $(OPENSSL_PATH)/crypto/ocsp/ocsp_local.h
> -  $(OPENSSL_PATH)/crypto/pkcs12/p12_local.h
> -  $(OPENSSL_PATH)/crypto/rand/rand_local.h
> -  $(OPENSSL_PATH)/crypto/rsa/rsa_local.h
> -  $(OPENSSL_PATH)/crypto/sha/sha_local.h
> -  $(OPENSSL_PATH)/crypto/siphash/siphash_local.h
> -  $(OPENSSL_PATH)/crypto/sm3/sm3_local.h
> -  $(OPENSSL_PATH)/crypto/store/store_local.h
> -  $(OPENSSL_PATH)/crypto/ui/ui_local.h
> -  $(OPENSSL_PATH)/crypto/x509/x509_local.h
> -  $(OPENSSL_PATH)/crypto/x509v3/ext_dat.h
> -  $(OPENSSL_PATH)/crypto/x509v3/pcy_local.h
> -  $(OPENSSL_PATH)/crypto/x509v3/standard_exts.h
> -  $(OPENSSL_PATH)/crypto/x509v3/v3_admis.h
> -  $(OPENSSL_PATH)/ssl/bio_ssl.c
> -  $(OPENSSL_PATH)/ssl/d1_lib.c
> -  $(OPENSSL_PATH)/ssl/d1_msg.c
> -  $(OPENSSL_PATH)/ssl/d1_srtp.c
> -  $(OPENSSL_PATH)/ssl/methods.c
> -  $(OPENSSL_PATH)/ssl/packet.c
> -  $(OPENSSL_PATH)/ssl/pqueue.c
> -  $(OPENSSL_PATH)/ssl/record/dtls1_bitmap.c
> -  $(OPENSSL_PATH)/ssl/record/rec_layer_d1.c
> -  $(OPENSSL_PATH)/ssl/record/rec_layer_s3.c
> -  $(OPENSSL_PATH)/ssl/record/ssl3_buffer.c
> -  $(OPENSSL_PATH)/ssl/record/ssl3_record.c
> -  $(OPENSSL_PATH)/ssl/record/ssl3_record_tls13.c
> -  $(OPENSSL_PATH)/ssl/s3_cbc.c
> -  $(OPENSSL_PATH)/ssl/s3_enc.c
> -  $(OPENSSL_PATH)/ssl/s3_lib.c
> -  $(OPENSSL_PATH)/ssl/s3_msg.c
> -  $(OPENSSL_PATH)/ssl/ssl_asn1.c
> -  $(OPENSSL_PATH)/ssl/ssl_cert.c
> -  $(OPENSSL_PATH)/ssl/ssl_ciph.c
> -  $(OPENSSL_PATH)/ssl/ssl_conf.c
> -  $(OPENSSL_PATH)/ssl/ssl_err.c
> -  $(OPENSSL_PATH)/ssl/ssl_init.c
> -  $(OPENSSL_PATH)/ssl/ssl_lib.c
> -  $(OPENSSL_PATH)/ssl/ssl_mcnf.c
> -  $(OPENSSL_PATH)/ssl/ssl_rsa.c
> -  $(OPENSSL_PATH)/ssl/ssl_sess.c
> -  $(OPENSSL_PATH)/ssl/ssl_stat.c
> -  $(OPENSSL_PATH)/ssl/ssl_txt.c
> -  $(OPENSSL_PATH)/ssl/ssl_utst.c
> -  $(OPENSSL_PATH)/ssl/statem/extensions.c
> -  $(OPENSSL_PATH)/ssl/statem/extensions_clnt.c
> -  $(OPENSSL_PATH)/ssl/statem/extensions_cust.c
> -  $(OPENSSL_PATH)/ssl/statem/extensions_srvr.c
> -  $(OPENSSL_PATH)/ssl/statem/statem.c
> -  $(OPENSSL_PATH)/ssl/statem/statem_clnt.c
> -  $(OPENSSL_PATH)/ssl/statem/statem_dtls.c
> -  $(OPENSSL_PATH)/ssl/statem/statem_lib.c
> -  $(OPENSSL_PATH)/ssl/statem/statem_srvr.c
> -  $(OPENSSL_PATH)/ssl/t1_enc.c
> -  $(OPENSSL_PATH)/ssl/t1_lib.c
> -  $(OPENSSL_PATH)/ssl/t1_trce.c
> -  $(OPENSSL_PATH)/ssl/tls13_enc.c
> -  $(OPENSSL_PATH)/ssl/tls_srp.c
> -  $(OPENSSL_PATH)/ssl/packet_local.h
> -  $(OPENSSL_PATH)/ssl/ssl_cert_table.h
> -  $(OPENSSL_PATH)/ssl/ssl_local.h
> -  $(OPENSSL_PATH)/ssl/record/record.h
> -  $(OPENSSL_PATH)/ssl/record/record_local.h
> -  $(OPENSSL_PATH)/ssl/statem/statem.h
> -  $(OPENSSL_PATH)/ssl/statem/statem_local.h
> -# Autogenerated files list ends here
> -  buildinf.h
> -  ossl_store.c
> -  rand_pool.c
> -  X64/ApiHooks.c
> -
> -[Packages]
> -  MdePkg/MdePkg.dec
> -  CryptoPkg/CryptoPkg.dec
> -
> -[LibraryClasses]
> -  BaseLib
> -  DebugLib
> -  RngLib
> -  PrintLib
> -
> -[FixedPcd]
> -  gEfiCryptoPkgTokenSpaceGuid.PcdOpensslEcEnabled      ## CONSUMES
> -
> -[BuildOptions]
> -  #
> -  # Disables the following Visual Studio compiler warnings brought by
> openssl source,
> -  # so we do not break the build with /WX option:
> -  #   C4090: 'function' : different 'const' qualifiers
> -  #   C4132: 'object' : const object should be initialized (tls13_enc.c)
> -  #   C4210: nonstandard extension used: function given file scope
> -  #   C4244: conversion from type1 to type2, possible loss of data
> -  #   C4245: conversion from type1 to type2, signed/unsigned mismatch
> -  #   C4267: conversion from size_t to type, possible loss of data
> -  #   C4306: 'identifier' : conversion from 'type1' to 'type2' of greater
> size
> -  #   C4310: cast truncates constant value
> -  #   C4389: 'operator' : signed/unsigned mismatch (xxxx)
> -  #   C4700: uninitialized local variable 'name' used. (conf_sap.c(71))
> -  #   C4702: unreachable code
> -  #   C4706: assignment within conditional expression
> -  #   C4819: The file contains a character that cannot be represented in the
> current code page
> -  #
> -  MSFT:*_*_X64_CC_FLAGS    = -U_WIN32 -U_WIN64 -U_MSC_VER $(OPENSSL_FLAGS)
> $(OPENSSL_FLAGS_CONFIG) /wd4090 /wd4132 /wd4210 /wd4244 /wd4245 /wd4267
> /wd4306 /wd4310 /wd4700 /wd4389 /wd4702 /wd4706 /wd4819
> -
> -  INTEL:*_*_X64_CC_FLAGS   = -U_WIN32 -U_WIN64 -U_MSC_VER -U__ICC
> $(OPENSSL_FLAGS) $(OPENSSL_FLAGS_CONFIG) /w
> -
> -  #
> -  # Suppress the following build warnings in openssl so we don't break the
> build with -Werror
> -  #   -Werror=maybe-uninitialized: there exist some other paths for which
> the variable is not initialized.
> -  #   -Werror=format: Check calls to printf and scanf, etc., to make sure
> that the arguments supplied have
> -  #                   types appropriate to the format string specified.
> -  #   -Werror=unused-but-set-variable: Warn whenever a local variable is
> assigned to, but otherwise unused (aside from its declaration).
> -  #
> -  GCC:*_*_X64_CC_FLAGS     = -UWIN32 -U_WIN32 -U_WIN64 $(OPENSSL_FLAGS)
> $(OPENSSL_FLAGS_CONFIG) -Wno-error=maybe-uninitialized -Wno-error=format -
> Wno-format -Wno-error=unused-but-set-variable -DNO_MSABI_VA_FUNCS
> -
> -  # suppress the following warnings in openssl so we don't break the build
> with warnings-as-errors:
> -  # 1295: Deprecated declaration <entity> - give arg types
> -  #  550: <entity> was set but never used
> -  # 1293: assignment in condition
> -  #  111: statement is unreachable (invariably "break;" after "return X;" in
> case statement)
> -  #   68: integer conversion resulted in a change of sign ("if (Status == -
> 1)")
> -  #  177: <entity> was declared but never referenced
> -  #  223: function <entity> declared implicitly
> -  #  144: a value of type <type> cannot be used to initialize an entity of
> type <type>
> -  #  513: a value of type <type> cannot be assigned to an entity of type
> <type>
> -  #  188: enumerated type mixed with another type (i.e. passing an integer
> as an enum without a cast)
> -  # 1296: Extended constant initialiser used
> -  #  128: loop is not reachable - may be emitted inappropriately if code
> follows a conditional return
> -  #       from the function that evaluates to true at compile time
> -  #  546: transfer of control bypasses initialization - may be emitted
> inappropriately if the uninitialized
> -  #       variable is never referenced after the jump
> -  #    1: ignore "#1-D: last line of file ends without a newline"
> -  # 3017: <entity> may be used before being set (NOTE: This was fixed in
> OpenSSL 1.1 HEAD with
> -  #       commit d9b8b89bec4480de3a10bdaf9425db371c19145b, and can be
> dropped then.)
> -  XCODE:*_*_X64_CC_FLAGS    = -mmmx -msse -U_WIN32 -U_WIN64 $(OPENSSL_FLAGS)
> $(OPENSSL_FLAGS_CONFIG) -w -std=c99 -Wno-error=uninitialized
> --
> 2.37.1.windows.1
> 
> 
> 
> 
> 



-=-=-=-=-=-=-=-=-=-=-=-
Groups.io Links: You receive all messages sent to this group.
View/Reply Online (#95014): https://edk2.groups.io/g/devel/message/95014
Mute This Topic: https://groups.io/mt/94260746/1813853
Group Owner: devel+owner at edk2.groups.io
Unsubscribe: https://edk2.groups.io/g/devel/unsub [edk2-devel-archive at redhat.com]
-=-=-=-=-=-=-=-=-=-=-=-




More information about the edk2-devel-archive mailing list