aboutsummaryrefslogtreecommitdiff
path: root/src/engine
diff options
context:
space:
mode:
authorSean Hall <r.sean.hall@gmail.com>2021-03-02 15:05:10 -0600
committerSean Hall <r.sean.hall@gmail.com>2021-03-02 15:47:43 -0600
commit7f128f4639b6a14217780d69a0615b44d36f2f1b (patch)
treebb124985a687040524cea1f6347737399cfdb948 /src/engine
parent227518090282bba4d973d4efe910623879218a62 (diff)
downloadwix-7f128f4639b6a14217780d69a0615b44d36f2f1b.tar.gz
wix-7f128f4639b6a14217780d69a0615b44d36f2f1b.tar.bz2
wix-7f128f4639b6a14217780d69a0615b44d36f2f1b.zip
Use SHA512 instead of SHA1.
#3992
Diffstat (limited to 'src/engine')
-rw-r--r--src/engine/cache.cpp12
-rw-r--r--src/engine/cache.h2
-rw-r--r--src/engine/externalengine.cpp2
-rw-r--r--src/engine/userexperience.cpp2
4 files changed, 9 insertions, 9 deletions
diff --git a/src/engine/cache.cpp b/src/engine/cache.cpp
index 92a79eb9..2349a357 100644
--- a/src/engine/cache.cpp
+++ b/src/engine/cache.cpp
@@ -273,7 +273,7 @@ extern "C" HRESULT CacheCalculatePayloadWorkingPath(
273 ExitOnFailure(hr, "Failed to get working folder for payload."); 273 ExitOnFailure(hr, "Failed to get working folder for payload.");
274 274
275 hr = StrAllocConcat(psczWorkingPath, pPayload->sczKey, 0); 275 hr = StrAllocConcat(psczWorkingPath, pPayload->sczKey, 0);
276 ExitOnFailure(hr, "Failed to append SHA1 hash as payload unverified path."); 276 ExitOnFailure(hr, "Failed to append Id as payload unverified path.");
277 277
278LExit: 278LExit:
279 return hr; 279 return hr;
@@ -291,7 +291,7 @@ extern "C" HRESULT CacheCalculateContainerWorkingPath(
291 ExitOnFailure(hr, "Failed to get working folder for container."); 291 ExitOnFailure(hr, "Failed to get working folder for container.");
292 292
293 hr = StrAllocConcat(psczWorkingPath, pContainer->sczHash, 0); 293 hr = StrAllocConcat(psczWorkingPath, pContainer->sczHash, 0);
294 ExitOnFailure(hr, "Failed to append SHA1 hash as container unverified path."); 294 ExitOnFailure(hr, "Failed to append hash as container unverified path.");
295 295
296LExit: 296LExit:
297 return hr; 297 return hr;
@@ -1750,23 +1750,23 @@ static HRESULT VerifyHash(
1750 UNREFERENCED_PARAMETER(wzUnverifiedPayloadPath); 1750 UNREFERENCED_PARAMETER(wzUnverifiedPayloadPath);
1751 1751
1752 HRESULT hr = S_OK; 1752 HRESULT hr = S_OK;
1753 BYTE rgbActualHash[SHA1_HASH_LEN] = { }; 1753 BYTE rgbActualHash[SHA512_HASH_LEN] = { };
1754 DWORD64 qwHashedBytes; 1754 DWORD64 qwHashedBytes;
1755 LPWSTR pszExpected = NULL; 1755 LPWSTR pszExpected = NULL;
1756 LPWSTR pszActual = NULL; 1756 LPWSTR pszActual = NULL;
1757 1757
1758 // TODO: create a cryp hash file that sends progress. 1758 // TODO: create a cryp hash file that sends progress.
1759 hr = CrypHashFileHandle(hFile, PROV_RSA_FULL, CALG_SHA1, rgbActualHash, sizeof(rgbActualHash), &qwHashedBytes); 1759 hr = CrypHashFileHandle(hFile, PROV_RSA_AES, CALG_SHA_512, rgbActualHash, sizeof(rgbActualHash), &qwHashedBytes);
1760 ExitOnFailure(hr, "Failed to calculate hash for path: %ls", wzUnverifiedPayloadPath); 1760 ExitOnFailure(hr, "Failed to calculate hash for path: %ls", wzUnverifiedPayloadPath);
1761 1761
1762 // Compare hashes. 1762 // Compare hashes.
1763 if (cbHash != sizeof(rgbActualHash) || 0 != memcmp(pbHash, rgbActualHash, SHA1_HASH_LEN)) 1763 if (cbHash != sizeof(rgbActualHash) || 0 != memcmp(pbHash, rgbActualHash, SHA512_HASH_LEN))
1764 { 1764 {
1765 hr = CRYPT_E_HASH_VALUE; 1765 hr = CRYPT_E_HASH_VALUE;
1766 1766
1767 // Best effort to log the expected and actual hash value strings. 1767 // Best effort to log the expected and actual hash value strings.
1768 if (SUCCEEDED(StrAllocHexEncode(pbHash, cbHash, &pszExpected)) && 1768 if (SUCCEEDED(StrAllocHexEncode(pbHash, cbHash, &pszExpected)) &&
1769 SUCCEEDED(StrAllocHexEncode(rgbActualHash, SHA1_HASH_LEN, &pszActual))) 1769 SUCCEEDED(StrAllocHexEncode(rgbActualHash, (SIZE_T)qwHashedBytes, &pszActual)))
1770 { 1770 {
1771 ExitOnFailure(hr, "Hash mismatch for path: %ls, expected: %ls, actual: %ls", wzUnverifiedPayloadPath, pszExpected, pszActual); 1771 ExitOnFailure(hr, "Hash mismatch for path: %ls, expected: %ls, actual: %ls", wzUnverifiedPayloadPath, pszExpected, pszActual);
1772 } 1772 }
diff --git a/src/engine/cache.h b/src/engine/cache.h
index f8ad2a90..a00c50b7 100644
--- a/src/engine/cache.h
+++ b/src/engine/cache.h
@@ -16,7 +16,7 @@ HRESULT CacheInitialize(
16 __in_z_opt LPCWSTR wzSourceProcessPath 16 __in_z_opt LPCWSTR wzSourceProcessPath
17 ); 17 );
18HRESULT CacheEnsureWorkingFolder( 18HRESULT CacheEnsureWorkingFolder(
19 __in_z LPCWSTR wzBundleId, 19 __in_z_opt LPCWSTR wzBundleId,
20 __deref_out_z_opt LPWSTR* psczWorkingFolder 20 __deref_out_z_opt LPWSTR* psczWorkingFolder
21 ); 21 );
22HRESULT CacheCalculateBundleWorkingPath( 22HRESULT CacheCalculateBundleWorkingPath(
diff --git a/src/engine/externalengine.cpp b/src/engine/externalengine.cpp
index f9a06437..26ab9fba 100644
--- a/src/engine/externalengine.cpp
+++ b/src/engine/externalengine.cpp
@@ -288,7 +288,7 @@ HRESULT ExternalEngineSetUpdate(
288 { 288 {
289 hr = E_INVALIDARG; 289 hr = E_INVALIDARG;
290 } 290 }
291 else if (BOOTSTRAPPER_UPDATE_HASH_TYPE_SHA1 == hashType && (SHA1_HASH_LEN != cbHash || !rgbHash)) 291 else if (BOOTSTRAPPER_UPDATE_HASH_TYPE_SHA512 == hashType && (SHA512_HASH_LEN != cbHash || !rgbHash))
292 { 292 {
293 hr = E_INVALIDARG; 293 hr = E_INVALIDARG;
294 } 294 }
diff --git a/src/engine/userexperience.cpp b/src/engine/userexperience.cpp
index 84e88718..40a30c5d 100644
--- a/src/engine/userexperience.cpp
+++ b/src/engine/userexperience.cpp
@@ -111,7 +111,7 @@ extern "C" HRESULT UserExperienceLoad(
111 args.pCommand = pCommand; 111 args.pCommand = pCommand;
112 args.pfnBootstrapperEngineProc = EngineForApplicationProc; 112 args.pfnBootstrapperEngineProc = EngineForApplicationProc;
113 args.pvBootstrapperEngineProcContext = pEngineContext; 113 args.pvBootstrapperEngineProcContext = pEngineContext;
114 args.qwEngineAPIVersion = MAKEQWORDVERSION(2021, 2, 24, 0); 114 args.qwEngineAPIVersion = MAKEQWORDVERSION(2021, 3, 2, 0);
115 115
116 results.cbSize = sizeof(BOOTSTRAPPER_CREATE_RESULTS); 116 results.cbSize = sizeof(BOOTSTRAPPER_CREATE_RESULTS);
117 117