Hello, For GnuPG and other libraries for GnuPG, WindowsCE support has been removed. This is a patch for libgcrypt. Tested (make check) on amd64 and Windows.
--
>From 24a2ca672b2198d3f420399bd01cc626d9de99f8 Mon Sep 17 00:00:00 2001 From: NIIBE Yutaka <[email protected]> Date: Thu, 16 Jan 2025 15:18:04 +0900 Subject: [PATCH] Remove WindowsCE support. * compat/clock.c, compat/getpid.c, random/rndw32ce.c: Remove. * compat/Makefile.am: Remove comment for clock.c and getpid.c. * compat/libcompat.h: Remove replacement functions. * configure.ac (GPG_ERR_ENABLE_ERRNO_MACROS): Remove. (have_w32ce_system, HAVE_W32CE_SYSTEM): Remove. (AC_REPLACE_FUNCS): Remove. (USE_RNDW32CE): Remove. * random/Makefile.am (EXTRA_librandom_la_SOURCES): Remove rndw32ce.c. * random/random-csprng.c [USE_RNDW32CE] (getfnc_gather_random): Remove WindowsCE support. (getfnc_fast_random_poll): Likewise. * src/Makefile.am [HAVE_W32CE_SYSTEM]: Remove WindowsCE support. * src/dumpsexp.c [__MINGW32CE__]: Remove WindowsCE support. * tests/stopwatch.h [__MINGW32CE__] (start_timer, stop_timer): Remove WindowsCE support. -- GnuPG-bug-id: 7486 Signed-off-by: NIIBE Yutaka <[email protected]> --- compat/Makefile.am | 5 -- compat/clock.c | 36 -------- compat/getpid.c | 29 ------ compat/libcompat.h | 12 --- configure.ac | 40 +-------- random/Makefile.am | 1 - random/random-csprng.c | 8 -- random/rndw32ce.c | 199 ----------------------------------------- src/Makefile.am | 18 +--- src/dumpsexp.c | 5 -- tests/stopwatch.h | 12 --- 11 files changed, 5 insertions(+), 360 deletions(-) delete mode 100644 compat/clock.c delete mode 100644 compat/getpid.c delete mode 100644 random/rndw32ce.c diff --git a/compat/Makefile.am b/compat/Makefile.am index f0ddf34d..0b17ea8f 100644 --- a/compat/Makefile.am +++ b/compat/Makefile.am @@ -41,8 +41,3 @@ noinst_LTLIBRARIES = libcompat.la libcompat_la_SOURCES = compat.c libcompat.h libcompat_la_DEPENDENCIES = @LTLIBOBJS@ libcompat_la_LIBADD = @LTLIBOBJS@ - -# AC_LIBOBJ files are: -# getpid.c -# clock.c -# diff --git a/compat/clock.c b/compat/clock.c deleted file mode 100644 index 2a2c205f..00000000 --- a/compat/clock.c +++ /dev/null @@ -1,36 +0,0 @@ -/* clock.c - Replacement for WindowsCE - Copyright (C) 2010 Free Software Foundation, Inc. - - This file is free software; as a special exception the author gives - unlimited permission to copy and/or distribute it, with or without - modifications, as long as this notice is preserved. - - This file is distributed in the hope that it will be useful, but - WITHOUT ANY WARRANTY, to the extent permitted by law; without even - the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR - PURPOSE. */ - -#if HAVE_CONFIG_H -#include <config.h> -#endif - -#ifdef HAVE_W32CE_SYSTEM -#include <windows.h> -#include <time.h> -#include <assert.h> - -clock_t -_gcry_clock (void) -{ - assert (CLOCKS_PER_SEC == 1000); -#warning Replace by a correct implementation. - /* It seems that GetProcessTimes is available in the kernel but - without a declaration. If that fails we would need to walk over - all threads and tally up the GetThreadTimes. */ - - return GetTickCount (); -} - -#else -# error No replacement function for clock known -#endif diff --git a/compat/getpid.c b/compat/getpid.c deleted file mode 100644 index 032387c3..00000000 --- a/compat/getpid.c +++ /dev/null @@ -1,29 +0,0 @@ -/* getpid.c - Replacement for WindowsCE - Copyright (C) 2010 Free Software Foundation, Inc. - - This file is free software; as a special exception the author gives - unlimited permission to copy and/or distribute it, with or without - modifications, as long as this notice is preserved. - - This file is distributed in the hope that it will be useful, but - WITHOUT ANY WARRANTY, to the extent permitted by law; without even - the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR - PURPOSE. */ - -#if HAVE_CONFIG_H -#include <config.h> -#endif - -#ifdef HAVE_W32CE_SYSTEM -#include <windows.h> -#include <sys/types.h> - -pid_t -_gcry_getpid (void) -{ - return GetCurrentProcessId (); -} - -#else -# error No replacement function for getpid known -#endif diff --git a/compat/libcompat.h b/compat/libcompat.h index d3eb81bf..411a27be 100644 --- a/compat/libcompat.h +++ b/compat/libcompat.h @@ -22,16 +22,4 @@ const char *_gcry_compat_identification (void); - -#ifndef HAVE_GETPID -pid_t _gcry_getpid (void); -#define getpid() _gcry_getpid () -#endif - -#ifndef HAVE_CLOCK -clock_t _gcry_clock (void); -#define clock() _gcry_clock () -#endif - - #endif /*GCRY_LIBCOMPAT_H*/ diff --git a/configure.ac b/configure.ac index f38e20c5..c1bba129 100644 --- a/configure.ac +++ b/configure.ac @@ -90,9 +90,6 @@ AC_ARG_VAR(SYSROOT,[locate config scripts also below that directory]) AH_TOP([ #ifndef _GCRYPT_CONFIG_H_INCLUDED #define _GCRYPT_CONFIG_H_INCLUDED - -/* Enable gpg-error's strerror macro for W32CE. */ -#define GPG_ERR_ENABLE_ERRNO_MACROS 1 ]) AH_BOTTOM([ @@ -238,7 +235,6 @@ LIBGCRYPT_THREAD_MODULES="" # Other definitions. have_w32_system=no -have_w32ce_system=no have_pthread=no @@ -247,15 +243,7 @@ case "${host}" in *-*-mingw32*) ac_cv_have_dev_random=no have_w32_system=yes - case "${host}" in - *-mingw32ce*) - have_w32ce_system=yes - available_random_modules="w32ce" - ;; - *) - available_random_modules="w32" - ;; - esac + available_random_modules="w32" AC_DEFINE(USE_ONLY_8DOT3,1, [set this to limit filenames to the 8.3 format]) AC_DEFINE(HAVE_DRIVE_LETTERS,1, @@ -307,21 +295,12 @@ esac if test "$have_w32_system" = yes; then AC_DEFINE(HAVE_W32_SYSTEM,1, [Defined if we run on a W32 API based system]) - if test "$have_w32ce_system" = yes; then - AC_DEFINE(HAVE_W32CE_SYSTEM,1,[Defined if we run on WindowsCE]) - fi fi AM_CONDITIONAL(HAVE_W32_SYSTEM, test "$have_w32_system" = yes) -AM_CONDITIONAL(HAVE_W32CE_SYSTEM, test "$have_w32ce_system" = yes) - # A printable OS Name is sometimes useful. case "${host}" in - *-*-mingw32ce*) - PRINTABLE_OS_NAME="W32CE" - ;; - *-*-mingw32*) PRINTABLE_OS_NAME="W32" ;; @@ -2637,12 +2616,6 @@ AC_CHECK_FUNCS(explicit_bzero explicit_memset getentropy sysctlbyname) GNUPG_CHECK_MLOCK -# -# Replacement functions. -# -AC_REPLACE_FUNCS([getpid clock]) - - # # Check whether it is necessary to link against libdl. # @@ -2712,10 +2685,6 @@ if test "$random" = "default"; then random_modules="linux" else case "${host}" in - *-*-mingw32ce*) - # WindowsCE random device. - random_modules="w32ce" - ;; *-*-mingw32*|*-*-cygwin*) # Windows random device. random_modules="w32" @@ -3721,13 +3690,6 @@ if test "$found" = "1" ; then [Defined if the Windows specific RNG should be used.]) fi -LIST_MEMBER(w32ce, $random_modules) -if test "$found" = "1" ; then - GCRYPT_RANDOM="$GCRYPT_RANDOM rndw32ce.lo" - AC_DEFINE(USE_RNDW32CE, 1, - [Defined if the WindowsCE specific RNG should be used.]) -fi - if test "$try_asm_modules" = yes ; then # Build with assembly implementations GCRYPT_CIPHERS="$GCRYPT_CIPHERS $GCRYPT_ASM_CIPHERS" diff --git a/random/Makefile.am b/random/Makefile.am index a42e4306..41041e8a 100644 --- a/random/Makefile.am +++ b/random/Makefile.am @@ -45,7 +45,6 @@ rndoldlinux.c \ rndegd.c \ rndunix.c \ rndw32.c \ -rndw32ce.c \ jitterentropy-gcd.c jitterentropy-gcd.h \ jitterentropy-health.c jitterentropy-health.h \ jitterentropy-noise.c jitterentropy-noise.h \ diff --git a/random/random-csprng.c b/random/random-csprng.c index 4f34acc0..7304f180 100644 --- a/random/random-csprng.c +++ b/random/random-csprng.c @@ -1179,11 +1179,6 @@ getfnc_gather_random (void))(void (*)(const void*, size_t, return fnc; #endif -#if USE_RNDW32CE - fnc = _gcry_rndw32ce_gather_random; - return fnc; -#endif - log_fatal (_("no entropy gathering module detected\n")); return NULL; /*NOTREACHED*/ @@ -1198,9 +1193,6 @@ getfnc_fast_random_poll (void))( void (*)(const void*, size_t, { #if USE_RNDW32 return _gcry_rndw32_gather_random_fast; -#endif -#if USE_RNDW32CE - return _gcry_rndw32ce_gather_random_fast; #endif return NULL; } diff --git a/random/rndw32ce.c b/random/rndw32ce.c deleted file mode 100644 index 873e8460..00000000 --- a/random/rndw32ce.c +++ /dev/null @@ -1,199 +0,0 @@ -/* rndw32ce.c - W32CE entropy gatherer - * Copyright (C) 2010 Free Software Foundation, Inc. - * - * Libgcrypt is free software; you can redistribute it and/or modify - * it under the terms of the GNU Lesser General Public License as - * published by the Free Software Foundation; either version 2.1 of - * the License, or (at your option) any later version. - * - * Libgcrypt is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this program; if not, see <http://www.gnu.org/licenses/>. - */ - -#include <config.h> -#include <stdio.h> -#include <stdlib.h> -#include <errno.h> -#include <string.h> -#include <stdint.h> - -#include <windows.h> -#include <wincrypt.h> - -#include "types.h" -#include "g10lib.h" -#include "rand-internal.h" - - -/* The Microsoft docs say that it is suggested to see the buffer with - some extra random. We do this, despite that it is a questionable - suggestion as the OS as better means of collecting entropy than an - application. */ -static size_t filler_used; -static size_t filler_length; -static unsigned char *filler_buffer; - -static void -filler (const void *data, size_t datalen, enum random_origins dummy) -{ - (void)dummy; - if (filler_used + datalen > filler_length) - datalen = filler_length - filler_used; - memcpy (filler_buffer + filler_used, data, datalen); - filler_used += datalen; -} - - -static void -fillup_buffer (unsigned char *buffer, size_t length) -{ - filler_used = 0; - filler_length = length; - filler_buffer = buffer; - - while (filler_used < length) - _gcry_rndw32ce_gather_random_fast (filler, 0); -} - - -int -_gcry_rndw32ce_gather_random (void (*add)(const void*, size_t, - enum random_origins), - enum random_origins origin, - size_t length, int level ) -{ - HCRYPTPROV prov; - unsigned char buffer [256]; - DWORD buflen; - - if (!level) - return 0; - - /* Note that LENGTH is not really important because the caller - checks the returned lengths and calls this function until it - feels that enough entropy has been gathered. */ - - buflen = sizeof buffer; - if (length+8 < buflen) - buflen = length+8; /* Return a bit more than requested. */ - - if (!CryptAcquireContext (&prov, NULL, NULL, PROV_RSA_FULL, - (CRYPT_VERIFYCONTEXT|CRYPT_SILENT)) ) - log_debug ("CryptAcquireContext failed: rc=%d\n", (int)GetLastError ()); - else - { - fillup_buffer (buffer, buflen); - if (!CryptGenRandom (prov, buflen, buffer)) - log_debug ("CryptGenRandom(%d) failed: rc=%d\n", - (int)buflen, (int)GetLastError ()); - else - (*add) (buffer, buflen, origin); - CryptReleaseContext (prov, 0); - wipememory (buffer, sizeof buffer); - } - - return 0; -} - - - -void -_gcry_rndw32ce_gather_random_fast (void (*add)(const void*, size_t, - enum random_origins), - enum random_origins origin) -{ - - /* Add word sized values. */ - { -# define ADD(t,f) do { \ - t along = (f); \ - memcpy (bufptr, &along, sizeof (along)); \ - bufptr += sizeof (along); \ - } while (0) - unsigned char buffer[20*sizeof(unsigned long)], *bufptr; - - bufptr = buffer; - ADD (HWND, GetActiveWindow ()); - ADD (HWND, GetCapture ()); - ADD (HWND, GetClipboardOwner ()); - ADD (HANDLE, GetCurrentProcess ()); - ADD (DWORD, GetCurrentProcessId ()); - ADD (HANDLE, GetCurrentThread ()); - ADD (DWORD, GetCurrentThreadId ()); - ADD (HWND, GetDesktopWindow ()); - ADD (HWND, GetFocus ()); - ADD (DWORD, GetMessagePos ()); - ADD (HWND, GetOpenClipboardWindow ()); - ADD (HWND, GetProcessHeap ()); - ADD (DWORD, GetQueueStatus (QS_ALLEVENTS)); - ADD (DWORD, GetTickCount ()); - - gcry_assert ( bufptr-buffer < sizeof (buffer) ); - (*add) ( buffer, bufptr-buffer, origin ); -# undef ADD - } - - /* Get multiword system information: Current caret position, current - mouse cursor position. */ - { - POINT point; - - GetCaretPos (&point); - (*add) ( &point, sizeof (point), origin ); - GetCursorPos (&point); - (*add) ( &point, sizeof (point), origin ); - } - - /* Get percent of memory in use, bytes of physical memory, bytes of - free physical memory, bytes in paging file, free bytes in paging - file, user bytes of address space, and free user bytes. */ - { - MEMORYSTATUS memoryStatus; - - memoryStatus.dwLength = sizeof (MEMORYSTATUS); - GlobalMemoryStatus (&memoryStatus); - (*add) ( &memoryStatus, sizeof (memoryStatus), origin ); - } - - - /* Get thread and process creation time, exit time, time in kernel - mode, and time in user mode in 100ns intervals. */ - { - HANDLE handle; - FILETIME creationTime, exitTime, kernelTime, userTime; - - handle = GetCurrentThread (); - GetThreadTimes (handle, &creationTime, &exitTime, - &kernelTime, &userTime); - (*add) ( &creationTime, sizeof (creationTime), origin ); - (*add) ( &exitTime, sizeof (exitTime), origin ); - (*add) ( &kernelTime, sizeof (kernelTime), origin ); - (*add) ( &userTime, sizeof (userTime), origin ); - - handle = GetCurrentThread (); - GetThreadTimes (handle, &creationTime, &exitTime, - &kernelTime, &userTime); - (*add) ( &creationTime, sizeof (creationTime), origin ); - (*add) ( &exitTime, sizeof (exitTime), origin ); - (*add) ( &kernelTime, sizeof (kernelTime), origin ); - (*add) ( &userTime, sizeof (userTime), origin ); - - } - - - /* In case the OEM provides a high precision timer get this. If - none is available the default implementation returns the - GetTickCount. */ - { - LARGE_INTEGER performanceCount; - - if (QueryPerformanceCounter (&performanceCount)) - (*add) (&performanceCount, sizeof (performanceCount), origin); - } - -} diff --git a/src/Makefile.am b/src/Makefile.am index f6191bc8..abddab71 100644 --- a/src/Makefile.am +++ b/src/Makefile.am @@ -38,15 +38,6 @@ nodist_include_HEADERS = gcrypt.h lib_LTLIBRARIES = libgcrypt.la bin_PROGRAMS = dumpsexp hmac256 mpicalc -# Depending on the architecture some targets require libgpg-error. -if HAVE_W32CE_SYSTEM -arch_gpg_error_cflags = $(GPG_ERROR_CFLAGS) -arch_gpg_error_libs = $(GPG_ERROR_LIBS) -else -arch_gpg_error_cflags = -arch_gpg_error_libs = -endif - AM_CFLAGS = $(GPG_ERROR_CFLAGS) AM_CCASFLAGS = $(NOEXECSTACK_FLAGS) @@ -129,8 +120,8 @@ libgcrypt_la_LIBADD = $(gcrypt_res) \ dumpsexp_SOURCES = dumpsexp.c -dumpsexp_CFLAGS = $(arch_gpg_error_cflags) -dumpsexp_LDADD = $(arch_gpg_error_libs) +dumpsexp_CFLAGS = +dumpsexp_LDADD = mpicalc_SOURCES = mpicalc.c mpicalc_CFLAGS = $(GPG_ERROR_CFLAGS) @@ -138,9 +129,8 @@ mpicalc_LDADD = libgcrypt.la $(GPG_ERROR_LIBS) EXTRA_mpicalc_DEPENDENCIES = libgcrypt.la.done hmac256_SOURCES = hmac256.c hmac256.h -hmac256_CFLAGS = -DSTANDALONE @DEF_HMAC_BINARY_CHECK@ \ - $(arch_gpg_error_cflags) -hmac256_LDADD = $(arch_gpg_error_libs) +hmac256_CFLAGS = -DSTANDALONE @DEF_HMAC_BINARY_CHECK@ +hmac256_LDADD = CLEANFILES = libgcrypt.la.done if USE_HMAC_BINARY_CHECK diff --git a/src/dumpsexp.c b/src/dumpsexp.c index ae656359..15a69d1d 100644 --- a/src/dumpsexp.c +++ b/src/dumpsexp.c @@ -23,11 +23,6 @@ #include <assert.h> #include <stdarg.h> #include <errno.h> -/* For a native WindowsCE binary we need to include gpg-error.h to - provide a replacement for strerror. */ -#ifdef __MINGW32CE__ -# include <gpg-error.h> -#endif #define PGM "dumpsexp" #define MYVERSION_LINE PGM " (Libgcrypt) " VERSION diff --git a/tests/stopwatch.h b/tests/stopwatch.h index 696e3005..c0029ae5 100644 --- a/tests/stopwatch.h +++ b/tests/stopwatch.h @@ -41,15 +41,9 @@ static void start_timer (void) { #ifdef _WIN32 -#ifdef __MINGW32CE__ - GetThreadTimes (GetCurrentThread (), - &started_at.creation_time, &started_at.exit_time, - &started_at.kernel_time, &started_at.user_time); -#else GetProcessTimes (GetCurrentProcess (), &started_at.creation_time, &started_at.exit_time, &started_at.kernel_time, &started_at.user_time); -#endif stopped_at = started_at; #else struct tms tmp; @@ -63,15 +57,9 @@ static void stop_timer (void) { #ifdef _WIN32 -#ifdef __MINGW32CE__ - GetThreadTimes (GetCurrentThread (), - &stopped_at.creation_time, &stopped_at.exit_time, - &stopped_at.kernel_time, &stopped_at.user_time); -#else GetProcessTimes (GetCurrentProcess (), &stopped_at.creation_time, &stopped_at.exit_time, &stopped_at.kernel_time, &stopped_at.user_time); -#endif #else struct tms tmp; -- 2.39.5
_______________________________________________ Gcrypt-devel mailing list [email protected] https://lists.gnupg.org/mailman/listinfo/gcrypt-devel
