0690f3b7b9
xsec_xmlsec.dll is linked to libxmlsec-mscng.dll, which is linked to Win32 bcrypt.dll, which doesn't have BCryptKeyDerivation on Windows 7. Use GetProcAddress() to retrieve BCryptKeyDerivation at runtime; the function is not used by LibreOffice. (regression from commit26bf26272b
and (due to revert) commitbfd479abf0
) Change-Id: I0c0c94ee0cdfd48ae7506d9dfb51fcaf8289d460 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/163709 Tested-by: Jenkins Reviewed-by: Michael Stahl <michael.stahl@allotropia.de>
51 lines
1.8 KiB
Groff
51 lines
1.8 KiB
Groff
tdf#159519 Windows 7 does not have BCryptKeyDerivation
|
|
|
|
It just occurred to me that these functions would of course not be called
|
|
by LibreOffice so this is untested.
|
|
|
|
--- xmlsec/src/mscng/pbkdf2.c.orig 2024-02-21 19:02:56.539534152 +0100
|
|
+++ xmlsec/src/mscng/pbkdf2.c 2024-02-21 19:01:03.282270354 +0100
|
|
@@ -318,7 +318,20 @@
|
|
}
|
|
|
|
/* generate the output key */
|
|
+#if 1 // _WIN32_WINNT <= 0x0601
|
|
+ typedef NTSTATUS (WINAPI * BCryptKeyDerivationPtr)(
|
|
+ BCRYPT_KEY_HANDLE, BCryptBufferDesc *, PUCHAR, ULONG, ULONG *, ULONG);
|
|
+ HMODULE hBCrypt = GetModuleHandle("bcrypt.dll");
|
|
+ BCryptKeyDerivationPtr pBCryptKeyDerivation =
|
|
+ (BCryptKeyDerivationPtr) GetProcAddress(hBCrypt, "BCryptKeyDerivation");
|
|
+ if(NULL == pBCryptKeyDerivation) {
|
|
+ xmlSecMSCngNtError("BCryptKeyDerivation", NULL, status);
|
|
+ goto done;
|
|
+ }
|
|
+ status = (*pBCryptKeyDerivation)(
|
|
+#else
|
|
status = BCryptKeyDerivation(
|
|
+#endif
|
|
hKey,
|
|
¶msPBKDF2,
|
|
pbOut,
|
|
--- xmlsec/src/mscng/concatkdf.c.orig 2024-02-21 19:02:37.962490885 +0100
|
|
+++ xmlsec/src/mscng/concatkdf.c 2024-02-21 19:01:37.961351134 +0100
|
|
@@ -318,7 +318,20 @@
|
|
}
|
|
|
|
/* generate the output key */
|
|
+#if 1 // _WIN32_WINNT <= 0x0601
|
|
+ typedef NTSTATUS (WINAPI * BCryptKeyDerivationPtr)(
|
|
+ BCRYPT_KEY_HANDLE, BCryptBufferDesc *, PUCHAR, ULONG, ULONG *, ULONG);
|
|
+ HMODULE hBCrypt = GetModuleHandle("bcrypt.dll");
|
|
+ BCryptKeyDerivationPtr pBCryptKeyDerivation =
|
|
+ (BCryptKeyDerivationPtr) GetProcAddress(hBCrypt, "BCryptKeyDerivation");
|
|
+ if(NULL == pBCryptKeyDerivation) {
|
|
+ xmlSecMSCngNtError("BCryptKeyDerivation", NULL, status);
|
|
+ goto done;
|
|
+ }
|
|
+ status = (*pBCryptKeyDerivation)(
|
|
+#else
|
|
status = BCryptKeyDerivation(
|
|
+#endif
|
|
hKey,
|
|
¶msCONCATKDF2,
|
|
pbOut,
|