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

Reply via email to