Mercurial > dropbear
comparison libtomcrypt/src/prngs/rng_get_bytes.c @ 1435:f849a5ca2efc
update to libtomcrypt 1.17 (with Dropbear changes)
author | Matt Johnston <matt@ucc.asn.au> |
---|---|
date | Sat, 24 Jun 2017 17:50:50 +0800 |
parents | 0cbe8f6dbf9e |
children | 6dba84798cd5 |
comparison
equal
deleted
inserted
replaced
1434:27b9ddb06b09 | 1435:f849a5ca2efc |
---|---|
4 * algorithms in a highly modular and flexible manner. | 4 * algorithms in a highly modular and flexible manner. |
5 * | 5 * |
6 * The library is free for all purposes without any express | 6 * The library is free for all purposes without any express |
7 * guarantee it works. | 7 * guarantee it works. |
8 * | 8 * |
9 * Tom St Denis, [email protected], http://libtomcrypt.com | 9 * Tom St Denis, [email protected], http://libtom.org |
10 */ | 10 */ |
11 #include "tomcrypt.h" | 11 #include "tomcrypt.h" |
12 | 12 |
13 /** | 13 /** |
14 @file rng_get_bytes.c | 14 @file rng_get_bytes.c |
15 portable way to get secure random bits to feed a PRNG (Tom St Denis) | 15 portable way to get secure random bits to feed a PRNG (Tom St Denis) |
16 */ | 16 */ |
17 | 17 |
18 #ifdef DEVRANDOM | 18 #ifdef LTC_DEVRANDOM |
19 /* on *NIX read /dev/random */ | 19 /* on *NIX read /dev/random */ |
20 static unsigned long rng_nix(unsigned char *buf, unsigned long len, | 20 static unsigned long rng_nix(unsigned char *buf, unsigned long len, |
21 void (*callback)(void)) | 21 void (*callback)(void)) |
22 { | 22 { |
23 #ifdef LTC_NO_FILE | 23 #ifdef LTC_NO_FILE |
45 fclose(f); | 45 fclose(f); |
46 return x; | 46 return x; |
47 #endif /* LTC_NO_FILE */ | 47 #endif /* LTC_NO_FILE */ |
48 } | 48 } |
49 | 49 |
50 #endif /* DEVRANDOM */ | 50 #endif /* LTC_DEVRANDOM */ |
51 | 51 |
52 /* on ANSI C platforms with 100 < CLOCKS_PER_SEC < 10000 */ | 52 /* on ANSI C platforms with 100 < CLOCKS_PER_SEC < 10000 */ |
53 #if defined(CLOCKS_PER_SEC) && !defined(WINCE) | 53 #if defined(CLOCKS_PER_SEC) && !defined(WINCE) |
54 | 54 |
55 #define ANSI_RNG | 55 #define ANSI_RNG |
129 { | 129 { |
130 unsigned long x; | 130 unsigned long x; |
131 | 131 |
132 LTC_ARGCHK(out != NULL); | 132 LTC_ARGCHK(out != NULL); |
133 | 133 |
134 #if defined(DEVRANDOM) | 134 #if defined(LTC_DEVRANDOM) |
135 x = rng_nix(out, outlen, callback); if (x != 0) { return x; } | 135 x = rng_nix(out, outlen, callback); if (x != 0) { return x; } |
136 #endif | 136 #endif |
137 #ifdef WIN32 | 137 #ifdef WIN32 |
138 x = rng_win32(out, outlen, callback); if (x != 0) { return x; } | 138 x = rng_win32(out, outlen, callback); if (x != 0) { return x; } |
139 #endif | 139 #endif |
141 x = rng_ansic(out, outlen, callback); if (x != 0) { return x; } | 141 x = rng_ansic(out, outlen, callback); if (x != 0) { return x; } |
142 #endif | 142 #endif |
143 return 0; | 143 return 0; |
144 } | 144 } |
145 | 145 |
146 /* $Source: /cvs/libtom/libtomcrypt/src/prngs/rng_get_bytes.c,v $ */ | 146 /* $Source$ */ |
147 /* $Revision: 1.5 $ */ | 147 /* $Revision$ */ |
148 /* $Date: 2006/12/06 02:01:29 $ */ | 148 /* $Date$ */ |