This is an automated email from the git hooks/post-receive script. It was
generated because a ref change was pushed to the repository containing
the project "CMake".

The branch, next has been updated
       via  6e88a1c9130533f681764336c7219e094f66db25 (commit)
       via  c582e781b170fc81a77087d969c5e4f79a9d9ecb (commit)
       via  0acba2b47703c028e19501a03f9f28f6974c6ef2 (commit)
       via  de9cba73368a78327cee7e626e4caa2bb2a437d6 (commit)
       via  8b51762426ff6e3efbe61ee49f99755c24b4772c (commit)
       via  bc0e8c28ece1d681449b9b4b43b16fb5b331534e (commit)
       via  c2f47590ef4fb937a5baa4d4b9e0f364e812d407 (commit)
       via  52a2477438097cbe6ae5385a5f8c26d05adbe376 (commit)
      from  7ea28629f7c9bf5ff656f44a4c0b2f84e69b1372 (commit)

Those revisions listed above that are new to this repository have
not appeared on any other notification email; so we list those
revisions in full, below.

- Log -----------------------------------------------------------------
http://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=6e88a1c9130533f681764336c7219e094f66db25
commit 6e88a1c9130533f681764336c7219e094f66db25
Merge: 7ea2862 c582e78
Author:     Bill Hoffman <bill.hoff...@kitware.com>
AuthorDate: Fri Sep 7 16:45:07 2012 -0400
Commit:     CMake Topic Stage <kwro...@kitware.com>
CommitDate: Fri Sep 7 16:45:07 2012 -0400

    Merge topic 'file-download-verify' into next
    
    c582e78 Change the nightly releases to build using ssl.
    0acba2b file(DOWNLOAD): Add options for SSL
    de9cba7 Merge branch 'curl-openssl' into file-download-verify
    8b51762 curl: Honor OPENSSL_NO_SSL2
    bc0e8c2 curl: Make OpenSSL DLLs available to CMake on Windows
    c2f4759 curl: Use find_package(OpenSSL)
    52a2477 file(DOWNLOAD): Generalize EXPECTED_MD5 to EXPECTED_HASH


http://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=c582e781b170fc81a77087d969c5e4f79a9d9ecb
commit c582e781b170fc81a77087d969c5e4f79a9d9ecb
Author:     Bill Hoffman <bill.hoff...@kitware.com>
AuthorDate: Fri Sep 7 15:30:19 2012 -0400
Commit:     Bill Hoffman <bill.hoff...@kitware.com>
CommitDate: Fri Sep 7 15:30:19 2012 -0400

    Change the nightly releases to build using ssl.

