From 2dbaa78d9184ccb2010d20c9c37b56f9e17cb96f Mon Sep 17 00:00:00 2001 From: nbd Date: Tue, 22 Mar 2011 21:00:54 +0000 Subject: hostapd: make entropy collection contribute to the kernel pool git-svn-id: svn://svn.openwrt.org/openwrt/trunk@26272 3c298f89-4303-0410-b956-a3cf2f4a3e73 --- .../patches/700-random_pool_add_kernel.patch | 120 +++++++++++++++++++++ 1 file changed, 120 insertions(+) create mode 100644 package/hostapd/patches/700-random_pool_add_kernel.patch (limited to 'package/hostapd/patches/700-random_pool_add_kernel.patch') diff --git a/package/hostapd/patches/700-random_pool_add_kernel.patch b/package/hostapd/patches/700-random_pool_add_kernel.patch new file mode 100644 index 000000000..1edaff9e7 --- /dev/null +++ b/package/hostapd/patches/700-random_pool_add_kernel.patch @@ -0,0 +1,120 @@ +--- a/src/crypto/random.c ++++ b/src/crypto/random.c +@@ -47,6 +47,8 @@ + #define EXTRACT_LEN 16 + #define MIN_READY_MARK 2 + ++#ifndef CONFIG_NO_RANDOM_POOL ++ + static u32 pool[POOL_WORDS]; + static unsigned int input_rotate = 0; + static unsigned int pool_pos = 0; +@@ -120,7 +122,7 @@ static void random_extract(u8 *out) + } + + +-void random_add_randomness(const void *buf, size_t len) ++static void random_pool_add_randomness(const void *buf, size_t len) + { + struct os_time t; + static unsigned int count = 0; +@@ -260,3 +262,22 @@ void random_mark_pool_ready(void) + wpa_printf(MSG_DEBUG, "random: Mark internal entropy pool to be " + "ready (count=%u/%u)", own_pool_ready, MIN_READY_MARK); + } ++ ++#endif /* CONFIG_NO_RANDOM_POOL */ ++ ++ ++void random_add_randomness(const void *buf, size_t len) ++{ ++#ifdef __linux__ ++ int fd; ++ ++ fd = open("/dev/random", O_RDWR); ++ if (fd >= 0) { ++ write(fd, buf, len); ++ close(fd); ++ } ++#endif ++#ifndef CONFIG_NO_RANDOM_POOL ++ random_pool_add_randomness(buf, len); ++#endif ++} +--- a/hostapd/Makefile ++++ b/hostapd/Makefile +@@ -698,11 +698,11 @@ endif + ifdef CONFIG_NO_RANDOM_POOL + CFLAGS += -DCONFIG_NO_RANDOM_POOL + else +-OBJS += ../src/crypto/random.o +-HOBJS += ../src/crypto/random.o + HOBJS += $(SHA1OBJS) + HOBJS += ../src/crypto/md5.o + endif ++OBJS += ../src/crypto/random.o ++HOBJS += ../src/crypto/random.o + + ifdef CONFIG_RADIUS_SERVER + CFLAGS += -DRADIUS_SERVER +--- a/wpa_supplicant/Makefile ++++ b/wpa_supplicant/Makefile +@@ -1101,9 +1101,8 @@ endif + + ifdef CONFIG_NO_RANDOM_POOL + CFLAGS += -DCONFIG_NO_RANDOM_POOL +-else +-OBJS += ../src/crypto/random.o + endif ++OBJS += ../src/crypto/random.o + + ifdef CONFIG_CTRL_IFACE + ifeq ($(CONFIG_CTRL_IFACE), y) +--- a/wpa_supplicant/Android.mk ++++ b/wpa_supplicant/Android.mk +@@ -1102,9 +1102,8 @@ endif + + ifdef CONFIG_NO_RANDOM_POOL + L_CFLAGS += -DCONFIG_NO_RANDOM_POOL +-else +-OBJS += src/crypto/random.c + endif ++OBJS += src/crypto/random.c + + ifdef CONFIG_CTRL_IFACE + ifeq ($(CONFIG_CTRL_IFACE), y) +--- a/hostapd/Android.mk ++++ b/hostapd/Android.mk +@@ -717,11 +717,11 @@ endif + ifdef CONFIG_NO_RANDOM_POOL + L_CFLAGS += -DCONFIG_NO_RANDOM_POOL + else +-OBJS += src/crypto/random.c +-HOBJS += src/crypto/random.c + HOBJS += $(SHA1OBJS) + HOBJS += src/crypto/md5.c + endif ++OBJS += src/crypto/random.c ++HOBJS += src/crypto/random.c + + ifdef CONFIG_RADIUS_SERVER + L_CFLAGS += -DRADIUS_SERVER +--- a/src/crypto/random.h ++++ b/src/crypto/random.h +@@ -16,15 +16,14 @@ + #define RANDOM_H + + #ifdef CONFIG_NO_RANDOM_POOL +-#define random_add_randomness(b, l) do { } while (0) + #define random_get_bytes(b, l) os_get_random((b), (l)) + #define random_pool_ready() 1 + #define random_mark_pool_ready() do { } while (0) + #else /* CONFIG_NO_RANDOM_POOL */ +-void random_add_randomness(const void *buf, size_t len); + int random_get_bytes(void *buf, size_t len); + int random_pool_ready(void); + void random_mark_pool_ready(void); + #endif /* CONFIG_NO_RANDOM_POOL */ ++void random_add_randomness(const void *buf, size_t len); + + #endif /* RANDOM_H */ -- cgit v1.2.3