- Added internal ctr_drbg_init_entropy_len() to allow NIST determined entropy tests to work

diff --git a/library/ctr_drbg.c b/library/ctr_drbg.c
index 6611c3d..478304e 100644
--- a/library/ctr_drbg.c
+++ b/library/ctr_drbg.c
@@ -38,11 +38,17 @@
 #include <stdio.h>
 #endif
 
-int ctr_drbg_init( ctr_drbg_context *ctx,
+/*
+ * Non-public function wrapped by ctr_crbg_init(). Necessary to allow NIST
+ * tests to succeed (which require known length fixed entropy)
+ */
+int ctr_drbg_init_entropy_len(
+                   ctr_drbg_context *ctx,
                    int (*f_entropy)(void *, unsigned char *, size_t),
                    void *p_entropy,
                    const unsigned char *custom,
-                   size_t len )
+                   size_t len,
+                   size_t entropy_len )
 {
     int ret;
     unsigned char key[CTR_DRBG_KEYSIZE];
@@ -53,7 +59,7 @@
     ctx->f_entropy = f_entropy;
     ctx->p_entropy = p_entropy;
 
-    ctx->entropy_len = CTR_DRBG_ENTROPY_LEN;
+    ctx->entropy_len = entropy_len;
     ctx->reseed_interval = CTR_DRBG_RESEED_INTERVAL;
 
     /*
@@ -67,6 +73,16 @@
     return( 0 );
 }
 
+int ctr_drbg_init( ctr_drbg_context *ctx,
+                   int (*f_entropy)(void *, unsigned char *, size_t),
+                   void *p_entropy,
+                   const unsigned char *custom,
+                   size_t len )
+{
+    return( ctr_drbg_init_entropy_len( ctx, f_entropy, p_entropy, custom, len,
+                                       CTR_DRBG_ENTROPY_LEN ) );
+}
+
 void ctr_drbg_set_prediction_resistance( ctr_drbg_context *ctx, int resistance )
 {
     ctx->prediction_resistance = resistance;
diff --git a/tests/suites/test_suite_ctr_drbg.function b/tests/suites/test_suite_ctr_drbg.function
index e817658..7349517 100644
--- a/tests/suites/test_suite_ctr_drbg.function
+++ b/tests/suites/test_suite_ctr_drbg.function
@@ -8,6 +8,14 @@
     test_offset += 32;
     return( 0 );
 }
+
+int ctr_drbg_init_entropy_len(
+        ctr_drbg_context *ctx,
+        int (*f_entropy)(void *, unsigned char *, size_t),
+        void *p_entropy,
+        const unsigned char *custom,
+        size_t len,
+        size_t entropy_len );
 END_HEADER
 
 BEGIN_DEPENDENCIES
@@ -34,7 +42,7 @@
     add2_len = unhexify( add2, {add2_string} );
 
     test_offset = 0;
-    TEST_ASSERT( ctr_drbg_init( &ctx, entropy_func, entropy, add_init, add_init_len ) == 0 );
+    TEST_ASSERT( ctr_drbg_init_entropy_len( &ctx, entropy_func, entropy, add_init, add_init_len, 32 ) == 0 );
     ctr_drbg_set_prediction_resistance( &ctx, CTR_DRBG_PR_ON );
 
     TEST_ASSERT( ctr_drbg_random_with_add( &ctx, buf, 16, add1, add1_len ) == 0 );
@@ -66,7 +74,7 @@
     add2_len = unhexify( add2, {add2_string} );
 
     test_offset = 0;
-    TEST_ASSERT( ctr_drbg_init( &ctx, entropy_func, entropy, add_init, add_init_len ) == 0 );
+    TEST_ASSERT( ctr_drbg_init_entropy_len( &ctx, entropy_func, entropy, add_init, add_init_len, 32 ) == 0 );
 
     TEST_ASSERT( ctr_drbg_random_with_add( &ctx, buf, 16, add1, add1_len ) == 0 );
     TEST_ASSERT( ctr_drbg_reseed( &ctx, add_reseed, add_reseed_len ) == 0 );