diff --git a/Utilities/Release/dash2win64_release.cmake 
b/Utilities/Release/dash2win64_release.cmake
index fb82de0..6d1ac76 100644
--- a/Utilities/Release/dash2win64_release.cmake
+++ b/Utilities/Release/dash2win64_release.cmake
@@ -8,6 +8,7 @@ set(CPACK_SOURCE_GENERATORS "ZIP")
 set(MAKE_PROGRAM "make")
 set(MAKE "${MAKE_PROGRAM} -j8")
 set(INITIAL_CACHE "CMAKE_BUILD_TYPE:STRING=Release
+CMAKE_USE_OPENSSL:BOOL=ON
 CMAKE_SKIP_BOOTSTRAP_TEST:STRING=TRUE
 CMAKE_Fortran_COMPILER:FILEPATH=FALSE
 CMAKE_GENERATOR:INTERNAL=Unix Makefiles
diff --git a/Utilities/Release/dashmacmini2_release.cmake 
b/Utilities/Release/dashmacmini2_release.cmake
index 3e6b049..5e57a70 100644
--- a/Utilities/Release/dashmacmini2_release.cmake
+++ b/Utilities/Release/dashmacmini2_release.cmake
@@ -9,6 +9,10 @@ set(CPACK_BINARY_GENERATORS "PackageMaker TGZ TZ")
 set(INITIAL_CACHE "
 CMAKE_BUILD_TYPE:STRING=Release
 CMAKE_OSX_ARCHITECTURES:STRING=ppc;i386
+CMAKE_USE_OPENSSL:BOOL=ON
+OPENSSL_CRYPTO_LIBRARY:FILEPATH=/Users/kitware/openssl-1.0.1c-install/lib/libcrypto.a
+OPENSSL_INCLUDE_DIR:PATH=/Users/kitware/openssl-1.0.1c-install/include
+OPENSSL_SSL_LIBRARY:FILEPATH=/Users/kitware/openssl-1.0.1c-install/lib/libssl.a
 CMAKE_SKIP_BOOTSTRAP_TEST:STRING=TRUE
 CPACK_SYSTEM_NAME:STRING=Darwin-universal
 BUILD_QtDialog:BOOL=TRUE
diff --git a/Utilities/Release/dashmacmini5_release.cmake 
b/Utilities/Release/dashmacmini5_release.cmake
index bd93a87..36b0952 100644
--- a/Utilities/Release/dashmacmini5_release.cmake
+++ b/Utilities/Release/dashmacmini5_release.cmake
@@ -8,6 +8,10 @@ set(MAKE "${MAKE_PROGRAM} -j5")
 set(CPACK_BINARY_GENERATORS "PackageMaker TGZ TZ")
 set(CPACK_SOURCE_GENERATORS "TGZ TZ")
 set(INITIAL_CACHE "
+CMAKE_USE_OPENSSL:BOOL=ON
+OPENSSL_CRYPTO_LIBRARY:FILEPATH=/Users/kitware/openssl-1.0.1c-install/lib/libcrypto.a
+OPENSSL_INCLUDE_DIR:PATH=/Users/kitware/openssl-1.0.1c-install/include
+OPENSSL_SSL_LIBRARY:FILEPATH=/Users/kitware/openssl-1.0.1c-install/lib/libssl.a
 CMAKE_BUILD_TYPE:STRING=Release
 CMAKE_OSX_ARCHITECTURES:STRING=x86_64;i386
 CMAKE_OSX_DEPLOYMENT_TARGET:STRING=10.5
diff --git a/Utilities/Release/magrathea_release.cmake 
b/Utilities/Release/magrathea_release.cmake
index 60c1a88..4783fda 100644
--- a/Utilities/Release/magrathea_release.cmake
+++ b/Utilities/Release/magrathea_release.cmake
@@ -10,6 +10,10 @@ CMAKE_BUILD_TYPE:STRING=Release
 CURSES_LIBRARY:FILEPATH=/usr/i686-gcc-332s/lib/libncurses.a
 CURSES_INCLUDE_PATH:PATH=/usr/i686-gcc-332s/include/ncurses
 FORM_LIBRARY:FILEPATH=/usr/i686-gcc-332s/lib/libform.a
+CMAKE_USE_OPENSSL:BOOL=ON
+OPENSSL_CRYPTO_LIBRARY:FILEPATH=/home/kitware/openssl-1.0.1c-install/lib/libcrypto.a
+OPENSSL_INCLUDE_DIR:PATH=/home/kitware/openssl-1.0.1c-install/include
+OPENSSL_SSL_LIBRARY:FILEPATH=/home/kitware/openssl-1.0.1c-install/lib/libssl.a
 CPACK_SYSTEM_NAME:STRING=Linux-i386
 BUILD_QtDialog:BOOL:=TRUE
 QT_QMAKE_EXECUTABLE:FILEPATH=/home/kitware/qt-4.43-install/bin/qmake

http://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=0acba2b47703c028e19501a03f9f28f6974c6ef2
commit 0acba2b47703c028e19501a03f9f28f6974c6ef2
Author:     Bill Hoffman <bill.hoff...@kitware.com>
AuthorDate: Tue Aug 21 18:41:24 2012 -0400
Commit:     Brad King <brad.k...@kitware.com>
CommitDate: Fri Sep 7 13:26:32 2012 -0400

    file(DOWNLOAD): Add options for SSL
    
    Add the ability to request that downloads disable or enable Certificat
    Authority checking with https ssl downloads. When the option to verify
    the servers CA is disabled, one may verify download contents with SHA
    hashes.

diff --git a/Source/cmFileCommand.cxx b/Source/cmFileCommand.cxx
index abbbe46..65a0d74 100644
--- a/Source/cmFileCommand.cxx
+++ b/Source/cmFileCommand.cxx
@@ -2667,6 +2667,9 @@ 
cmFileCommand::HandleDownloadCommand(std::vector<std::string> const& args)
   long inactivity_timeout = 0;
   std::string verboseLog;
   std::string statusVar;
+  std::string caFile;
+  bool checkSSL = false;
+  bool verifySSL = false;
   std::string expectedHash;
   std::string hashMatchMSG;
   cmsys::auto_ptr<cmCryptoHash> hash;
@@ -2720,6 +2723,33 @@ 
cmFileCommand::HandleDownloadCommand(std::vector<std::string> const& args)
         }
       statusVar = *i;
       }
+    else if(*i == "SSL_VERIFY")
+      {
+      ++i;
+      if(i != args.end())
+        {
+        verifySSL = cmSystemTools::IsOn(i->c_str());
+        checkSSL = true;
+        }
+      else
+        {
+        this->SetError("SSL_VERIFY missing bool value.");
+        return false;
+        }
+      }
+    else if(*i == "SSL_CAINFO_FILE")
+      {
+      ++i;
+      if(i != args.end())
+        {
+        caFile = *i;
+        }
+      else
+        {
+        this->SetError("SSL_CAFILE missing file value.");
+        return false;
+        }
+      }
     else if(*i == "EXPECTED_MD5")
       {
       ++i;
@@ -2836,6 +2866,43 @@ 
cmFileCommand::HandleDownloadCommand(std::vector<std::string> const& args)
                            cmFileCommandCurlDebugCallback);
   check_curl_result(res, "DOWNLOAD cannot set debug function: ");
 
+  // check to see if SSL verification is requested
+  const char* verifyValue =
+    this->Makefile->GetDefinition("CMAKE_CURLOPT_SSL_VERIFYPEER");
+  // if there is a cmake variable or if the command has SSL_VERIFY requested
+  if(verifyValue || checkSSL)
+    {
+    // the args to the command come first
+    bool verify = verifySSL;
+    if(!verify && verifyValue)
+      {
+      verify = cmSystemTools::IsOn(verifyValue);
+      }
+    if(verify)
+      {
+      res = ::curl_easy_setopt(curl, CURLOPT_SSL_VERIFYPEER, 1);
+      check_curl_result(res, "Unable to set SSL Verify on: ");
+      }
+    else
+      {
+      res = ::curl_easy_setopt(curl, CURLOPT_SSL_VERIFYPEER, 0);
+      check_curl_result(res, "Unable to set SSL Verify off: ");
+      }
+    }
+  // check to see if a CAINFO file has been specified
+  const char* cainfo =
+    this->Makefile->GetDefinition("CMAKE_CURLOPT_CAINFO_FILE");
+  // command arg comes first
+  if(caFile.size())
+    {
+    cainfo = caFile.c_str();
+    }
+  if(cainfo)
+    {
+    res = ::curl_easy_setopt(curl, CURLOPT_CAINFO, cainfo);
+    check_curl_result(res, "Unable to set SSL Verify CAINFO: ");
+    }
+
   cmFileCommandVectorOfChar chunkDebug;
 
   res = ::curl_easy_setopt(curl, CURLOPT_WRITEDATA, (void *)&fout);
diff --git a/Source/cmFileCommand.h b/Source/cmFileCommand.h
index ca2bdfd..50eae24 100644
--- a/Source/cmFileCommand.h
+++ b/Source/cmFileCommand.h
@@ -84,9 +84,11 @@ public:
       "  file(DOWNLOAD url file [INACTIVITY_TIMEOUT timeout]\n"
       "       [TIMEOUT timeout] [STATUS status] [LOG log] [SHOW_PROGRESS]\n"
       "       [EXPECTED_HASH MD5|SHA1|SHA224|SHA256|SHA384|SHA512 hash]\n"
-      "       [EXPECTED_MD5 sum])\n"
+      "       [EXPECTED_MD5 sum]\n"
+      "       [SSL_VERIFY on|off] [SSL_CAINFO_FILE file])\n"
       "  file(UPLOAD filename url [INACTIVITY_TIMEOUT timeout]\n"
-      "       [TIMEOUT timeout] [STATUS status] [LOG log] [SHOW_PROGRESS])\n"
+      "       [TIMEOUT timeout] [STATUS status] [LOG log] [SHOW_PROGRESS]\n"
+      "       [SSL_VERIFY on|off] [SSL_CAINFO_FILE file])\n"
       "WRITE will write a message into a file called 'filename'. It "
       "overwrites the file if it already exists, and creates the file "
       "if it does not exist.\n"
@@ -175,6 +177,14 @@ public:
       "(EXPECTED_MD5 is short-hand for EXPECTED_HASH MD5.) "
       "If SHOW_PROGRESS is specified, progress information will be printed "
       "as status messages until the operation is complete. "
+      "For https URLs CMake must be built with OpenSSL.  "
+      "SSL certificates are not checked by default.  "
+      "Set SSL_VERIFY to ON to check certificates and/or use "
+      "EXPECTED_HASH to verify downloaded content.  "
+      "Set SSL_CAINFO_FILE to specify a custom Certificate Authority file.  "
+      "If either SSL option is not given CMake will check variables "
+      "CMAKE_CURLOPT_SSL_VERIFYPEER and CMAKE_CURLOPT_CAINFO_FILE, "
+      "respectively."
       "\n"
       "UPLOAD will upload the given file to the given URL. "
       "If LOG var is specified a log of the upload will be put in var. "

http://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=de9cba73368a78327cee7e626e4caa2bb2a437d6
commit de9cba73368a78327cee7e626e4caa2bb2a437d6
Merge: 52a2477 8b51762
Author:     Brad King <brad.k...@kitware.com>
AuthorDate: Fri Sep 7 13:26:15 2012 -0400
Commit:     Brad King <brad.k...@kitware.com>
CommitDate: Fri Sep 7 13:26:15 2012 -0400

    Merge branch 'curl-openssl' into file-download-verify


http://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=8b51762426ff6e3efbe61ee49f99755c24b4772c
commit 8b51762426ff6e3efbe61ee49f99755c24b4772c
Author:     Brad King <brad.k...@kitware.com>
AuthorDate: Fri Sep 7 13:23:45 2012 -0400
Commit:     Brad King <brad.k...@kitware.com>
CommitDate: Fri Sep 7 13:24:14 2012 -0400

    curl: Honor OPENSSL_NO_SSL2
    
    Some OpenSSL distributions have dropped support for the ancient SSLv2
    protocol completely.  Port changes from upstream curl to recognize this
    case and avoid using it.

diff --git a/Utilities/cmcurl/curl/curl.h b/Utilities/cmcurl/curl/curl.h
index 157c634..e586c4a 100644
--- a/Utilities/cmcurl/curl/curl.h
+++ b/Utilities/cmcurl/curl/curl.h
@@ -312,7 +312,7 @@ typedef enum {
   CURLE_UNSUPPORTED_PROTOCOL,    /* 1 */
   CURLE_FAILED_INIT,             /* 2 */
   CURLE_URL_MALFORMAT,           /* 3 */
-  CURLE_URL_MALFORMAT_USER,      /* 4 - NOT USED */
+  CURLE_NOT_BUILT_IN,            /* 4 */
   CURLE_COULDNT_RESOLVE_PROXY,   /* 5 */
   CURLE_COULDNT_RESOLVE_HOST,    /* 6 */
   CURLE_COULDNT_CONNECT,         /* 7 */
diff --git a/Utilities/cmcurl/ssluse.c b/Utilities/cmcurl/ssluse.c
index 55afb24..14d05ac 100644
--- a/Utilities/cmcurl/ssluse.c
+++ b/Utilities/cmcurl/ssluse.c
@@ -1285,8 +1285,13 @@ Curl_ossl_connect_step1(struct connectdata *conn,
     req_method = TLSv1_client_method();
     break;
   case CURL_SSLVERSION_SSLv2:
+#ifdef OPENSSL_NO_SSL2
+    failf(data, "OpenSSL was built without SSLv2 support");
+    return CURLE_NOT_BUILT_IN;
+#else
     req_method = SSLv2_client_method();
     break;
+#endif
   case CURL_SSLVERSION_SSLv3:
     req_method = SSLv3_client_method();
     break;
diff --git a/Utilities/cmcurl/strerror.c b/Utilities/cmcurl/strerror.c
index 6304fe8..74c3457 100644
--- a/Utilities/cmcurl/strerror.c
+++ b/Utilities/cmcurl/strerror.c
@@ -69,6 +69,10 @@ curl_easy_strerror(CURLcode error)
   case CURLE_URL_MALFORMAT:
     return "URL using bad/illegal format or missing URL";
 
+  case CURLE_NOT_BUILT_IN:
+    return "A requested feature, protocol or option was not found built-in in"
+      " this libcurl due to a build-time decision.";
+
   case CURLE_COULDNT_RESOLVE_PROXY:
     return "couldn't resolve proxy name";
 
@@ -287,7 +291,6 @@ curl_easy_strerror(CURLcode error)
     return "Error in the SSH layer";
 
     /* error codes not used by current libcurl */
-  case CURLE_URL_MALFORMAT_USER:
   case CURLE_FTP_USER_PASSWORD_INCORRECT:
   case CURLE_MALFORMAT_USER:
   case CURLE_BAD_CALLING_ORDER:

http://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=bc0e8c28ece1d681449b9b4b43b16fb5b331534e
commit bc0e8c28ece1d681449b9b4b43b16fb5b331534e
Author:     Bill Hoffman <bill.hoff...@kitware.com>
AuthorDate: Thu Sep 6 15:37:00 2012 -0400
Commit:     Brad King <brad.k...@kitware.com>
CommitDate: Fri Sep 7 11:07:31 2012 -0400

    curl: Make OpenSSL DLLs available to CMake on Windows
    
    Find the OpenSSL runtime DLLs and place them next to the CMake
    executables in the build tree and the install tree.

diff --git a/Utilities/cmcurl/CMakeLists.txt b/Utilities/cmcurl/CMakeLists.txt
index 7eb16d3..ef000a1 100644
--- a/Utilities/cmcurl/CMakeLists.txt
+++ b/Utilities/cmcurl/CMakeLists.txt
@@ -182,6 +182,29 @@ IF(CMAKE_USE_OPENSSL)
   IF(CURL_CA_BUNDLE)
     ADD_DEFINITIONS(-DCURL_CA_BUNDLE="${CURL_CA_BUNDLE}")
   ENDIF(CURL_CA_BUNDLE)
+  # for windows we want to install OPENSSL_LIBRARIES dlls
+  # and also copy them into the build tree so that testing
+  # can find them.
+  IF(WIN32)
+    FIND_FILE(CMAKE_EAY_DLL NAME libeay32.dll HINTS ${OPENSSL_INCLUDE_DIR}/..)
+    FIND_FILE(CMAKE_SSL_DLL NAME ssleay32.dll HINTS ${OPENSSL_INCLUDE_DIR}/..)
+    MARK_AS_ADVANCED(CMAKE_EAY_DLL CMAKE_SSL_DLL)
+    IF(CMAKE_SSL_DLL AND CMAKE_EAY_DLL)
+      SET(CMAKE_CURL_SSL_DLLS ${CMake_BIN_DIR}/${CMAKE_CFG_INTDIR}/libeay32.dll
+        ${CMake_BIN_DIR}/${CMAKE_CFG_INTDIR}/ssleay32.dll)
+      ADD_CUSTOM_COMMAND(OUTPUT
+        ${CMake_BIN_DIR}/${CMAKE_CFG_INTDIR}/libeay32.dll
+        DEPENDS ${CMAKE_EAY_DLL}
+        COMMAND ${CMAKE_COMMAND} -E copy  ${CMAKE_EAY_DLL}
+        ${CMake_BIN_DIR}/${CMAKE_CFG_INTDIR}/libeay32.dll)
+      ADD_CUSTOM_COMMAND(OUTPUT
+        ${CMake_BIN_DIR}/${CMAKE_CFG_INTDIR}/ssleay32.dll
+        DEPENDS ${CMAKE_SSL_DLL}
+        COMMAND ${CMAKE_COMMAND} -E copy  ${CMAKE_SSL_DLL}
+        ${CMake_BIN_DIR}/${CMAKE_CFG_INTDIR}/ssleay32.dll)
+      INSTALL(PROGRAMS ${CMAKE_EAY_DLL} ${CMAKE_SSL_DLL} DESTINATION bin)
+    ENDIF()
+  ENDIF()
 ENDIF(CMAKE_USE_OPENSSL)
 
 # Check for idn
@@ -690,8 +713,7 @@ ENDFOREACH()
 CONFIGURE_FILE(${LIBCURL_SOURCE_DIR}/config.h.in
   ${LIBCURL_BINARY_DIR}/config.h)
 
-
-ADD_LIBRARY(cmcurl ${LIBRARY_TYPE} ${libCurl_SRCS})
+ADD_LIBRARY(cmcurl ${LIBRARY_TYPE} ${libCurl_SRCS} ${CMAKE_CURL_SSL_DLLS})
 TARGET_LINK_LIBRARIES(cmcurl ${CURL_LIBS})
 IF(CMAKE_BUILD_CURL_SHARED)
   SET_TARGET_PROPERTIES(cmcurl PROPERTIES DEFINE_SYMBOL BUILDING_LIBCURL

http://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=c2f47590ef4fb937a5baa4d4b9e0f364e812d407
commit c2f47590ef4fb937a5baa4d4b9e0f364e812d407
Author:     Bill Hoffman <bill.hoff...@kitware.com>
AuthorDate: Wed Sep 5 17:25:44 2012 -0400
Commit:     Brad King <brad.k...@kitware.com>
CommitDate: Fri Sep 7 11:03:19 2012 -0400

    curl: Use find_package(OpenSSL)
    
    Change the code to use the standard CMake FindOpenSSL instead of the
    handcrafted attempt that was there before.

diff --git a/Utilities/cmcurl/CMakeLists.txt b/Utilities/cmcurl/CMakeLists.txt
index caa44f1..7eb16d3 100644
--- a/Utilities/cmcurl/CMakeLists.txt
+++ b/Utilities/cmcurl/CMakeLists.txt
@@ -169,22 +169,14 @@ IF(NOT CURL_SPECIAL_LIBZ)
   CHECK_LIBRARY_EXISTS_CONCAT("z"      inflateEnd   HAVE_LIBZ)
 ENDIF(NOT CURL_SPECIAL_LIBZ)
 
-OPTION(CMAKE_USE_OPENSSL "Use OpenSSL code." OFF)
+OPTION(CMAKE_USE_OPENSSL "Use OpenSSL code with curl." OFF)
 MARK_AS_ADVANCED(CMAKE_USE_OPENSSL)
 IF(CMAKE_USE_OPENSSL)
   SET(USE_SSLEAY TRUE)
   SET(USE_OPENSSL TRUE)
-  IF(WIN32)
-    FIND_PATH(SSLINCLUDE openssl/crypto.h
-      PATHS c:/hoffman/Tools/openssl_w32vc6-0.9.8g/inc32)
-    INCLUDE_DIRECTORIES(${SSLINCLUDE})
-    FIND_LIBRARY(LIBEAY NAMES libeay32)
-    FIND_LIBRARY(SSLEAY NAMES ssleay32)
-    SET(CURL_LIBS  ${CURL_LIBS} ${LIBEAY} ${SSLEAY} )
-  ELSE(WIN32)
-    CHECK_LIBRARY_EXISTS_CONCAT("crypto" CRYPTO_lock  HAVE_LIBCRYPTO)
-    CHECK_LIBRARY_EXISTS_CONCAT("ssl"    SSL_connect  HAVE_LIBSSL)
-  ENDIF(WIN32)
+  FIND_PACKAGE(OpenSSL REQUIRED)
+  INCLUDE_DIRECTORIES(${OPENSSL_INCLUDE_DIR})
+  SET(CURL_LIBS  ${CURL_LIBS} ${OPENSSL_LIBRARIES})
   SET(CURL_CA_BUNDLE "" CACHE FILEPATH "Path to SSL CA Certificate Bundle")
   MARK_AS_ADVANCED(CURL_CA_BUNDLE)
   IF(CURL_CA_BUNDLE)
diff --git a/Utilities/cmcurl/config.h.in b/Utilities/cmcurl/config.h.in
index 6e74935..e18af8f 100644
--- a/Utilities/cmcurl/config.h.in
+++ b/Utilities/cmcurl/config.h.in
@@ -255,9 +255,6 @@
 /* Define to 1 if you have the <libssh2.h> header file. */
 #cmakedefine HAVE_LIBSSH2_H ${HAVE_LIBSSH2_H}
 
-/* Define to 1 if you have the `ssl' library (-lssl). */
-#cmakedefine HAVE_LIBSSL ${HAVE_LIBSSL}
-
 /* if zlib is available */
 #cmakedefine HAVE_LIBZ ${HAVE_LIBZ}
 

http://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=52a2477438097cbe6ae5385a5f8c26d05adbe376
commit 52a2477438097cbe6ae5385a5f8c26d05adbe376
Author:     Bill Hoffman <bill.hoff...@kitware.com>
AuthorDate: Tue Aug 21 18:41:24 2012 -0400
Commit:     Brad King <brad.k...@kitware.com>
CommitDate: Fri Sep 7 10:50:31 2012 -0400

    file(DOWNLOAD): Generalize EXPECTED_MD5 to EXPECTED_HASH
    
    Add support for SHA algorithms.

diff --git a/Source/cmFileCommand.cxx b/Source/cmFileCommand.cxx
index 5103d39..abbbe46 100644
--- a/Source/cmFileCommand.cxx
+++ b/Source/cmFileCommand.cxx
@@ -10,6 +10,7 @@
   See the License for more information.
 ============================================================================*/
 #include "cmFileCommand.h"
+#include "cmCryptoHash.h"
 #include "cmake.h"
 #include "cmHexFileConverter.h"
 #include "cmInstallType.h"
@@ -2666,7 +2667,9 @@ 
cmFileCommand::HandleDownloadCommand(std::vector<std::string> const& args)
   long inactivity_timeout = 0;
   std::string verboseLog;
   std::string statusVar;
-  std::string expectedMD5sum;
+  std::string expectedHash;
+  std::string hashMatchMSG;
+  cmsys::auto_ptr<cmCryptoHash> hash;
   bool showProgress = false;
 
   while(i != args.end())
@@ -2725,48 +2728,68 @@ 
cmFileCommand::HandleDownloadCommand(std::vector<std::string> const& args)
         this->SetError("DOWNLOAD missing sum value for EXPECTED_MD5.");
         return false;
         }
-      expectedMD5sum = cmSystemTools::LowerCase(*i);
+      hash = cmsys::auto_ptr<cmCryptoHash>(cmCryptoHash::New("MD5"));
+      hashMatchMSG = "MD5 sum";
+      expectedHash = cmSystemTools::LowerCase(*i);
       }
     else if(*i == "SHOW_PROGRESS")
       {
       showProgress = true;
       }
+    else if(*i == "EXPECTED_HASH")
+      {
+      ++i;
+      if(i != args.end())
+        {
+        hash = cmsys::auto_ptr<cmCryptoHash>(cmCryptoHash::New(i->c_str()));
+        if(!hash.get())
+          {
+          std::string err = "DOWNLOAD bad SHA type: ";
+          err += *i;
+          this->SetError(err.c_str());
+          return false;
+          }
+        hashMatchMSG = *i;
+        hashMatchMSG += " hash";
+
+        ++i;
+        }
+      if(i != args.end())
+        {
+        expectedHash = cmSystemTools::LowerCase(*i);
+        }
+      else
+        {
+        this->SetError("DOWNLOAD missing time for EXPECTED_HASH.");
+        return false;
+        }
+      }
     ++i;
     }
-
-  // If file exists already, and caller specified an expected md5 sum,
-  // and the existing file already has the expected md5 sum, then simply
+  // If file exists already, and caller specified an expected md5 or sha,
+  // and the existing file already has the expected hash, then simply
   // return.
   //
-  if(cmSystemTools::FileExists(file.c_str()) &&
-    !expectedMD5sum.empty())
+  if(cmSystemTools::FileExists(file.c_str()) && hash.get())
     {
-    char computedMD5[32];
-
-    if (!cmSystemTools::ComputeFileMD5(file.c_str(), computedMD5))
-      {
-      this->SetError("DOWNLOAD cannot compute MD5 sum on pre-existing file");
-      return false;
-      }
-
-    std::string actualMD5sum = cmSystemTools::LowerCase(
-      std::string(computedMD5, 32));
-
-    if (expectedMD5sum == actualMD5sum)
+    bool alreadyHaveFile = false;
+    std::string msg;
+    std::string actualHash = hash->HashFile(file.c_str());
+    if(actualHash == expectedHash)
       {
+      msg = "returning early; file already exists with expected ";
+      msg += hashMatchMSG;
+      msg += "\"";
       if(statusVar.size())
         {
         cmOStringStream result;
-        result << (int)0 << ";\""
-          "returning early: file already exists with expected MD5 sum\"";
+        result << (int)0 << ";\"" << msg;
         this->Makefile->AddDefinition(statusVar.c_str(),
                                       result.str().c_str());
         }
-
       return true;
       }
     }
-
   // Make sure parent directory exists so we can write to the file
   // as we receive downloaded bits from curl...
   //
@@ -2798,7 +2821,6 @@ 
cmFileCommand::HandleDownloadCommand(std::vector<std::string> const& args)
     }
 
   cURLEasyGuard g_curl(curl);
