28 #if defined(POLARSSL_ENTROPY_C)
33 #if defined(POLARSSL_HAVEGE_C)
37 #define ENTROPY_MAX_LOOP 256
39 void entropy_init( entropy_context *ctx )
43 #if defined(POLARSSL_THREADING_C)
47 #if defined(POLARSSL_ENTROPY_SHA512_ACCUMULATOR)
52 #if defined(POLARSSL_HAVEGE_C)
56 #if !defined(POLARSSL_NO_DEFAULT_ENTROPY_SOURCES)
57 #if !defined(POLARSSL_NO_PLATFORM_ENTROPY)
61 #if defined(POLARSSL_TIMING_C)
64 #if defined(POLARSSL_HAVEGE_C)
74 #if defined(POLARSSL_THREADING_C)
100 static int entropy_update(
entropy_context *ctx,
unsigned char source_id,
101 const unsigned char *data,
size_t len )
103 unsigned char header[2];
105 size_t use_len = len;
106 const unsigned char *p = data;
110 #if defined(POLARSSL_ENTROPY_SHA512_ACCUMULATOR)
111 sha512( data, len, tmp, 0 );
113 sha256( data, len, tmp, 0 );
119 header[0] = source_id;
120 header[1] = use_len & 0xFF;
122 #if defined(POLARSSL_ENTROPY_SHA512_ACCUMULATOR)
134 const unsigned char *data,
size_t len )
168 entropy_update( ctx, (
unsigned char) i, buf, olen );
176 int entropy_func(
void *data,
unsigned char *output,
size_t len )
178 int ret, count = 0, i, reached;
185 #if defined(POLARSSL_THREADING_C)
195 if( count++ > ENTROPY_MAX_LOOP )
214 #if defined(POLARSSL_ENTROPY_SHA512_ACCUMULATOR)
247 memcpy( output, buf, len );
252 #if defined(POLARSSL_THREADING_C)