From e81751a1c303f5cd4bcae0ed1a38c60c38a0cf38 Mon Sep 17 00:00:00 2001 From: Guomin Jiang Date: Fri, 10 Jul 2020 09:47:31 +0800 Subject: [PATCH 4/5] CryptoPkg/OpensslLib: Upgrade OpenSSL to 1.1.1g RH-Author: Laszlo Ersek (lersek) RH-MergeRequest: 2: [RHEL-8.4.0] bump OpenSSL dist-git submodule to 1.1.1g RH-Commit: [1/2] 36d4bc34a3b5c421819e94c58ff84fd779a93bae (lersek/edk2) RH-Bugzilla: 1893806 --v-- RHEL8 notes --v-- - The "CryptoPkg/Library/OpensslLib/openssl" hunk, advancing upstream edk2's OpenSSL submodule reference, has been stripped from this backport. (Refer to downstream commit c5d729df70f8 ("remove upstream edk2's openssl submodule (RH only)", 2020-06-05), as basis.) The corresponding RHEL8 OpenSSL dist-git bump is implemented in a subsequent patch in this series. This cherry-pick and the RHEL8 OpenSSL dist-git submodule bump are kept separate for easing the next rebase, even at the cost of introducing a brief interval in the git history where the downstream exploded tree does not build. - Contextual difference in "OpensslLib.inf" due to downstream commit 56c4bb81b311 ("CryptoPkg/OpensslLib: list RHEL8-specific OpenSSL files in the INFs (RH)", 2020-06-05); automatically resolved by git-cherry-pick. --^-- RHEL8 notes --^-- Upgrade openssl to 1.1.1g. the directory have been reorganized, openssl moved crypto/include/internal to include/crypto folder. So we change directory to match the re-organization. The dso_conf.h and opensslconf.h will generated in UNIX format, change process_files.pl to covent the EOL automatically. Cc: Jian J Wang Cc: Xiaoyu Lu Signed-off-by: Guomin Jiang Reviewed-by: Laszlo Ersek Tested-by: Laszlo Ersek Reviewed-by: Jian J Wang (cherry picked from commit 8c30327debb28c0b6cfa2106b736774e0b20daac) Signed-off-by: Laszlo Ersek --- CryptoPkg/CryptoPkg.dec | 1 - .../Library/BaseCryptLib/Hash/CryptSm3.c | 2 +- .../BaseCryptLib/Pk/CryptPkcs7VerifyEku.c | 4 +- .../Include/{internal => crypto}/dso_conf.h | 32 +++++----- .../Library/Include/openssl/opensslconf.h | 3 - CryptoPkg/Library/OpensslLib/OpensslLib.inf | 58 +++++++++---------- .../Library/OpensslLib/OpensslLibCrypto.inf | 50 ++++++++-------- CryptoPkg/Library/OpensslLib/process_files.pl | 25 +++++--- CryptoPkg/Library/OpensslLib/rand_pool.c | 2 +- 9 files changed, 90 insertions(+), 87 deletions(-) rename CryptoPkg/Library/Include/{internal => crypto}/dso_conf.h (76%) diff --git a/CryptoPkg/CryptoPkg.dec b/CryptoPkg/CryptoPkg.dec index 4d1a1368a8..5888941bab 100644 --- a/CryptoPkg/CryptoPkg.dec +++ b/CryptoPkg/CryptoPkg.dec @@ -23,7 +23,6 @@ Private Library/Include Library/OpensslLib/openssl/include - Library/OpensslLib/openssl/crypto/include [LibraryClasses] ## @libraryclass Provides basic library functions for cryptographic primitives. diff --git a/CryptoPkg/Library/BaseCryptLib/Hash/CryptSm3.c b/CryptoPkg/Library/BaseCryptLib/Hash/CryptSm3.c index eacf4826c4..235331c2a0 100644 --- a/CryptoPkg/Library/BaseCryptLib/Hash/CryptSm3.c +++ b/CryptoPkg/Library/BaseCryptLib/Hash/CryptSm3.c @@ -7,7 +7,7 @@ SPDX-License-Identifier: BSD-2-Clause-Patent **/ #include "InternalCryptLib.h" -#include "internal/sm3.h" +#include "crypto/sm3.h" /** Retrieves the size, in bytes, of the context buffer required for SM3 hash operations. diff --git a/CryptoPkg/Library/BaseCryptLib/Pk/CryptPkcs7VerifyEku.c b/CryptoPkg/Library/BaseCryptLib/Pk/CryptPkcs7VerifyEku.c index 229c244b26..c9fdb65b99 100644 --- a/CryptoPkg/Library/BaseCryptLib/Pk/CryptPkcs7VerifyEku.c +++ b/CryptoPkg/Library/BaseCryptLib/Pk/CryptPkcs7VerifyEku.c @@ -15,13 +15,13 @@ #include #include #include -#include +#include #include #include #include #include #include -#include +#include /** This function will return the leaf signer certificate in a chain. This is diff --git a/CryptoPkg/Library/Include/internal/dso_conf.h b/CryptoPkg/Library/Include/crypto/dso_conf.h similarity index 76% rename from CryptoPkg/Library/Include/internal/dso_conf.h rename to CryptoPkg/Library/Include/crypto/dso_conf.h index 43c891588b..95f4db2b15 100644 --- a/CryptoPkg/Library/Include/internal/dso_conf.h +++ b/CryptoPkg/Library/Include/crypto/dso_conf.h @@ -1,16 +1,16 @@ -/* WARNING: do not edit! */ -/* Generated from crypto/include/internal/dso_conf.h.in */ -/* - * Copyright 2016-2019 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 - */ - -#ifndef HEADER_DSO_CONF_H -# define HEADER_DSO_CONF_H -# define DSO_NONE -# define DSO_EXTENSION ".so" -#endif +/* WARNING: do not edit! */ +/* Generated from include/crypto/dso_conf.h.in */ +/* + * Copyright 2016-2019 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 + */ + +#ifndef OSSL_CRYPTO_DSO_CONF_H +# define OSSL_CRYPTO_DSO_CONF_H +# define DSO_NONE +# define DSO_EXTENSION ".so" +#endif diff --git a/CryptoPkg/Library/Include/openssl/opensslconf.h b/CryptoPkg/Library/Include/openssl/opensslconf.h index 62c2736cb0..3a2544ea5c 100644 --- a/CryptoPkg/Library/Include/openssl/opensslconf.h +++ b/CryptoPkg/Library/Include/openssl/opensslconf.h @@ -247,9 +247,6 @@ extern "C" { #ifndef OPENSSL_NO_DYNAMIC_ENGINE # define OPENSSL_NO_DYNAMIC_ENGINE #endif -#ifndef OPENSSL_NO_AFALGENG -# define OPENSSL_NO_AFALGENG -#endif /* diff --git a/CryptoPkg/Library/OpensslLib/OpensslLib.inf b/CryptoPkg/Library/OpensslLib/OpensslLib.inf index 24e790b538..4c21b11d0a 100644 --- a/CryptoPkg/Library/OpensslLib/OpensslLib.inf +++ b/CryptoPkg/Library/OpensslLib/OpensslLib.inf @@ -477,45 +477,45 @@ $(OPENSSL_PATH)/crypto/s390x_arch.h $(OPENSSL_PATH)/crypto/sparc_arch.h $(OPENSSL_PATH)/crypto/vms_rms.h - $(OPENSSL_PATH)/crypto/aes/aes_locl.h + $(OPENSSL_PATH)/crypto/aes/aes_local.h $(OPENSSL_PATH)/crypto/asn1/asn1_item_list.h - $(OPENSSL_PATH)/crypto/asn1/asn1_locl.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_locl.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_lcl.h - $(OPENSSL_PATH)/crypto/bn/bn_lcl.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_lcl.h + $(OPENSSL_PATH)/crypto/comp/comp_local.h $(OPENSSL_PATH)/crypto/conf/conf_def.h - $(OPENSSL_PATH)/crypto/conf/conf_lcl.h - $(OPENSSL_PATH)/crypto/dh/dh_locl.h - $(OPENSSL_PATH)/crypto/dso/dso_locl.h - $(OPENSSL_PATH)/crypto/evp/evp_locl.h - $(OPENSSL_PATH)/crypto/hmac/hmac_lcl.h - $(OPENSSL_PATH)/crypto/lhash/lhash_lcl.h - $(OPENSSL_PATH)/crypto/md5/md5_locl.h - $(OPENSSL_PATH)/crypto/modes/modes_lcl.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/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_lcl.h + $(OPENSSL_PATH)/crypto/objects/obj_local.h $(OPENSSL_PATH)/crypto/objects/obj_xref.h - $(OPENSSL_PATH)/crypto/ocsp/ocsp_lcl.h - $(OPENSSL_PATH)/crypto/pkcs12/p12_lcl.h - $(OPENSSL_PATH)/crypto/rand/rand_lcl.h - $(OPENSSL_PATH)/crypto/rsa/rsa_locl.h - $(OPENSSL_PATH)/crypto/sha/sha_locl.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_locl.h - $(OPENSSL_PATH)/crypto/store/store_locl.h - $(OPENSSL_PATH)/crypto/ui/ui_locl.h - $(OPENSSL_PATH)/crypto/x509/x509_lcl.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_int.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 @@ -562,13 +562,13 @@ $(OPENSSL_PATH)/ssl/t1_trce.c $(OPENSSL_PATH)/ssl/tls13_enc.c $(OPENSSL_PATH)/ssl/tls_srp.c - $(OPENSSL_PATH)/ssl/packet_locl.h + $(OPENSSL_PATH)/ssl/packet_local.h $(OPENSSL_PATH)/ssl/ssl_cert_table.h - $(OPENSSL_PATH)/ssl/ssl_locl.h + $(OPENSSL_PATH)/ssl/ssl_local.h $(OPENSSL_PATH)/ssl/record/record.h - $(OPENSSL_PATH)/ssl/record/record_locl.h + $(OPENSSL_PATH)/ssl/record/record_local.h $(OPENSSL_PATH)/ssl/statem/statem.h - $(OPENSSL_PATH)/ssl/statem/statem_locl.h + $(OPENSSL_PATH)/ssl/statem/statem_local.h # Autogenerated files list ends here # RHEL8-specific OpenSSL file list starts here $(OPENSSL_PATH)/crypto/evp/kdf_lib.c diff --git a/CryptoPkg/Library/OpensslLib/OpensslLibCrypto.inf b/CryptoPkg/Library/OpensslLib/OpensslLibCrypto.inf index 52e70a2d03..0c3b210d6a 100644 --- a/CryptoPkg/Library/OpensslLib/OpensslLibCrypto.inf +++ b/CryptoPkg/Library/OpensslLib/OpensslLibCrypto.inf @@ -477,45 +477,45 @@ $(OPENSSL_PATH)/crypto/s390x_arch.h $(OPENSSL_PATH)/crypto/sparc_arch.h $(OPENSSL_PATH)/crypto/vms_rms.h - $(OPENSSL_PATH)/crypto/aes/aes_locl.h + $(OPENSSL_PATH)/crypto/aes/aes_local.h $(OPENSSL_PATH)/crypto/asn1/asn1_item_list.h - $(OPENSSL_PATH)/crypto/asn1/asn1_locl.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_locl.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_lcl.h - $(OPENSSL_PATH)/crypto/bn/bn_lcl.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_lcl.h + $(OPENSSL_PATH)/crypto/comp/comp_local.h $(OPENSSL_PATH)/crypto/conf/conf_def.h - $(OPENSSL_PATH)/crypto/conf/conf_lcl.h - $(OPENSSL_PATH)/crypto/dh/dh_locl.h - $(OPENSSL_PATH)/crypto/dso/dso_locl.h - $(OPENSSL_PATH)/crypto/evp/evp_locl.h - $(OPENSSL_PATH)/crypto/hmac/hmac_lcl.h - $(OPENSSL_PATH)/crypto/lhash/lhash_lcl.h - $(OPENSSL_PATH)/crypto/md5/md5_locl.h - $(OPENSSL_PATH)/crypto/modes/modes_lcl.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/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_lcl.h + $(OPENSSL_PATH)/crypto/objects/obj_local.h $(OPENSSL_PATH)/crypto/objects/obj_xref.h - $(OPENSSL_PATH)/crypto/ocsp/ocsp_lcl.h - $(OPENSSL_PATH)/crypto/pkcs12/p12_lcl.h - $(OPENSSL_PATH)/crypto/rand/rand_lcl.h - $(OPENSSL_PATH)/crypto/rsa/rsa_locl.h - $(OPENSSL_PATH)/crypto/sha/sha_locl.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_locl.h - $(OPENSSL_PATH)/crypto/store/store_locl.h - $(OPENSSL_PATH)/crypto/ui/ui_locl.h - $(OPENSSL_PATH)/crypto/x509/x509_lcl.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_int.h + $(OPENSSL_PATH)/crypto/x509v3/pcy_local.h $(OPENSSL_PATH)/crypto/x509v3/standard_exts.h $(OPENSSL_PATH)/crypto/x509v3/v3_admis.h # Autogenerated files list ends here diff --git a/CryptoPkg/Library/OpensslLib/process_files.pl b/CryptoPkg/Library/OpensslLib/process_files.pl index 65d07a2aed..57ce195394 100755 --- a/CryptoPkg/Library/OpensslLib/process_files.pl +++ b/CryptoPkg/Library/OpensslLib/process_files.pl @@ -111,8 +111,8 @@ BEGIN { # Generate dso_conf.h per config data system( "perl -I. -Mconfigdata util/dofile.pl " . - "crypto/include/internal/dso_conf.h.in " . - "> include/internal/dso_conf.h" + "include/crypto/dso_conf.h.in " . + "> include/crypto/dso_conf.h" ) == 0 || die "Failed to generate dso_conf.h!\n"; @@ -263,14 +263,21 @@ print "Done!"; # Copy opensslconf.h and dso_conf.h generated from OpenSSL Configuration # print "\n--> Duplicating opensslconf.h into Include/openssl ... "; -copy($OPENSSL_PATH . "/include/openssl/opensslconf.h", - $OPENSSL_PATH . "/../../Include/openssl/") || - die "Cannot copy opensslconf.h!"; +system( + "perl -pe 's/\\n/\\r\\n/' " . + "< " . $OPENSSL_PATH . "/include/openssl/opensslconf.h " . + "> " . $OPENSSL_PATH . "/../../Include/openssl/opensslconf.h" + ) == 0 || + die "Cannot copy opensslconf.h!"; print "Done!"; -print "\n--> Duplicating dso_conf.h into Include/internal ... "; -copy($OPENSSL_PATH . "/include/internal/dso_conf.h", - $OPENSSL_PATH . "/../../Include/internal/") || - die "Cannot copy dso_conf.h!"; + +print "\n--> Duplicating dso_conf.h into Include/crypto ... "; +system( + "perl -pe 's/\\n/\\r\\n/' " . + "< " . $OPENSSL_PATH . "/include/crypto/dso_conf.h" . + "> " . $OPENSSL_PATH . "/../../Include/crypto/dso_conf.h" + ) == 0 || + die "Cannot copy dso_conf.h!"; print "Done!\n"; print "\nProcessing Files Done!\n"; diff --git a/CryptoPkg/Library/OpensslLib/rand_pool.c b/CryptoPkg/Library/OpensslLib/rand_pool.c index 9f3983f7c3..9e0179b034 100644 --- a/CryptoPkg/Library/OpensslLib/rand_pool.c +++ b/CryptoPkg/Library/OpensslLib/rand_pool.c @@ -7,7 +7,7 @@ SPDX-License-Identifier: BSD-2-Clause-Patent **/ -#include "internal/rand_int.h" +#include "crypto/rand.h" #include #include -- 2.27.0