-
   ::CURLcode res = ::curl_easy_setopt(curl, CURLOPT_URL, url.c_str());
   check_curl_result(res, "DOWNLOAD cannot set url: ");
 
@@ -2888,26 +2910,22 @@ 
cmFileCommand::HandleDownloadCommand(std::vector<std::string> const& args)
 
   // Verify MD5 sum if requested:
   //
-  if (!expectedMD5sum.empty())
+  if (hash.get())
     {
-    char computedMD5[32];
-
-    if (!cmSystemTools::ComputeFileMD5(file.c_str(), computedMD5))
+    std::string actualHash = hash->HashFile(file.c_str());
+    if (actualHash.size() == 0)
       {
-      this->SetError("DOWNLOAD cannot compute MD5 sum on downloaded file");
+      this->SetError("DOWNLOAD cannot compute hash on downloaded file");
       return false;
       }
 
-    std::string actualMD5sum = cmSystemTools::LowerCase(
-      std::string(computedMD5, 32));
-
-    if (expectedMD5sum != actualMD5sum)
+    if (expectedHash != actualHash)
       {
       cmOStringStream oss;
-      oss << "DOWNLOAD MD5 mismatch" << std::endl
+      oss << "DOWNLOAD HASH mismatch" << std::endl
         << "  for file: [" << file << "]" << std::endl
-        << "    expected MD5 sum: [" << expectedMD5sum << "]" << std::endl
-        << "      actual MD5 sum: [" << actualMD5sum << "]" << std::endl
+        << "    expected hash: [" << expectedHash << "]" << std::endl
+        << "      actual hash: [" << actualHash << "]" << std::endl
         ;
       this->SetError(oss.str().c_str());
       return false;
diff --git a/Source/cmFileCommand.h b/Source/cmFileCommand.h
index ced26c4..ca2bdfd 100644
--- a/Source/cmFileCommand.h
+++ b/Source/cmFileCommand.h
@@ -83,6 +83,7 @@ public:
       "  file(TO_NATIVE_PATH path result)\n"
       "  file(DOWNLOAD url file [INACTIVITY_TIMEOUT timeout]\n"
       "       [TIMEOUT timeout] [STATUS status] [LOG log] [SHOW_PROGRESS]\n"
+      "       [EXPECTED_HASH MD5|SHA1|SHA224|SHA256|SHA384|SHA512 hash]\n"
       "       [EXPECTED_MD5 sum])\n"
       "  file(UPLOAD filename url [INACTIVITY_TIMEOUT timeout]\n"
       "       [TIMEOUT timeout] [STATUS status] [LOG log] [SHOW_PROGRESS])\n"
@@ -168,11 +169,12 @@ public:
       "timeout after time seconds, time should be specified as an integer. "
       "The INACTIVITY_TIMEOUT specifies an integer number of seconds of "
       "inactivity after which the operation should terminate. "
-      "If EXPECTED_MD5 sum is specified, the operation will verify that the "
-      "downloaded file's actual md5 sum matches the expected value. If it "
+      "If EXPECTED_HASH is specified, the operation will verify that the "
+      "downloaded file's actual hash matches the expected value. If it "
       "does not match, the operation fails with an error. "
+      "(EXPECTED_MD5 is short-hand for EXPECTED_HASH MD5.) "
       "If SHOW_PROGRESS is specified, progress information will be printed "
-      "as status messages until the operation is complete."
+      "as status messages until the operation is complete. "
       "\n"
       "UPLOAD will upload the given file to the given URL. "
       "If LOG var is specified a log of the upload will be put in var. "
diff --git a/Tests/CMakeTests/FileDownloadTest.cmake.in 
b/Tests/CMakeTests/FileDownloadTest.cmake.in
index 9dc2ebb..3f0ab50 100644
--- a/Tests/CMakeTests/FileDownloadTest.cmake.in
+++ b/Tests/CMakeTests/FileDownloadTest.cmake.in
@@ -38,6 +38,59 @@ file(DOWNLOAD
   ${dir}/file3.png
   TIMEOUT 2
   STATUS status
+  EXPECTED_HASH SHA1 50c614fc28b39c1281d0517bb6d5858b4359c9b7
+  )
+
+message(STATUS "FileDownload:5")
+file(DOWNLOAD
+  ${url}
+  ${dir}/file3.png
+  TIMEOUT 2
+  STATUS status
+  EXPECTED_HASH SHA224 73cd5f442b04e8320e4f907f8e1b21d4befff98b5bd77bc32526ea68
+  )
+
+message(STATUS "FileDownload:6")
+file(DOWNLOAD
+  ${url}
+  ${dir}/file3.png
+  TIMEOUT 2
+  STATUS status
+  EXPECTED_HASH SHA256 
2e067f6c09cbc7cd619c8fbcc44eb64cd6b45a95e4cddb3a585eee1f731c4da9
+  )
+
+message(STATUS "FileDownload:7")
+file(DOWNLOAD
+  ${url}
+  ${dir}/file3.png
+  TIMEOUT 2
+  STATUS status
+  EXPECTED_HASH SHA384 
398bf41902a7251c30e522b307e3e41e3fb617c765b3feaa99b2f7d063894708ad399267ccc25d877437a10e5e890d35
+  )
+
+message(STATUS "FileDownload:8")
+file(DOWNLOAD
+  ${url}
+  ${dir}/file3.png
+  TIMEOUT 2
+  STATUS status
+  EXPECTED_HASH SHA512 
c51854d21052713968b849c2b4263cf54be03bc3a7e9847a6c71c6c8d1d13cd805fe1b9fa95f9ba1d0a5631513974f6fae21e34ab5b171d94bad48df5f073e48
+  )
+message(STATUS "FileDownload:9")
+file(DOWNLOAD
+  ${url}
+  ${dir}/file3.png
+  TIMEOUT 2
+  STATUS status
+  EXPECTED_HASH MD5 d16778650db435bda3a8c3435c3ff5d1
+  )
+
+message(STATUS "FileDownload:10")
+file(DOWNLOAD
+  ${url}
+  ${dir}/file3.png
+  TIMEOUT 2
+  STATUS status
   EXPECTED_MD5 d16778650db435bda3a8c3435c3ff5d1
   )
 message(STATUS "${status}")

-----------------------------------------------------------------------

Summary of changes:
 Source/cmFileCommand.cxx                     |  157 ++++++++++++++++++++------
 Source/cmFileCommand.h                       |   22 +++-
 Tests/CMakeTests/FileDownloadTest.cmake.in   |   53 +++++++++
 Utilities/Release/dash2win64_release.cmake   |    1 +
 Utilities/Release/dashmacmini2_release.cmake |    4 +
 Utilities/Release/dashmacmini5_release.cmake |    4 +
 Utilities/Release/magrathea_release.cmake    |    4 +
 Utilities/cmcurl/CMakeLists.txt              |   42 +++++---
 Utilities/cmcurl/config.h.in                 |    3 -
 Utilities/cmcurl/curl/curl.h                 |    2 +-
 Utilities/cmcurl/ssluse.c                    |    5 +
 Utilities/cmcurl/strerror.c                  |    5 +-
 12 files changed, 242 insertions(+), 60 deletions(-)


hooks/post-receive
-- 
CMake
_______________________________________________
Cmake-commits mailing list
Cmake-commits@cmake.org
http://public.kitware.com/cgi-bin/mailman/listinfo/cmake-commits

Reply via email to