28 #if defined(POLARSSL_ENTROPY_C)
33 #if defined(POLARSSL_FS_IO)
37 #if defined(POLARSSL_HAVEGE_C)
41 #define ENTROPY_MAX_LOOP 256
43 void entropy_init( entropy_context *ctx )
48 #if defined(POLARSSL_HAVEGE_C)
52 #if !defined(POLARSSL_NO_DEFAULT_ENTROPY_SOURCES)
53 #if !defined(POLARSSL_NO_PLATFORM_ENTROPY)
57 #if defined(POLARSSL_TIMING_C)
60 #if defined(POLARSSL_HAVEGE_C)
88 static int entropy_update(
entropy_context *ctx,
unsigned char source_id,
89 const unsigned char *data,
size_t len )
91 unsigned char header[2];
94 const unsigned char *p = data;
98 sha4( data, len, tmp, 0 );
104 header[0] = source_id;
105 header[1] = use_len & 0xFF;
114 const unsigned char *data,
size_t len )
148 entropy_update( ctx, (
unsigned char) i, buf, olen );
156 int entropy_func(
void *data,
unsigned char *output,
size_t len )
158 int ret, count = 0, i, reached;
170 if( count++ > ENTROPY_MAX_LOOP )
203 memcpy( output, buf, len );
208 #if defined(POLARSSL_FS_IO)
215 if( ( f = fopen( path,
"wb" ) ) == NULL )
240 if( ( f = fopen( path,
"rb" ) ) == NULL )
243 fseek( f, 0, SEEK_END );
244 n = (size_t) ftell( f );
245 fseek( f, 0, SEEK_SET );
250 if( fread( buf, 1, n, f ) != n )