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,