changeset 3802:6462ecaa045b

fix unit test, reorganization of OpenSSL initialization
author Sebastien Jodogne <s.jodogne@gmail.com>
date Thu, 02 Apr 2020 12:54:45 +0200
parents 9fe1d64a748c
children e9834343d327
files Core/Toolbox.cpp Resources/CMake/OpenSslConfigurationStatic-1.1.1.cmake Resources/Patches/civetweb-1.12.patch UnitTestsSources/VersionsTests.cpp
diffstat 4 files changed, 57 insertions(+), 14 deletions(-) [+]
line wrap: on
line diff
--- a/Core/Toolbox.cpp	Thu Apr 02 11:24:47 2020 +0200
+++ b/Core/Toolbox.cpp	Thu Apr 02 12:54:45 2020 +0200
@@ -1680,21 +1680,36 @@
 #endif
 
 
+
+#if ORTHANC_ENABLE_SSL == 0
+  /**
+   * OpenSSL is disabled
+   **/
   void Toolbox::InitializeOpenSsl()
   {
-#if ORTHANC_ENABLE_SSL == 1
+  }
+  
+  void Toolbox::FinalizeOpenSsl()
+  {
+  }  
+
+
+#elif (ORTHANC_ENABLE_SSL == 1 &&               \
+       OPENSSL_VERSION_NUMBER < 0x10100000L) 
+  /**
+   * OpenSSL < 1.1.0
+   **/
+  void Toolbox::InitializeOpenSsl()
+  {
     // https://wiki.openssl.org/index.php/Library_Initialization
     SSL_library_init();
     SSL_load_error_strings();
     OpenSSL_add_all_algorithms();
     ERR_load_crypto_strings();
-#endif
   }
 
-
   void Toolbox::FinalizeOpenSsl()
   {
-#if ORTHANC_ENABLE_SSL == 1
     // Finalize OpenSSL
     // https://wiki.openssl.org/index.php/Library_Initialization#Cleanup
 #ifdef FIPS_mode_set
@@ -1710,8 +1725,28 @@
     CRYPTO_cleanup_all_ex_data();
     ERR_remove_state(0);
     ERR_free_strings();
+  }
+
+  
+#elif (ORTHANC_ENABLE_SSL == 1 &&               \
+       OPENSSL_VERSION_NUMBER >= 0x10100000L) 
+  /**
+   * OpenSSL >= 1.1.0. In this case, the initialization is
+   * automatically done by the functions of OpenSSL.
+   * https://wiki.openssl.org/index.php/Library_Initialization
+   **/
+  void Toolbox::InitializeOpenSsl()
+  {
+  }
+
+  void Toolbox::FinalizeOpenSsl()
+  {
+  }
+
+#else
+#  error "Support your platform here"
 #endif
-  }
+  
 
 
   std::string Toolbox::GenerateUuid()
--- a/Resources/CMake/OpenSslConfigurationStatic-1.1.1.cmake	Thu Apr 02 11:24:47 2020 +0200
+++ b/Resources/CMake/OpenSslConfigurationStatic-1.1.1.cmake	Thu Apr 02 12:54:45 2020 +0200
@@ -234,6 +234,15 @@
   # In order for "crypto/mem_sec.c" to compile on LSB
   add_definitions(
     -DOPENSSL_NO_SECURE_MEMORY
+    -DOPENSSL_RAND_SEED_OS
+    )
+
+else()
+  # Fixes error "OpenSSL error: error:2406C06E:random number
+  # generator:RAND_DRBG_instantiate:error retrieving entropy" that was
+  # present in Orthanc 1.6.0, if statically linking on Ubuntu 18.04
+  add_definitions(
+    -DOPENSSL_RAND_SEED_OS
     )
 endif()
 
--- a/Resources/Patches/civetweb-1.12.patch	Thu Apr 02 11:24:47 2020 +0200
+++ b/Resources/Patches/civetweb-1.12.patch	Thu Apr 02 12:54:45 2020 +0200
@@ -1,6 +1,6 @@
 diff -urEb civetweb-1.12.orig/include/civetweb.h civetweb-1.12/include/civetweb.h
---- civetweb-1.12.orig/include/civetweb.h	2020-04-02 10:56:55.681988632 +0200
-+++ civetweb-1.12/include/civetweb.h	2020-04-02 10:57:36.413858039 +0200
+--- civetweb-1.12.orig/include/civetweb.h	2020-04-02 12:07:20.727054140 +0200
++++ civetweb-1.12/include/civetweb.h	2020-04-02 12:07:42.734996559 +0200
 @@ -1614,6 +1614,9 @@
                                    struct mg_error_data *error);
  #endif
@@ -12,12 +12,12 @@
  }
  #endif /* __cplusplus */
 diff -urEb civetweb-1.12.orig/src/civetweb.c civetweb-1.12/src/civetweb.c
---- civetweb-1.12.orig/src/civetweb.c	2020-04-02 10:56:55.685988619 +0200
-+++ civetweb-1.12/src/civetweb.c	2020-04-02 11:00:31.345304121 +0200
-@@ -20705,4 +20705,13 @@
+--- civetweb-1.12.orig/src/civetweb.c	2020-04-02 12:07:20.731054129 +0200
++++ civetweb-1.12/src/civetweb.c	2020-04-02 12:07:52.250971600 +0200
+@@ -20704,5 +20704,12 @@
+ 	return 1;
  }
  
- 
 +// Added by SJ
 +void mg_disable_keep_alive(struct mg_connection *conn)
 +{
@@ -25,6 +25,5 @@
 +    conn->must_close = 1;
 +  }
 +}
-+
-+
+ 
  /* End of civetweb.c */
--- a/UnitTestsSources/VersionsTests.cpp	Thu Apr 02 11:24:47 2020 +0200
+++ b/UnitTestsSources/VersionsTests.cpp	Thu Apr 02 12:54:45 2020 +0200
@@ -208,7 +208,7 @@
 TEST(Version, Civetweb)
 {
   ASSERT_EQ(1, CIVETWEB_VERSION_MAJOR);
-  ASSERT_EQ(11, CIVETWEB_VERSION_MINOR);
+  ASSERT_EQ(12, CIVETWEB_VERSION_MINOR);
   ASSERT_EQ(0, CIVETWEB_VERSION_PATCH);
 }
 #endif