v2: * The latest version commit in CryptoPkg is in conflict with this fix. So, this update resolve the conflict issue. * Remove NULL 'time' parameter fix and make it as a standalone commit. * Update OpensslTlsLib implementation. * convert OpensslTlsLib.uni from UTF-16 to UTF-8.
This patch is used to add OpensslTlsLib module to enable 'openssl\ssl' function. Cc: Long Qin <qin.l...@intel.com> Cc: Ye Ting <ting...@intel.com> Cc: Fu Siyuan <siyuan...@intel.com> Contributed-under: TianoCore Contribution Agreement 1.0 Signed-off-by: Jiaxin Wu <jiaxin...@intel.com> --- CryptoPkg/CryptoPkg.dsc | 1 + CryptoPkg/Include/OpenSslSupport.h | 11 ++- CryptoPkg/Library/OpensslLib/Install.cmd | 1 + CryptoPkg/Library/OpensslLib/Install.sh | 1 + CryptoPkg/Library/OpensslLib/OpensslLib.inf | 1 + CryptoPkg/Library/OpensslLib/OpensslTlsLib.inf | 110 +++++++++++++++++++++++++ CryptoPkg/Library/OpensslLib/OpensslTlsLib.uni | 21 +++++ 7 files changed, 145 insertions(+), 1 deletion(-) create mode 100644 CryptoPkg/Library/OpensslLib/OpensslTlsLib.inf create mode 100644 CryptoPkg/Library/OpensslLib/OpensslTlsLib.uni diff --git a/CryptoPkg/CryptoPkg.dsc b/CryptoPkg/CryptoPkg.dsc index 5ae0e67..bb7f082 100644 --- a/CryptoPkg/CryptoPkg.dsc +++ b/CryptoPkg/CryptoPkg.dsc @@ -48,10 +48,11 @@ UefiDriverEntryPoint|MdePkg/Library/UefiDriverEntryPoint/UefiDriverEntryPoint.inf UefiApplicationEntryPoint|MdePkg/Library/UefiApplicationEntryPoint/UefiApplicationEntryPoint.inf IntrinsicLib|CryptoPkg/Library/IntrinsicLib/IntrinsicLib.inf OpensslLib|CryptoPkg/Library/OpensslLib/OpensslLib.inf + OpensslTlsLib|CryptoPkg/Library/OpensslLib/OpensslTlsLib.inf [LibraryClasses.ARM, LibraryClasses.AARCH64] # # It is not possible to prevent the ARM compiler for generic intrinsic functions. # This library provides the instrinsic functions generate by a given compiler. diff --git a/CryptoPkg/Include/OpenSslSupport.h b/CryptoPkg/Include/OpenSslSupport.h index 239ae8b..13c73b5 100644 --- a/CryptoPkg/Include/OpenSslSupport.h +++ b/CryptoPkg/Include/OpenSslSupport.h @@ -1,9 +1,9 @@ /** @file Root include file to support building OpenSSL Crypto Library. -Copyright (c) 2010 - 2015, Intel Corporation. All rights reserved.<BR> +Copyright (c) 2010 - 2016, Intel Corporation. All rights reserved.<BR> This program and the accompanying materials are licensed and made available under the terms and conditions of the BSD License which accompanies this distribution. The full text of the license may be found at http://opensource.org/licenses/bsd-license.php @@ -116,10 +116,12 @@ typedef UINT32 ino_t; typedef UINT32 dev_t; typedef UINT16 nlink_t; typedef int pid_t; typedef void *DIR; typedef void __sighandler_t (int); +typedef UINT8 __uint8_t; +typedef UINT8 sa_family_t; // // Structures from EFI Application Toolkit required to buiild Open SSL // struct tm { @@ -170,10 +172,16 @@ struct stat { UINT32 st_gen; /* file generation number */ INT32 st_lspare; INT64 st_qspare[2]; }; +struct sockaddr { + __uint8_t sa_len; /* total length */ + sa_family_t sa_family; /* address family */ + char sa_data[14]; /* actually longer; address value */ +}; + // // Externs from EFI Application Toolkit required to buiild Open SSL // extern int errno; @@ -270,8 +278,9 @@ extern FILE *stdout; #define strchr(str,ch) ScanMem8((VOID *)(str),AsciiStrSize(str),(UINT8)ch) #define abort() ASSERT (FALSE) #define assert(expression) #define localtime(timer) NULL #define gmtime_r(timer,result) (result = NULL) +#define gettimeofday(tvp,tz) do { (tvp)->tv_sec = time(NULL); (tvp)->tv_usec = 0; } while (0) #define atoi(nptr) AsciiStrDecimalToUintn(nptr) #endif diff --git a/CryptoPkg/Library/OpensslLib/Install.cmd b/CryptoPkg/Library/OpensslLib/Install.cmd index 51e5414..e5a5f0d 100755 --- a/CryptoPkg/Library/OpensslLib/Install.cmd +++ b/CryptoPkg/Library/OpensslLib/Install.cmd @@ -6,10 +6,11 @@ copy crypto\crypto.h include\openssl copy crypto\opensslv.h include\openssl copy crypto\opensslconf.h include\openssl copy crypto\ebcdic.h include\openssl copy crypto\symhacks.h include\openssl copy crypto\ossl_typ.h include\openssl +copy crypto\o_dir.h include copy crypto\objects\objects.h include\openssl copy crypto\objects\obj_mac.h include\openssl copy crypto\md4\md4.h include\openssl copy crypto\md5\md5.h include\openssl copy crypto\sha\sha.h include\openssl diff --git a/CryptoPkg/Library/OpensslLib/Install.sh b/CryptoPkg/Library/OpensslLib/Install.sh index 06f1dcd..4ff1d39 100755 --- a/CryptoPkg/Library/OpensslLib/Install.sh +++ b/CryptoPkg/Library/OpensslLib/Install.sh @@ -8,10 +8,11 @@ cp crypto/crypto.h include/openssl cp crypto/opensslv.h include/openssl cp crypto/opensslconf.h include/openssl cp crypto/ebcdic.h include/openssl cp crypto/symhacks.h include/openssl cp crypto/ossl_typ.h include/openssl +cp crypto/o_dir.h include cp crypto/objects/objects.h include/openssl cp crypto/objects/obj_mac.h include/openssl cp crypto/md4/md4.h include/openssl cp crypto/md5/md5.h include/openssl cp crypto/sha/sha.h include/openssl diff --git a/CryptoPkg/Library/OpensslLib/OpensslLib.inf b/CryptoPkg/Library/OpensslLib/OpensslLib.inf index 8757100..88dac2f 100644 --- a/CryptoPkg/Library/OpensslLib/OpensslLib.inf +++ b/CryptoPkg/Library/OpensslLib/OpensslLib.inf @@ -468,10 +468,11 @@ $(OPENSSL_PATH)/crypto/ocsp/ocsp_srv.c $(OPENSSL_PATH)/crypto/ocsp/ocsp_prn.c $(OPENSSL_PATH)/crypto/ocsp/ocsp_vfy.c $(OPENSSL_PATH)/crypto/ocsp/ocsp_err.c $(OPENSSL_PATH)/crypto/krb5/krb5_asn.c + $(OPENSSL_PATH)/crypto/pqueue/pqueue.c $(OPENSSL_PATH)/crypto/cmac/cmac.c $(OPENSSL_PATH)/crypto/cmac/cm_ameth.c $(OPENSSL_PATH)/crypto/cmac/cm_pmeth.c # Autogenerated files list ends here diff --git a/CryptoPkg/Library/OpensslLib/OpensslTlsLib.inf b/CryptoPkg/Library/OpensslLib/OpensslTlsLib.inf new file mode 100644 index 0000000..e3dfbec --- /dev/null +++ b/CryptoPkg/Library/OpensslLib/OpensslTlsLib.inf @@ -0,0 +1,110 @@ +## @file +# This module provides OpenSSL SSL/TLS Library implementation. +# +# Copyright (c) 2016, Intel Corporation. All rights reserved.<BR> +# This program and the accompanying materials +# are licensed and made available under the terms and conditions of the BSD License +# which accompanies this distribution. The full text of the license may be found at +# http://opensource.org/licenses/bsd-license.php +# +# THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, +# WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. +# +## + +[Defines] + INF_VERSION = 0x00010005 + BASE_NAME = OpensslTlsLib + MODULE_UNI_FILE = OpensslTlsLib.uni + FILE_GUID = 8F636E6A-394C-428A-A3A5-CE2AAAA7D55B + MODULE_TYPE = BASE + VERSION_STRING = 1.0 + LIBRARY_CLASS = OpensslTlsLib + DEFINE OPENSSL_PATH = openssl-1.0.2g + DEFINE OPENSSL_FLAGS = -DL_ENDIAN -DOPENSSL_SMALL_FOOTPRINT -D_CRT_SECURE_NO_DEPRECATE -D_CRT_NONSTDC_NO_DEPRECATE + +# +# VALID_ARCHITECTURES = IA32 X64 IPF ARM AARCH64 +# + +[Sources] + $(OPENSSL_PATH)/e_os.h + $(OPENSSL_PATH)/ssl/s2_meth.c + $(OPENSSL_PATH)/ssl/s2_srvr.c + $(OPENSSL_PATH)/ssl/s2_clnt.c + $(OPENSSL_PATH)/ssl/s2_lib.c + $(OPENSSL_PATH)/ssl/s2_enc.c + $(OPENSSL_PATH)/ssl/s2_pkt.c + $(OPENSSL_PATH)/ssl/s3_meth.c + $(OPENSSL_PATH)/ssl/s3_srvr.c + $(OPENSSL_PATH)/ssl/s3_clnt.c + $(OPENSSL_PATH)/ssl/s3_lib.c + $(OPENSSL_PATH)/ssl/s3_enc.c + $(OPENSSL_PATH)/ssl/s3_pkt.c + $(OPENSSL_PATH)/ssl/s3_both.c + $(OPENSSL_PATH)/ssl/s3_cbc.c + $(OPENSSL_PATH)/ssl/s23_meth.c + $(OPENSSL_PATH)/ssl/s23_srvr.c + $(OPENSSL_PATH)/ssl/s23_clnt.c + $(OPENSSL_PATH)/ssl/s23_lib.c + $(OPENSSL_PATH)/ssl/s23_pkt.c + $(OPENSSL_PATH)/ssl/t1_meth.c + $(OPENSSL_PATH)/ssl/t1_srvr.c + $(OPENSSL_PATH)/ssl/t1_clnt.c + $(OPENSSL_PATH)/ssl/t1_lib.c + $(OPENSSL_PATH)/ssl/t1_enc.c + $(OPENSSL_PATH)/ssl/t1_ext.c + $(OPENSSL_PATH)/ssl/d1_meth.c + $(OPENSSL_PATH)/ssl/d1_srvr.c + $(OPENSSL_PATH)/ssl/d1_clnt.c + $(OPENSSL_PATH)/ssl/d1_lib.c + $(OPENSSL_PATH)/ssl/d1_pkt.c + $(OPENSSL_PATH)/ssl/d1_both.c + $(OPENSSL_PATH)/ssl/d1_srtp.c + $(OPENSSL_PATH)/ssl/ssl_lib.c + $(OPENSSL_PATH)/ssl/ssl_err2.c + $(OPENSSL_PATH)/ssl/ssl_cert.c + $(OPENSSL_PATH)/ssl/ssl_sess.c + $(OPENSSL_PATH)/ssl/ssl_ciph.c + $(OPENSSL_PATH)/ssl/ssl_stat.c + $(OPENSSL_PATH)/ssl/ssl_rsa.c + $(OPENSSL_PATH)/ssl/ssl_asn1.c + $(OPENSSL_PATH)/ssl/ssl_txt.c + $(OPENSSL_PATH)/ssl/ssl_algs.c + # + # Disable SSL command configuration interfaces. + # + # $(OPENSSL_PATH)/ssl/ssl_conf.c + $(OPENSSL_PATH)/ssl/bio_ssl.c + $(OPENSSL_PATH)/ssl/ssl_err.c + $(OPENSSL_PATH)/ssl/kssl.c + $(OPENSSL_PATH)/ssl/t1_reneg.c + $(OPENSSL_PATH)/ssl/tls_srp.c + $(OPENSSL_PATH)/ssl/t1_trce.c + $(OPENSSL_PATH)/ssl/ssl_utst.c + +[Packages] + MdePkg/MdePkg.dec + CryptoPkg/CryptoPkg.dec + +[LibraryClasses] + DebugLib + OpensslLib + +[BuildOptions] + # + # Disables the following Visual Studio compiler warnings brought by openssl source, so we do not break the build with /WX option: + # C4244: conversion from type1 to type2, possible loss of data + # C4702: unreachable code + # C4706: assignment within conditional expression + # C4133: incompatible types - from type1 to type2 + # C4245: conversion from type1 to type2, signed/unsigned mismatch + # C4267: conversion from size_t to type, possible loss of data + # C4305: truncation from type1 to type2 of smaller size + # C4306: conversion from type1 to type2 of greater size + # C4702: Potentially uninitialized local variable name used + # + MSFT:*_*_IA32_CC_FLAGS = -U_WIN32 -U_WIN64 -U_MSC_VER $(OPENSSL_FLAGS) /wd4244 /wd4245 /wd4701 /wd4702 /wd4706 + MSFT:*_*_X64_CC_FLAGS = -U_WIN32 -U_WIN64 -U_MSC_VER $(OPENSSL_FLAGS) /wd4133 /wd4244 /wd4245 /wd4267 /wd4701 /wd4305 /wd4306 /wd4702 /wd4706 /wd4311 + MSFT:*_*_IPF_CC_FLAGS = -U_WIN32 -U_WIN64 -U_MSC_VER $(OPENSSL_FLAGS) /wd4133 /wd4244 /wd4245 /wd4267 /wd4701 /wd4305 /wd4306 /wd4702 /wd4706 + diff --git a/CryptoPkg/Library/OpensslLib/OpensslTlsLib.uni b/CryptoPkg/Library/OpensslLib/OpensslTlsLib.uni new file mode 100644 index 0000000..e5f2853 --- /dev/null +++ b/CryptoPkg/Library/OpensslLib/OpensslTlsLib.uni @@ -0,0 +1,21 @@ +// /** @file +// This module provides OpenSSL SSL/TLS Library implementation. +// +// This module provides OpenSSL SSL/TLS Library implementation. +// +// Copyright (c) 2016, Intel Corporation. All rights reserved.<BR> +// +// This program and the accompanying materials +// are licensed and made available under the terms and conditions of the BSD License +// which accompanies this distribution. The full text of the license may be found at +// http://opensource.org/licenses/bsd-license.php +// +// THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, +// WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. +// +// **/ + + +#string STR_MODULE_ABSTRACT #language en-US "OpenSSL SSL/TLS Library implementation" + +#string STR_MODULE_DESCRIPTION #language en-US "This module provides OpenSSL SSL/TLS Library implementation." \ No newline at end of file -- 1.9.5.msysgit.1 _______________________________________________ edk2-devel mailing list edk2-devel@lists.01.org https://lists.01.org/mailman/listinfo/edk2-devel