- Timestamp:
- Jan 24, 2008 3:27:30 PM (16 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
pjproject/trunk/third_party/srtp/crypto/rng/rand_source.c
r1730 r1738 45 45 #include "srtp_config.h" 46 46 47 #if def DEV_URANDOM47 #if defined(DEV_URANDOM) || defined(PJ_DEV_URANDOM) 48 48 # include <fcntl.h> /* for open() */ 49 49 # include <unistd.h> /* for close() */ … … 88 88 if (dev_random_fdes < 0) 89 89 return err_status_init_fail; 90 #elif defined(PJ_DEV_URANDOM) 91 /* open random source for reading */ 92 dev_random_fdes = open(PJ_DEV_URANDOM, O_RDONLY); 93 if (dev_random_fdes < 0) { 94 err_report(3,"Ugh: /dev/urandom not present, using rand() instead"); 95 return err_status_ok; /* it's ok, it'll fallback to using rand() */ 96 } 90 97 #elif (_MSC_VER >= 1400) 91 98 dev_random_fdes = RAND_SOURCE_READY; … … 124 131 } 125 132 #else 133 uint8_t *dst = (uint8_t *)dest; 134 135 /* First try with /dev/urandom, if it's opened */ 136 if (dev_random_fdes >= 0) { 137 if (read(dev_random_fdes, dest, len) == len) 138 return err_status_ok; /* success */ 139 } 140 126 141 /* Generic C-library (rand()) version */ 127 142 /* This is a random source of last resort */ 128 uint8_t *dst = (uint8_t *)dest;129 143 while (len) 130 144 { … … 142 156 err_status_t 143 157 rand_source_deinit(void) { 158 #ifndef PJ_DEV_URANDOM 144 159 if (dev_random_fdes < 0) 145 160 return err_status_dealloc_fail; /* well, we haven't really failed, * 146 161 * but there is something wrong */ 147 #ifdef DEV_URANDOM148 close(dev_random_fdes);149 162 #endif 163 164 if (dev_random_fdes >= 0) 165 close(dev_random_fdes); 166 150 167 dev_random_fdes = RAND_SOURCE_NOT_READY; 151 168 152 169 return err_status_ok; 153 170 } 171
Note: See TracChangeset
for help on using the changeset viewer.