source: branches/backfire/package/hostapd/patches/700-random_pool_add_kernel.patch @ 26416

Last change on this file since 26416 was 26416, checked in by nbd, 6 years ago

hostapd: update to latest trunk version (merge r26414, r26415)

File size: 3.8 KB
  • src/crypto/random.c

    a b  
    3838#include "sha1.h" 
    3939#include "random.h" 
    4040 
     41#define RANDOM_STAMPFILE "/var/run/.random_available" 
     42 
    4143#define POOL_WORDS 32 
    4244#define POOL_WORDS_MASK (POOL_WORDS - 1) 
    4345#define POOL_TAP1 26 
     
    4850#define EXTRACT_LEN 16 
    4951#define MIN_READY_MARK 2 
    5052 
     53#ifndef CONFIG_NO_RANDOM_POOL 
     54 
    5155static u32 pool[POOL_WORDS]; 
    5256static unsigned int input_rotate = 0; 
    5357static unsigned int pool_pos = 0; 
    static void random_extract(u8 *out) 
    122126} 
    123127 
    124128 
    125 void random_add_randomness(const void *buf, size_t len) 
     129static void random_pool_add_randomness(const void *buf, size_t len) 
    126130{ 
    127131        struct os_time t; 
    128132        static unsigned int count = 0; 
    int random_get_bytes(void *buf, size_t l 
    191195int random_pool_ready(void) 
    192196{ 
    193197#ifdef __linux__ 
     198        struct stat st; 
    194199        int fd; 
    195200        ssize_t res; 
    196201 
     202        if (stat(RANDOM_STAMPFILE, &st) == 0) 
     203                return 1; 
     204 
    197205        /* 
    198206         * Make sure that there is reasonable entropy available before allowing 
    199207         * some key derivation operations to proceed. 
    int random_pool_ready(void) 
    258266 
    259267void random_mark_pool_ready(void) 
    260268{ 
     269        int fd; 
     270 
    261271        own_pool_ready++; 
    262272        wpa_printf(MSG_DEBUG, "random: Mark internal entropy pool to be " 
    263273                   "ready (count=%u/%u)", own_pool_ready, MIN_READY_MARK); 
     274 
     275        fd = open(RANDOM_STAMPFILE, O_CREAT | O_WRONLY | O_EXCL | O_NOFOLLOW, 0600); 
     276        if (fd >= 0) 
     277                close(fd); 
    264278} 
    265279 
    266280 
    void random_deinit(void) 
    335349        random_close_fd(); 
    336350#endif /* __linux__ */ 
    337351} 
     352 
     353#endif /* CONFIG_NO_RANDOM_POOL */ 
     354 
     355 
     356void random_add_randomness(const void *buf, size_t len) 
     357{ 
     358#ifdef __linux__ 
     359        int fd; 
     360 
     361        fd = open("/dev/random", O_RDWR); 
     362        if (fd >= 0) { 
     363                write(fd, buf, len); 
     364                close(fd); 
     365        } 
     366#endif 
     367#ifndef CONFIG_NO_RANDOM_POOL 
     368        random_pool_add_randomness(buf, len); 
     369#endif 
     370} 
  • hostapd/Makefile

    a b endif 
    698698ifdef CONFIG_NO_RANDOM_POOL 
    699699CFLAGS += -DCONFIG_NO_RANDOM_POOL 
    700700else 
    701 OBJS += ../src/crypto/random.o 
    702 HOBJS += ../src/crypto/random.o 
    703701HOBJS += $(SHA1OBJS) 
    704702HOBJS += ../src/crypto/md5.o 
    705703endif 
     704OBJS += ../src/crypto/random.o 
     705HOBJS += ../src/crypto/random.o 
    706706 
    707707ifdef CONFIG_RADIUS_SERVER 
    708708CFLAGS += -DRADIUS_SERVER 
  • wpa_supplicant/Makefile

    a b endif 
    11011101 
    11021102ifdef CONFIG_NO_RANDOM_POOL 
    11031103CFLAGS += -DCONFIG_NO_RANDOM_POOL 
    1104 else 
    1105 OBJS += ../src/crypto/random.o 
    11061104endif 
     1105OBJS += ../src/crypto/random.o 
    11071106 
    11081107ifdef CONFIG_CTRL_IFACE 
    11091108ifeq ($(CONFIG_CTRL_IFACE), y) 
  • wpa_supplicant/Android.mk

    a b endif 
    11021102 
    11031103ifdef CONFIG_NO_RANDOM_POOL 
    11041104L_CFLAGS += -DCONFIG_NO_RANDOM_POOL 
    1105 else 
    1106 OBJS += src/crypto/random.c 
    11071105endif 
     1106OBJS += src/crypto/random.c 
    11081107 
    11091108ifdef CONFIG_CTRL_IFACE 
    11101109ifeq ($(CONFIG_CTRL_IFACE), y) 
  • hostapd/Android.mk

    a b endif 
    717717ifdef CONFIG_NO_RANDOM_POOL 
    718718L_CFLAGS += -DCONFIG_NO_RANDOM_POOL 
    719719else 
    720 OBJS += src/crypto/random.c 
    721 HOBJS += src/crypto/random.c 
    722720HOBJS += $(SHA1OBJS) 
    723721HOBJS += src/crypto/md5.c 
    724722endif 
     723OBJS += src/crypto/random.c 
     724HOBJS += src/crypto/random.c 
    725725 
    726726ifdef CONFIG_RADIUS_SERVER 
    727727L_CFLAGS += -DRADIUS_SERVER 
  • src/crypto/random.h

    a b  
    1818#ifdef CONFIG_NO_RANDOM_POOL 
    1919#define random_init() do { } while (0) 
    2020#define random_deinit() do { } while (0) 
    21 #define random_add_randomness(b, l) do { } while (0) 
    2221#define random_get_bytes(b, l) os_get_random((b), (l)) 
    2322#define random_pool_ready() 1 
    2423#define random_mark_pool_ready() do { } while (0) 
    2524#else /* CONFIG_NO_RANDOM_POOL */ 
    2625void random_init(void); 
    2726void random_deinit(void); 
    28 void random_add_randomness(const void *buf, size_t len); 
    2927int random_get_bytes(void *buf, size_t len); 
    3028int random_pool_ready(void); 
    3129void random_mark_pool_ready(void); 
    3230#endif /* CONFIG_NO_RANDOM_POOL */ 
     31void random_add_randomness(const void *buf, size_t len); 
    3332 
    3433#endif /* RANDOM_H */ 
Note: See TracBrowser for help on using the repository browser.