PolarSSL v1.2.8
test_suite_ctr_drbg.c
Go to the documentation of this file.
1 #include "fct.h"
2 #include <polarssl/config.h>
3 
4 #include <polarssl/ctr_drbg.h>
5 
7 int entropy_func( void *data, unsigned char *buf, size_t len )
8 {
9  unsigned char *p = (unsigned char *) data;
10  memcpy( buf, p + test_offset, len );
11  test_offset += 32;
12  return( 0 );
13 }
14 
16  ctr_drbg_context *ctx,
17  int (*f_entropy)(void *, unsigned char *, size_t),
18  void *p_entropy,
19  const unsigned char *custom,
20  size_t len,
21  size_t entropy_len );
22 
23 #ifdef _MSC_VER
24 #include <basetsd.h>
25 typedef UINT32 uint32_t;
26 #else
27 #include <inttypes.h>
28 #endif
29 
30 /*
31  * 32-bit integer manipulation macros (big endian)
32  */
33 #ifndef GET_UINT32_BE
34 #define GET_UINT32_BE(n,b,i) \
35 { \
36  (n) = ( (uint32_t) (b)[(i) ] << 24 ) \
37  | ( (uint32_t) (b)[(i) + 1] << 16 ) \
38  | ( (uint32_t) (b)[(i) + 2] << 8 ) \
39  | ( (uint32_t) (b)[(i) + 3] ); \
40 }
41 #endif
42 
43 #ifndef PUT_UINT32_BE
44 #define PUT_UINT32_BE(n,b,i) \
45 { \
46  (b)[(i) ] = (unsigned char) ( (n) >> 24 ); \
47  (b)[(i) + 1] = (unsigned char) ( (n) >> 16 ); \
48  (b)[(i) + 2] = (unsigned char) ( (n) >> 8 ); \
49  (b)[(i) + 3] = (unsigned char) ( (n) ); \
50 }
51 #endif
52 
53 int unhexify(unsigned char *obuf, const char *ibuf)
54 {
55  unsigned char c, c2;
56  int len = strlen(ibuf) / 2;
57  assert(!(strlen(ibuf) %1)); // must be even number of bytes
58 
59  while (*ibuf != 0)
60  {
61  c = *ibuf++;
62  if( c >= '0' && c <= '9' )
63  c -= '0';
64  else if( c >= 'a' && c <= 'f' )
65  c -= 'a' - 10;
66  else if( c >= 'A' && c <= 'F' )
67  c -= 'A' - 10;
68  else
69  assert( 0 );
70 
71  c2 = *ibuf++;
72  if( c2 >= '0' && c2 <= '9' )
73  c2 -= '0';
74  else if( c2 >= 'a' && c2 <= 'f' )
75  c2 -= 'a' - 10;
76  else if( c2 >= 'A' && c2 <= 'F' )
77  c2 -= 'A' - 10;
78  else
79  assert( 0 );
80 
81  *obuf++ = ( c << 4 ) | c2;
82  }
83 
84  return len;
85 }
86 
87 void hexify(unsigned char *obuf, const unsigned char *ibuf, int len)
88 {
89  unsigned char l, h;
90 
91  while (len != 0)
92  {
93  h = (*ibuf) / 16;
94  l = (*ibuf) % 16;
95 
96  if( h < 10 )
97  *obuf++ = '0' + h;
98  else
99  *obuf++ = 'a' + h - 10;
100 
101  if( l < 10 )
102  *obuf++ = '0' + l;
103  else
104  *obuf++ = 'a' + l - 10;
105 
106  ++ibuf;
107  len--;
108  }
109 }
110 
120 static int rnd_std_rand( void *rng_state, unsigned char *output, size_t len )
121 {
122  size_t i;
123 
124  if( rng_state != NULL )
125  rng_state = NULL;
126 
127  for( i = 0; i < len; ++i )
128  output[i] = rand();
129 
130  return( 0 );
131 }
132 
138 static int rnd_zero_rand( void *rng_state, unsigned char *output, size_t len )
139 {
140  if( rng_state != NULL )
141  rng_state = NULL;
142 
143  memset( output, 0, len );
144 
145  return( 0 );
146 }
147 
148 typedef struct
149 {
150  unsigned char *buf;
151  size_t length;
152 } rnd_buf_info;
153 
165 static int rnd_buffer_rand( void *rng_state, unsigned char *output, size_t len )
166 {
167  rnd_buf_info *info = (rnd_buf_info *) rng_state;
168  size_t use_len;
169 
170  if( rng_state == NULL )
171  return( rnd_std_rand( NULL, output, len ) );
172 
173  use_len = len;
174  if( len > info->length )
175  use_len = info->length;
176 
177  if( use_len )
178  {
179  memcpy( output, info->buf, use_len );
180  info->buf += use_len;
181  info->length -= use_len;
182  }
183 
184  if( len - use_len > 0 )
185  return( rnd_std_rand( NULL, output + use_len, len - use_len ) );
186 
187  return( 0 );
188 }
189 
197 typedef struct
198 {
199  uint32_t key[16];
200  uint32_t v0, v1;
202 
211 static int rnd_pseudo_rand( void *rng_state, unsigned char *output, size_t len )
212 {
213  rnd_pseudo_info *info = (rnd_pseudo_info *) rng_state;
214  uint32_t i, *k, sum, delta=0x9E3779B9;
215  unsigned char result[4];
216 
217  if( rng_state == NULL )
218  return( rnd_std_rand( NULL, output, len ) );
219 
220  k = info->key;
221 
222  while( len > 0 )
223  {
224  size_t use_len = ( len > 4 ) ? 4 : len;
225  sum = 0;
226 
227  for( i = 0; i < 32; i++ )
228  {
229  info->v0 += (((info->v1 << 4) ^ (info->v1 >> 5)) + info->v1) ^ (sum + k[sum & 3]);
230  sum += delta;
231  info->v1 += (((info->v0 << 4) ^ (info->v0 >> 5)) + info->v0) ^ (sum + k[(sum>>11) & 3]);
232  }
233 
234  PUT_UINT32_BE( info->v0, result, 0 );
235  memcpy( output, result, use_len );
236  len -= use_len;
237  }
238 
239  return( 0 );
240 }
241 
242 
244 {
245 #ifdef POLARSSL_CTR_DRBG_C
246 
247 
248  FCT_SUITE_BGN(test_suite_ctr_drbg)
249  {
250 
251  FCT_TEST_BGN(ctr_drbg_nist_validation_aes_256_use_dftrue25612800_0)
252  {
253  unsigned char entropy[512];
254  unsigned char add_init[512];
255  unsigned char add1[512];
256  unsigned char add2[512];
257  ctr_drbg_context ctx;
258  unsigned char buf[512];
259  unsigned char output_str[512];
260  int add_init_len, add1_len, add2_len;
261 
262  memset( output_str, 0, 512 );
263 
264  unhexify( entropy, "c18081a65d44021619b3f180b1c920026a546f0c7081498b6ea662526d51b1cb583bfad5375ffbc9ff46d219c7223e95459d82e1e7229f633169d26b57474fa337c9981c0bfb91314d55b9e91c5a5ee49392cfc52312d5562c4a6effdc10d068" );
265  add_init_len = unhexify( add_init, "d254fcff021e69d229c9cfad85fa486c" );
266  add1_len = unhexify( add1, "" );
267  add2_len = unhexify( add2, "" );
268 
269  test_offset = 0;
270  fct_chk( ctr_drbg_init_entropy_len( &ctx, entropy_func, entropy, add_init, add_init_len, 32 ) == 0 );
272 
273  fct_chk( ctr_drbg_random_with_add( &ctx, buf, 16, add1, add1_len ) == 0 );
274  fct_chk( ctr_drbg_random_with_add( &ctx, buf, 16, add2, add2_len ) == 0 );
275  hexify( output_str, buf, 16 );
276  fct_chk( strcmp( (char *) output_str, "34011656b429008f3563ecb5f2590723" ) == 0 );
277  }
278  FCT_TEST_END();
279 
280 
281  FCT_TEST_BGN(ctr_drbg_nist_validation_aes_256_use_dftrue25612800_1)
282  {
283  unsigned char entropy[512];
284  unsigned char add_init[512];
285  unsigned char add1[512];
286  unsigned char add2[512];
287  ctr_drbg_context ctx;
288  unsigned char buf[512];
289  unsigned char output_str[512];
290  int add_init_len, add1_len, add2_len;
291 
292  memset( output_str, 0, 512 );
293 
294  unhexify( entropy, "a7f38c750bd6ff41c4e79f5b7dd3024d58ca3f1f4c096486c4a73c4f74a2410c4c9c5143eb8c09df842ba4427f385bbf65c350b0bf2c87242c7a23c8c2e0e419e44e500c250f6bc0dc25ec0ce929c4ad5ffb7a87950c618f8cee1af4831b4b8e" );
295  add_init_len = unhexify( add_init, "7be87545266dadd1d73546c0927afc8d" );
296  add1_len = unhexify( add1, "" );
297  add2_len = unhexify( add2, "" );
298 
299  test_offset = 0;
300  fct_chk( ctr_drbg_init_entropy_len( &ctx, entropy_func, entropy, add_init, add_init_len, 32 ) == 0 );
302 
303  fct_chk( ctr_drbg_random_with_add( &ctx, buf, 16, add1, add1_len ) == 0 );
304  fct_chk( ctr_drbg_random_with_add( &ctx, buf, 16, add2, add2_len ) == 0 );
305  hexify( output_str, buf, 16 );
306  fct_chk( strcmp( (char *) output_str, "d5b1da77f36ce58510b75dfde71dbd5d" ) == 0 );
307  }
308  FCT_TEST_END();
309 
310 
311  FCT_TEST_BGN(ctr_drbg_nist_validation_aes_256_use_dftrue25612800_2)
312  {
313  unsigned char entropy[512];
314  unsigned char add_init[512];
315  unsigned char add1[512];
316  unsigned char add2[512];
317  ctr_drbg_context ctx;
318  unsigned char buf[512];
319  unsigned char output_str[512];
320  int add_init_len, add1_len, add2_len;
321 
322  memset( output_str, 0, 512 );
323 
324  unhexify( entropy, "d20a0e5cdb714f01b48e00bae51909f345af05de13217e5d55fc6c2d705aea550420d9a458594d825b71e16b36130020cf5948fe813462061c1a222d1ff0e1e4b3d21ae8eee31d3260330d668d24ef3c8941b8720e8591b7deec4bd35a3a1f1a" );
325  add_init_len = unhexify( add_init, "3771416b162f4d9c5f48a05b7aa73938" );
326  add1_len = unhexify( add1, "" );
327  add2_len = unhexify( add2, "" );
328 
329  test_offset = 0;
330  fct_chk( ctr_drbg_init_entropy_len( &ctx, entropy_func, entropy, add_init, add_init_len, 32 ) == 0 );
332 
333  fct_chk( ctr_drbg_random_with_add( &ctx, buf, 16, add1, add1_len ) == 0 );
334  fct_chk( ctr_drbg_random_with_add( &ctx, buf, 16, add2, add2_len ) == 0 );
335  hexify( output_str, buf, 16 );
336  fct_chk( strcmp( (char *) output_str, "3cbd7d53ac1772c959311419adad836e" ) == 0 );
337  }
338  FCT_TEST_END();
339 
340 
341  FCT_TEST_BGN(ctr_drbg_nist_validation_aes_256_use_dftrue25612800_3)
342  {
343  unsigned char entropy[512];
344  unsigned char add_init[512];
345  unsigned char add1[512];
346  unsigned char add2[512];
347  ctr_drbg_context ctx;
348  unsigned char buf[512];
349  unsigned char output_str[512];
350  int add_init_len, add1_len, add2_len;
351 
352  memset( output_str, 0, 512 );
353 
354  unhexify( entropy, "4df54a483b4510ed76049faae14b962fbb16459d1f6b4f4dbeca85deded6018361223c893f9442719c51eb5695e1304a1c2be8c05d0846b6510a9525a28831a8efcbd82aa50540d7e7864e2b8a42d44380cdc6e02eebb48d0b5a840b7cdd6e04" );
355  add_init_len = unhexify( add_init, "f2bad8f7dab3f5886faa1cf6e1f52c87" );
356  add1_len = unhexify( add1, "" );
357  add2_len = unhexify( add2, "" );
358 
359  test_offset = 0;
360  fct_chk( ctr_drbg_init_entropy_len( &ctx, entropy_func, entropy, add_init, add_init_len, 32 ) == 0 );
362 
363  fct_chk( ctr_drbg_random_with_add( &ctx, buf, 16, add1, add1_len ) == 0 );
364  fct_chk( ctr_drbg_random_with_add( &ctx, buf, 16, add2, add2_len ) == 0 );
365  hexify( output_str, buf, 16 );
366  fct_chk( strcmp( (char *) output_str, "0062d822bc549bea292c37846340789b" ) == 0 );
367  }
368  FCT_TEST_END();
369 
370 
371  FCT_TEST_BGN(ctr_drbg_nist_validation_aes_256_use_dftrue25612800_4)
372  {
373  unsigned char entropy[512];
374  unsigned char add_init[512];
375  unsigned char add1[512];
376  unsigned char add2[512];
377  ctr_drbg_context ctx;
378  unsigned char buf[512];
379  unsigned char output_str[512];
380  int add_init_len, add1_len, add2_len;
381 
382  memset( output_str, 0, 512 );
383 
384  unhexify( entropy, "89defd4445061c080e4762afac194b9f79c4bb1ed88c961af41d9d37bd388a1d45c82ca46f404348a2ae5e22ce00aa35ebc7c5051d8800890d44d25284489efcbd1f5e2b16e403f6921f71bbdfcf7b9aeddef65bc92fbd1cb9e4ea389aee5179" );
385  add_init_len = unhexify( add_init, "1c5760aa0fd4ce308735b28682b67246" );
386  add1_len = unhexify( add1, "" );
387  add2_len = unhexify( add2, "" );
388 
389  test_offset = 0;
390  fct_chk( ctr_drbg_init_entropy_len( &ctx, entropy_func, entropy, add_init, add_init_len, 32 ) == 0 );
392 
393  fct_chk( ctr_drbg_random_with_add( &ctx, buf, 16, add1, add1_len ) == 0 );
394  fct_chk( ctr_drbg_random_with_add( &ctx, buf, 16, add2, add2_len ) == 0 );
395  hexify( output_str, buf, 16 );
396  fct_chk( strcmp( (char *) output_str, "3baf81155548afca67d57c503d00a5b4" ) == 0 );
397  }
398  FCT_TEST_END();
399 
400 
401  FCT_TEST_BGN(ctr_drbg_nist_validation_aes_256_use_dftrue25612800_5)
402  {
403  unsigned char entropy[512];
404  unsigned char add_init[512];
405  unsigned char add1[512];
406  unsigned char add2[512];
407  ctr_drbg_context ctx;
408  unsigned char buf[512];
409  unsigned char output_str[512];
410  int add_init_len, add1_len, add2_len;
411 
412  memset( output_str, 0, 512 );
413 
414  unhexify( entropy, "2713d74affed98e3433559e17d240288bb1a1790904cd7754cad97007e205a157b8ddca704a3624413f2ec8361ccd85442fb0b7cc60a247f0fd102cef44677321514ea4186d0203ab7387925d0222800ce2078c4588bc50cdfccbc04fbecd593" );
415  add_init_len = unhexify( add_init, "b72b9451a5e866e226978623d36b3491" );
416  add1_len = unhexify( add1, "" );
417  add2_len = unhexify( add2, "" );
418 
419  test_offset = 0;
420  fct_chk( ctr_drbg_init_entropy_len( &ctx, entropy_func, entropy, add_init, add_init_len, 32 ) == 0 );
422 
423  fct_chk( ctr_drbg_random_with_add( &ctx, buf, 16, add1, add1_len ) == 0 );
424  fct_chk( ctr_drbg_random_with_add( &ctx, buf, 16, add2, add2_len ) == 0 );
425  hexify( output_str, buf, 16 );
426  fct_chk( strcmp( (char *) output_str, "047a50890c282e26bfede4c0904f5369" ) == 0 );
427  }
428  FCT_TEST_END();
429 
430 
431  FCT_TEST_BGN(ctr_drbg_nist_validation_aes_256_use_dftrue25612800_6)
432  {
433  unsigned char entropy[512];
434  unsigned char add_init[512];
435  unsigned char add1[512];
436  unsigned char add2[512];
437  ctr_drbg_context ctx;
438  unsigned char buf[512];
439  unsigned char output_str[512];
440  int add_init_len, add1_len, add2_len;
441 
442  memset( output_str, 0, 512 );
443 
444  unhexify( entropy, "b160465448894c7d5ee1963bb3e1a2f3f75fcd167ffa332c41c4c91c1830b7c07413bd580302958aa6fa81588ad2b3173698a4afafda468acb368dbbd524207196b9a3be37ac21ba7a072b4c8223492ee18b48551524d5c3449c5c8d3517212e" );
445  add_init_len = unhexify( add_init, "91b955a3e7eccd7f07290cba4464baff" );
446  add1_len = unhexify( add1, "" );
447  add2_len = unhexify( add2, "" );
448 
449  test_offset = 0;
450  fct_chk( ctr_drbg_init_entropy_len( &ctx, entropy_func, entropy, add_init, add_init_len, 32 ) == 0 );
452 
453  fct_chk( ctr_drbg_random_with_add( &ctx, buf, 16, add1, add1_len ) == 0 );
454  fct_chk( ctr_drbg_random_with_add( &ctx, buf, 16, add2, add2_len ) == 0 );
455  hexify( output_str, buf, 16 );
456  fct_chk( strcmp( (char *) output_str, "af2c062fedb98ee599ae1f47fc202071" ) == 0 );
457  }
458  FCT_TEST_END();
459 
460 
461  FCT_TEST_BGN(ctr_drbg_nist_validation_aes_256_use_dftrue25612800_7)
462  {
463  unsigned char entropy[512];
464  unsigned char add_init[512];
465  unsigned char add1[512];
466  unsigned char add2[512];
467  ctr_drbg_context ctx;
468  unsigned char buf[512];
469  unsigned char output_str[512];
470  int add_init_len, add1_len, add2_len;
471 
472  memset( output_str, 0, 512 );
473 
474  unhexify( entropy, "38dfbfb52c185acf74de00b5a50f0cd9688286747ab340cfe9ad30d38b390fd2443bfd7ea93941d8262ae0f66b0eab4ff64ba59a2ff940c3c26fda103e0d798dbcaa1318e842143975673af8408b5af48dfbaa56ca4f9ddc87100028b4a95549" );
475  add_init_len = unhexify( add_init, "d08114670c4f6016a4cf9d2da3e3a674" );
476  add1_len = unhexify( add1, "" );
477  add2_len = unhexify( add2, "" );
478 
479  test_offset = 0;
480  fct_chk( ctr_drbg_init_entropy_len( &ctx, entropy_func, entropy, add_init, add_init_len, 32 ) == 0 );
482 
483  fct_chk( ctr_drbg_random_with_add( &ctx, buf, 16, add1, add1_len ) == 0 );
484  fct_chk( ctr_drbg_random_with_add( &ctx, buf, 16, add2, add2_len ) == 0 );
485  hexify( output_str, buf, 16 );
486  fct_chk( strcmp( (char *) output_str, "55030fef65c679ecaffb0dc070bfd4d2" ) == 0 );
487  }
488  FCT_TEST_END();
489 
490 
491  FCT_TEST_BGN(ctr_drbg_nist_validation_aes_256_use_dftrue25612800_8)
492  {
493  unsigned char entropy[512];
494  unsigned char add_init[512];
495  unsigned char add1[512];
496  unsigned char add2[512];
497  ctr_drbg_context ctx;
498  unsigned char buf[512];
499  unsigned char output_str[512];
500  int add_init_len, add1_len, add2_len;
501 
502  memset( output_str, 0, 512 );
503 
504  unhexify( entropy, "88fb2a8020e604ea64a620f4704078857062cc97e24604c30de4c70cbf5e5bea0f0db79d16f4db636a2d6cd992c5890389a40cfe93967eac609e5b9f66788944285758547c7136ef2ee3b38724ed340d61763d0d5991ece4924bb72483b96945" );
505  add_init_len = unhexify( add_init, "e2af9abe8770e33798a5f05b22057d24" );
506  add1_len = unhexify( add1, "" );
507  add2_len = unhexify( add2, "" );
508 
509  test_offset = 0;
510  fct_chk( ctr_drbg_init_entropy_len( &ctx, entropy_func, entropy, add_init, add_init_len, 32 ) == 0 );
512 
513  fct_chk( ctr_drbg_random_with_add( &ctx, buf, 16, add1, add1_len ) == 0 );
514  fct_chk( ctr_drbg_random_with_add( &ctx, buf, 16, add2, add2_len ) == 0 );
515  hexify( output_str, buf, 16 );
516  fct_chk( strcmp( (char *) output_str, "a44f0cfa383916811fffb2e0cfc9bfc3" ) == 0 );
517  }
518  FCT_TEST_END();
519 
520 
521  FCT_TEST_BGN(ctr_drbg_nist_validation_aes_256_use_dftrue25612800_9)
522  {
523  unsigned char entropy[512];
524  unsigned char add_init[512];
525  unsigned char add1[512];
526  unsigned char add2[512];
527  ctr_drbg_context ctx;
528  unsigned char buf[512];
529  unsigned char output_str[512];
530  int add_init_len, add1_len, add2_len;
531 
532  memset( output_str, 0, 512 );
533 
534  unhexify( entropy, "340def3420b608420d81b4ea8252a3d86d3e1dd7597e6063ed923a73a7b8e981e6079f7f0c42deb9f4ef11d2f3581abadf44b06d882afdc47896777ce8dafd85ec040f7873d0e25c4be709c614a28b708e547266ac8f07f5fdb450d63bc0c999" );
535  add_init_len = unhexify( add_init, "ae30f1642753c5cb6e118d7ff5d59f1d" );
536  add1_len = unhexify( add1, "" );
537  add2_len = unhexify( add2, "" );
538 
539  test_offset = 0;
540  fct_chk( ctr_drbg_init_entropy_len( &ctx, entropy_func, entropy, add_init, add_init_len, 32 ) == 0 );
542 
543  fct_chk( ctr_drbg_random_with_add( &ctx, buf, 16, add1, add1_len ) == 0 );
544  fct_chk( ctr_drbg_random_with_add( &ctx, buf, 16, add2, add2_len ) == 0 );
545  hexify( output_str, buf, 16 );
546  fct_chk( strcmp( (char *) output_str, "c7e7670145573581842bd1f3e0c6e90b" ) == 0 );
547  }
548  FCT_TEST_END();
549 
550 
551  FCT_TEST_BGN(ctr_drbg_nist_validation_aes_256_use_dftrue25612800_10)
552  {
553  unsigned char entropy[512];
554  unsigned char add_init[512];
555  unsigned char add1[512];
556  unsigned char add2[512];
557  ctr_drbg_context ctx;
558  unsigned char buf[512];
559  unsigned char output_str[512];
560  int add_init_len, add1_len, add2_len;
561 
562  memset( output_str, 0, 512 );
563 
564  unhexify( entropy, "21d6c822706d1af09e4d233c0ebac7f4ec60c7be2500dd41a85a19b2dc5c7da27f8a82164bd2a644218cb5ac283c547da1064784413eed5ecf32fadd00357abaae81225ac8d0391ead533362cff56798825445d639b0b45e0312aa7047c00b4d" );
565  add_init_len = unhexify( add_init, "711ecfe467d6f83bcc82e566729669af" );
566  add1_len = unhexify( add1, "" );
567  add2_len = unhexify( add2, "" );
568 
569  test_offset = 0;
570  fct_chk( ctr_drbg_init_entropy_len( &ctx, entropy_func, entropy, add_init, add_init_len, 32 ) == 0 );
572 
573  fct_chk( ctr_drbg_random_with_add( &ctx, buf, 16, add1, add1_len ) == 0 );
574  fct_chk( ctr_drbg_random_with_add( &ctx, buf, 16, add2, add2_len ) == 0 );
575  hexify( output_str, buf, 16 );
576  fct_chk( strcmp( (char *) output_str, "d3a0d2c457f5e9d1328a9e1d22b6eaf6" ) == 0 );
577  }
578  FCT_TEST_END();
579 
580 
581  FCT_TEST_BGN(ctr_drbg_nist_validation_aes_256_use_dftrue25612800_11)
582  {
583  unsigned char entropy[512];
584  unsigned char add_init[512];
585  unsigned char add1[512];
586  unsigned char add2[512];
587  ctr_drbg_context ctx;
588  unsigned char buf[512];
589  unsigned char output_str[512];
590  int add_init_len, add1_len, add2_len;
591 
592  memset( output_str, 0, 512 );
593 
594  unhexify( entropy, "4ee32f0aeadb3936e17f1aa3b18c10f773def5f83500c2ba96f84408a2521c1258f6be9aa5cee528746629aa2b8118ac41dd98ef1b3de31d26b8c2ad3442081203f5ef21df409df3381fbf2e064fbaec64d731dc93b3218e34bb3b03bfd88373" );
595  add_init_len = unhexify( add_init, "f9b22152bc0eff1ebf0bfafeea40aecf" );
596  add1_len = unhexify( add1, "" );
597  add2_len = unhexify( add2, "" );
598 
599  test_offset = 0;
600  fct_chk( ctr_drbg_init_entropy_len( &ctx, entropy_func, entropy, add_init, add_init_len, 32 ) == 0 );
602 
603  fct_chk( ctr_drbg_random_with_add( &ctx, buf, 16, add1, add1_len ) == 0 );
604  fct_chk( ctr_drbg_random_with_add( &ctx, buf, 16, add2, add2_len ) == 0 );
605  hexify( output_str, buf, 16 );
606  fct_chk( strcmp( (char *) output_str, "86009b14c4906a409abe6ca9b0718cbe" ) == 0 );
607  }
608  FCT_TEST_END();
609 
610 
611  FCT_TEST_BGN(ctr_drbg_nist_validation_aes_256_use_dftrue25612800_12)
612  {
613  unsigned char entropy[512];
614  unsigned char add_init[512];
615  unsigned char add1[512];
616  unsigned char add2[512];
617  ctr_drbg_context ctx;
618  unsigned char buf[512];
619  unsigned char output_str[512];
620  int add_init_len, add1_len, add2_len;
621 
622  memset( output_str, 0, 512 );
623 
624  unhexify( entropy, "fa81535670275e8ab74121377cf88a4742dd0d7a99cf06eb9c2b4fe2b03423dbe441201144c22a9fc0ca49f5ef614987a2271cc1089d10ee01b25163c090a1f263797e4f130920cdc3b890a078e8abbb070ded2e8fd717f4389f06ff2c10d180" );
625  add_init_len = unhexify( add_init, "5174e76e904ff1471367ccace9c66ed9" );
626  add1_len = unhexify( add1, "" );
627  add2_len = unhexify( add2, "" );
628 
629  test_offset = 0;
630  fct_chk( ctr_drbg_init_entropy_len( &ctx, entropy_func, entropy, add_init, add_init_len, 32 ) == 0 );
632 
633  fct_chk( ctr_drbg_random_with_add( &ctx, buf, 16, add1, add1_len ) == 0 );
634  fct_chk( ctr_drbg_random_with_add( &ctx, buf, 16, add2, add2_len ) == 0 );
635  hexify( output_str, buf, 16 );
636  fct_chk( strcmp( (char *) output_str, "18d6fcd35457d2678175df36df5e215d" ) == 0 );
637  }
638  FCT_TEST_END();
639 
640 
641  FCT_TEST_BGN(ctr_drbg_nist_validation_aes_256_use_dftrue25612800_13)
642  {
643  unsigned char entropy[512];
644  unsigned char add_init[512];
645  unsigned char add1[512];
646  unsigned char add2[512];
647  ctr_drbg_context ctx;
648  unsigned char buf[512];
649  unsigned char output_str[512];
650  int add_init_len, add1_len, add2_len;
651 
652  memset( output_str, 0, 512 );
653 
654  unhexify( entropy, "930c290a797b85d58b52d0d92356436977b2f636f07d5a80c987fb7eea6b750cceb9eb87860547ab4029865a6810fc5c3663c4e369f290994461d2e9c7160a8b5985853bd9088b3e969f988fe6923b3994040eeee09ad353b969d58938237cfe" );
655  add_init_len = unhexify( add_init, "73c372f60519e8eca371eaa13fb54f88" );
656  add1_len = unhexify( add1, "" );
657  add2_len = unhexify( add2, "" );
658 
659  test_offset = 0;
660  fct_chk( ctr_drbg_init_entropy_len( &ctx, entropy_func, entropy, add_init, add_init_len, 32 ) == 0 );
662 
663  fct_chk( ctr_drbg_random_with_add( &ctx, buf, 16, add1, add1_len ) == 0 );
664  fct_chk( ctr_drbg_random_with_add( &ctx, buf, 16, add2, add2_len ) == 0 );
665  hexify( output_str, buf, 16 );
666  fct_chk( strcmp( (char *) output_str, "f62c7cfbe74555744790bcc7930e03c3" ) == 0 );
667  }
668  FCT_TEST_END();
669 
670 
671  FCT_TEST_BGN(ctr_drbg_nist_validation_aes_256_use_dftrue25612800_14)
672  {
673  unsigned char entropy[512];
674  unsigned char add_init[512];
675  unsigned char add1[512];
676  unsigned char add2[512];
677  ctr_drbg_context ctx;
678  unsigned char buf[512];
679  unsigned char output_str[512];
680  int add_init_len, add1_len, add2_len;
681 
682  memset( output_str, 0, 512 );
683 
684  unhexify( entropy, "7065d128ddb2fc6ea31f4110b6c0934ed112c51d74a4a0741a0843d8befac22902a01353322674c3d58935144a0f8f171a99dbeab71272ff7518c46cc7ebb573adbf95bff8ec68eeba5e8ec1221655aed8420086bda89c7de34f217dce73ccab" );
685  add_init_len = unhexify( add_init, "75ba8ddeef24f9f5b00b426a362c4f02" );
686  add1_len = unhexify( add1, "" );
687  add2_len = unhexify( add2, "" );
688 
689  test_offset = 0;
690  fct_chk( ctr_drbg_init_entropy_len( &ctx, entropy_func, entropy, add_init, add_init_len, 32 ) == 0 );
692 
693  fct_chk( ctr_drbg_random_with_add( &ctx, buf, 16, add1, add1_len ) == 0 );
694  fct_chk( ctr_drbg_random_with_add( &ctx, buf, 16, add2, add2_len ) == 0 );
695  hexify( output_str, buf, 16 );
696  fct_chk( strcmp( (char *) output_str, "700761857ea2763e8739b8f6f6481d1c" ) == 0 );
697  }
698  FCT_TEST_END();
699 
700 
701  FCT_TEST_BGN(ctr_drbg_nist_validation_aes_256_use_dftrue2561280256_0)
702  {
703  unsigned char entropy[512];
704  unsigned char add_init[512];
705  unsigned char add1[512];
706  unsigned char add2[512];
707  ctr_drbg_context ctx;
708  unsigned char buf[512];
709  unsigned char output_str[512];
710  int add_init_len, add1_len, add2_len;
711 
712  memset( output_str, 0, 512 );
713 
714  unhexify( entropy, "82c80d922c47bbec0f664dd623e22a11a3b84d308351e45e30ee286e89547d22c43e17b3ca0fa08f77eef1001ba696932e9ee890e7aac4661c138e5b5ce36773d3120c35f8c94e0a78ffbf407a63ca435392e17c07461522fdc1f63f037aacff" );
715  add_init_len = unhexify( add_init, "14051b57277bc3d3bbae51bdecfb9f5d" );
716  add1_len = unhexify( add1, "b70e7c1c4b8e0f1770e05b29a93f9d7a6540f23ab84136b05b161d85e5f19251" );
717  add2_len = unhexify( add2, "5a737c128bd69f927f8f3ad68f93f6356d5f4ec0e36b6b50ced43dcd5c44dbc2" );
718 
719  test_offset = 0;
720  fct_chk( ctr_drbg_init_entropy_len( &ctx, entropy_func, entropy, add_init, add_init_len, 32 ) == 0 );
722 
723  fct_chk( ctr_drbg_random_with_add( &ctx, buf, 16, add1, add1_len ) == 0 );
724  fct_chk( ctr_drbg_random_with_add( &ctx, buf, 16, add2, add2_len ) == 0 );
725  hexify( output_str, buf, 16 );
726  fct_chk( strcmp( (char *) output_str, "a4e6c754194a09614994b36ecce33b55" ) == 0 );
727  }
728  FCT_TEST_END();
729 
730 
731  FCT_TEST_BGN(ctr_drbg_nist_validation_aes_256_use_dftrue2561280256_1)
732  {
733  unsigned char entropy[512];
734  unsigned char add_init[512];
735  unsigned char add1[512];
736  unsigned char add2[512];
737  ctr_drbg_context ctx;
738  unsigned char buf[512];
739  unsigned char output_str[512];
740  int add_init_len, add1_len, add2_len;
741 
742  memset( output_str, 0, 512 );
743 
744  unhexify( entropy, "952f3f179cbbda27ebd30f4fc31bf96baccb2adbaa9c090bc0f37044a44e85b3bc668cd3533faaf56b5da9242844d65733f7ac1f55c38b175749b88e18d19672b7bdab54e0ababdd4519fb07e0c25578f64ad40d0beb0a26275d5e2f4906aa70" );
745  add_init_len = unhexify( add_init, "4526b268128ea35f8558b4e1d08388f2" );
746  add1_len = unhexify( add1, "6b167c7cebea2e585ab974b60c4d305a113102ca8c3dc87651665728c4c675ad" );
747  add2_len = unhexify( add2, "a038f1ca1f420eae449791f13be4901bfb91e41e052e02635b1f1817bd8969b1" );
748 
749  test_offset = 0;
750  fct_chk( ctr_drbg_init_entropy_len( &ctx, entropy_func, entropy, add_init, add_init_len, 32 ) == 0 );
752 
753  fct_chk( ctr_drbg_random_with_add( &ctx, buf, 16, add1, add1_len ) == 0 );
754  fct_chk( ctr_drbg_random_with_add( &ctx, buf, 16, add2, add2_len ) == 0 );
755  hexify( output_str, buf, 16 );
756  fct_chk( strcmp( (char *) output_str, "745ec376282e20fd1f9151f7040ed94a" ) == 0 );
757  }
758  FCT_TEST_END();
759 
760 
761  FCT_TEST_BGN(ctr_drbg_nist_validation_aes_256_use_dftrue2561280256_2)
762  {
763  unsigned char entropy[512];
764  unsigned char add_init[512];
765  unsigned char add1[512];
766  unsigned char add2[512];
767  ctr_drbg_context ctx;
768  unsigned char buf[512];
769  unsigned char output_str[512];
770  int add_init_len, add1_len, add2_len;
771 
772  memset( output_str, 0, 512 );
773 
774  unhexify( entropy, "75fd042bfd994de2c92e5aa505945ec93bd7cf366d86a356723fca3c9479ee17fb59c6ca8ba89784d43f06cdad113e5081e02427ee0714439d88dc1a6257fc91d99c1a15e92527847ab10883cc8f471cad8cf0882f5b6d33a846a00dee154012" );
775  add_init_len = unhexify( add_init, "c1aafa90f394e0ba9a528032dc6780d3" );
776  add1_len = unhexify( add1, "c704164ce80a400cb2f54d1b2d7efa20f32b699fa881bfc7b56cfd7c4bee1ea6" );
777  add2_len = unhexify( add2, "f3baff4b6f42c8e75b70c2a72a027b14a99ae49a5a47c7af0f538843c94e1a69" );
778 
779  test_offset = 0;
780  fct_chk( ctr_drbg_init_entropy_len( &ctx, entropy_func, entropy, add_init, add_init_len, 32 ) == 0 );
782 
783  fct_chk( ctr_drbg_random_with_add( &ctx, buf, 16, add1, add1_len ) == 0 );
784  fct_chk( ctr_drbg_random_with_add( &ctx, buf, 16, add2, add2_len ) == 0 );
785  hexify( output_str, buf, 16 );
786  fct_chk( strcmp( (char *) output_str, "7af9113cd607cdb4c6534f401fe4e96c" ) == 0 );
787  }
788  FCT_TEST_END();
789 
790 
791  FCT_TEST_BGN(ctr_drbg_nist_validation_aes_256_use_dftrue2561280256_3)
792  {
793  unsigned char entropy[512];
794  unsigned char add_init[512];
795  unsigned char add1[512];
796  unsigned char add2[512];
797  ctr_drbg_context ctx;
798  unsigned char buf[512];
799  unsigned char output_str[512];
800  int add_init_len, add1_len, add2_len;
801 
802  memset( output_str, 0, 512 );
803 
804  unhexify( entropy, "0c3c6dd706076d6484478347559b495d7ee898c39cde06027bc99f7bf69ce1140ca04602265e1308af6dd6446a1cf151749b22a99e8a05d30cc3ccd00e663bc1bc37e08ee62834fcc52a4bc8c1d6442544187484f81dc729417d5bedfcab5a54" );
805  add_init_len = unhexify( add_init, "e6e726b72e7b264a36ec0cd60d4578b5" );
806  add1_len = unhexify( add1, "d84b978483c0bd8f8c231d92ea88ac21e6e667215804b15725a7ed32f7fc5dd7" );
807  add2_len = unhexify( add2, "9a8971f6c559f7f197c73a94a92f957d1919ad305f4167c56fe729d50e5754a5" );
808 
809  test_offset = 0;
810  fct_chk( ctr_drbg_init_entropy_len( &ctx, entropy_func, entropy, add_init, add_init_len, 32 ) == 0 );
812 
813  fct_chk( ctr_drbg_random_with_add( &ctx, buf, 16, add1, add1_len ) == 0 );
814  fct_chk( ctr_drbg_random_with_add( &ctx, buf, 16, add2, add2_len ) == 0 );
815  hexify( output_str, buf, 16 );
816  fct_chk( strcmp( (char *) output_str, "e16ee5bceca30f1fbcadb5de2d7cfc42" ) == 0 );
817  }
818  FCT_TEST_END();
819 
820 
821  FCT_TEST_BGN(ctr_drbg_nist_validation_aes_256_use_dftrue2561280256_4)
822  {
823  unsigned char entropy[512];
824  unsigned char add_init[512];
825  unsigned char add1[512];
826  unsigned char add2[512];
827  ctr_drbg_context ctx;
828  unsigned char buf[512];
829  unsigned char output_str[512];
830  int add_init_len, add1_len, add2_len;
831 
832  memset( output_str, 0, 512 );
833 
834  unhexify( entropy, "a08ce39f2f671e1f934821a8db9070f39a734a7a20e70307fccca17db15bb4e8a421600df11d1a6e7806a14826739322c8043649ea707180f1d00dea752c2c36398030519465864c4d38163f5b0dd5be07dbc0ae29693ad4a67ca69f28414634" );
835  add_init_len = unhexify( add_init, "0272d86db283244eb7ee0ed8c8054b89" );
836  add1_len = unhexify( add1, "aa97055cf46ba26465dfb3ef1cf93191625c352768b2d8e34459499a27502e50" );
837  add2_len = unhexify( add2, "dddd0007eb29fdf942220e920ca0637db4b91cbf898efd2696576ff6bfacb9d1" );
838 
839  test_offset = 0;
840  fct_chk( ctr_drbg_init_entropy_len( &ctx, entropy_func, entropy, add_init, add_init_len, 32 ) == 0 );
842 
843  fct_chk( ctr_drbg_random_with_add( &ctx, buf, 16, add1, add1_len ) == 0 );
844  fct_chk( ctr_drbg_random_with_add( &ctx, buf, 16, add2, add2_len ) == 0 );
845  hexify( output_str, buf, 16 );
846  fct_chk( strcmp( (char *) output_str, "9db0057e39ca6e0f16e79b4f8a0ed5c7" ) == 0 );
847  }
848  FCT_TEST_END();
849 
850 
851  FCT_TEST_BGN(ctr_drbg_nist_validation_aes_256_use_dftrue2561280256_5)
852  {
853  unsigned char entropy[512];
854  unsigned char add_init[512];
855  unsigned char add1[512];
856  unsigned char add2[512];
857  ctr_drbg_context ctx;
858  unsigned char buf[512];
859  unsigned char output_str[512];
860  int add_init_len, add1_len, add2_len;
861 
862  memset( output_str, 0, 512 );
863 
864  unhexify( entropy, "89af36a1c53f730c1b818b26aa510627b17e6f9da51c8e53930de883b7cc7a3e8c3c463c910646ac3ff08f05bca8e340daf9a322d133ae453fdf7e6860a27ff4495c89875431ba9de3e4f3247cda8c62acc86f7066448f639d8ba8b5249337f8" );
865  add_init_len = unhexify( add_init, "4ad8f72a0d0e28a758722b20e3017d7e" );
866  add1_len = unhexify( add1, "9d060b7ed63bdb59263c75ebe6a54bf3a4ac9c9926ca8fb49caa905a2651eead" );
867  add2_len = unhexify( add2, "016099232dc44bb7cdb492f4955ab1aabc5dc0b5731447cea2eb1d92e41482d1" );
868 
869  test_offset = 0;
870  fct_chk( ctr_drbg_init_entropy_len( &ctx, entropy_func, entropy, add_init, add_init_len, 32 ) == 0 );
872 
873  fct_chk( ctr_drbg_random_with_add( &ctx, buf, 16, add1, add1_len ) == 0 );
874  fct_chk( ctr_drbg_random_with_add( &ctx, buf, 16, add2, add2_len ) == 0 );
875  hexify( output_str, buf, 16 );
876  fct_chk( strcmp( (char *) output_str, "4b658e95adae4bf0c418fded4431c27f" ) == 0 );
877  }
878  FCT_TEST_END();
879 
880 
881  FCT_TEST_BGN(ctr_drbg_nist_validation_aes_256_use_dftrue2561280256_6)
882  {
883  unsigned char entropy[512];
884  unsigned char add_init[512];
885  unsigned char add1[512];
886  unsigned char add2[512];
887  ctr_drbg_context ctx;
888  unsigned char buf[512];
889  unsigned char output_str[512];
890  int add_init_len, add1_len, add2_len;
891 
892  memset( output_str, 0, 512 );
893 
894  unhexify( entropy, "dc8c60dd42c85fed86cb32af035bbde5737526eb07991397c853256f2f0cb311bce70e1c5e32fc3510402d7d7e3de36fa5e584234daf391bc53cc651e001ab7fcf760679b3c82057f9d09bfdcab8e158d4daa63b20c0e1102f7a06bf5a2788dd" );
895  add_init_len = unhexify( add_init, "aa19b944c2e1b9d27933bc87322bdf14" );
896  add1_len = unhexify( add1, "6b98fec5f7de8098ff9df80f62473c73831edace832a767abf5965ea8bf789ba" );
897  add2_len = unhexify( add2, "cc998bd5752f9c96ec35d9658cc8b3833dd6ab80c7accd6777c06c2cf7c01e59" );
898 
899  test_offset = 0;
900  fct_chk( ctr_drbg_init_entropy_len( &ctx, entropy_func, entropy, add_init, add_init_len, 32 ) == 0 );
902 
903  fct_chk( ctr_drbg_random_with_add( &ctx, buf, 16, add1, add1_len ) == 0 );
904  fct_chk( ctr_drbg_random_with_add( &ctx, buf, 16, add2, add2_len ) == 0 );
905  hexify( output_str, buf, 16 );
906  fct_chk( strcmp( (char *) output_str, "fc58833e0e27f7705e4937dd2aadb238" ) == 0 );
907  }
908  FCT_TEST_END();
909 
910 
911  FCT_TEST_BGN(ctr_drbg_nist_validation_aes_256_use_dftrue2561280256_7)
912  {
913  unsigned char entropy[512];
914  unsigned char add_init[512];
915  unsigned char add1[512];
916  unsigned char add2[512];
917  ctr_drbg_context ctx;
918  unsigned char buf[512];
919  unsigned char output_str[512];
920  int add_init_len, add1_len, add2_len;
921 
922  memset( output_str, 0, 512 );
923 
924  unhexify( entropy, "513fb96b6164ece801e52855aad28cb80131e7872d8432d27a974fb62d8d0100bb7ebcb8f5c066e230377a8847d6798c3d8090469b9719a80ac956ac33186b00eb8ca64c5530421f93932bc7c98ee92651e85dab562483bdb189676802726647" );
925  add_init_len = unhexify( add_init, "10c8c17a25041e2ef0d3cc80671e4cfe" );
926  add1_len = unhexify( add1, "240f36a0a598fe2116ffa682824f25acc35132f137f5221bc0ff05b501f5fd97" );
927  add2_len = unhexify( add2, "22a5eb5aa00309a762ab60a8c2647eebe1083f8905104b5d375ed1661b4c8478" );
928 
929  test_offset = 0;
930  fct_chk( ctr_drbg_init_entropy_len( &ctx, entropy_func, entropy, add_init, add_init_len, 32 ) == 0 );
932 
933  fct_chk( ctr_drbg_random_with_add( &ctx, buf, 16, add1, add1_len ) == 0 );
934  fct_chk( ctr_drbg_random_with_add( &ctx, buf, 16, add2, add2_len ) == 0 );
935  hexify( output_str, buf, 16 );
936  fct_chk( strcmp( (char *) output_str, "145a16109ec39b0615a9916d07f0854e" ) == 0 );
937  }
938  FCT_TEST_END();
939 
940 
941  FCT_TEST_BGN(ctr_drbg_nist_validation_aes_256_use_dftrue2561280256_8)
942  {
943  unsigned char entropy[512];
944  unsigned char add_init[512];
945  unsigned char add1[512];
946  unsigned char add2[512];
947  ctr_drbg_context ctx;
948  unsigned char buf[512];
949  unsigned char output_str[512];
950  int add_init_len, add1_len, add2_len;
951 
952  memset( output_str, 0, 512 );
953 
954  unhexify( entropy, "df8bc70e45fe14abb02c1b9a9754c37497fc2f67709edd854196fc4d074b12797ce7cb292f14cb1d6904abf32bf229299db5ccf5a791a3b8cd3e40a64f38f6b57df759a863e09d7676d2f3ff2762cdab221151000dba32a67f38cab93d5b7a55" );
955  add_init_len = unhexify( add_init, "cea0c3c12be683c0f27693650a6a3d7d" );
956  add1_len = unhexify( add1, "bf2ac545d94e318066ff88f39791a8385e1a8539e99ac4fa5a6b97a4caead9d4" );
957  add2_len = unhexify( add2, "846efef8672d256c63aa05a61de86a1bbc6950de8bfb9808d1c1066aef7f7d70" );
958 
959  test_offset = 0;
960  fct_chk( ctr_drbg_init_entropy_len( &ctx, entropy_func, entropy, add_init, add_init_len, 32 ) == 0 );
962 
963  fct_chk( ctr_drbg_random_with_add( &ctx, buf, 16, add1, add1_len ) == 0 );
964  fct_chk( ctr_drbg_random_with_add( &ctx, buf, 16, add2, add2_len ) == 0 );
965  hexify( output_str, buf, 16 );
966  fct_chk( strcmp( (char *) output_str, "8d8f0389d41adcac8ca7b61fc02409c3" ) == 0 );
967  }
968  FCT_TEST_END();
969 
970 
971  FCT_TEST_BGN(ctr_drbg_nist_validation_aes_256_use_dftrue2561280256_9)
972  {
973  unsigned char entropy[512];
974  unsigned char add_init[512];
975  unsigned char add1[512];
976  unsigned char add2[512];
977  ctr_drbg_context ctx;
978  unsigned char buf[512];
979  unsigned char output_str[512];
980  int add_init_len, add1_len, add2_len;
981 
982  memset( output_str, 0, 512 );
983 
984  unhexify( entropy, "51930fb7095edef3fc20aca2a24127f03d3c4b983329e013ad8a35016f581dd7b2d11bafbf971c1fdefd95a0024195e6e90a60ec39b1a8dbe0cb0c3aabf9cf56b662efc722b2dffa6c3be651f199cbc3da2315b4d55aeafd1492283889e1c34f" );
985  add_init_len = unhexify( add_init, "1b782af2545352631983dc89945ffc37" );
986  add1_len = unhexify( add1, "1b6295986f6fb55dc4c4c19a3dba41066fdc0297d50fb14e9501ba4378d662ed" );
987  add2_len = unhexify( add2, "6e66ff63fc457014550b85210a18f00beab765f9e12aa16818f29d1449620d28" );
988 
989  test_offset = 0;
990  fct_chk( ctr_drbg_init_entropy_len( &ctx, entropy_func, entropy, add_init, add_init_len, 32 ) == 0 );
992 
993  fct_chk( ctr_drbg_random_with_add( &ctx, buf, 16, add1, add1_len ) == 0 );
994  fct_chk( ctr_drbg_random_with_add( &ctx, buf, 16, add2, add2_len ) == 0 );
995  hexify( output_str, buf, 16 );
996  fct_chk( strcmp( (char *) output_str, "78dfcb662736a831efaa592153a9aff9" ) == 0 );
997  }
998  FCT_TEST_END();
999 
1000 
1001  FCT_TEST_BGN(ctr_drbg_nist_validation_aes_256_use_dftrue2561280256_10)
1002  {
1003  unsigned char entropy[512];
1004  unsigned char add_init[512];
1005  unsigned char add1[512];
1006  unsigned char add2[512];
1007  ctr_drbg_context ctx;
1008  unsigned char buf[512];
1009  unsigned char output_str[512];
1010  int add_init_len, add1_len, add2_len;
1011 
1012  memset( output_str, 0, 512 );
1013 
1014  unhexify( entropy, "d37403db6f84a7ba162e1cc351fe2e44d674ae8606280c9dac3e3975f30cbe1c9925e502a9804b91aada5cc97b259b90ccb5b8103394d9a28f0709fc9b5ffe9d73ad3672e02064ea68cebe3face5d823ee605c46c173db591135f564558dab4c" );
1015  add_init_len = unhexify( add_init, "6580f6df5c8de7c4a105c11ed44435c2" );
1016  add1_len = unhexify( add1, "97486a5e6ce6c6cf9d3f9a313d346cbc34b2bd54db80c5f8d74d6f6939f89519" );
1017  add2_len = unhexify( add2, "8377fcb52556f9974f1aa325d6e141d7b81355bd160abbc86e0007571b3c1904" );
1018 
1019  test_offset = 0;
1020  fct_chk( ctr_drbg_init_entropy_len( &ctx, entropy_func, entropy, add_init, add_init_len, 32 ) == 0 );
1022 
1023  fct_chk( ctr_drbg_random_with_add( &ctx, buf, 16, add1, add1_len ) == 0 );
1024  fct_chk( ctr_drbg_random_with_add( &ctx, buf, 16, add2, add2_len ) == 0 );
1025  hexify( output_str, buf, 16 );
1026  fct_chk( strcmp( (char *) output_str, "77031d3474303470dca9336b1692c504" ) == 0 );
1027  }
1028  FCT_TEST_END();
1029 
1030 
1031  FCT_TEST_BGN(ctr_drbg_nist_validation_aes_256_use_dftrue2561280256_11)
1032  {
1033  unsigned char entropy[512];
1034  unsigned char add_init[512];
1035  unsigned char add1[512];
1036  unsigned char add2[512];
1037  ctr_drbg_context ctx;
1038  unsigned char buf[512];
1039  unsigned char output_str[512];
1040  int add_init_len, add1_len, add2_len;
1041 
1042  memset( output_str, 0, 512 );
1043 
1044  unhexify( entropy, "a0de51b8efa44b8245dba31d78f7840b2b7abced4e265b4cd9628eabc6ebbccb0f118dd8cc958b36dc959e22c4a03dafa212eeedec7d25ee6c5961187bee83b1ed3a75c7bdd9d0713b16cc67e68231f4cb274c8f3dfcc7e5d288c426a0d43b8f" );
1045  add_init_len = unhexify( add_init, "f5303f148d6d6faca90aa88b07ab2ba9" );
1046  add1_len = unhexify( add1, "8d1fddc11dbad007e9b14679a5599e5e8a836197f14d010f3329d164c02d46d6" );
1047  add2_len = unhexify( add2, "9ceb6570568455d42a7397f8ca8b8af7a961a33a73770544cca563c04bc919ca" );
1048 
1049  test_offset = 0;
1050  fct_chk( ctr_drbg_init_entropy_len( &ctx, entropy_func, entropy, add_init, add_init_len, 32 ) == 0 );
1052 
1053  fct_chk( ctr_drbg_random_with_add( &ctx, buf, 16, add1, add1_len ) == 0 );
1054  fct_chk( ctr_drbg_random_with_add( &ctx, buf, 16, add2, add2_len ) == 0 );
1055  hexify( output_str, buf, 16 );
1056  fct_chk( strcmp( (char *) output_str, "9882f0bd1f6129a78b51d108e752b2d9" ) == 0 );
1057  }
1058  FCT_TEST_END();
1059 
1060 
1061  FCT_TEST_BGN(ctr_drbg_nist_validation_aes_256_use_dftrue2561280256_12)
1062  {
1063  unsigned char entropy[512];
1064  unsigned char add_init[512];
1065  unsigned char add1[512];
1066  unsigned char add2[512];
1067  ctr_drbg_context ctx;
1068  unsigned char buf[512];
1069  unsigned char output_str[512];
1070  int add_init_len, add1_len, add2_len;
1071 
1072  memset( output_str, 0, 512 );
1073 
1074  unhexify( entropy, "dbdbef9d217e9051025c321b628c1cc823d508ffdd13fc4edbe8677658a57ef5b64395a6b7d62c0e93dc0956ee0217ec48ae054f1d4680023cc1b2af666efa9e1458cf6b0dae72eef2392e93687bd1fb5f366bb2cdd12937ad09724e39db4189" );
1075  add_init_len = unhexify( add_init, "5a799c58985aa2898cc8fe8e5bc4a9f8" );
1076  add1_len = unhexify( add1, "8c179b35739e75719e74f7c3e038bc06eb3e212d6ade85275cfebf12b2dce2a2" );
1077  add2_len = unhexify( add2, "af617f2e228adde3edaf52a7e5979476dbb9cd2956a1737d93a16563bbbb4888" );
1078 
1079  test_offset = 0;
1080  fct_chk( ctr_drbg_init_entropy_len( &ctx, entropy_func, entropy, add_init, add_init_len, 32 ) == 0 );
1082 
1083  fct_chk( ctr_drbg_random_with_add( &ctx, buf, 16, add1, add1_len ) == 0 );
1084  fct_chk( ctr_drbg_random_with_add( &ctx, buf, 16, add2, add2_len ) == 0 );
1085  hexify( output_str, buf, 16 );
1086  fct_chk( strcmp( (char *) output_str, "49a04f3b4ef052747c7f4e77c91603e8" ) == 0 );
1087  }
1088  FCT_TEST_END();
1089 
1090 
1091  FCT_TEST_BGN(ctr_drbg_nist_validation_aes_256_use_dftrue2561280256_13)
1092  {
1093  unsigned char entropy[512];
1094  unsigned char add_init[512];
1095  unsigned char add1[512];
1096  unsigned char add2[512];
1097  ctr_drbg_context ctx;
1098  unsigned char buf[512];
1099  unsigned char output_str[512];
1100  int add_init_len, add1_len, add2_len;
1101 
1102  memset( output_str, 0, 512 );
1103 
1104  unhexify( entropy, "bf22b182d39622e941017285adbdfe446c3d1a72601d0e5a15674f3b1b260170b1b2ab6b588a0267d86776a5d4ce80e132d7135a581af75ea6de65153680e28ce35ce78d0917b4932000d62260149e5a3ae72bc250548390b664f53c697dac45" );
1105  add_init_len = unhexify( add_init, "8f5b51983a8156a529f559ac3afebbf0" );
1106  add1_len = unhexify( add1, "4cbb5b2d6e666d5dd3dd99b951ea435cae5a75d2e1eb41a48c775829b860e98b" );
1107  add2_len = unhexify( add2, "a4b4171c2592516404434932ad0a8ee67bd776a03479b507c406405b3d8962bc" );
1108 
1109  test_offset = 0;
1110  fct_chk( ctr_drbg_init_entropy_len( &ctx, entropy_func, entropy, add_init, add_init_len, 32 ) == 0 );
1112 
1113  fct_chk( ctr_drbg_random_with_add( &ctx, buf, 16, add1, add1_len ) == 0 );
1114  fct_chk( ctr_drbg_random_with_add( &ctx, buf, 16, add2, add2_len ) == 0 );
1115  hexify( output_str, buf, 16 );
1116  fct_chk( strcmp( (char *) output_str, "cab49631733f06e3fb3e0898e5ad22e7" ) == 0 );
1117  }
1118  FCT_TEST_END();
1119 
1120 
1121  FCT_TEST_BGN(ctr_drbg_nist_validation_aes_256_use_dftrue2561280256_14)
1122  {
1123  unsigned char entropy[512];
1124  unsigned char add_init[512];
1125  unsigned char add1[512];
1126  unsigned char add2[512];
1127  ctr_drbg_context ctx;
1128  unsigned char buf[512];
1129  unsigned char output_str[512];
1130  int add_init_len, add1_len, add2_len;
1131 
1132  memset( output_str, 0, 512 );
1133 
1134  unhexify( entropy, "1e50fada1e76a0d243e6f64c36a173ddc1f47a1dab834f5cd492568792958d5be22cce3110c8e8958b47f07b5c63f86b254942361d4d553e47d36103f47cd7f0bbee27d2e238b1d85671afe8284ee1fd2a431a5f69b2df73e95341c3a2e4fe4b" );
1135  add_init_len = unhexify( add_init, "9f305a77cbaec1ab408cfc0eb89c6cbb" );
1136  add1_len = unhexify( add1, "c254f3b40e773eb09053b226820f68cafa3458ad403ad36f715245a854752a93" );
1137  add2_len = unhexify( add2, "699e177b7be3353c45ce7b7a0d573b00087d700a9f2c1cd2e370e05d4ddadc86" );
1138 
1139  test_offset = 0;
1140  fct_chk( ctr_drbg_init_entropy_len( &ctx, entropy_func, entropy, add_init, add_init_len, 32 ) == 0 );
1142 
1143  fct_chk( ctr_drbg_random_with_add( &ctx, buf, 16, add1, add1_len ) == 0 );
1144  fct_chk( ctr_drbg_random_with_add( &ctx, buf, 16, add2, add2_len ) == 0 );
1145  hexify( output_str, buf, 16 );
1146  fct_chk( strcmp( (char *) output_str, "bb6b02b25a496f29245315f58a16febc" ) == 0 );
1147  }
1148  FCT_TEST_END();
1149 
1150 
1151  FCT_TEST_BGN(ctr_drbg_nist_validation_aes_256_use_dftrue2561282560_0)
1152  {
1153  unsigned char entropy[512];
1154  unsigned char add_init[512];
1155  unsigned char add1[512];
1156  unsigned char add2[512];
1157  ctr_drbg_context ctx;
1158  unsigned char buf[512];
1159  unsigned char output_str[512];
1160  int add_init_len, add1_len, add2_len;
1161 
1162  memset( output_str, 0, 512 );
1163 
1164  unhexify( entropy, "545a783ae97d827ed0b81d9752ad0f7e965f511b1f5dae0f872e9ec37cfe63af86c1d15e153887989b605773b16ad5505e65f617cfa8ef46547c4c3f9d0c4fd0b6e1cff5ca0f1929266fe43ba8f45ad664cfe5e90903a9cb722b42ae8989c148" );
1165  add_init_len = unhexify( add_init, "e09f65dcffc0d3a4d84bacc41617a4e46ce5184eca011049ab657566f728e4aa28315ffac166ebe50e1269b01c95b3a2" );
1166  add1_len = unhexify( add1, "" );
1167  add2_len = unhexify( add2, "" );
1168 
1169  test_offset = 0;
1170  fct_chk( ctr_drbg_init_entropy_len( &ctx, entropy_func, entropy, add_init, add_init_len, 32 ) == 0 );
1172 
1173  fct_chk( ctr_drbg_random_with_add( &ctx, buf, 16, add1, add1_len ) == 0 );
1174  fct_chk( ctr_drbg_random_with_add( &ctx, buf, 16, add2, add2_len ) == 0 );
1175  hexify( output_str, buf, 16 );
1176  fct_chk( strcmp( (char *) output_str, "1e77d7cc18775fef9a3d3e00903da01b" ) == 0 );
1177  }
1178  FCT_TEST_END();
1179 
1180 
1181  FCT_TEST_BGN(ctr_drbg_nist_validation_aes_256_use_dftrue2561282560_1)
1182  {
1183  unsigned char entropy[512];
1184  unsigned char add_init[512];
1185  unsigned char add1[512];
1186  unsigned char add2[512];
1187  ctr_drbg_context ctx;
1188  unsigned char buf[512];
1189  unsigned char output_str[512];
1190  int add_init_len, add1_len, add2_len;
1191 
1192  memset( output_str, 0, 512 );
1193 
1194  unhexify( entropy, "dde6c0850fe642602eb222ca7371213c598cef8c3e71e0593ea8edb54e1bed130b9b0aebe0893093b950c52f56eb9b338aa4bd01dae030515726ece1bf751660b4a3602da6400e4b94edebba646b5c3d4e64ceea1c4f14b7a19f0142783247df" );
1195  add_init_len = unhexify( add_init, "056cd44c8847d89da05fbef95e9660d589046b0c02f9b42c17fd8b069f831c73cd896005ec080113589b6f07be6e42ea" );
1196  add1_len = unhexify( add1, "" );
1197  add2_len = unhexify( add2, "" );
1198 
1199  test_offset = 0;
1200  fct_chk( ctr_drbg_init_entropy_len( &ctx, entropy_func, entropy, add_init, add_init_len, 32 ) == 0 );
1202 
1203  fct_chk( ctr_drbg_random_with_add( &ctx, buf, 16, add1, add1_len ) == 0 );
1204  fct_chk( ctr_drbg_random_with_add( &ctx, buf, 16, add2, add2_len ) == 0 );
1205  hexify( output_str, buf, 16 );
1206  fct_chk( strcmp( (char *) output_str, "a790ab939e63555d02ea1e9696051725" ) == 0 );
1207  }
1208  FCT_TEST_END();
1209 
1210 
1211  FCT_TEST_BGN(ctr_drbg_nist_validation_aes_256_use_dftrue2561282560_2)
1212  {
1213  unsigned char entropy[512];
1214  unsigned char add_init[512];
1215  unsigned char add1[512];
1216  unsigned char add2[512];
1217  ctr_drbg_context ctx;
1218  unsigned char buf[512];
1219  unsigned char output_str[512];
1220  int add_init_len, add1_len, add2_len;
1221 
1222  memset( output_str, 0, 512 );
1223 
1224  unhexify( entropy, "6fe09520e26f5abece0fceadc54913c650a9f55725af45a9a5f373d09b9970b8706b9041d0189a204f6a4eb527dfa86584a3bee3265b809c3932ae5e7228194a3cf7592fc9301c833b45a53be32b9caec9f0f91ba86519f12b0b235f68419c1e" );
1225  add_init_len = unhexify( add_init, "73c72c7dfe138ef4b9817d41b9722b3940762b59bda26b3f6bb8b30583e01d088a29726b71d36ffeebdb387010cb1bb6" );
1226  add1_len = unhexify( add1, "" );
1227  add2_len = unhexify( add2, "" );
1228 
1229  test_offset = 0;
1230  fct_chk( ctr_drbg_init_entropy_len( &ctx, entropy_func, entropy, add_init, add_init_len, 32 ) == 0 );
1232 
1233  fct_chk( ctr_drbg_random_with_add( &ctx, buf, 16, add1, add1_len ) == 0 );
1234  fct_chk( ctr_drbg_random_with_add( &ctx, buf, 16, add2, add2_len ) == 0 );
1235  hexify( output_str, buf, 16 );
1236  fct_chk( strcmp( (char *) output_str, "798d997f46ff7cc4206994085340325e" ) == 0 );
1237  }
1238  FCT_TEST_END();
1239 
1240 
1241  FCT_TEST_BGN(ctr_drbg_nist_validation_aes_256_use_dftrue2561282560_3)
1242  {
1243  unsigned char entropy[512];
1244  unsigned char add_init[512];
1245  unsigned char add1[512];
1246  unsigned char add2[512];
1247  ctr_drbg_context ctx;
1248  unsigned char buf[512];
1249  unsigned char output_str[512];
1250  int add_init_len, add1_len, add2_len;
1251 
1252  memset( output_str, 0, 512 );
1253 
1254  unhexify( entropy, "532960c23c8c8b2146576dde52fadc985134914abf42ca1c5f47206937fda41289ae5d9f935dc4ce45f77cad230a4f345599e3bae4071188324483a0b93593c96d8b6ac6c0d8b52f8795c44171f0d8cd0b1e85dc75ce8abe65d5f25460166ba0" );
1255  add_init_len = unhexify( add_init, "cdba7c7033c34852b7bc1a6b33edab36f41d563bd0395d1001c02ffc0c42ec8595ed2b5ddabc923372e3b6bb457833fa" );
1256  add1_len = unhexify( add1, "" );
1257  add2_len = unhexify( add2, "" );
1258 
1259  test_offset = 0;
1260  fct_chk( ctr_drbg_init_entropy_len( &ctx, entropy_func, entropy, add_init, add_init_len, 32 ) == 0 );
1262 
1263  fct_chk( ctr_drbg_random_with_add( &ctx, buf, 16, add1, add1_len ) == 0 );
1264  fct_chk( ctr_drbg_random_with_add( &ctx, buf, 16, add2, add2_len ) == 0 );
1265  hexify( output_str, buf, 16 );
1266  fct_chk( strcmp( (char *) output_str, "9d48160aca60f1a82baaa8a7d804a3d8" ) == 0 );
1267  }
1268  FCT_TEST_END();
1269 
1270 
1271  FCT_TEST_BGN(ctr_drbg_nist_validation_aes_256_use_dftrue2561282560_4)
1272  {
1273  unsigned char entropy[512];
1274  unsigned char add_init[512];
1275  unsigned char add1[512];
1276  unsigned char add2[512];
1277  ctr_drbg_context ctx;
1278  unsigned char buf[512];
1279  unsigned char output_str[512];
1280  int add_init_len, add1_len, add2_len;
1281 
1282  memset( output_str, 0, 512 );
1283 
1284  unhexify( entropy, "9216c9a833f81953792260a688eb7c3dfc85565ae6a6033203741a763db056247808e0ecd5ba1fc4549c3a757eba535adc786e810ddaae9a2714d31f5154f2c3ee81108669f1239f4f4efd6e18aabfa2d88f0ac25f4740108f6cfebffeb2d857" );
1285  add_init_len = unhexify( add_init, "02cef01aca992f60aa12db4b2c441689e4972a6f9deaf3663082afed642c1502b67b42d490af1c52c7e6eaf459882eca" );
1286  add1_len = unhexify( add1, "" );
1287  add2_len = unhexify( add2, "" );
1288 
1289  test_offset = 0;
1290  fct_chk( ctr_drbg_init_entropy_len( &ctx, entropy_func, entropy, add_init, add_init_len, 32 ) == 0 );
1292 
1293  fct_chk( ctr_drbg_random_with_add( &ctx, buf, 16, add1, add1_len ) == 0 );
1294  fct_chk( ctr_drbg_random_with_add( &ctx, buf, 16, add2, add2_len ) == 0 );
1295  hexify( output_str, buf, 16 );
1296  fct_chk( strcmp( (char *) output_str, "d6378bcf43be1ad42da83780c1dab314" ) == 0 );
1297  }
1298  FCT_TEST_END();
1299 
1300 
1301  FCT_TEST_BGN(ctr_drbg_nist_validation_aes_256_use_dftrue2561282560_5)
1302  {
1303  unsigned char entropy[512];
1304  unsigned char add_init[512];
1305  unsigned char add1[512];
1306  unsigned char add2[512];
1307  ctr_drbg_context ctx;
1308  unsigned char buf[512];
1309  unsigned char output_str[512];
1310  int add_init_len, add1_len, add2_len;
1311 
1312  memset( output_str, 0, 512 );
1313 
1314  unhexify( entropy, "80d4741e4e646748bb65e1289f1f9b3c21bffec4d0a666b301f199d76b4a83464583057079b069946b03d6ac81ebf9e6fa8d4081120f18bf58286a0c4de7576f36f3c7c353126f481a065ac28bdf28e13cd0c1e7911db6343c47d613f1750dc6" );
1315  add_init_len = unhexify( add_init, "d7d80084e9d1fbb9315c3bce1510dbf22cf11fa54177d913a3b04b64cb30957395bd6f3d7e3d866d1be41b29db9ed81d" );
1316  add1_len = unhexify( add1, "" );
1317  add2_len = unhexify( add2, "" );
1318 
1319  test_offset = 0;
1320  fct_chk( ctr_drbg_init_entropy_len( &ctx, entropy_func, entropy, add_init, add_init_len, 32 ) == 0 );
1322 
1323  fct_chk( ctr_drbg_random_with_add( &ctx, buf, 16, add1, add1_len ) == 0 );
1324  fct_chk( ctr_drbg_random_with_add( &ctx, buf, 16, add2, add2_len ) == 0 );
1325  hexify( output_str, buf, 16 );
1326  fct_chk( strcmp( (char *) output_str, "9165a92ed92248b2d237d9f46d39bde8" ) == 0 );
1327  }
1328  FCT_TEST_END();
1329 
1330 
1331  FCT_TEST_BGN(ctr_drbg_nist_validation_aes_256_use_dftrue2561282560_6)
1332  {
1333  unsigned char entropy[512];
1334  unsigned char add_init[512];
1335  unsigned char add1[512];
1336  unsigned char add2[512];
1337  ctr_drbg_context ctx;
1338  unsigned char buf[512];
1339  unsigned char output_str[512];
1340  int add_init_len, add1_len, add2_len;
1341 
1342  memset( output_str, 0, 512 );
1343 
1344  unhexify( entropy, "52df6336f93781115c2a77bd8f99cb717871fe14707947a21f6093dd9205bc378acf61329f8831369b4b1af0a9edfb25d74f5863f26859ad9c920767b113c47ed2690053bf9a2f7c7a67a8d680e08865720b9e9f7b6ae697e3c93e66f24b6ddc" );
1345  add_init_len = unhexify( add_init, "df5a68d3bede467fd69716f5f8fbac297594b8573921afb864ba76aaa6dd89e83b89e359a5a0dd1aac9b4acb9573d218" );
1346  add1_len = unhexify( add1, "" );
1347  add2_len = unhexify( add2, "" );
1348 
1349  test_offset = 0;
1350  fct_chk( ctr_drbg_init_entropy_len( &ctx, entropy_func, entropy, add_init, add_init_len, 32 ) == 0 );
1352 
1353  fct_chk( ctr_drbg_random_with_add( &ctx, buf, 16, add1, add1_len ) == 0 );
1354  fct_chk( ctr_drbg_random_with_add( &ctx, buf, 16, add2, add2_len ) == 0 );
1355  hexify( output_str, buf, 16 );
1356  fct_chk( strcmp( (char *) output_str, "c542cf248a163bbceee7b9f1453bd90b" ) == 0 );
1357  }
1358  FCT_TEST_END();
1359 
1360 
1361  FCT_TEST_BGN(ctr_drbg_nist_validation_aes_256_use_dftrue2561282560_7)
1362  {
1363  unsigned char entropy[512];
1364  unsigned char add_init[512];
1365  unsigned char add1[512];
1366  unsigned char add2[512];
1367  ctr_drbg_context ctx;
1368  unsigned char buf[512];
1369  unsigned char output_str[512];
1370  int add_init_len, add1_len, add2_len;
1371 
1372  memset( output_str, 0, 512 );
1373 
1374  unhexify( entropy, "aa560af2132cbd0624a69c7a7e733cd59a4f2d4e61d2b830087bd88f30fa792c7e4d3168fa86a10f7619d5b9dcf4f7bb08b350ba6a6bfc0fdfb7ee7aca07260c9a11abe49963c36efaefa94d2978ed09472bf93cc873d0f24c000762bb1402cd" );
1375  add_init_len = unhexify( add_init, "2945527372ff71edfa5776f55f7e4a247544aa6de974e81b2eba5552843ab6dfa248695f4f3225a43d4bf3672c3a6b2e" );
1376  add1_len = unhexify( add1, "" );
1377  add2_len = unhexify( add2, "" );
1378 
1379  test_offset = 0;
1380  fct_chk( ctr_drbg_init_entropy_len( &ctx, entropy_func, entropy, add_init, add_init_len, 32 ) == 0 );
1382 
1383  fct_chk( ctr_drbg_random_with_add( &ctx, buf, 16, add1, add1_len ) == 0 );
1384  fct_chk( ctr_drbg_random_with_add( &ctx, buf, 16, add2, add2_len ) == 0 );
1385  hexify( output_str, buf, 16 );
1386  fct_chk( strcmp( (char *) output_str, "33af0134eeca279dce5e69c2cda3f3f4" ) == 0 );
1387  }
1388  FCT_TEST_END();
1389 
1390 
1391  FCT_TEST_BGN(ctr_drbg_nist_validation_aes_256_use_dftrue2561282560_8)
1392  {
1393  unsigned char entropy[512];
1394  unsigned char add_init[512];
1395  unsigned char add1[512];
1396  unsigned char add2[512];
1397  ctr_drbg_context ctx;
1398  unsigned char buf[512];
1399  unsigned char output_str[512];
1400  int add_init_len, add1_len, add2_len;
1401 
1402  memset( output_str, 0, 512 );
1403 
1404  unhexify( entropy, "2d42b00248d95d9378a2aece40d636bc1ab22edaaa64daa34335195a9efa4c1b58f13ac184ca2be52e15c3a977abde2aa505243fc106c4ea6f0671fe0f209b106ea8965645af73d8ebb8a80251db2967149c701cfe1d157cc189b03bf1bff1ac" );
1405  add_init_len = unhexify( add_init, "b30cb767125674f6099a5cf7cb2e4f5b6c1cd1e32ffc1e393b1c5698b52b37f971f12521a7c1ffaaf3233d5391bc4c86" );
1406  add1_len = unhexify( add1, "" );
1407  add2_len = unhexify( add2, "" );
1408 
1409  test_offset = 0;
1410  fct_chk( ctr_drbg_init_entropy_len( &ctx, entropy_func, entropy, add_init, add_init_len, 32 ) == 0 );
1412 
1413  fct_chk( ctr_drbg_random_with_add( &ctx, buf, 16, add1, add1_len ) == 0 );
1414  fct_chk( ctr_drbg_random_with_add( &ctx, buf, 16, add2, add2_len ) == 0 );
1415  hexify( output_str, buf, 16 );
1416  fct_chk( strcmp( (char *) output_str, "1e10eff9ceebc7e5f66e5213cb07fca4" ) == 0 );
1417  }
1418  FCT_TEST_END();
1419 
1420 
1421  FCT_TEST_BGN(ctr_drbg_nist_validation_aes_256_use_dftrue2561282560_9)
1422  {
1423  unsigned char entropy[512];
1424  unsigned char add_init[512];
1425  unsigned char add1[512];
1426  unsigned char add2[512];
1427  ctr_drbg_context ctx;
1428  unsigned char buf[512];
1429  unsigned char output_str[512];
1430  int add_init_len, add1_len, add2_len;
1431 
1432  memset( output_str, 0, 512 );
1433 
1434  unhexify( entropy, "a1ff68a85e437475b1b518821dbaac1730071a4ddd3255361778194fb0cfe3293e38df81527d8b8da15d03acb26467b6b53d7952441b79f95b633f4a979d998fd0417b9193023288b657d30c0cb2dada264addf9d13f1f8ed10b74e2dd2b56b3" );
1435  add_init_len = unhexify( add_init, "c962a2da4524f08adcdd5ceddc04e669ad6154aee06164645e80c832506b98f9919451c7ec1d3a6a9704f83def8f6e2d" );
1436  add1_len = unhexify( add1, "" );
1437  add2_len = unhexify( add2, "" );
1438 
1439  test_offset = 0;
1440  fct_chk( ctr_drbg_init_entropy_len( &ctx, entropy_func, entropy, add_init, add_init_len, 32 ) == 0 );
1442 
1443  fct_chk( ctr_drbg_random_with_add( &ctx, buf, 16, add1, add1_len ) == 0 );
1444  fct_chk( ctr_drbg_random_with_add( &ctx, buf, 16, add2, add2_len ) == 0 );
1445  hexify( output_str, buf, 16 );
1446  fct_chk( strcmp( (char *) output_str, "58990069b72b7557c234d5caf4334853" ) == 0 );
1447  }
1448  FCT_TEST_END();
1449 
1450 
1451  FCT_TEST_BGN(ctr_drbg_nist_validation_aes_256_use_dftrue2561282560_10)
1452  {
1453  unsigned char entropy[512];
1454  unsigned char add_init[512];
1455  unsigned char add1[512];
1456  unsigned char add2[512];
1457  ctr_drbg_context ctx;
1458  unsigned char buf[512];
1459  unsigned char output_str[512];
1460  int add_init_len, add1_len, add2_len;
1461 
1462  memset( output_str, 0, 512 );
1463 
1464  unhexify( entropy, "207267911c12125cb3012230e4fafd257777ccbfb91653f77e4c1287574f9b79d81af7fb304790349dd457983cc99b48d5f4677ccd979fcc6e545cbf5b5c8b98102c9a89ae354349dbdee31a362d47c7cdae128034c0f4c3e71e298fe1af33c6" );
1465  add_init_len = unhexify( add_init, "a3cc1fe561d03a055e8eedaa0e713be490c4bd4c6839a5b98c2ac0139bf215bdc46783d2a3e6b9d15d9b7a8bfe15104b" );
1466  add1_len = unhexify( add1, "" );
1467  add2_len = unhexify( add2, "" );
1468 
1469  test_offset = 0;
1470  fct_chk( ctr_drbg_init_entropy_len( &ctx, entropy_func, entropy, add_init, add_init_len, 32 ) == 0 );
1472 
1473  fct_chk( ctr_drbg_random_with_add( &ctx, buf, 16, add1, add1_len ) == 0 );
1474  fct_chk( ctr_drbg_random_with_add( &ctx, buf, 16, add2, add2_len ) == 0 );
1475  hexify( output_str, buf, 16 );
1476  fct_chk( strcmp( (char *) output_str, "ffd1d259acd79111a6fb508181272831" ) == 0 );
1477  }
1478  FCT_TEST_END();
1479 
1480 
1481  FCT_TEST_BGN(ctr_drbg_nist_validation_aes_256_use_dftrue2561282560_11)
1482  {
1483  unsigned char entropy[512];
1484  unsigned char add_init[512];
1485  unsigned char add1[512];
1486  unsigned char add2[512];
1487  ctr_drbg_context ctx;
1488  unsigned char buf[512];
1489  unsigned char output_str[512];
1490  int add_init_len, add1_len, add2_len;
1491 
1492  memset( output_str, 0, 512 );
1493 
1494  unhexify( entropy, "3b9aec9f8bf8495004c5e4e731e5c347988e787caf003f001e68584e3510a6abdedffa15895702c2d57c304300f4f0af80a89bcc36b3cea2f08a0740236b80cfd2ea6e5cfe4144bc4ae09270fb6bc58c313dbaaedc16d643fc0565171f963222" );
1495  add_init_len = unhexify( add_init, "ecf186071b81e0ed384d4ebfb5bf261b4054e2e6072b51d21dfb6817adc51ff1c8956ff3612767538cdc8d73fade78b3" );
1496  add1_len = unhexify( add1, "" );
1497  add2_len = unhexify( add2, "" );
1498 
1499  test_offset = 0;
1500  fct_chk( ctr_drbg_init_entropy_len( &ctx, entropy_func, entropy, add_init, add_init_len, 32 ) == 0 );
1502 
1503  fct_chk( ctr_drbg_random_with_add( &ctx, buf, 16, add1, add1_len ) == 0 );
1504  fct_chk( ctr_drbg_random_with_add( &ctx, buf, 16, add2, add2_len ) == 0 );
1505  hexify( output_str, buf, 16 );
1506  fct_chk( strcmp( (char *) output_str, "a2d917f5ec39a090b55d51713006e49d" ) == 0 );
1507  }
1508  FCT_TEST_END();
1509 
1510 
1511  FCT_TEST_BGN(ctr_drbg_nist_validation_aes_256_use_dftrue2561282560_12)
1512  {
1513  unsigned char entropy[512];
1514  unsigned char add_init[512];
1515  unsigned char add1[512];
1516  unsigned char add2[512];
1517  ctr_drbg_context ctx;
1518  unsigned char buf[512];
1519  unsigned char output_str[512];
1520  int add_init_len, add1_len, add2_len;
1521 
1522  memset( output_str, 0, 512 );
1523 
1524  unhexify( entropy, "6b1e9d45c2ec598de7527b6414a339f26192fc4e3f5eff4b3a3e2a80ee0f2e9743031804d1be12b3c7ff6fbc222db1d97226890addeef0e1579a860e2279292c2f769416b7068f582f6ffc192ae4c4f1eeb41d5f77f0a612b059c47aef8e3d8e" );
1525  add_init_len = unhexify( add_init, "3fcedba86089709aa638d00713150df781d4a93e85f155338e90ff537bcbf017f37a2d62259f5d8cc40ddfb041592539" );
1526  add1_len = unhexify( add1, "" );
1527  add2_len = unhexify( add2, "" );
1528 
1529  test_offset = 0;
1530  fct_chk( ctr_drbg_init_entropy_len( &ctx, entropy_func, entropy, add_init, add_init_len, 32 ) == 0 );
1532 
1533  fct_chk( ctr_drbg_random_with_add( &ctx, buf, 16, add1, add1_len ) == 0 );
1534  fct_chk( ctr_drbg_random_with_add( &ctx, buf, 16, add2, add2_len ) == 0 );
1535  hexify( output_str, buf, 16 );
1536  fct_chk( strcmp( (char *) output_str, "aa414799c51957de97c0070fb00eb919" ) == 0 );
1537  }
1538  FCT_TEST_END();
1539 
1540 
1541  FCT_TEST_BGN(ctr_drbg_nist_validation_aes_256_use_dftrue2561282560_13)
1542  {
1543  unsigned char entropy[512];
1544  unsigned char add_init[512];
1545  unsigned char add1[512];
1546  unsigned char add2[512];
1547  ctr_drbg_context ctx;
1548  unsigned char buf[512];
1549  unsigned char output_str[512];
1550  int add_init_len, add1_len, add2_len;
1551 
1552  memset( output_str, 0, 512 );
1553 
1554  unhexify( entropy, "6d170cf472ea07da6146a7087ed15d3f5b6ad72b8c99e46bae3b89e49a6e63467199ee16096516c2362dbd181bf5343a29fd0932d72eeb019fc3bfea3a3b01ffc2b985e341cfb6479d9dc71e2197b5cffc402587182e5fe93b5a8cf75eac2e42" );
1555  add_init_len = unhexify( add_init, "f4c45fb8f58b7ebf73a0cd81c6a26686977558d4b8bf1cedfc6bd3754de6aaed5008fd72208437c54d8feb9a16ce3224" );
1556  add1_len = unhexify( add1, "" );
1557  add2_len = unhexify( add2, "" );
1558 
1559  test_offset = 0;
1560  fct_chk( ctr_drbg_init_entropy_len( &ctx, entropy_func, entropy, add_init, add_init_len, 32 ) == 0 );
1562 
1563  fct_chk( ctr_drbg_random_with_add( &ctx, buf, 16, add1, add1_len ) == 0 );
1564  fct_chk( ctr_drbg_random_with_add( &ctx, buf, 16, add2, add2_len ) == 0 );
1565  hexify( output_str, buf, 16 );
1566  fct_chk( strcmp( (char *) output_str, "f557f627688fe63c119cf0f25274aa74" ) == 0 );
1567  }
1568  FCT_TEST_END();
1569 
1570 
1571  FCT_TEST_BGN(ctr_drbg_nist_validation_aes_256_use_dftrue2561282560_14)
1572  {
1573  unsigned char entropy[512];
1574  unsigned char add_init[512];
1575  unsigned char add1[512];
1576  unsigned char add2[512];
1577  ctr_drbg_context ctx;
1578  unsigned char buf[512];
1579  unsigned char output_str[512];
1580  int add_init_len, add1_len, add2_len;
1581 
1582  memset( output_str, 0, 512 );
1583 
1584  unhexify( entropy, "c08a6f9797ea668cd14ba6338cb5d23c0921e637e66a96259f78e33e45aafd035edb44394cb459453b9b48beac1e32d3b6f281473cda42fb6fd6c6b9858e7a4143d81bfc2faf4ef4b632c473be50a87b982815be589a91ca750dc875a0808b89" );
1585  add_init_len = unhexify( add_init, "7120742a7807b66c5a9b50995d5494a5b9451bb795393c0d8a30ae665879269408f8297d49ab87410a7f16a65a54b1cb" );
1586  add1_len = unhexify( add1, "" );
1587  add2_len = unhexify( add2, "" );
1588 
1589  test_offset = 0;
1590  fct_chk( ctr_drbg_init_entropy_len( &ctx, entropy_func, entropy, add_init, add_init_len, 32 ) == 0 );
1592 
1593  fct_chk( ctr_drbg_random_with_add( &ctx, buf, 16, add1, add1_len ) == 0 );
1594  fct_chk( ctr_drbg_random_with_add( &ctx, buf, 16, add2, add2_len ) == 0 );
1595  hexify( output_str, buf, 16 );
1596  fct_chk( strcmp( (char *) output_str, "521973eac38e81de4e41ccc35db6193d" ) == 0 );
1597  }
1598  FCT_TEST_END();
1599 
1600 
1601  FCT_TEST_BGN(ctr_drbg_nist_validation_aes_256_use_dftrue256128256256_0)
1602  {
1603  unsigned char entropy[512];
1604  unsigned char add_init[512];
1605  unsigned char add1[512];
1606  unsigned char add2[512];
1607  ctr_drbg_context ctx;
1608  unsigned char buf[512];
1609  unsigned char output_str[512];
1610  int add_init_len, add1_len, add2_len;
1611 
1612  memset( output_str, 0, 512 );
1613 
1614  unhexify( entropy, "6168fc1af0b5956b85099b743f1378493b85ec93133ba94f96ab2ce4c88fdd6a0b23afdff162d7d34397f87704a84220bdf60fc1172f9f54bb561786680ebaa9bf6c592a0d440fae9a5e0373d8a6e1cf25613824869e53e8a4df56f406079c0f" );
1615  add_init_len = unhexify( add_init, "add2bbbab76589c3216c55332b36ffa46ecae72072d3845a32d34b2472c4632b9d12240c23268e8316370bd1064f686d" );
1616  add1_len = unhexify( add1, "7e084abbe3217cc923d2f8b07398ba847423ab068ae222d37bce9bd24a76b8de" );
1617  add2_len = unhexify( add2, "946bc99fab8dc5ec71881d008c8968e4c8077736176d7978c7064e99042829c3" );
1618 
1619  test_offset = 0;
1620  fct_chk( ctr_drbg_init_entropy_len( &ctx, entropy_func, entropy, add_init, add_init_len, 32 ) == 0 );
1622 
1623  fct_chk( ctr_drbg_random_with_add( &ctx, buf, 16, add1, add1_len ) == 0 );
1624  fct_chk( ctr_drbg_random_with_add( &ctx, buf, 16, add2, add2_len ) == 0 );
1625  hexify( output_str, buf, 16 );
1626  fct_chk( strcmp( (char *) output_str, "224ab4b8b6ee7db19ec9f9a0d9e29700" ) == 0 );
1627  }
1628  FCT_TEST_END();
1629 
1630 
1631  FCT_TEST_BGN(ctr_drbg_nist_validation_aes_256_use_dftrue256128256256_1)
1632  {
1633  unsigned char entropy[512];
1634  unsigned char add_init[512];
1635  unsigned char add1[512];
1636  unsigned char add2[512];
1637  ctr_drbg_context ctx;
1638  unsigned char buf[512];
1639  unsigned char output_str[512];
1640  int add_init_len, add1_len, add2_len;
1641 
1642  memset( output_str, 0, 512 );
1643 
1644  unhexify( entropy, "4db8e8a27fe7a0378e37d4cc01b6a465d34be91f48c52fdc1023ef2ea1241082f522805bc8777fda6c10e3d441b58f648edcd7d4df3df8c8a398d7b005c4fd6f41c9b033bd38fc5f577069251529b58273f6a9175feb3978798fdeb78a043232" );
1645  add_init_len = unhexify( add_init, "8964ebde61f0c4e23f8e91244ae9682ed0b17e424edd4c025b461a2d209a538583f29465df3f89cf04f703b771ff5c90" );
1646  add1_len = unhexify( add1, "5eb3fb44784f181852d80fcf7c2e3b8414ae797f7b9b013b59cf86b9d3a19006" );
1647  add2_len = unhexify( add2, "3eec358f7f9e789e4ad5a78dd73987addbf3ae5b06d826cec2d54425289dc9af" );
1648 
1649  test_offset = 0;
1650  fct_chk( ctr_drbg_init_entropy_len( &ctx, entropy_func, entropy, add_init, add_init_len, 32 ) == 0 );
1652 
1653  fct_chk( ctr_drbg_random_with_add( &ctx, buf, 16, add1, add1_len ) == 0 );
1654  fct_chk( ctr_drbg_random_with_add( &ctx, buf, 16, add2, add2_len ) == 0 );
1655  hexify( output_str, buf, 16 );
1656  fct_chk( strcmp( (char *) output_str, "9a66c015d2550e3f78c44b901075fabb" ) == 0 );
1657  }
1658  FCT_TEST_END();
1659 
1660 
1661  FCT_TEST_BGN(ctr_drbg_nist_validation_aes_256_use_dftrue256128256256_2)
1662  {
1663  unsigned char entropy[512];
1664  unsigned char add_init[512];
1665  unsigned char add1[512];
1666  unsigned char add2[512];
1667  ctr_drbg_context ctx;
1668  unsigned char buf[512];
1669  unsigned char output_str[512];
1670  int add_init_len, add1_len, add2_len;
1671 
1672  memset( output_str, 0, 512 );
1673 
1674  unhexify( entropy, "7338521e8e127e70da259b37f5f5cdf83079bdb4024234b8ceecfba8d8c3f1c8510ff91f3bd08f2c54f11b534048a320a15ba0fccec8da34d4ef7f49ade4847814c859831907992d0adab27046324d4d9a853eb986b8de25b34ea74eb3d11048" );
1675  add_init_len = unhexify( add_init, "98784aa794df5400890e6803f06d886aeb0833b1fea28a5f7952397aa21092ceafdb9194079f3609bc68233147c778e7" );
1676  add1_len = unhexify( add1, "b14c5314aac11cb43f45730e474b84fbf5d1480d94d0699b80e3570f6636aa72" );
1677  add2_len = unhexify( add2, "d6208912348236feee1d258092283dd9db75899769dd109cc2f0f26d88dcc6bf" );
1678 
1679  test_offset = 0;
1680  fct_chk( ctr_drbg_init_entropy_len( &ctx, entropy_func, entropy, add_init, add_init_len, 32 ) == 0 );
1682 
1683  fct_chk( ctr_drbg_random_with_add( &ctx, buf, 16, add1, add1_len ) == 0 );
1684  fct_chk( ctr_drbg_random_with_add( &ctx, buf, 16, add2, add2_len ) == 0 );
1685  hexify( output_str, buf, 16 );
1686  fct_chk( strcmp( (char *) output_str, "5ec75fdd1ed3a742328e11344784b681" ) == 0 );
1687  }
1688  FCT_TEST_END();
1689 
1690 
1691  FCT_TEST_BGN(ctr_drbg_nist_validation_aes_256_use_dftrue256128256256_3)
1692  {
1693  unsigned char entropy[512];
1694  unsigned char add_init[512];
1695  unsigned char add1[512];
1696  unsigned char add2[512];
1697  ctr_drbg_context ctx;
1698  unsigned char buf[512];
1699  unsigned char output_str[512];
1700  int add_init_len, add1_len, add2_len;
1701 
1702  memset( output_str, 0, 512 );
1703 
1704  unhexify( entropy, "c4da56f4239fde0bc49b1d852cb36c80205f9e99e5995a80be04bbbba15f25b8d054c397a34cff1326a71f0acc4f7942795cabc3fa46339dc54b4bf7f11c095af8503004d97c485acec8815d1404674592c896ecfabefcbf222f4fe5a3ced0af" );
1705  add_init_len = unhexify( add_init, "fe9b7df306c4ccd02afd6142c6650418325617945147de436a55e78aa45866116d6678e013a0e2c5a13e0d01fbd84039" );
1706  add1_len = unhexify( add1, "086d09a6ee20c69bf5c054ebc6250f06097c8da1a932fb3d4b1fb5f40af6268a" );
1707  add2_len = unhexify( add2, "44e64b14c49ebb75c536329bb41ab198848849ca121c960db99f7b26330b1f6d" );
1708 
1709  test_offset = 0;
1710  fct_chk( ctr_drbg_init_entropy_len( &ctx, entropy_func, entropy, add_init, add_init_len, 32 ) == 0 );
1712 
1713  fct_chk( ctr_drbg_random_with_add( &ctx, buf, 16, add1, add1_len ) == 0 );
1714  fct_chk( ctr_drbg_random_with_add( &ctx, buf, 16, add2, add2_len ) == 0 );
1715  hexify( output_str, buf, 16 );
1716  fct_chk( strcmp( (char *) output_str, "7aa3a7e159d194399fc8ef9eb531a704" ) == 0 );
1717  }
1718  FCT_TEST_END();
1719 
1720 
1721  FCT_TEST_BGN(ctr_drbg_nist_validation_aes_256_use_dftrue256128256256_4)
1722  {
1723  unsigned char entropy[512];
1724  unsigned char add_init[512];
1725  unsigned char add1[512];
1726  unsigned char add2[512];
1727  ctr_drbg_context ctx;
1728  unsigned char buf[512];
1729  unsigned char output_str[512];
1730  int add_init_len, add1_len, add2_len;
1731 
1732  memset( output_str, 0, 512 );
1733 
1734  unhexify( entropy, "a6b5dd5f1bad95331caae5852be50a26267af655c98feb8b66c45a8ae2ddfca270ab0d8023e43e6e22a7b5904d63482f045e85556b9c105cde0f3eb7b1fff1026086c80b195196803b5f664362b659578894d6551fb7c4566eec02202fdc298f" );
1735  add_init_len = unhexify( add_init, "c0d47ee2328185df2c299d270e11fee26df753a5b4f899fdc0dff79eb50748232f9f79cf3f5e9bd4a26a48e743843b02" );
1736  add1_len = unhexify( add1, "3b575d028046e7f6005dfcdfcdcf03ff77a9cacd2516bcdff7f3601a9a951317" );
1737  add2_len = unhexify( add2, "f13b58daed46f5bf3c62b518ab5c508dd2bc3e33d132939049421ff29c31c4f0" );
1738 
1739  test_offset = 0;
1740  fct_chk( ctr_drbg_init_entropy_len( &ctx, entropy_func, entropy, add_init, add_init_len, 32 ) == 0 );
1742 
1743  fct_chk( ctr_drbg_random_with_add( &ctx, buf, 16, add1, add1_len ) == 0 );
1744  fct_chk( ctr_drbg_random_with_add( &ctx, buf, 16, add2, add2_len ) == 0 );
1745  hexify( output_str, buf, 16 );
1746  fct_chk( strcmp( (char *) output_str, "8469dfa89453d1481abedd6cc62e4e44" ) == 0 );
1747  }
1748  FCT_TEST_END();
1749 
1750 
1751  FCT_TEST_BGN(ctr_drbg_nist_validation_aes_256_use_dftrue256128256256_5)
1752  {
1753  unsigned char entropy[512];
1754  unsigned char add_init[512];
1755  unsigned char add1[512];
1756  unsigned char add2[512];
1757  ctr_drbg_context ctx;
1758  unsigned char buf[512];
1759  unsigned char output_str[512];
1760  int add_init_len, add1_len, add2_len;
1761 
1762  memset( output_str, 0, 512 );
1763 
1764  unhexify( entropy, "7e3dca20a7a977b6616a684e309015cf6a37edd0d85819fe91d074c915b0c9540a8aa486f58685b064851d6164150b1c1b0e2e545c6358d28b2f5263b2fd12c503d271ab6de76d4fa4c604cae469335840328008d8ce5545586b9ea6b21da4f9" );
1765  add_init_len = unhexify( add_init, "a0db812a939fbf3942b00be018cff4578b9fb62629c766a50f3518fe634100b1cbc4244ae843fe32125c53b653705457" );
1766  add1_len = unhexify( add1, "554b297bc32866a52884fabfc6d837690de30467b8f9158b258869e6f4ed0831" );
1767  add2_len = unhexify( add2, "4f688cba5908e0699b33b508847f7dac32f233e6f02cf093efdacae74259f3b6" );
1768 
1769  test_offset = 0;
1770  fct_chk( ctr_drbg_init_entropy_len( &ctx, entropy_func, entropy, add_init, add_init_len, 32 ) == 0 );
1772 
1773  fct_chk( ctr_drbg_random_with_add( &ctx, buf, 16, add1, add1_len ) == 0 );
1774  fct_chk( ctr_drbg_random_with_add( &ctx, buf, 16, add2, add2_len ) == 0 );
1775  hexify( output_str, buf, 16 );
1776  fct_chk( strcmp( (char *) output_str, "9696dd6ed5875cdef4a918a6686455a8" ) == 0 );
1777  }
1778  FCT_TEST_END();
1779 
1780 
1781  FCT_TEST_BGN(ctr_drbg_nist_validation_aes_256_use_dftrue256128256256_6)
1782  {
1783  unsigned char entropy[512];
1784  unsigned char add_init[512];
1785  unsigned char add1[512];
1786  unsigned char add2[512];
1787  ctr_drbg_context ctx;
1788  unsigned char buf[512];
1789  unsigned char output_str[512];
1790  int add_init_len, add1_len, add2_len;
1791 
1792  memset( output_str, 0, 512 );
1793 
1794  unhexify( entropy, "efcf7536f32932526fe82b3a2333508404727878723fc09cbd902581d82463cf6acf1ddf4217ea6404469193e8db0e7e8c864ae655b49c6a095f80f1ab16985453f0fb729c119d8a3b820034626a93b1f70eb99b6cd8c990dda34a1c6a4b6eea" );
1795  add_init_len = unhexify( add_init, "ff6cd20443a32c9e938f2a617bbb969ba54040b12723b0d452a669b584ba16ffaacbe38af62b5a62e0c67d165d022344" );
1796  add1_len = unhexify( add1, "8d412208091b987ee0781ff679c50dbab9ef389156f570f27aaf3e699bdade48" );
1797  add2_len = unhexify( add2, "501381ce5e7718c92ee73e9c247965dd5f0bbde013c4b5e625e9af8907e40566" );
1798 
1799  test_offset = 0;
1800  fct_chk( ctr_drbg_init_entropy_len( &ctx, entropy_func, entropy, add_init, add_init_len, 32 ) == 0 );
1802 
1803  fct_chk( ctr_drbg_random_with_add( &ctx, buf, 16, add1, add1_len ) == 0 );
1804  fct_chk( ctr_drbg_random_with_add( &ctx, buf, 16, add2, add2_len ) == 0 );
1805  hexify( output_str, buf, 16 );
1806  fct_chk( strcmp( (char *) output_str, "4f323934adb8a2096f17d5c4d7444078" ) == 0 );
1807  }
1808  FCT_TEST_END();
1809 
1810 
1811  FCT_TEST_BGN(ctr_drbg_nist_validation_aes_256_use_dftrue256128256256_7)
1812  {
1813  unsigned char entropy[512];
1814  unsigned char add_init[512];
1815  unsigned char add1[512];
1816  unsigned char add2[512];
1817  ctr_drbg_context ctx;
1818  unsigned char buf[512];
1819  unsigned char output_str[512];
1820  int add_init_len, add1_len, add2_len;
1821 
1822  memset( output_str, 0, 512 );
1823 
1824  unhexify( entropy, "bfb0931b05a3fe232614e1b1c3060b3b07fb75d23ac10190a47a7245a6ecad5f3834e6727b75acc37e9d512d01a4a9cef6cb17eb97e4d1d7c1df572296972f0437a89c19894f721cbe085cf3b89767291a82b999bf3925357d860f181a3681ce" );
1825  add_init_len = unhexify( add_init, "bd14779153ed9696d3e5143c50b2050b6acd3ea2f8b670ef0e5f4bedf01705727bf9e64ae859214abe6ef497163f0236" );
1826  add1_len = unhexify( add1, "0b5dc1cdfc40cfdc225798da773411dc9a8779316ceb18d1e8f13809466c6366" );
1827  add2_len = unhexify( add2, "843eb7297570e536b5760c3158adb27c0c426c77d798c08314f53b59aa72d08b" );
1828 
1829  test_offset = 0;
1830  fct_chk( ctr_drbg_init_entropy_len( &ctx, entropy_func, entropy, add_init, add_init_len, 32 ) == 0 );
1832 
1833  fct_chk( ctr_drbg_random_with_add( &ctx, buf, 16, add1, add1_len ) == 0 );
1834  fct_chk( ctr_drbg_random_with_add( &ctx, buf, 16, add2, add2_len ) == 0 );
1835  hexify( output_str, buf, 16 );
1836  fct_chk( strcmp( (char *) output_str, "1e703f3122455a40536c39f9ea3ceaa6" ) == 0 );
1837  }
1838  FCT_TEST_END();
1839 
1840 
1841  FCT_TEST_BGN(ctr_drbg_nist_validation_aes_256_use_dftrue256128256256_8)
1842  {
1843  unsigned char entropy[512];
1844  unsigned char add_init[512];
1845  unsigned char add1[512];
1846  unsigned char add2[512];
1847  ctr_drbg_context ctx;
1848  unsigned char buf[512];
1849  unsigned char output_str[512];
1850  int add_init_len, add1_len, add2_len;
1851 
1852  memset( output_str, 0, 512 );
1853 
1854  unhexify( entropy, "a5b15cb1e039d7bbe2db80a32d4f402c7d3c59a45b05255401d1122770dbdb9894841964d5cadc9ae9af007d63e870d0510078885ca402bd222f16d2d27892e23292b65cf370b15d5e5a739ddd13e3e27f7c2e2b945f8e21897c3bbf05d8b043" );
1855  add_init_len = unhexify( add_init, "64b155fd4b8634663a7e8a602e2b9fe2477be74692643ccfd0b316a025ea6f1fc0dfd0833248cb011082be36cba3c5d1" );
1856  add1_len = unhexify( add1, "aea2fe995be77dfdca6ebaa1c05ba4c84d0e6b9a87905c398a3dfe08aeb26d38" );
1857  add2_len = unhexify( add2, "f4e9e7eb0eea4e2d419de6ad2909d36ec06c79097884bf98981e86dedae366ba" );
1858 
1859  test_offset = 0;
1860  fct_chk( ctr_drbg_init_entropy_len( &ctx, entropy_func, entropy, add_init, add_init_len, 32 ) == 0 );
1862 
1863  fct_chk( ctr_drbg_random_with_add( &ctx, buf, 16, add1, add1_len ) == 0 );
1864  fct_chk( ctr_drbg_random_with_add( &ctx, buf, 16, add2, add2_len ) == 0 );
1865  hexify( output_str, buf, 16 );
1866  fct_chk( strcmp( (char *) output_str, "4a28955dc97936b1c0aed0751a1afed5" ) == 0 );
1867  }
1868  FCT_TEST_END();
1869 
1870 
1871  FCT_TEST_BGN(ctr_drbg_nist_validation_aes_256_use_dftrue256128256256_9)
1872  {
1873  unsigned char entropy[512];
1874  unsigned char add_init[512];
1875  unsigned char add1[512];
1876  unsigned char add2[512];
1877  ctr_drbg_context ctx;
1878  unsigned char buf[512];
1879  unsigned char output_str[512];
1880  int add_init_len, add1_len, add2_len;
1881 
1882  memset( output_str, 0, 512 );
1883 
1884  unhexify( entropy, "d4e0347c2158b882eb1e165f7f2aa1324d6606fe259ca730b2a3367435cb93b89108e49bd97355215063f63e78e8926b264c8a97571fd4d55882364915b7bd544254c25c2b67cdd979737c7811bcdeef5b052d8fe05a89b3291ef669d5579a61" );
1885  add_init_len = unhexify( add_init, "e6c08e8b8d8e418477087911610096f7e0422083a376a77198e9c60fb2dc8c14aff33d7835878b65322f1561738b1ebb" );
1886  add1_len = unhexify( add1, "6607541177bc0c5f278c11cb2dcb187fc9f2c9a9e8eefa657ba92dee12d84b07" );
1887  add2_len = unhexify( add2, "7a439c8593b927867cfa853949e592baea0eeb394b0e2fe9ab0876243b7e11e2" );
1888 
1889  test_offset = 0;
1890  fct_chk( ctr_drbg_init_entropy_len( &ctx, entropy_func, entropy, add_init, add_init_len, 32 ) == 0 );
1892 
1893  fct_chk( ctr_drbg_random_with_add( &ctx, buf, 16, add1, add1_len ) == 0 );
1894  fct_chk( ctr_drbg_random_with_add( &ctx, buf, 16, add2, add2_len ) == 0 );
1895  hexify( output_str, buf, 16 );
1896  fct_chk( strcmp( (char *) output_str, "420888122f2e0334757c4af87bbc28a4" ) == 0 );
1897  }
1898  FCT_TEST_END();
1899 
1900 
1901  FCT_TEST_BGN(ctr_drbg_nist_validation_aes_256_use_dftrue256128256256_10)
1902  {
1903  unsigned char entropy[512];
1904  unsigned char add_init[512];
1905  unsigned char add1[512];
1906  unsigned char add2[512];
1907  ctr_drbg_context ctx;
1908  unsigned char buf[512];
1909  unsigned char output_str[512];
1910  int add_init_len, add1_len, add2_len;
1911 
1912  memset( output_str, 0, 512 );
1913 
1914  unhexify( entropy, "a21cf567362fed0edddfd0b1c2d85ff6d2db5484fca8bf90a82da2ab76efcac9286e417628496f37effda150ef4912125aac68aac72e6f900a70192d4ef0b4cc4e9419c93ffb245965ae30c5f8abe20f732d76080bde5a1c6b3f075eb35622d1" );
1915  add_init_len = unhexify( add_init, "4413ff775c9b7d9a3003e0b727e34554e0f615471d52aeb4a059777b372d60332a1a4bcaf906e598581bc5a369b2c933" );
1916  add1_len = unhexify( add1, "b924d145fc3ecd76f000f12638ef0a49a5d4cf887aa93fc9e5c536febc454f2d" );
1917  add2_len = unhexify( add2, "73dbb40b257e6598744f9107c8e7ff51a080407fc9e80d39d9a4db94f167c116" );
1918 
1919  test_offset = 0;
1920  fct_chk( ctr_drbg_init_entropy_len( &ctx, entropy_func, entropy, add_init, add_init_len, 32 ) == 0 );
1922 
1923  fct_chk( ctr_drbg_random_with_add( &ctx, buf, 16, add1, add1_len ) == 0 );
1924  fct_chk( ctr_drbg_random_with_add( &ctx, buf, 16, add2, add2_len ) == 0 );
1925  hexify( output_str, buf, 16 );
1926  fct_chk( strcmp( (char *) output_str, "84457ea753771ad7c97ce9c03ab08f43" ) == 0 );
1927  }
1928  FCT_TEST_END();
1929 
1930 
1931  FCT_TEST_BGN(ctr_drbg_nist_validation_aes_256_use_dftrue256128256256_11)
1932  {
1933  unsigned char entropy[512];
1934  unsigned char add_init[512];
1935  unsigned char add1[512];
1936  unsigned char add2[512];
1937  ctr_drbg_context ctx;
1938  unsigned char buf[512];
1939  unsigned char output_str[512];
1940  int add_init_len, add1_len, add2_len;
1941 
1942  memset( output_str, 0, 512 );
1943 
1944  unhexify( entropy, "c5a63c886af7ed7496473a6ae2f27f056c7e61c9aca8c5d095af11b2efe1a6b43344f92b37c7b6977ddbef1273e9511d9305fcbe7f32bc6a62f28d34841350362d2717dd00467224a35985b9fecc2739acd198743849dbfa97f458e2e7d6b1dc" );
1945  add_init_len = unhexify( add_init, "5e409d56afb6940f9ffa45e0f92ef4972acedd3557b8e0f5418e302f2720ae5289294176045ad3096ea68db634cf5597" );
1946  add1_len = unhexify( add1, "7fda133a23e929b17548a05013ff9c7085c5af9c979057b8f961ba7514509ff3" );
1947  add2_len = unhexify( add2, "bd061292b6bc3d3e71ed01af091f0169f70f23862efccd9e76345ff607dff3ec" );
1948 
1949  test_offset = 0;
1950  fct_chk( ctr_drbg_init_entropy_len( &ctx, entropy_func, entropy, add_init, add_init_len, 32 ) == 0 );
1952 
1953  fct_chk( ctr_drbg_random_with_add( &ctx, buf, 16, add1, add1_len ) == 0 );
1954  fct_chk( ctr_drbg_random_with_add( &ctx, buf, 16, add2, add2_len ) == 0 );
1955  hexify( output_str, buf, 16 );
1956  fct_chk( strcmp( (char *) output_str, "75b35dab3ad5e35c10ee39529a7f840f" ) == 0 );
1957  }
1958  FCT_TEST_END();
1959 
1960 
1961  FCT_TEST_BGN(ctr_drbg_nist_validation_aes_256_use_dftrue256128256256_12)
1962  {
1963  unsigned char entropy[512];
1964  unsigned char add_init[512];
1965  unsigned char add1[512];
1966  unsigned char add2[512];
1967  ctr_drbg_context ctx;
1968  unsigned char buf[512];
1969  unsigned char output_str[512];
1970  int add_init_len, add1_len, add2_len;
1971 
1972  memset( output_str, 0, 512 );
1973 
1974  unhexify( entropy, "0a6155ff422ff6ae9814f81bf353bd3454d0c9892f9f3d730dcd8c87626f813cbe1dff1922fe73e4a319be53f4ec05e965c27f239b1e51869069a7e7cdd916fc1fd6f640bfe4b761a8040f8db37fb5ee7508e7d226c7695fb2a8bd791fe49ef2" );
1975  add_init_len = unhexify( add_init, "ed2a52169791d7c7d332cf258ea4847c359335f9a6839ee767a8f76800ba28e94858cc9b7f526e62a93603fa2b1caa6b" );
1976  add1_len = unhexify( add1, "14073a1b4f07f3b594fa43d0c8781b8089dd2d9b8ad266e0321aaa6b71a0d058" );
1977  add2_len = unhexify( add2, "4247fc6886e8657b84369cf14469b42aa371d57d27093ee724f87bf20fa9e4e6" );
1978 
1979  test_offset = 0;
1980  fct_chk( ctr_drbg_init_entropy_len( &ctx, entropy_func, entropy, add_init, add_init_len, 32 ) == 0 );
1982 
1983  fct_chk( ctr_drbg_random_with_add( &ctx, buf, 16, add1, add1_len ) == 0 );
1984  fct_chk( ctr_drbg_random_with_add( &ctx, buf, 16, add2, add2_len ) == 0 );
1985  hexify( output_str, buf, 16 );
1986  fct_chk( strcmp( (char *) output_str, "f2aea2bc23e7c70f4ee2f7b60c59d24d" ) == 0 );
1987  }
1988  FCT_TEST_END();
1989 
1990 
1991  FCT_TEST_BGN(ctr_drbg_nist_validation_aes_256_use_dftrue256128256256_13)
1992  {
1993  unsigned char entropy[512];
1994  unsigned char add_init[512];
1995  unsigned char add1[512];
1996  unsigned char add2[512];
1997  ctr_drbg_context ctx;
1998  unsigned char buf[512];
1999  unsigned char output_str[512];
2000  int add_init_len, add1_len, add2_len;
2001 
2002  memset( output_str, 0, 512 );
2003 
2004  unhexify( entropy, "223d49f99a56cfcf2eb8cca39a8a82ee306c6272d521257f3d7d2a87699111e442fc55a399994d57373141f2207d43a8bbc1e086d67343b7dc2a891853c860fe43fb6be32cf035aca582bf5590cb5001b09b4976ea617fa7bd56da81fdef2df9" );
2005  add_init_len = unhexify( add_init, "f0d3a46501da7ab23d8688725f53f4289ce3bfa627646fe301533ec585f866caafb8131e95460566270f68cd25e1f153" );
2006  add1_len = unhexify( add1, "7d12673cad5ad5003400fb94547e2b987e934acf6b930c0e7aec72634bfb8388" );
2007  add2_len = unhexify( add2, "e8583b9983b3ac589a6bb7a8405edfc05d7aa5874a8643f9ac30a3d8945a9f96" );
2008 
2009  test_offset = 0;
2010  fct_chk( ctr_drbg_init_entropy_len( &ctx, entropy_func, entropy, add_init, add_init_len, 32 ) == 0 );
2012 
2013  fct_chk( ctr_drbg_random_with_add( &ctx, buf, 16, add1, add1_len ) == 0 );
2014  fct_chk( ctr_drbg_random_with_add( &ctx, buf, 16, add2, add2_len ) == 0 );
2015  hexify( output_str, buf, 16 );
2016  fct_chk( strcmp( (char *) output_str, "ce72c0ea0e76be6bc82331c9bddd7ffb" ) == 0 );
2017  }
2018  FCT_TEST_END();
2019 
2020 
2021  FCT_TEST_BGN(ctr_drbg_nist_validation_aes_256_use_dftrue256128256256_14)
2022  {
2023  unsigned char entropy[512];
2024  unsigned char add_init[512];
2025  unsigned char add1[512];
2026  unsigned char add2[512];
2027  ctr_drbg_context ctx;
2028  unsigned char buf[512];
2029  unsigned char output_str[512];
2030  int add_init_len, add1_len, add2_len;
2031 
2032  memset( output_str, 0, 512 );
2033 
2034  unhexify( entropy, "cdac62b5e4ccee8609b1f4b7a8733e69068c71219b6292ecb318b9d3479516807af280cfa20e455d5e96eb6794a3b963957f3c099fd1e1199706d36a06011836af890f3b7b15cda6346a06fdd0f194de40bfbec12b021b02eeabaa34d35b30a3" );
2035  add_init_len = unhexify( add_init, "1e4644df1d01f9a0f31d1d0c67bc9fb9a1ee2223fbfb25520d3881cde2b183b73fe1a8cc5f17796cf22aaaed57607420" );
2036  add1_len = unhexify( add1, "8169251ea55cce534c6efd0e8a2956d32ed73be71d12477cea8e0f1ab8251b50" );
2037  add2_len = unhexify( add2, "865d14cb37dd160a3f02f56ac32738f9e350da9e789a1f280ee7b7961ec918a7" );
2038 
2039  test_offset = 0;
2040  fct_chk( ctr_drbg_init_entropy_len( &ctx, entropy_func, entropy, add_init, add_init_len, 32 ) == 0 );
2042 
2043  fct_chk( ctr_drbg_random_with_add( &ctx, buf, 16, add1, add1_len ) == 0 );
2044  fct_chk( ctr_drbg_random_with_add( &ctx, buf, 16, add2, add2_len ) == 0 );
2045  hexify( output_str, buf, 16 );
2046  fct_chk( strcmp( (char *) output_str, "ff11ba8349daa9b9c87cf6ab4c2adfd7" ) == 0 );
2047  }
2048  FCT_TEST_END();
2049 
2050 
2051  FCT_TEST_BGN(ctr_drbg_nist_validation_aes_256_use_dffalse25612800_0)
2052  {
2053  unsigned char entropy[512];
2054  unsigned char add_init[512];
2055  unsigned char add1[512];
2056  unsigned char add_reseed[512];
2057  unsigned char add2[512];
2058  ctr_drbg_context ctx;
2059  unsigned char buf[512];
2060  unsigned char output_str[512];
2061  int add_init_len, add1_len, add_reseed_len, add2_len;
2062 
2063  memset( output_str, 0, 512 );
2064 
2065  unhexify( entropy, "5a194d5e2b31581454def675fb7958fec7db873e5689fc9d03217c68d8033820f9e65e04d856f3a9c44a4cbdc1d00846f5983d771c1b137e4e0f9d8ef409f92e" );
2066  add_init_len = unhexify( add_init, "1b54b8ff0642bff521f15c1c0b665f3f" );
2067  add1_len = unhexify( add1, "" );
2068  add_reseed_len = unhexify( add_reseed, "" );
2069  add2_len = unhexify( add2, "" );
2070 
2071  test_offset = 0;
2072  fct_chk( ctr_drbg_init_entropy_len( &ctx, entropy_func, entropy, add_init, add_init_len, 32 ) == 0 );
2073 
2074  fct_chk( ctr_drbg_random_with_add( &ctx, buf, 16, add1, add1_len ) == 0 );
2075  fct_chk( ctr_drbg_reseed( &ctx, add_reseed, add_reseed_len ) == 0 );
2076  fct_chk( ctr_drbg_random_with_add( &ctx, buf, 16, add2, add2_len ) == 0 );
2077  hexify( output_str, buf, 16 );
2078  fct_chk( strcmp( (char *) output_str, "a054303d8a7ea9889d903e077c6f218f" ) == 0 );
2079  }
2080  FCT_TEST_END();
2081 
2082 
2083  FCT_TEST_BGN(ctr_drbg_nist_validation_aes_256_use_dffalse25612800_1)
2084  {
2085  unsigned char entropy[512];
2086  unsigned char add_init[512];
2087  unsigned char add1[512];
2088  unsigned char add_reseed[512];
2089  unsigned char add2[512];
2090  ctr_drbg_context ctx;
2091  unsigned char buf[512];
2092  unsigned char output_str[512];
2093  int add_init_len, add1_len, add_reseed_len, add2_len;
2094 
2095  memset( output_str, 0, 512 );
2096 
2097  unhexify( entropy, "93b7055d7888ae234bfb431e379069d00ae810fbd48f2e06c204beae3b0bfaf091d1d0e853525ead0e7f79abb0f0bf68064576339c3585cfd6d9b55d4f39278d" );
2098  add_init_len = unhexify( add_init, "90bc3b555b9d6b6aeb1774a583f98cad" );
2099  add1_len = unhexify( add1, "" );
2100  add_reseed_len = unhexify( add_reseed, "" );
2101  add2_len = unhexify( add2, "" );
2102 
2103  test_offset = 0;
2104  fct_chk( ctr_drbg_init_entropy_len( &ctx, entropy_func, entropy, add_init, add_init_len, 32 ) == 0 );
2105 
2106  fct_chk( ctr_drbg_random_with_add( &ctx, buf, 16, add1, add1_len ) == 0 );
2107  fct_chk( ctr_drbg_reseed( &ctx, add_reseed, add_reseed_len ) == 0 );
2108  fct_chk( ctr_drbg_random_with_add( &ctx, buf, 16, add2, add2_len ) == 0 );
2109  hexify( output_str, buf, 16 );
2110  fct_chk( strcmp( (char *) output_str, "aaf27fc2bf64b0320dd3564bb9b03377" ) == 0 );
2111  }
2112  FCT_TEST_END();
2113 
2114 
2115  FCT_TEST_BGN(ctr_drbg_nist_validation_aes_256_use_dffalse25612800_2)
2116  {
2117  unsigned char entropy[512];
2118  unsigned char add_init[512];
2119  unsigned char add1[512];
2120  unsigned char add_reseed[512];
2121  unsigned char add2[512];
2122  ctr_drbg_context ctx;
2123  unsigned char buf[512];
2124  unsigned char output_str[512];
2125  int add_init_len, add1_len, add_reseed_len, add2_len;
2126 
2127  memset( output_str, 0, 512 );
2128 
2129  unhexify( entropy, "58364ceefad37581c518b7d42ac4f9aae22befd84cbc986c08d1fb20d3bd2400a899bafd470278fad8f0a50f8490af29f938471b4075654fda577dad20fa01ca" );
2130  add_init_len = unhexify( add_init, "4a2a7dcbde58b8b3c3f4697beb67bba2" );
2131  add1_len = unhexify( add1, "" );
2132  add_reseed_len = unhexify( add_reseed, "" );
2133  add2_len = unhexify( add2, "" );
2134 
2135  test_offset = 0;
2136  fct_chk( ctr_drbg_init_entropy_len( &ctx, entropy_func, entropy, add_init, add_init_len, 32 ) == 0 );
2137 
2138  fct_chk( ctr_drbg_random_with_add( &ctx, buf, 16, add1, add1_len ) == 0 );
2139  fct_chk( ctr_drbg_reseed( &ctx, add_reseed, add_reseed_len ) == 0 );
2140  fct_chk( ctr_drbg_random_with_add( &ctx, buf, 16, add2, add2_len ) == 0 );
2141  hexify( output_str, buf, 16 );
2142  fct_chk( strcmp( (char *) output_str, "20c5117a8aca72ee5ab91468daf44f29" ) == 0 );
2143  }
2144  FCT_TEST_END();
2145 
2146 
2147  FCT_TEST_BGN(ctr_drbg_nist_validation_aes_256_use_dffalse25612800_3)
2148  {
2149  unsigned char entropy[512];
2150  unsigned char add_init[512];
2151  unsigned char add1[512];
2152  unsigned char add_reseed[512];
2153  unsigned char add2[512];
2154  ctr_drbg_context ctx;
2155  unsigned char buf[512];
2156  unsigned char output_str[512];
2157  int add_init_len, add1_len, add_reseed_len, add2_len;
2158 
2159  memset( output_str, 0, 512 );
2160 
2161  unhexify( entropy, "2f044b8651e1c9d99317084cc6c4fa1f502dd62466a57d4b88bc0d703cabc562708201ac19cdb5cf918fae29c009fb1a2cf42fd714cc9a53ca5acb715482456a" );
2162  add_init_len = unhexify( add_init, "911faab1347ae2b3093a607c8bc77bfe" );
2163  add1_len = unhexify( add1, "" );
2164  add_reseed_len = unhexify( add_reseed, "" );
2165  add2_len = unhexify( add2, "" );
2166 
2167  test_offset = 0;
2168  fct_chk( ctr_drbg_init_entropy_len( &ctx, entropy_func, entropy, add_init, add_init_len, 32 ) == 0 );
2169 
2170  fct_chk( ctr_drbg_random_with_add( &ctx, buf, 16, add1, add1_len ) == 0 );
2171  fct_chk( ctr_drbg_reseed( &ctx, add_reseed, add_reseed_len ) == 0 );
2172  fct_chk( ctr_drbg_random_with_add( &ctx, buf, 16, add2, add2_len ) == 0 );
2173  hexify( output_str, buf, 16 );
2174  fct_chk( strcmp( (char *) output_str, "aae0c0ac97f53d222b83578a2b3dd05d" ) == 0 );
2175  }
2176  FCT_TEST_END();
2177 
2178 
2179  FCT_TEST_BGN(ctr_drbg_nist_validation_aes_256_use_dffalse25612800_4)
2180  {
2181  unsigned char entropy[512];
2182  unsigned char add_init[512];
2183  unsigned char add1[512];
2184  unsigned char add_reseed[512];
2185  unsigned char add2[512];
2186  ctr_drbg_context ctx;
2187  unsigned char buf[512];
2188  unsigned char output_str[512];
2189  int add_init_len, add1_len, add_reseed_len, add2_len;
2190 
2191  memset( output_str, 0, 512 );
2192 
2193  unhexify( entropy, "77d0f0efbc7ca794a51dff96e85b8e7dfd4875fbfb6e5593ae17908bfbddc313e051cb7d659c838180d834fdd987ae3c7f605aaa1b3a936575384b002a35dd98" );
2194  add_init_len = unhexify( add_init, "f959f1bc100ae30088017fae51289d8e" );
2195  add1_len = unhexify( add1, "" );
2196  add_reseed_len = unhexify( add_reseed, "" );
2197  add2_len = unhexify( add2, "" );
2198 
2199  test_offset = 0;
2200  fct_chk( ctr_drbg_init_entropy_len( &ctx, entropy_func, entropy, add_init, add_init_len, 32 ) == 0 );
2201 
2202  fct_chk( ctr_drbg_random_with_add( &ctx, buf, 16, add1, add1_len ) == 0 );
2203  fct_chk( ctr_drbg_reseed( &ctx, add_reseed, add_reseed_len ) == 0 );
2204  fct_chk( ctr_drbg_random_with_add( &ctx, buf, 16, add2, add2_len ) == 0 );
2205  hexify( output_str, buf, 16 );
2206  fct_chk( strcmp( (char *) output_str, "5d80bc3fffa42b89ccb390e8447e33e5" ) == 0 );
2207  }
2208  FCT_TEST_END();
2209 
2210 
2211  FCT_TEST_BGN(ctr_drbg_nist_validation_aes_256_use_dffalse25612800_5)
2212  {
2213  unsigned char entropy[512];
2214  unsigned char add_init[512];
2215  unsigned char add1[512];
2216  unsigned char add_reseed[512];
2217  unsigned char add2[512];
2218  ctr_drbg_context ctx;
2219  unsigned char buf[512];
2220  unsigned char output_str[512];
2221  int add_init_len, add1_len, add_reseed_len, add2_len;
2222 
2223  memset( output_str, 0, 512 );
2224 
2225  unhexify( entropy, "6bb14dc34f669759f8fa5453c4899eb5ac4e33a69e35e89b19a46dbd0888429d1367f7f3191e911b3b355b6e3b2426e242ef4140ddcc9676371101209662f253" );
2226  add_init_len = unhexify( add_init, "45a8bb33062783eede09b05a35bd44dd" );
2227  add1_len = unhexify( add1, "" );
2228  add_reseed_len = unhexify( add_reseed, "" );
2229  add2_len = unhexify( add2, "" );
2230 
2231  test_offset = 0;
2232  fct_chk( ctr_drbg_init_entropy_len( &ctx, entropy_func, entropy, add_init, add_init_len, 32 ) == 0 );
2233 
2234  fct_chk( ctr_drbg_random_with_add( &ctx, buf, 16, add1, add1_len ) == 0 );
2235  fct_chk( ctr_drbg_reseed( &ctx, add_reseed, add_reseed_len ) == 0 );
2236  fct_chk( ctr_drbg_random_with_add( &ctx, buf, 16, add2, add2_len ) == 0 );
2237  hexify( output_str, buf, 16 );
2238  fct_chk( strcmp( (char *) output_str, "0dfa9955a13a9c57a3546a04108b8e9e" ) == 0 );
2239  }
2240  FCT_TEST_END();
2241 
2242 
2243  FCT_TEST_BGN(ctr_drbg_nist_validation_aes_256_use_dffalse25612800_6)
2244  {
2245  unsigned char entropy[512];
2246  unsigned char add_init[512];
2247  unsigned char add1[512];
2248  unsigned char add_reseed[512];
2249  unsigned char add2[512];
2250  ctr_drbg_context ctx;
2251  unsigned char buf[512];
2252  unsigned char output_str[512];
2253  int add_init_len, add1_len, add_reseed_len, add2_len;
2254 
2255  memset( output_str, 0, 512 );
2256 
2257  unhexify( entropy, "b3d01bcb1ec747fdb7feb5a7de92807afa4338aba1c81ce1eb50955e125af46b19aed891366ec0f70b079037a5aeb33f07f4c894fdcda3ff41e2867ace1aa05c" );
2258  add_init_len = unhexify( add_init, "0ada129f9948073d628c11274cec3f69" );
2259  add1_len = unhexify( add1, "" );
2260  add_reseed_len = unhexify( add_reseed, "" );
2261  add2_len = unhexify( add2, "" );
2262 
2263  test_offset = 0;
2264  fct_chk( ctr_drbg_init_entropy_len( &ctx, entropy_func, entropy, add_init, add_init_len, 32 ) == 0 );
2265 
2266  fct_chk( ctr_drbg_random_with_add( &ctx, buf, 16, add1, add1_len ) == 0 );
2267  fct_chk( ctr_drbg_reseed( &ctx, add_reseed, add_reseed_len ) == 0 );
2268  fct_chk( ctr_drbg_random_with_add( &ctx, buf, 16, add2, add2_len ) == 0 );
2269  hexify( output_str, buf, 16 );
2270  fct_chk( strcmp( (char *) output_str, "f34710c9ebf9d5aaa5f797fd85a1c413" ) == 0 );
2271  }
2272  FCT_TEST_END();
2273 
2274 
2275  FCT_TEST_BGN(ctr_drbg_nist_validation_aes_256_use_dffalse25612800_7)
2276  {
2277  unsigned char entropy[512];
2278  unsigned char add_init[512];
2279  unsigned char add1[512];
2280  unsigned char add_reseed[512];
2281  unsigned char add2[512];
2282  ctr_drbg_context ctx;
2283  unsigned char buf[512];
2284  unsigned char output_str[512];
2285  int add_init_len, add1_len, add_reseed_len, add2_len;
2286 
2287  memset( output_str, 0, 512 );
2288 
2289  unhexify( entropy, "98482e58e44b8e4a6b09fa02c05fcc491da03a479a7fad13a83b6080d30b3b255e01a43568a9d6dd5cecf99b0ce9fd594d69eff8fa88159b2da24c33ba81a14d" );
2290  add_init_len = unhexify( add_init, "052a5ad4cd38de90e5d3c2fc430fa51e" );
2291  add1_len = unhexify( add1, "" );
2292  add_reseed_len = unhexify( add_reseed, "" );
2293  add2_len = unhexify( add2, "" );
2294 
2295  test_offset = 0;
2296  fct_chk( ctr_drbg_init_entropy_len( &ctx, entropy_func, entropy, add_init, add_init_len, 32 ) == 0 );
2297 
2298  fct_chk( ctr_drbg_random_with_add( &ctx, buf, 16, add1, add1_len ) == 0 );
2299  fct_chk( ctr_drbg_reseed( &ctx, add_reseed, add_reseed_len ) == 0 );
2300  fct_chk( ctr_drbg_random_with_add( &ctx, buf, 16, add2, add2_len ) == 0 );
2301  hexify( output_str, buf, 16 );
2302  fct_chk( strcmp( (char *) output_str, "3f55144eec263aed50f9c9a641538e55" ) == 0 );
2303  }
2304  FCT_TEST_END();
2305 
2306 
2307  FCT_TEST_BGN(ctr_drbg_nist_validation_aes_256_use_dffalse25612800_8)
2308  {
2309  unsigned char entropy[512];
2310  unsigned char add_init[512];
2311  unsigned char add1[512];
2312  unsigned char add_reseed[512];
2313  unsigned char add2[512];
2314  ctr_drbg_context ctx;
2315  unsigned char buf[512];
2316  unsigned char output_str[512];
2317  int add_init_len, add1_len, add_reseed_len, add2_len;
2318 
2319  memset( output_str, 0, 512 );
2320 
2321  unhexify( entropy, "6238d448015e86aa16af62cdc287f1c17b78a79809fa00b8c655e06715cd2b935bf4df966e3ec1f14b28cc1d080f882a7215e258430c91a4a0a2aa98d7cd8053" );
2322  add_init_len = unhexify( add_init, "004cd2f28f083d1cee68975d5cbbbe4f" );
2323  add1_len = unhexify( add1, "" );
2324  add_reseed_len = unhexify( add_reseed, "" );
2325  add2_len = unhexify( add2, "" );
2326 
2327  test_offset = 0;
2328  fct_chk( ctr_drbg_init_entropy_len( &ctx, entropy_func, entropy, add_init, add_init_len, 32 ) == 0 );
2329 
2330  fct_chk( ctr_drbg_random_with_add( &ctx, buf, 16, add1, add1_len ) == 0 );
2331  fct_chk( ctr_drbg_reseed( &ctx, add_reseed, add_reseed_len ) == 0 );
2332  fct_chk( ctr_drbg_random_with_add( &ctx, buf, 16, add2, add2_len ) == 0 );
2333  hexify( output_str, buf, 16 );
2334  fct_chk( strcmp( (char *) output_str, "b137119dbbd9d752a8dfceec05b884b6" ) == 0 );
2335  }
2336  FCT_TEST_END();
2337 
2338 
2339  FCT_TEST_BGN(ctr_drbg_nist_validation_aes_256_use_dffalse25612800_9)
2340  {
2341  unsigned char entropy[512];
2342  unsigned char add_init[512];
2343  unsigned char add1[512];
2344  unsigned char add_reseed[512];
2345  unsigned char add2[512];
2346  ctr_drbg_context ctx;
2347  unsigned char buf[512];
2348  unsigned char output_str[512];
2349  int add_init_len, add1_len, add_reseed_len, add2_len;
2350 
2351  memset( output_str, 0, 512 );
2352 
2353  unhexify( entropy, "50d3c4ecb1d6e95aebb87e9e8a5c869c11fb945dfad2e45ee90fb61931fcedd47d6005aa5df24bb9efc11bbb96bb21065d44e2532a1e17493f974a4bf8f8b580" );
2354  add_init_len = unhexify( add_init, "f985b3ea2d8b15db26a71895a2ff57cd" );
2355  add1_len = unhexify( add1, "" );
2356  add_reseed_len = unhexify( add_reseed, "" );
2357  add2_len = unhexify( add2, "" );
2358 
2359  test_offset = 0;
2360  fct_chk( ctr_drbg_init_entropy_len( &ctx, entropy_func, entropy, add_init, add_init_len, 32 ) == 0 );
2361 
2362  fct_chk( ctr_drbg_random_with_add( &ctx, buf, 16, add1, add1_len ) == 0 );
2363  fct_chk( ctr_drbg_reseed( &ctx, add_reseed, add_reseed_len ) == 0 );
2364  fct_chk( ctr_drbg_random_with_add( &ctx, buf, 16, add2, add2_len ) == 0 );
2365  hexify( output_str, buf, 16 );
2366  fct_chk( strcmp( (char *) output_str, "eb419628fbc441ae6a03e26aeecb34a6" ) == 0 );
2367  }
2368  FCT_TEST_END();
2369 
2370 
2371  FCT_TEST_BGN(ctr_drbg_nist_validation_aes_256_use_dffalse25612800_10)
2372  {
2373  unsigned char entropy[512];
2374  unsigned char add_init[512];
2375  unsigned char add1[512];
2376  unsigned char add_reseed[512];
2377  unsigned char add2[512];
2378  ctr_drbg_context ctx;
2379  unsigned char buf[512];
2380  unsigned char output_str[512];
2381  int add_init_len, add1_len, add_reseed_len, add2_len;
2382 
2383  memset( output_str, 0, 512 );
2384 
2385  unhexify( entropy, "d27cbeac39a6c899938197f0e61dc90be3a3a20fa5c5e1f7a76adde00598e59555c1e9fd102d4b52e1ae9fb004be8944bad85c58e341d1bee014057da98eb3bc" );
2386  add_init_len = unhexify( add_init, "100f196991b6e96f8b96a3456f6e2baf" );
2387  add1_len = unhexify( add1, "" );
2388  add_reseed_len = unhexify( add_reseed, "" );
2389  add2_len = unhexify( add2, "" );
2390 
2391  test_offset = 0;
2392  fct_chk( ctr_drbg_init_entropy_len( &ctx, entropy_func, entropy, add_init, add_init_len, 32 ) == 0 );
2393 
2394  fct_chk( ctr_drbg_random_with_add( &ctx, buf, 16, add1, add1_len ) == 0 );
2395  fct_chk( ctr_drbg_reseed( &ctx, add_reseed, add_reseed_len ) == 0 );
2396  fct_chk( ctr_drbg_random_with_add( &ctx, buf, 16, add2, add2_len ) == 0 );
2397  hexify( output_str, buf, 16 );
2398  fct_chk( strcmp( (char *) output_str, "e3e09d0ed827e4f24a20553fd1087c9d" ) == 0 );
2399  }
2400  FCT_TEST_END();
2401 
2402 
2403  FCT_TEST_BGN(ctr_drbg_nist_validation_aes_256_use_dffalse25612800_11)
2404  {
2405  unsigned char entropy[512];
2406  unsigned char add_init[512];
2407  unsigned char add1[512];
2408  unsigned char add_reseed[512];
2409  unsigned char add2[512];
2410  ctr_drbg_context ctx;
2411  unsigned char buf[512];
2412  unsigned char output_str[512];
2413  int add_init_len, add1_len, add_reseed_len, add2_len;
2414 
2415  memset( output_str, 0, 512 );
2416 
2417  unhexify( entropy, "16f9f5354d624c5ab1f82c750e05f51f2a2eeca7e5b774fd96148ddba3b38d34ba7f1472567c52087252480d305ad1c69e4aac8472a154ae03511d0e8aac905a" );
2418  add_init_len = unhexify( add_init, "88f55d9ba8fef7828483298321133fec" );
2419  add1_len = unhexify( add1, "" );
2420  add_reseed_len = unhexify( add_reseed, "" );
2421  add2_len = unhexify( add2, "" );
2422 
2423  test_offset = 0;
2424  fct_chk( ctr_drbg_init_entropy_len( &ctx, entropy_func, entropy, add_init, add_init_len, 32 ) == 0 );
2425 
2426  fct_chk( ctr_drbg_random_with_add( &ctx, buf, 16, add1, add1_len ) == 0 );
2427  fct_chk( ctr_drbg_reseed( &ctx, add_reseed, add_reseed_len ) == 0 );
2428  fct_chk( ctr_drbg_random_with_add( &ctx, buf, 16, add2, add2_len ) == 0 );
2429  hexify( output_str, buf, 16 );
2430  fct_chk( strcmp( (char *) output_str, "07cd821012ef03f16d8510c23b86baf3" ) == 0 );
2431  }
2432  FCT_TEST_END();
2433 
2434 
2435  FCT_TEST_BGN(ctr_drbg_nist_validation_aes_256_use_dffalse25612800_12)
2436  {
2437  unsigned char entropy[512];
2438  unsigned char add_init[512];
2439  unsigned char add1[512];
2440  unsigned char add_reseed[512];
2441  unsigned char add2[512];
2442  ctr_drbg_context ctx;
2443  unsigned char buf[512];
2444  unsigned char output_str[512];
2445  int add_init_len, add1_len, add_reseed_len, add2_len;
2446 
2447  memset( output_str, 0, 512 );
2448 
2449  unhexify( entropy, "70afbc83bf9ff09535d6f0ddc51278ad7909f11e6f198b59132c9e269deb41ba901c62346283e293b8714fd3241ae870f974ff33c35f9aff05144be039d24e50" );
2450  add_init_len = unhexify( add_init, "126479abd70b25acd891e1c4c92044f9" );
2451  add1_len = unhexify( add1, "" );
2452  add_reseed_len = unhexify( add_reseed, "" );
2453  add2_len = unhexify( add2, "" );
2454 
2455  test_offset = 0;
2456  fct_chk( ctr_drbg_init_entropy_len( &ctx, entropy_func, entropy, add_init, add_init_len, 32 ) == 0 );
2457 
2458  fct_chk( ctr_drbg_random_with_add( &ctx, buf, 16, add1, add1_len ) == 0 );
2459  fct_chk( ctr_drbg_reseed( &ctx, add_reseed, add_reseed_len ) == 0 );
2460  fct_chk( ctr_drbg_random_with_add( &ctx, buf, 16, add2, add2_len ) == 0 );
2461  hexify( output_str, buf, 16 );
2462  fct_chk( strcmp( (char *) output_str, "0f90df350741d88552a5b03b6488e9fb" ) == 0 );
2463  }
2464  FCT_TEST_END();
2465 
2466 
2467  FCT_TEST_BGN(ctr_drbg_nist_validation_aes_256_use_dffalse25612800_13)
2468  {
2469  unsigned char entropy[512];
2470  unsigned char add_init[512];
2471  unsigned char add1[512];
2472  unsigned char add_reseed[512];
2473  unsigned char add2[512];
2474  ctr_drbg_context ctx;
2475  unsigned char buf[512];
2476  unsigned char output_str[512];
2477  int add_init_len, add1_len, add_reseed_len, add2_len;
2478 
2479  memset( output_str, 0, 512 );
2480 
2481  unhexify( entropy, "5e5a9e1e3cb80738c238464ede1b6b6a321261a3b006a98a79265ad1f635573bba48dccf17b12f6868478252f556b77c3ec57a3bf6bb6599429453db2d050352" );
2482  add_init_len = unhexify( add_init, "a45f2fca553089fe04e7832059dc7976" );
2483  add1_len = unhexify( add1, "" );
2484  add_reseed_len = unhexify( add_reseed, "" );
2485  add2_len = unhexify( add2, "" );
2486 
2487  test_offset = 0;
2488  fct_chk( ctr_drbg_init_entropy_len( &ctx, entropy_func, entropy, add_init, add_init_len, 32 ) == 0 );
2489 
2490  fct_chk( ctr_drbg_random_with_add( &ctx, buf, 16, add1, add1_len ) == 0 );
2491  fct_chk( ctr_drbg_reseed( &ctx, add_reseed, add_reseed_len ) == 0 );
2492  fct_chk( ctr_drbg_random_with_add( &ctx, buf, 16, add2, add2_len ) == 0 );
2493  hexify( output_str, buf, 16 );
2494  fct_chk( strcmp( (char *) output_str, "6eb85ae2406c43814b687f74f4e942bc" ) == 0 );
2495  }
2496  FCT_TEST_END();
2497 
2498 
2499  FCT_TEST_BGN(ctr_drbg_nist_validation_aes_256_use_dffalse25612800_14)
2500  {
2501  unsigned char entropy[512];
2502  unsigned char add_init[512];
2503  unsigned char add1[512];
2504  unsigned char add_reseed[512];
2505  unsigned char add2[512];
2506  ctr_drbg_context ctx;
2507  unsigned char buf[512];
2508  unsigned char output_str[512];
2509  int add_init_len, add1_len, add_reseed_len, add2_len;
2510 
2511  memset( output_str, 0, 512 );
2512 
2513  unhexify( entropy, "31cfe60e5ed12ff37d7f2270963def598726320c02b910b5c6c795e2209b4b4a95866c64cb097af1d6404d1e6182edf9600e1855345375b201801d6f4c4e4b32" );
2514  add_init_len = unhexify( add_init, "52dbb43241002415966eaec2615aba27" );
2515  add1_len = unhexify( add1, "" );
2516  add_reseed_len = unhexify( add_reseed, "" );
2517  add2_len = unhexify( add2, "" );
2518 
2519  test_offset = 0;
2520  fct_chk( ctr_drbg_init_entropy_len( &ctx, entropy_func, entropy, add_init, add_init_len, 32 ) == 0 );
2521 
2522  fct_chk( ctr_drbg_random_with_add( &ctx, buf, 16, add1, add1_len ) == 0 );
2523  fct_chk( ctr_drbg_reseed( &ctx, add_reseed, add_reseed_len ) == 0 );
2524  fct_chk( ctr_drbg_random_with_add( &ctx, buf, 16, add2, add2_len ) == 0 );
2525  hexify( output_str, buf, 16 );
2526  fct_chk( strcmp( (char *) output_str, "2a270f5ef815665ddd07527c48719ab1" ) == 0 );
2527  }
2528  FCT_TEST_END();
2529 
2530 
2531  FCT_TEST_BGN(ctr_drbg_nist_validation_aes_256_use_dffalse2561280256_0)
2532  {
2533  unsigned char entropy[512];
2534  unsigned char add_init[512];
2535  unsigned char add1[512];
2536  unsigned char add_reseed[512];
2537  unsigned char add2[512];
2538  ctr_drbg_context ctx;
2539  unsigned char buf[512];
2540  unsigned char output_str[512];
2541  int add_init_len, add1_len, add_reseed_len, add2_len;
2542 
2543  memset( output_str, 0, 512 );
2544 
2545  unhexify( entropy, "f84d395b1734eac4600dbc36f6b1e1599bc7f2608dc8ecb3a55369d7b1b122a09f5ac9c16d9a2be37d2ff70a9bba732fc3785b23ff4ade3c8404da3f09f95a8f" );
2546  add_init_len = unhexify( add_init, "176200bb44808b5400b24e1b5f56cf73" );
2547  add1_len = unhexify( add1, "aef28c9169e9af74c73432d4aa6f5dff9ea4a53433de2ecb9bf380a8868c86e1" );
2548  add_reseed_len = unhexify( add_reseed, "0626ae19763c5313b627a8d65cf1cfba46dfd6773242738b9b81fde8d566ade1" );
2549  add2_len = unhexify( add2, "63c160ed6a6c1fffd0586f52fa488a9055533930b36d4fa5ea3467cda9ffe198" );
2550 
2551  test_offset = 0;
2552  fct_chk( ctr_drbg_init_entropy_len( &ctx, entropy_func, entropy, add_init, add_init_len, 32 ) == 0 );
2553 
2554  fct_chk( ctr_drbg_random_with_add( &ctx, buf, 16, add1, add1_len ) == 0 );
2555  fct_chk( ctr_drbg_reseed( &ctx, add_reseed, add_reseed_len ) == 0 );
2556  fct_chk( ctr_drbg_random_with_add( &ctx, buf, 16, add2, add2_len ) == 0 );
2557  hexify( output_str, buf, 16 );
2558  fct_chk( strcmp( (char *) output_str, "e8f91633725d786081625fb99336a993" ) == 0 );
2559  }
2560  FCT_TEST_END();
2561 
2562 
2563  FCT_TEST_BGN(ctr_drbg_nist_validation_aes_256_use_dffalse2561280256_1)
2564  {
2565  unsigned char entropy[512];
2566  unsigned char add_init[512];
2567  unsigned char add1[512];
2568  unsigned char add_reseed[512];
2569  unsigned char add2[512];
2570  ctr_drbg_context ctx;
2571  unsigned char buf[512];
2572  unsigned char output_str[512];
2573  int add_init_len, add1_len, add_reseed_len, add2_len;
2574 
2575  memset( output_str, 0, 512 );
2576 
2577  unhexify( entropy, "50755cc0178c68ae70befd7744f6f1e3f6a59b3bbe484a744436079c7fae8d83c4965516fb952c63e1d0561d92cccc56037465815c9e549c9adce4a064877128" );
2578  add_init_len = unhexify( add_init, "19c3d16197ac93bf58c4110c9e864804" );
2579  add1_len = unhexify( add1, "5cb82d2c297404f3db1909480c597dd081d94ca282ba9370786a50f3cbab6a9b" );
2580  add_reseed_len = unhexify( add_reseed, "96d130faf1a971920c2bf57bcd6c02d5a4af7d3c840706081e4a50e55f38bf96" );
2581  add2_len = unhexify( add2, "1b0d04f179690a30d501e8f6f82201dbab6d972ece2a0edfb5ca66a8c9bcf47d" );
2582 
2583  test_offset = 0;
2584  fct_chk( ctr_drbg_init_entropy_len( &ctx, entropy_func, entropy, add_init, add_init_len, 32 ) == 0 );
2585 
2586  fct_chk( ctr_drbg_random_with_add( &ctx, buf, 16, add1, add1_len ) == 0 );
2587  fct_chk( ctr_drbg_reseed( &ctx, add_reseed, add_reseed_len ) == 0 );
2588  fct_chk( ctr_drbg_random_with_add( &ctx, buf, 16, add2, add2_len ) == 0 );
2589  hexify( output_str, buf, 16 );
2590  fct_chk( strcmp( (char *) output_str, "4628b26492e5cb3b21956d4160f0b911" ) == 0 );
2591  }
2592  FCT_TEST_END();
2593 
2594 
2595  FCT_TEST_BGN(ctr_drbg_nist_validation_aes_256_use_dffalse2561280256_2)
2596  {
2597  unsigned char entropy[512];
2598  unsigned char add_init[512];
2599  unsigned char add1[512];
2600  unsigned char add_reseed[512];
2601  unsigned char add2[512];
2602  ctr_drbg_context ctx;
2603  unsigned char buf[512];
2604  unsigned char output_str[512];
2605  int add_init_len, add1_len, add_reseed_len, add2_len;
2606 
2607  memset( output_str, 0, 512 );
2608 
2609  unhexify( entropy, "e50c31ebbb735c4a53fc0535647ae1fff7a5ac4fa4068ba90f1fa03ca4ddedecd5b1898d5e38185054b0de7e348034b57067a82a478b0057e0c46de4a7280cd9" );
2610  add_init_len = unhexify( add_init, "4b1edd0f53bf4e012def80efd740140b" );
2611  add1_len = unhexify( add1, "e7154ec1f7ac369d0bd41238f603b5315314d1dc82f71191de9e74364226eb09" );
2612  add_reseed_len = unhexify( add_reseed, "9444238bd27c45128a25d55e0734d3adafecccb2c24abdaa50ac2ca479c3830b" );
2613  add2_len = unhexify( add2, "ab2488c8b7e819d8ce5ec1ffb77efc770453970d6b852b496426d5db05c03947" );
2614 
2615  test_offset = 0;
2616  fct_chk( ctr_drbg_init_entropy_len( &ctx, entropy_func, entropy, add_init, add_init_len, 32 ) == 0 );
2617 
2618  fct_chk( ctr_drbg_random_with_add( &ctx, buf, 16, add1, add1_len ) == 0 );
2619  fct_chk( ctr_drbg_reseed( &ctx, add_reseed, add_reseed_len ) == 0 );
2620  fct_chk( ctr_drbg_random_with_add( &ctx, buf, 16, add2, add2_len ) == 0 );
2621  hexify( output_str, buf, 16 );
2622  fct_chk( strcmp( (char *) output_str, "a488a87c04eb1c7586b8141ed45e7761" ) == 0 );
2623  }
2624  FCT_TEST_END();
2625 
2626 
2627  FCT_TEST_BGN(ctr_drbg_nist_validation_aes_256_use_dffalse2561280256_3)
2628  {
2629  unsigned char entropy[512];
2630  unsigned char add_init[512];
2631  unsigned char add1[512];
2632  unsigned char add_reseed[512];
2633  unsigned char add2[512];
2634  ctr_drbg_context ctx;
2635  unsigned char buf[512];
2636  unsigned char output_str[512];
2637  int add_init_len, add1_len, add_reseed_len, add2_len;
2638 
2639  memset( output_str, 0, 512 );
2640 
2641  unhexify( entropy, "5e029c173dc28ab19851a8db008efbcf862f4187fca84e4e6f5ba686e3005dba5b95c5a0bcf78fb35ada347af58ec0aca09ed4799cd8a734739f3c425273e441" );
2642  add_init_len = unhexify( add_init, "1f89c914649ae8a234c0e9230f3460f9" );
2643  add1_len = unhexify( add1, "b51f5fd5888552af0e9b667c2750c79106ce37c00c850afbe3776746d8c3bce1" );
2644  add_reseed_len = unhexify( add_reseed, "9b132a2cbffb8407aa06954ae6ebee265f986666757b5453601207e0cbb4871b" );
2645  add2_len = unhexify( add2, "f1c435e2ebf083a222218ee4602263872a2d3e097b536a8cc32a5a2220b8065f" );
2646 
2647  test_offset = 0;
2648  fct_chk( ctr_drbg_init_entropy_len( &ctx, entropy_func, entropy, add_init, add_init_len, 32 ) == 0 );
2649 
2650  fct_chk( ctr_drbg_random_with_add( &ctx, buf, 16, add1, add1_len ) == 0 );
2651  fct_chk( ctr_drbg_reseed( &ctx, add_reseed, add_reseed_len ) == 0 );
2652  fct_chk( ctr_drbg_random_with_add( &ctx, buf, 16, add2, add2_len ) == 0 );
2653  hexify( output_str, buf, 16 );
2654  fct_chk( strcmp( (char *) output_str, "a065cc203881254ca81bd9595515e705" ) == 0 );
2655  }
2656  FCT_TEST_END();
2657 
2658 
2659  FCT_TEST_BGN(ctr_drbg_nist_validation_aes_256_use_dffalse2561280256_4)
2660  {
2661  unsigned char entropy[512];
2662  unsigned char add_init[512];
2663  unsigned char add1[512];
2664  unsigned char add_reseed[512];
2665  unsigned char add2[512];
2666  ctr_drbg_context ctx;
2667  unsigned char buf[512];
2668  unsigned char output_str[512];
2669  int add_init_len, add1_len, add_reseed_len, add2_len;
2670 
2671  memset( output_str, 0, 512 );
2672 
2673  unhexify( entropy, "b66c882ae02c5215ed3bcd9e9a40934b09bf48a15fe7558c9d9ceb0ebec63625ea18f7c3ab341d9f7edd8e1d8816edecb34dbd71ae02771327b5ebc74613dadd" );
2674  add_init_len = unhexify( add_init, "0ef2be2d00a16051404fc2a0faa74fdc" );
2675  add1_len = unhexify( add1, "1ebe9893957a5c4a707793906d31bb201e88d88a22abd6baa6461fc61def7ffb" );
2676  add_reseed_len = unhexify( add_reseed, "f81e26744834413cb95af8d438d0050c7c968f929a33e35ee5c6715a0a520950" );
2677  add2_len = unhexify( add2, "687a848b2b6c715a0e613b3f3bb16cf2f056543eb9dd6b8aee8de8aa6fd8a1e6" );
2678 
2679  test_offset = 0;
2680  fct_chk( ctr_drbg_init_entropy_len( &ctx, entropy_func, entropy, add_init, add_init_len, 32 ) == 0 );
2681 
2682  fct_chk( ctr_drbg_random_with_add( &ctx, buf, 16, add1, add1_len ) == 0 );
2683  fct_chk( ctr_drbg_reseed( &ctx, add_reseed, add_reseed_len ) == 0 );
2684  fct_chk( ctr_drbg_random_with_add( &ctx, buf, 16, add2, add2_len ) == 0 );
2685  hexify( output_str, buf, 16 );
2686  fct_chk( strcmp( (char *) output_str, "a6c4a7e99d08cc847ac0b8c8bcf22ec0" ) == 0 );
2687  }
2688  FCT_TEST_END();
2689 
2690 
2691  FCT_TEST_BGN(ctr_drbg_nist_validation_aes_256_use_dffalse2561280256_5)
2692  {
2693  unsigned char entropy[512];
2694  unsigned char add_init[512];
2695  unsigned char add1[512];
2696  unsigned char add_reseed[512];
2697  unsigned char add2[512];
2698  ctr_drbg_context ctx;
2699  unsigned char buf[512];
2700  unsigned char output_str[512];
2701  int add_init_len, add1_len, add_reseed_len, add2_len;
2702 
2703  memset( output_str, 0, 512 );
2704 
2705  unhexify( entropy, "ad153fd266d9f73b21f4e5e88d3d13ba8325abdec427d5d8f671cfccdbd3510e9774d59a14d9b5472b217b7bcf355436a51965d2dff7c4ac586ab812f20d326e" );
2706  add_init_len = unhexify( add_init, "eb2439d156c4f51fb1943c26f27de8af" );
2707  add1_len = unhexify( add1, "e24bd6b69a40fa0a02cefbbaa282f8f63a80e154be338d1b913418d4ff7a810d" );
2708  add_reseed_len = unhexify( add_reseed, "fd40baf11d7cdd77641a2b46916cb0c12980e02612ef59fb6fe7dabbbe7a85c0" );
2709  add2_len = unhexify( add2, "a40019e3b85d7d5775e793dd4c09b2bdc8253694b1dcb73e63a18b066a7f7d0c" );
2710 
2711  test_offset = 0;
2712  fct_chk( ctr_drbg_init_entropy_len( &ctx, entropy_func, entropy, add_init, add_init_len, 32 ) == 0 );
2713 
2714  fct_chk( ctr_drbg_random_with_add( &ctx, buf, 16, add1, add1_len ) == 0 );
2715  fct_chk( ctr_drbg_reseed( &ctx, add_reseed, add_reseed_len ) == 0 );
2716  fct_chk( ctr_drbg_random_with_add( &ctx, buf, 16, add2, add2_len ) == 0 );
2717  hexify( output_str, buf, 16 );
2718  fct_chk( strcmp( (char *) output_str, "7cd8d2710147a0b7f053bb271edf07b5" ) == 0 );
2719  }
2720  FCT_TEST_END();
2721 
2722 
2723  FCT_TEST_BGN(ctr_drbg_nist_validation_aes_256_use_dffalse2561280256_6)
2724  {
2725  unsigned char entropy[512];
2726  unsigned char add_init[512];
2727  unsigned char add1[512];
2728  unsigned char add_reseed[512];
2729  unsigned char add2[512];
2730  ctr_drbg_context ctx;
2731  unsigned char buf[512];
2732  unsigned char output_str[512];
2733  int add_init_len, add1_len, add_reseed_len, add2_len;
2734 
2735  memset( output_str, 0, 512 );
2736 
2737  unhexify( entropy, "b249d2d9b269b58c5355710aaae98be12d8fb2e79046b4e6deeec28adad7e789999847e20de11f7c3277216374f117e3e006bdf99bb8631aa4c4c542cd482840" );
2738  add_init_len = unhexify( add_init, "b23796d88ee5ae75ff2ba4fbbd5e2de8" );
2739  add1_len = unhexify( add1, "79f0214b6b0c5ffb21b1d521498b71d22c67be4607c16300ab8dde3b52498097" );
2740  add_reseed_len = unhexify( add_reseed, "582be1e080264b3e68ec184347a5b6db1e8be1811578206e14ad84029fe39f71" );
2741  add2_len = unhexify( add2, "f5e9c3356810793f461f889d8c5003b1c0b20a284cb348301ce7b2dd7a1c7dd7" );
2742 
2743  test_offset = 0;
2744  fct_chk( ctr_drbg_init_entropy_len( &ctx, entropy_func, entropy, add_init, add_init_len, 32 ) == 0 );
2745 
2746  fct_chk( ctr_drbg_random_with_add( &ctx, buf, 16, add1, add1_len ) == 0 );
2747  fct_chk( ctr_drbg_reseed( &ctx, add_reseed, add_reseed_len ) == 0 );
2748  fct_chk( ctr_drbg_random_with_add( &ctx, buf, 16, add2, add2_len ) == 0 );
2749  hexify( output_str, buf, 16 );
2750  fct_chk( strcmp( (char *) output_str, "1aa8cf54994be6b329e9eb897007abf0" ) == 0 );
2751  }
2752  FCT_TEST_END();
2753 
2754 
2755  FCT_TEST_BGN(ctr_drbg_nist_validation_aes_256_use_dffalse2561280256_7)
2756  {
2757  unsigned char entropy[512];
2758  unsigned char add_init[512];
2759  unsigned char add1[512];
2760  unsigned char add_reseed[512];
2761  unsigned char add2[512];
2762  ctr_drbg_context ctx;
2763  unsigned char buf[512];
2764  unsigned char output_str[512];
2765  int add_init_len, add1_len, add_reseed_len, add2_len;
2766 
2767  memset( output_str, 0, 512 );
2768 
2769  unhexify( entropy, "3f1e90d88870a0bd03364036b655495e3e7d51bf67fb64ba0cbf003430af5585f5936b84ab3b8a55c02b8b6c54bea09cf2d77691858c5818991383add5f0c644" );
2770  add_init_len = unhexify( add_init, "081db0b1620a56afd87c2fd2bebb1db3" );
2771  add1_len = unhexify( add1, "5b98bc83ae8bed5c49cb71689dc39fee38d5d08bdfa2a01cee9d61e9f3d1e115" );
2772  add_reseed_len = unhexify( add_reseed, "aad3e58fdd98aa60fc2cae0df3fc734fff01a07f29f69c5ffeb96d299200d0d8" );
2773  add2_len = unhexify( add2, "bad9039ebb7c3a44061353542a2b1c1a89b3e9b493e9f59e438bfc80de3d1836" );
2774 
2775  test_offset = 0;
2776  fct_chk( ctr_drbg_init_entropy_len( &ctx, entropy_func, entropy, add_init, add_init_len, 32 ) == 0 );
2777 
2778  fct_chk( ctr_drbg_random_with_add( &ctx, buf, 16, add1, add1_len ) == 0 );
2779  fct_chk( ctr_drbg_reseed( &ctx, add_reseed, add_reseed_len ) == 0 );
2780  fct_chk( ctr_drbg_random_with_add( &ctx, buf, 16, add2, add2_len ) == 0 );
2781  hexify( output_str, buf, 16 );
2782  fct_chk( strcmp( (char *) output_str, "8d01e3dc48b28f016fc34655c54be81f" ) == 0 );
2783  }
2784  FCT_TEST_END();
2785 
2786 
2787  FCT_TEST_BGN(ctr_drbg_nist_validation_aes_256_use_dffalse2561280256_8)
2788  {
2789  unsigned char entropy[512];
2790  unsigned char add_init[512];
2791  unsigned char add1[512];
2792  unsigned char add_reseed[512];
2793  unsigned char add2[512];
2794  ctr_drbg_context ctx;
2795  unsigned char buf[512];
2796  unsigned char output_str[512];
2797  int add_init_len, add1_len, add_reseed_len, add2_len;
2798 
2799  memset( output_str, 0, 512 );
2800 
2801  unhexify( entropy, "b0e9b2192adc8912653d90a634d5d40c53ca4383290a8764bdf92667f859d833c3e72ad0ff41e07fe257b1ead11649be655c58a5df233114e7eda2558b7214d7" );
2802  add_init_len = unhexify( add_init, "a8427443d9c34abcdcca061a2bbcff52" );
2803  add1_len = unhexify( add1, "c6cad9fb17ada437d195d1f8b6a7fa463e20050e94024170d2ffc34b80a50108" );
2804  add_reseed_len = unhexify( add_reseed, "be461a9c1a72ebaf28ee732219e3ca54cbee36921daaa946917a7c63279a6b0e" );
2805  add2_len = unhexify( add2, "b6d110d6b746d7ccf7a48a4337ba341d52508d0336d017ae20377977163c1a20" );
2806 
2807  test_offset = 0;
2808  fct_chk( ctr_drbg_init_entropy_len( &ctx, entropy_func, entropy, add_init, add_init_len, 32 ) == 0 );
2809 
2810  fct_chk( ctr_drbg_random_with_add( &ctx, buf, 16, add1, add1_len ) == 0 );
2811  fct_chk( ctr_drbg_reseed( &ctx, add_reseed, add_reseed_len ) == 0 );
2812  fct_chk( ctr_drbg_random_with_add( &ctx, buf, 16, add2, add2_len ) == 0 );
2813  hexify( output_str, buf, 16 );
2814  fct_chk( strcmp( (char *) output_str, "16ccd63dbf7b24b6b427126b863f7c86" ) == 0 );
2815  }
2816  FCT_TEST_END();
2817 
2818 
2819  FCT_TEST_BGN(ctr_drbg_nist_validation_aes_256_use_dffalse2561280256_9)
2820  {
2821  unsigned char entropy[512];
2822  unsigned char add_init[512];
2823  unsigned char add1[512];
2824  unsigned char add_reseed[512];
2825  unsigned char add2[512];
2826  ctr_drbg_context ctx;
2827  unsigned char buf[512];
2828  unsigned char output_str[512];
2829  int add_init_len, add1_len, add_reseed_len, add2_len;
2830 
2831  memset( output_str, 0, 512 );
2832 
2833  unhexify( entropy, "89900b0febf6b4e19ab8fc5babb4122a8aad86d658d0c2f98988c99fbd8530ff4ad365bd5fddaa15f96537bd72deb5384405b610e6ebae83e848307051fd6c82" );
2834  add_init_len = unhexify( add_init, "86bd02976e6c50656372b8c212cf0a7a" );
2835  add1_len = unhexify( add1, "41bf3794ee54647a48a2588fdfdea686f1af6792e957d42f181f2631b207ac0c" );
2836  add_reseed_len = unhexify( add_reseed, "c4478afbea4eecb225448f069b02a74c2a222698c68e37eb144aff9e457f9610" );
2837  add2_len = unhexify( add2, "41a99e0d3f5b767f9bedcb2f878a5d99d42856bed29042d568b04e347624bf7f" );
2838 
2839  test_offset = 0;
2840  fct_chk( ctr_drbg_init_entropy_len( &ctx, entropy_func, entropy, add_init, add_init_len, 32 ) == 0 );
2841 
2842  fct_chk( ctr_drbg_random_with_add( &ctx, buf, 16, add1, add1_len ) == 0 );
2843  fct_chk( ctr_drbg_reseed( &ctx, add_reseed, add_reseed_len ) == 0 );
2844  fct_chk( ctr_drbg_random_with_add( &ctx, buf, 16, add2, add2_len ) == 0 );
2845  hexify( output_str, buf, 16 );
2846  fct_chk( strcmp( (char *) output_str, "863337529aac9ab1e9f7f8187ea7aa7d" ) == 0 );
2847  }
2848  FCT_TEST_END();
2849 
2850 
2851  FCT_TEST_BGN(ctr_drbg_nist_validation_aes_256_use_dffalse2561280256_10)
2852  {
2853  unsigned char entropy[512];
2854  unsigned char add_init[512];
2855  unsigned char add1[512];
2856  unsigned char add_reseed[512];
2857  unsigned char add2[512];
2858  ctr_drbg_context ctx;
2859  unsigned char buf[512];
2860  unsigned char output_str[512];
2861  int add_init_len, add1_len, add_reseed_len, add2_len;
2862 
2863  memset( output_str, 0, 512 );
2864 
2865  unhexify( entropy, "3e831b7715ce202c95ec85337e2c0061d972169955bd96fbe1f758508c0336b3226260ea5e66f943b538eb115ffe4d5e534cbe58262a610528641629bc12fc75" );
2866  add_init_len = unhexify( add_init, "e809ef8d4c3d82575833d51ac69481b2" );
2867  add1_len = unhexify( add1, "4d40c6a961168445c1691fea02ebd693cb4b3f74b03d45a350c65f0aaccb118b" );
2868  add_reseed_len = unhexify( add_reseed, "b07dc50e6ca7544ed6fdebd8f00ed5fa9b1f2213b477de8568eb92dddaabfe3f" );
2869  add2_len = unhexify( add2, "cbac982aa9f1830d0dc7373d9907670f561642adb1888f66b4150d3487bf0b8d" );
2870 
2871  test_offset = 0;
2872  fct_chk( ctr_drbg_init_entropy_len( &ctx, entropy_func, entropy, add_init, add_init_len, 32 ) == 0 );
2873 
2874  fct_chk( ctr_drbg_random_with_add( &ctx, buf, 16, add1, add1_len ) == 0 );
2875  fct_chk( ctr_drbg_reseed( &ctx, add_reseed, add_reseed_len ) == 0 );
2876  fct_chk( ctr_drbg_random_with_add( &ctx, buf, 16, add2, add2_len ) == 0 );
2877  hexify( output_str, buf, 16 );
2878  fct_chk( strcmp( (char *) output_str, "2814be767d79778ebb82a096976f30db" ) == 0 );
2879  }
2880  FCT_TEST_END();
2881 
2882 
2883  FCT_TEST_BGN(ctr_drbg_nist_validation_aes_256_use_dffalse2561280256_11)
2884  {
2885  unsigned char entropy[512];
2886  unsigned char add_init[512];
2887  unsigned char add1[512];
2888  unsigned char add_reseed[512];
2889  unsigned char add2[512];
2890  ctr_drbg_context ctx;
2891  unsigned char buf[512];
2892  unsigned char output_str[512];
2893  int add_init_len, add1_len, add_reseed_len, add2_len;
2894 
2895  memset( output_str, 0, 512 );
2896 
2897  unhexify( entropy, "6a3fd23e7dc934e6de6eb4cc846c0dc3cf35ea4be3f561c34666aed1bbd6331004afba5a5b83fff1e7b8a957fbee7cd9f8142326c796ca129ec9fbacf295b882" );
2898  add_init_len = unhexify( add_init, "ad71caa50420d213b25f5558e0dc1170" );
2899  add1_len = unhexify( add1, "3042dd041b89aaa61f185fdda706c77667515c037f2a88c6d47f23ddadc828ae" );
2900  add_reseed_len = unhexify( add_reseed, "9b1e3f72aaab66b202f17c5cc075cfba7242817b2b38c19fe8924ca325b826ea" );
2901  add2_len = unhexify( add2, "8660b503329aaea56acdb73ca83763299bac0f30264702cb9d52cbaf3d71d69d" );
2902 
2903  test_offset = 0;
2904  fct_chk( ctr_drbg_init_entropy_len( &ctx, entropy_func, entropy, add_init, add_init_len, 32 ) == 0 );
2905 
2906  fct_chk( ctr_drbg_random_with_add( &ctx, buf, 16, add1, add1_len ) == 0 );
2907  fct_chk( ctr_drbg_reseed( &ctx, add_reseed, add_reseed_len ) == 0 );
2908  fct_chk( ctr_drbg_random_with_add( &ctx, buf, 16, add2, add2_len ) == 0 );
2909  hexify( output_str, buf, 16 );
2910  fct_chk( strcmp( (char *) output_str, "c204a3174784d82b664e9a1c0a13ffa6" ) == 0 );
2911  }
2912  FCT_TEST_END();
2913 
2914 
2915  FCT_TEST_BGN(ctr_drbg_nist_validation_aes_256_use_dffalse2561280256_12)
2916  {
2917  unsigned char entropy[512];
2918  unsigned char add_init[512];
2919  unsigned char add1[512];
2920  unsigned char add_reseed[512];
2921  unsigned char add2[512];
2922  ctr_drbg_context ctx;
2923  unsigned char buf[512];
2924  unsigned char output_str[512];
2925  int add_init_len, add1_len, add_reseed_len, add2_len;
2926 
2927  memset( output_str, 0, 512 );
2928 
2929  unhexify( entropy, "baf8750e07194fc7172c736e0fdea0a632810d45602dff17ce37adf106d652f87e31b6bd24d21481c86444d8109586118672a6f93731b7438a3f0f39648b83a3" );
2930  add_init_len = unhexify( add_init, "5fd6606b08e7e625af788814bef7f263" );
2931  add1_len = unhexify( add1, "3c37193d40e79ce8d569d8aa7ef80aabaa294f1b6d5a8341805f5ac67a6abf42" );
2932  add_reseed_len = unhexify( add_reseed, "c7033b3b68be178d120379e7366980d076c73280e629dd6e82f5af1af258931b" );
2933  add2_len = unhexify( add2, "452218a426a58463940785a67cb34799a1787f39d376c9e56e4a3f2215785dad" );
2934 
2935  test_offset = 0;
2936  fct_chk( ctr_drbg_init_entropy_len( &ctx, entropy_func, entropy, add_init, add_init_len, 32 ) == 0 );
2937 
2938  fct_chk( ctr_drbg_random_with_add( &ctx, buf, 16, add1, add1_len ) == 0 );
2939  fct_chk( ctr_drbg_reseed( &ctx, add_reseed, add_reseed_len ) == 0 );
2940  fct_chk( ctr_drbg_random_with_add( &ctx, buf, 16, add2, add2_len ) == 0 );
2941  hexify( output_str, buf, 16 );
2942  fct_chk( strcmp( (char *) output_str, "561e16a8b297e458c4ec39ba43f0b67e" ) == 0 );
2943  }
2944  FCT_TEST_END();
2945 
2946 
2947  FCT_TEST_BGN(ctr_drbg_nist_validation_aes_256_use_dffalse2561280256_13)
2948  {
2949  unsigned char entropy[512];
2950  unsigned char add_init[512];
2951  unsigned char add1[512];
2952  unsigned char add_reseed[512];
2953  unsigned char add2[512];
2954  ctr_drbg_context ctx;
2955  unsigned char buf[512];
2956  unsigned char output_str[512];
2957  int add_init_len, add1_len, add_reseed_len, add2_len;
2958 
2959  memset( output_str, 0, 512 );
2960 
2961  unhexify( entropy, "6697f889fcf6dae16881dc1e540e5c07f9461d409acee31842b04f93c00efbba670dfbf6040c1c2e29ad89064eae283fd6d431832f356e492bc5b2049f229892" );
2962  add_init_len = unhexify( add_init, "08def734914ecf74b9eccb5dfaa045b8" );
2963  add1_len = unhexify( add1, "a6ac87af21efd3508990aac51d36243d46237b3755a0e68680adb59e19e8ae23" );
2964  add_reseed_len = unhexify( add_reseed, "0052152872b21615775431eb51889a264fed6ca44fa0436b72a419b91f92604c" );
2965  add2_len = unhexify( add2, "ebadf71565d9a8cc2621403c36e6411e7bed67193a843b90ccf2f7aa9f229ca2" );
2966 
2967  test_offset = 0;
2968  fct_chk( ctr_drbg_init_entropy_len( &ctx, entropy_func, entropy, add_init, add_init_len, 32 ) == 0 );
2969 
2970  fct_chk( ctr_drbg_random_with_add( &ctx, buf, 16, add1, add1_len ) == 0 );
2971  fct_chk( ctr_drbg_reseed( &ctx, add_reseed, add_reseed_len ) == 0 );
2972  fct_chk( ctr_drbg_random_with_add( &ctx, buf, 16, add2, add2_len ) == 0 );
2973  hexify( output_str, buf, 16 );
2974  fct_chk( strcmp( (char *) output_str, "c83fa5df210b63f4bf4a0aca63650aab" ) == 0 );
2975  }
2976  FCT_TEST_END();
2977 
2978 
2979  FCT_TEST_BGN(ctr_drbg_nist_validation_aes_256_use_dffalse2561280256_14)
2980  {
2981  unsigned char entropy[512];
2982  unsigned char add_init[512];
2983  unsigned char add1[512];
2984  unsigned char add_reseed[512];
2985  unsigned char add2[512];
2986  ctr_drbg_context ctx;
2987  unsigned char buf[512];
2988  unsigned char output_str[512];
2989  int add_init_len, add1_len, add_reseed_len, add2_len;
2990 
2991  memset( output_str, 0, 512 );
2992 
2993  unhexify( entropy, "719d1afcb6dc8ca26cba6a7c10f59cf82345b2a0c631a7879812d6f2d2663b49f9e92daecb81ff7c0790205d66694526477d6de54a269f542cb5e77fe4bc8db3" );
2994  add_init_len = unhexify( add_init, "6437862e93060def199029ff2182f1e5" );
2995  add1_len = unhexify( add1, "5c961db0ac2ea8caf62c9acc44465dcfb4d721fcb2cd3e1c76cdcb61bfaa7e75" );
2996  add_reseed_len = unhexify( add_reseed, "24eabd392d37493e306705d0b287be11a4d72dd4b9577ac4098ef0dae69b0000" );
2997  add2_len = unhexify( add2, "9e4f05c1b85613e97958bc3863e521331b2bd78fdf2585f84607bf2238e82415" );
2998 
2999  test_offset = 0;
3000  fct_chk( ctr_drbg_init_entropy_len( &ctx, entropy_func, entropy, add_init, add_init_len, 32 ) == 0 );
3001 
3002  fct_chk( ctr_drbg_random_with_add( &ctx, buf, 16, add1, add1_len ) == 0 );
3003  fct_chk( ctr_drbg_reseed( &ctx, add_reseed, add_reseed_len ) == 0 );
3004  fct_chk( ctr_drbg_random_with_add( &ctx, buf, 16, add2, add2_len ) == 0 );
3005  hexify( output_str, buf, 16 );
3006  fct_chk( strcmp( (char *) output_str, "21aaae76dc97c9bf7cf858054839653e" ) == 0 );
3007  }
3008  FCT_TEST_END();
3009 
3010 
3011  FCT_TEST_BGN(ctr_drbg_nist_validation_aes_256_use_dffalse2561282560_0)
3012  {
3013  unsigned char entropy[512];
3014  unsigned char add_init[512];
3015  unsigned char add1[512];
3016  unsigned char add_reseed[512];
3017  unsigned char add2[512];
3018  ctr_drbg_context ctx;
3019  unsigned char buf[512];
3020  unsigned char output_str[512];
3021  int add_init_len, add1_len, add_reseed_len, add2_len;
3022 
3023  memset( output_str, 0, 512 );
3024 
3025  unhexify( entropy, "7f88c3805ae0857c5cbb085a5d6259d26fb3a88dfe7084172ec959066f26296a800953ce19a24785b6acef451c4ce4c2dfb565cbe057f21b054a28633afbdd97" );
3026  add_init_len = unhexify( add_init, "cd7a1981c1b7079c1c38f5aeee86db22207cb9faed8c576b1724ca7817aa6abfb26c42a019eb4c2f4064f0587ea2b952" );
3027  add1_len = unhexify( add1, "" );
3028  add_reseed_len = unhexify( add_reseed, "" );
3029  add2_len = unhexify( add2, "" );
3030 
3031  test_offset = 0;
3032  fct_chk( ctr_drbg_init_entropy_len( &ctx, entropy_func, entropy, add_init, add_init_len, 32 ) == 0 );
3033 
3034  fct_chk( ctr_drbg_random_with_add( &ctx, buf, 16, add1, add1_len ) == 0 );
3035  fct_chk( ctr_drbg_reseed( &ctx, add_reseed, add_reseed_len ) == 0 );
3036  fct_chk( ctr_drbg_random_with_add( &ctx, buf, 16, add2, add2_len ) == 0 );
3037  hexify( output_str, buf, 16 );
3038  fct_chk( strcmp( (char *) output_str, "76c1cdb0b95af271b52ac3b0c9289146" ) == 0 );
3039  }
3040  FCT_TEST_END();
3041 
3042 
3043  FCT_TEST_BGN(ctr_drbg_nist_validation_aes_256_use_dffalse2561282560_1)
3044  {
3045  unsigned char entropy[512];
3046  unsigned char add_init[512];
3047  unsigned char add1[512];
3048  unsigned char add_reseed[512];
3049  unsigned char add2[512];
3050  ctr_drbg_context ctx;
3051  unsigned char buf[512];
3052  unsigned char output_str[512];
3053  int add_init_len, add1_len, add_reseed_len, add2_len;
3054 
3055  memset( output_str, 0, 512 );
3056 
3057  unhexify( entropy, "6f61703f92d3192cd982b2e52a8683e0d62918d51b12e084deae06c4a8e08ecfb3d2d30a980a70b083710bc45d9d407966b52829cf3813cc970b859aa4c871fe" );
3058  add_init_len = unhexify( add_init, "0ccdac2fd65a86bf8f8e9ddcabffb9d29a935139f627c165a815b23137eeee94cbb21be86ac5117379177d37728db6fd" );
3059  add1_len = unhexify( add1, "" );
3060  add_reseed_len = unhexify( add_reseed, "" );
3061  add2_len = unhexify( add2, "" );
3062 
3063  test_offset = 0;
3064  fct_chk( ctr_drbg_init_entropy_len( &ctx, entropy_func, entropy, add_init, add_init_len, 32 ) == 0 );
3065 
3066  fct_chk( ctr_drbg_random_with_add( &ctx, buf, 16, add1, add1_len ) == 0 );
3067  fct_chk( ctr_drbg_reseed( &ctx, add_reseed, add_reseed_len ) == 0 );
3068  fct_chk( ctr_drbg_random_with_add( &ctx, buf, 16, add2, add2_len ) == 0 );
3069  hexify( output_str, buf, 16 );
3070  fct_chk( strcmp( (char *) output_str, "e6c73e159d73c2ba8950cd77acb39c10" ) == 0 );
3071  }
3072  FCT_TEST_END();
3073 
3074 
3075  FCT_TEST_BGN(ctr_drbg_nist_validation_aes_256_use_dffalse2561282560_2)
3076  {
3077  unsigned char entropy[512];
3078  unsigned char add_init[512];
3079  unsigned char add1[512];
3080  unsigned char add_reseed[512];
3081  unsigned char add2[512];
3082  ctr_drbg_context ctx;
3083  unsigned char buf[512];
3084  unsigned char output_str[512];
3085  int add_init_len, add1_len, add_reseed_len, add2_len;
3086 
3087  memset( output_str, 0, 512 );
3088 
3089  unhexify( entropy, "c662ed723e7041877542fdcf629533d4a74393eb4dae4f3ec06d2d1c0d37ed7f519609a8485cb8deb578ae4cbb45c98ef7f2f2e677363e89fb3744286db6bfc1" );
3090  add_init_len = unhexify( add_init, "fbbcc4abfd671296de3e0dcf409a139e35deae126c1941bf1afcc8d3da3a2d65f54a6d317bb6d683a3a77f6266b007ff" );
3091  add1_len = unhexify( add1, "" );
3092  add_reseed_len = unhexify( add_reseed, "" );
3093  add2_len = unhexify( add2, "" );
3094 
3095  test_offset = 0;
3096  fct_chk( ctr_drbg_init_entropy_len( &ctx, entropy_func, entropy, add_init, add_init_len, 32 ) == 0 );
3097 
3098  fct_chk( ctr_drbg_random_with_add( &ctx, buf, 16, add1, add1_len ) == 0 );
3099  fct_chk( ctr_drbg_reseed( &ctx, add_reseed, add_reseed_len ) == 0 );
3100  fct_chk( ctr_drbg_random_with_add( &ctx, buf, 16, add2, add2_len ) == 0 );
3101  hexify( output_str, buf, 16 );
3102  fct_chk( strcmp( (char *) output_str, "9d934d34417c6d0858f4a3faacbe759e" ) == 0 );
3103  }
3104  FCT_TEST_END();
3105 
3106 
3107  FCT_TEST_BGN(ctr_drbg_nist_validation_aes_256_use_dffalse2561282560_3)
3108  {
3109  unsigned char entropy[512];
3110  unsigned char add_init[512];
3111  unsigned char add1[512];
3112  unsigned char add_reseed[512];
3113  unsigned char add2[512];
3114  ctr_drbg_context ctx;
3115  unsigned char buf[512];
3116  unsigned char output_str[512];
3117  int add_init_len, add1_len, add_reseed_len, add2_len;
3118 
3119  memset( output_str, 0, 512 );
3120 
3121  unhexify( entropy, "c57a5686486ebacc2422236b19110c754795a869a8157901cf71303de1adc6af16a952190a395d6c20e155e690f41922f6f721dc8e93da81afb844f68714cba7" );
3122  add_init_len = unhexify( add_init, "1b824790b6b22b246bcc1bcfbbb61a76045476672f917b72e79cca358e650eb29ed49fb0a5739e097f5f5336d46fc619" );
3123  add1_len = unhexify( add1, "" );
3124  add_reseed_len = unhexify( add_reseed, "" );
3125  add2_len = unhexify( add2, "" );
3126 
3127  test_offset = 0;
3128  fct_chk( ctr_drbg_init_entropy_len( &ctx, entropy_func, entropy, add_init, add_init_len, 32 ) == 0 );
3129 
3130  fct_chk( ctr_drbg_random_with_add( &ctx, buf, 16, add1, add1_len ) == 0 );
3131  fct_chk( ctr_drbg_reseed( &ctx, add_reseed, add_reseed_len ) == 0 );
3132  fct_chk( ctr_drbg_random_with_add( &ctx, buf, 16, add2, add2_len ) == 0 );
3133  hexify( output_str, buf, 16 );
3134  fct_chk( strcmp( (char *) output_str, "13e7bf23d88f3bb5a5106a8227c8c456" ) == 0 );
3135  }
3136  FCT_TEST_END();
3137 
3138 
3139  FCT_TEST_BGN(ctr_drbg_nist_validation_aes_256_use_dffalse2561282560_4)
3140  {
3141  unsigned char entropy[512];
3142  unsigned char add_init[512];
3143  unsigned char add1[512];
3144  unsigned char add_reseed[512];
3145  unsigned char add2[512];
3146  ctr_drbg_context ctx;
3147  unsigned char buf[512];
3148  unsigned char output_str[512];
3149  int add_init_len, add1_len, add_reseed_len, add2_len;
3150 
3151  memset( output_str, 0, 512 );
3152 
3153  unhexify( entropy, "6a0873634094be7028b885c345cd5016295eec5e524f069de6510ae8ac843dba2cc05c10baa8aad75eac8e8d1a8570f4d2a3cf718914a199deb3edf8c993a822" );
3154  add_init_len = unhexify( add_init, "2ea7861e374232cb8ceecbbd9a18fc1f63c31f833fe394f1e19c8ef61092a56f28342fa5b591f7b951583d50c12ef081" );
3155  add1_len = unhexify( add1, "" );
3156  add_reseed_len = unhexify( add_reseed, "" );
3157  add2_len = unhexify( add2, "" );
3158 
3159  test_offset = 0;
3160  fct_chk( ctr_drbg_init_entropy_len( &ctx, entropy_func, entropy, add_init, add_init_len, 32 ) == 0 );
3161 
3162  fct_chk( ctr_drbg_random_with_add( &ctx, buf, 16, add1, add1_len ) == 0 );
3163  fct_chk( ctr_drbg_reseed( &ctx, add_reseed, add_reseed_len ) == 0 );
3164  fct_chk( ctr_drbg_random_with_add( &ctx, buf, 16, add2, add2_len ) == 0 );
3165  hexify( output_str, buf, 16 );
3166  fct_chk( strcmp( (char *) output_str, "c008f46a242ae0babad17268c9e0839a" ) == 0 );
3167  }
3168  FCT_TEST_END();
3169 
3170 
3171  FCT_TEST_BGN(ctr_drbg_nist_validation_aes_256_use_dffalse2561282560_5)
3172  {
3173  unsigned char entropy[512];
3174  unsigned char add_init[512];
3175  unsigned char add1[512];
3176  unsigned char add_reseed[512];
3177  unsigned char add2[512];
3178  ctr_drbg_context ctx;
3179  unsigned char buf[512];
3180  unsigned char output_str[512];
3181  int add_init_len, add1_len, add_reseed_len, add2_len;
3182 
3183  memset( output_str, 0, 512 );
3184 
3185  unhexify( entropy, "f2059f7fb797e8e22de14dac783c56942a33d092c1ab68a762528ae8d74b7ad0690694ede462edbd6527550677b6d080d80cdabe51c963d5d6830a4ae04c993f" );
3186  add_init_len = unhexify( add_init, "39caa986b82b5303d98e07b211ddc5ce89a67506095cad1aeed63b8bfe0d9c3d3c906f0c05cfb6b26bab4af7d03c9e1a" );
3187  add1_len = unhexify( add1, "" );
3188  add_reseed_len = unhexify( add_reseed, "" );
3189  add2_len = unhexify( add2, "" );
3190 
3191  test_offset = 0;
3192  fct_chk( ctr_drbg_init_entropy_len( &ctx, entropy_func, entropy, add_init, add_init_len, 32 ) == 0 );
3193 
3194  fct_chk( ctr_drbg_random_with_add( &ctx, buf, 16, add1, add1_len ) == 0 );
3195  fct_chk( ctr_drbg_reseed( &ctx, add_reseed, add_reseed_len ) == 0 );
3196  fct_chk( ctr_drbg_random_with_add( &ctx, buf, 16, add2, add2_len ) == 0 );
3197  hexify( output_str, buf, 16 );
3198  fct_chk( strcmp( (char *) output_str, "202d3b2870be8f29b518f2e3e52f1564" ) == 0 );
3199  }
3200  FCT_TEST_END();
3201 
3202 
3203  FCT_TEST_BGN(ctr_drbg_nist_validation_aes_256_use_dffalse2561282560_6)
3204  {
3205  unsigned char entropy[512];
3206  unsigned char add_init[512];
3207  unsigned char add1[512];
3208  unsigned char add_reseed[512];
3209  unsigned char add2[512];
3210  ctr_drbg_context ctx;
3211  unsigned char buf[512];
3212  unsigned char output_str[512];
3213  int add_init_len, add1_len, add_reseed_len, add2_len;
3214 
3215  memset( output_str, 0, 512 );
3216 
3217  unhexify( entropy, "0a03b7d026fab3773e9724dacb436197954b770eca3060535f2f8152aa136942915304dede1de0f5e89bd91d8e92531b5e39373013628fea4ee7622b9255d179" );
3218  add_init_len = unhexify( add_init, "a4e25102c1b04bafd66bfe1ce4a4b340797f776f54a2b3afe351eede44e75c28e3525155f837e7974269d398048c83c3" );
3219  add1_len = unhexify( add1, "" );
3220  add_reseed_len = unhexify( add_reseed, "" );
3221  add2_len = unhexify( add2, "" );
3222 
3223  test_offset = 0;
3224  fct_chk( ctr_drbg_init_entropy_len( &ctx, entropy_func, entropy, add_init, add_init_len, 32 ) == 0 );
3225 
3226  fct_chk( ctr_drbg_random_with_add( &ctx, buf, 16, add1, add1_len ) == 0 );
3227  fct_chk( ctr_drbg_reseed( &ctx, add_reseed, add_reseed_len ) == 0 );
3228  fct_chk( ctr_drbg_random_with_add( &ctx, buf, 16, add2, add2_len ) == 0 );
3229  hexify( output_str, buf, 16 );
3230  fct_chk( strcmp( (char *) output_str, "be21cab637218ddffa3510c86271db7f" ) == 0 );
3231  }
3232  FCT_TEST_END();
3233 
3234 
3235  FCT_TEST_BGN(ctr_drbg_nist_validation_aes_256_use_dffalse2561282560_7)
3236  {
3237  unsigned char entropy[512];
3238  unsigned char add_init[512];
3239  unsigned char add1[512];
3240  unsigned char add_reseed[512];
3241  unsigned char add2[512];
3242  ctr_drbg_context ctx;
3243  unsigned char buf[512];
3244  unsigned char output_str[512];
3245  int add_init_len, add1_len, add_reseed_len, add2_len;
3246 
3247  memset( output_str, 0, 512 );
3248 
3249  unhexify( entropy, "d88312da6acbe792d087012c0bf3c83f363fa6b7a9dd45c3501009fb47b4cfcfeb7b31386155fe3b967f46e2898a00ecf51ec38b6e420852bef0a16081d778cc" );
3250  add_init_len = unhexify( add_init, "6de33a116425ebfe01f0a0124ad3fad382ca28473f5fc53885639788f9b1a470ab523b649bad87e76dee768f6abacb55" );
3251  add1_len = unhexify( add1, "" );
3252  add_reseed_len = unhexify( add_reseed, "" );
3253  add2_len = unhexify( add2, "" );
3254 
3255  test_offset = 0;
3256  fct_chk( ctr_drbg_init_entropy_len( &ctx, entropy_func, entropy, add_init, add_init_len, 32 ) == 0 );
3257 
3258  fct_chk( ctr_drbg_random_with_add( &ctx, buf, 16, add1, add1_len ) == 0 );
3259  fct_chk( ctr_drbg_reseed( &ctx, add_reseed, add_reseed_len ) == 0 );
3260  fct_chk( ctr_drbg_random_with_add( &ctx, buf, 16, add2, add2_len ) == 0 );
3261  hexify( output_str, buf, 16 );
3262  fct_chk( strcmp( (char *) output_str, "2c285bfd758f0156e782bb4467f6832c" ) == 0 );
3263  }
3264  FCT_TEST_END();
3265 
3266 
3267  FCT_TEST_BGN(ctr_drbg_nist_validation_aes_256_use_dffalse2561282560_8)
3268  {
3269  unsigned char entropy[512];
3270  unsigned char add_init[512];
3271  unsigned char add1[512];
3272  unsigned char add_reseed[512];
3273  unsigned char add2[512];
3274  ctr_drbg_context ctx;
3275  unsigned char buf[512];
3276  unsigned char output_str[512];
3277  int add_init_len, add1_len, add_reseed_len, add2_len;
3278 
3279  memset( output_str, 0, 512 );
3280 
3281  unhexify( entropy, "6a7873ccb7afb140e923acbec8256fa78232f40c0c8ba3dcbcf7074d26d6d18a7e78fffda328f097706b6d358048ee6a4728c92a6f62b3f2730a753b7bf5ec1f" );
3282  add_init_len = unhexify( add_init, "b8ab42fd3f6306426602cae0c48eb02ffa7053940389900c17846e1d9726251762095383f2ec3406b3381d94a6d53dd8" );
3283  add1_len = unhexify( add1, "" );
3284  add_reseed_len = unhexify( add_reseed, "" );
3285  add2_len = unhexify( add2, "" );
3286 
3287  test_offset = 0;
3288  fct_chk( ctr_drbg_init_entropy_len( &ctx, entropy_func, entropy, add_init, add_init_len, 32 ) == 0 );
3289 
3290  fct_chk( ctr_drbg_random_with_add( &ctx, buf, 16, add1, add1_len ) == 0 );
3291  fct_chk( ctr_drbg_reseed( &ctx, add_reseed, add_reseed_len ) == 0 );
3292  fct_chk( ctr_drbg_random_with_add( &ctx, buf, 16, add2, add2_len ) == 0 );
3293  hexify( output_str, buf, 16 );
3294  fct_chk( strcmp( (char *) output_str, "13504a2b09474f90d2e9ef40d1f2d0d5" ) == 0 );
3295  }
3296  FCT_TEST_END();
3297 
3298 
3299  FCT_TEST_BGN(ctr_drbg_nist_validation_aes_256_use_dffalse2561282560_9)
3300  {
3301  unsigned char entropy[512];
3302  unsigned char add_init[512];
3303  unsigned char add1[512];
3304  unsigned char add_reseed[512];
3305  unsigned char add2[512];
3306  ctr_drbg_context ctx;
3307  unsigned char buf[512];
3308  unsigned char output_str[512];
3309  int add_init_len, add1_len, add_reseed_len, add2_len;
3310 
3311  memset( output_str, 0, 512 );
3312 
3313  unhexify( entropy, "31ba5f801aeaac790f2480fbd2373a76ba1685ebebc5ae7cd4844733ec3cfb112634b3899104dcc16050e1206f8b3fb787d43d54de2c804fd3d8eb98e512bb00" );
3314  add_init_len = unhexify( add_init, "042b524444b9903c1ecb80af21eef0e884115561a15a1ab2f9f3a322edcbf14174f54d315196a632940c2c6f56612c09" );
3315  add1_len = unhexify( add1, "" );
3316  add_reseed_len = unhexify( add_reseed, "" );
3317  add2_len = unhexify( add2, "" );
3318 
3319  test_offset = 0;
3320  fct_chk( ctr_drbg_init_entropy_len( &ctx, entropy_func, entropy, add_init, add_init_len, 32 ) == 0 );
3321 
3322  fct_chk( ctr_drbg_random_with_add( &ctx, buf, 16, add1, add1_len ) == 0 );
3323  fct_chk( ctr_drbg_reseed( &ctx, add_reseed, add_reseed_len ) == 0 );
3324  fct_chk( ctr_drbg_random_with_add( &ctx, buf, 16, add2, add2_len ) == 0 );
3325  hexify( output_str, buf, 16 );
3326  fct_chk( strcmp( (char *) output_str, "0a0484c14e7868178e68d6d5c5f57c5c" ) == 0 );
3327  }
3328  FCT_TEST_END();
3329 
3330 
3331  FCT_TEST_BGN(ctr_drbg_nist_validation_aes_256_use_dffalse2561282560_10)
3332  {
3333  unsigned char entropy[512];
3334  unsigned char add_init[512];
3335  unsigned char add1[512];
3336  unsigned char add_reseed[512];
3337  unsigned char add2[512];
3338  ctr_drbg_context ctx;
3339  unsigned char buf[512];
3340  unsigned char output_str[512];
3341  int add_init_len, add1_len, add_reseed_len, add2_len;
3342 
3343  memset( output_str, 0, 512 );
3344 
3345  unhexify( entropy, "46dc837620872a5ffa642399213b4eebfb28ca069c5eaaf2a636f5bd647de365c11402b10ecd7780c56d464f56b653e17af8550b90a54adb38173a0b2f9e2ea7" );
3346  add_init_len = unhexify( add_init, "632758f92efaca39615862177c267906ab0424230d481ee0a5aa1a5f66697d3918d4aab3f310b72a7f2d71c0a96b9247" );
3347  add1_len = unhexify( add1, "" );
3348  add_reseed_len = unhexify( add_reseed, "" );
3349  add2_len = unhexify( add2, "" );
3350 
3351  test_offset = 0;
3352  fct_chk( ctr_drbg_init_entropy_len( &ctx, entropy_func, entropy, add_init, add_init_len, 32 ) == 0 );
3353 
3354  fct_chk( ctr_drbg_random_with_add( &ctx, buf, 16, add1, add1_len ) == 0 );
3355  fct_chk( ctr_drbg_reseed( &ctx, add_reseed, add_reseed_len ) == 0 );
3356  fct_chk( ctr_drbg_random_with_add( &ctx, buf, 16, add2, add2_len ) == 0 );
3357  hexify( output_str, buf, 16 );
3358  fct_chk( strcmp( (char *) output_str, "90432ce3f7b580961abecde259aa5af6" ) == 0 );
3359  }
3360  FCT_TEST_END();
3361 
3362 
3363  FCT_TEST_BGN(ctr_drbg_nist_validation_aes_256_use_dffalse2561282560_11)
3364  {
3365  unsigned char entropy[512];
3366  unsigned char add_init[512];
3367  unsigned char add1[512];
3368  unsigned char add_reseed[512];
3369  unsigned char add2[512];
3370  ctr_drbg_context ctx;
3371  unsigned char buf[512];
3372  unsigned char output_str[512];
3373  int add_init_len, add1_len, add_reseed_len, add2_len;
3374 
3375  memset( output_str, 0, 512 );
3376 
3377  unhexify( entropy, "76e92e9f00fc7d0c525c48739a8b3601c51f8f5996117a7e07497afee36829636e714dbcb84c8f8d57e0850a361a5bdfc21084a1c30fb7797ce6280e057309b7" );
3378  add_init_len = unhexify( add_init, "7b389118af3d0f8336b41cf58c2d810f0e5f9940703fd56a46c10a315fb09aafd7670c9e96ffa61e0cb750cb2aa6a7fe" );
3379  add1_len = unhexify( add1, "" );
3380  add_reseed_len = unhexify( add_reseed, "" );
3381  add2_len = unhexify( add2, "" );
3382 
3383  test_offset = 0;
3384  fct_chk( ctr_drbg_init_entropy_len( &ctx, entropy_func, entropy, add_init, add_init_len, 32 ) == 0 );
3385 
3386  fct_chk( ctr_drbg_random_with_add( &ctx, buf, 16, add1, add1_len ) == 0 );
3387  fct_chk( ctr_drbg_reseed( &ctx, add_reseed, add_reseed_len ) == 0 );
3388  fct_chk( ctr_drbg_random_with_add( &ctx, buf, 16, add2, add2_len ) == 0 );
3389  hexify( output_str, buf, 16 );
3390  fct_chk( strcmp( (char *) output_str, "7243964051082c0617e200fcbbe7ff45" ) == 0 );
3391  }
3392  FCT_TEST_END();
3393 
3394 
3395  FCT_TEST_BGN(ctr_drbg_nist_validation_aes_256_use_dffalse2561282560_12)
3396  {
3397  unsigned char entropy[512];
3398  unsigned char add_init[512];
3399  unsigned char add1[512];
3400  unsigned char add_reseed[512];
3401  unsigned char add2[512];
3402  ctr_drbg_context ctx;
3403  unsigned char buf[512];
3404  unsigned char output_str[512];
3405  int add_init_len, add1_len, add_reseed_len, add2_len;
3406 
3407  memset( output_str, 0, 512 );
3408 
3409  unhexify( entropy, "c9aa4739011c60f8e99db0580b3cad4269874d1dda1c81ffa872f01669e8f75215aaad1ccc301c12f90cd240bf99ad42bb06965afb0aa2bd3fcb681c710aa375" );
3410  add_init_len = unhexify( add_init, "e50d38434e9dfe3601e7ea1765d9fe777d467d9918974b5599ec19f42d7054b70ff6db63a3403d2fd09333eda17a5e76" );
3411  add1_len = unhexify( add1, "" );
3412  add_reseed_len = unhexify( add_reseed, "" );
3413  add2_len = unhexify( add2, "" );
3414 
3415  test_offset = 0;
3416  fct_chk( ctr_drbg_init_entropy_len( &ctx, entropy_func, entropy, add_init, add_init_len, 32 ) == 0 );
3417 
3418  fct_chk( ctr_drbg_random_with_add( &ctx, buf, 16, add1, add1_len ) == 0 );
3419  fct_chk( ctr_drbg_reseed( &ctx, add_reseed, add_reseed_len ) == 0 );
3420  fct_chk( ctr_drbg_random_with_add( &ctx, buf, 16, add2, add2_len ) == 0 );
3421  hexify( output_str, buf, 16 );
3422  fct_chk( strcmp( (char *) output_str, "28499495c94c6ceec1bd494e364ad97c" ) == 0 );
3423  }
3424  FCT_TEST_END();
3425 
3426 
3427  FCT_TEST_BGN(ctr_drbg_nist_validation_aes_256_use_dffalse2561282560_13)
3428  {
3429  unsigned char entropy[512];
3430  unsigned char add_init[512];
3431  unsigned char add1[512];
3432  unsigned char add_reseed[512];
3433  unsigned char add2[512];
3434  ctr_drbg_context ctx;
3435  unsigned char buf[512];
3436  unsigned char output_str[512];
3437  int add_init_len, add1_len, add_reseed_len, add2_len;
3438 
3439  memset( output_str, 0, 512 );
3440 
3441  unhexify( entropy, "b06960a92d32a9e9658d9800de87a3800f3595e173fdc46bef22966264953672e2d7c638cc7b1cada747026726baf6cea4c64ba956be8bb1d1801158bee5e5d4" );
3442  add_init_len = unhexify( add_init, "3253cb074d610db602b0a0d2836df1f20c3ee162d80b90b31660bb86ef3f0789fa857af4f45a5897bdd73c2295f879b6" );
3443  add1_len = unhexify( add1, "" );
3444  add_reseed_len = unhexify( add_reseed, "" );
3445  add2_len = unhexify( add2, "" );
3446 
3447  test_offset = 0;
3448  fct_chk( ctr_drbg_init_entropy_len( &ctx, entropy_func, entropy, add_init, add_init_len, 32 ) == 0 );
3449 
3450  fct_chk( ctr_drbg_random_with_add( &ctx, buf, 16, add1, add1_len ) == 0 );
3451  fct_chk( ctr_drbg_reseed( &ctx, add_reseed, add_reseed_len ) == 0 );
3452  fct_chk( ctr_drbg_random_with_add( &ctx, buf, 16, add2, add2_len ) == 0 );
3453  hexify( output_str, buf, 16 );
3454  fct_chk( strcmp( (char *) output_str, "b6608d6e5fcb4591a718f9149b79f8f1" ) == 0 );
3455  }
3456  FCT_TEST_END();
3457 
3458 
3459  FCT_TEST_BGN(ctr_drbg_nist_validation_aes_256_use_dffalse2561282560_14)
3460  {
3461  unsigned char entropy[512];
3462  unsigned char add_init[512];
3463  unsigned char add1[512];
3464  unsigned char add_reseed[512];
3465  unsigned char add2[512];
3466  ctr_drbg_context ctx;
3467  unsigned char buf[512];
3468  unsigned char output_str[512];
3469  int add_init_len, add1_len, add_reseed_len, add2_len;
3470 
3471  memset( output_str, 0, 512 );
3472 
3473  unhexify( entropy, "0e0105b12af35ac87cb23cf9ca8fb6a44307c3dcdc5bc890eb5253f4034c1533392a1760c98ba30d7751af93dd865d4bd66fbbeb215d7ff239b700527247775d" );
3474  add_init_len = unhexify( add_init, "83e4733566f90c8d69e6bcbe9fb52521ff3e26f806d9b7b86e9344cca0305dbf106de855240f1d35492cc6d651b8b6ae" );
3475  add1_len = unhexify( add1, "" );
3476  add_reseed_len = unhexify( add_reseed, "" );
3477  add2_len = unhexify( add2, "" );
3478 
3479  test_offset = 0;
3480  fct_chk( ctr_drbg_init_entropy_len( &ctx, entropy_func, entropy, add_init, add_init_len, 32 ) == 0 );
3481 
3482  fct_chk( ctr_drbg_random_with_add( &ctx, buf, 16, add1, add1_len ) == 0 );
3483  fct_chk( ctr_drbg_reseed( &ctx, add_reseed, add_reseed_len ) == 0 );
3484  fct_chk( ctr_drbg_random_with_add( &ctx, buf, 16, add2, add2_len ) == 0 );
3485  hexify( output_str, buf, 16 );
3486  fct_chk( strcmp( (char *) output_str, "68d64d1522c09a859b9b85b528d0d912" ) == 0 );
3487  }
3488  FCT_TEST_END();
3489 
3490 
3491  FCT_TEST_BGN(ctr_drbg_nist_validation_aes_256_use_dffalse256128256256_0)
3492  {
3493  unsigned char entropy[512];
3494  unsigned char add_init[512];
3495  unsigned char add1[512];
3496  unsigned char add_reseed[512];
3497  unsigned char add2[512];
3498  ctr_drbg_context ctx;
3499  unsigned char buf[512];
3500  unsigned char output_str[512];
3501  int add_init_len, add1_len, add_reseed_len, add2_len;
3502 
3503  memset( output_str, 0, 512 );
3504 
3505  unhexify( entropy, "a53e371017439193591e475087aaddd5c1c386cdca0ddb68e002d80fdc401a47dd40e5987b2716731568d276bf0c6715757903d3dede914642ddd467c879c81e" );
3506  add_init_len = unhexify( add_init, "a94da55afdc50ce51c9a3b8a4c4484408b52a24a93c34ea71e1ca705eb829ba65de4d4e07fa3d86b37845ff1c7d5f6d2" );
3507  add1_len = unhexify( add1, "20f422edf85ca16a01cfbe5f8d6c947fae12a857db2aa9bfc7b36581808d0d46" );
3508  add_reseed_len = unhexify( add_reseed, "7fd81fbd2ab51c115d834e99f65ca54020ed388ed59ee07593fe125e5d73fb75" );
3509  add2_len = unhexify( add2, "cd2cff14693e4c9efdfe260de986004930bab1c65057772a62392c3b74ebc90d" );
3510 
3511  test_offset = 0;
3512  fct_chk( ctr_drbg_init_entropy_len( &ctx, entropy_func, entropy, add_init, add_init_len, 32 ) == 0 );
3513 
3514  fct_chk( ctr_drbg_random_with_add( &ctx, buf, 16, add1, add1_len ) == 0 );
3515  fct_chk( ctr_drbg_reseed( &ctx, add_reseed, add_reseed_len ) == 0 );
3516  fct_chk( ctr_drbg_random_with_add( &ctx, buf, 16, add2, add2_len ) == 0 );
3517  hexify( output_str, buf, 16 );
3518  fct_chk( strcmp( (char *) output_str, "4f78beb94d978ce9d097feadfafd355e" ) == 0 );
3519  }
3520  FCT_TEST_END();
3521 
3522 
3523  FCT_TEST_BGN(ctr_drbg_nist_validation_aes_256_use_dffalse256128256256_1)
3524  {
3525  unsigned char entropy[512];
3526  unsigned char add_init[512];
3527  unsigned char add1[512];
3528  unsigned char add_reseed[512];
3529  unsigned char add2[512];
3530  ctr_drbg_context ctx;
3531  unsigned char buf[512];
3532  unsigned char output_str[512];
3533  int add_init_len, add1_len, add_reseed_len, add2_len;
3534 
3535  memset( output_str, 0, 512 );
3536 
3537  unhexify( entropy, "78d7d65c457218a63e2eb1eba287f121c5466728ac4f963aeaabf593b9d72b6376daea6436e55415ad097dee10c40a1ff61fca1c30b8ab51ed11ff090d19ef9a" );
3538  add_init_len = unhexify( add_init, "e8649d4f86b3de85fe39ff04d7afe6e4dd00770931330b27e975a7b1e7b5206ee2f247d50401a372c3a27197fec5da46" );
3539  add1_len = unhexify( add1, "cc57adc98b2540664403ad6fd50c9042f0bf0e0b54ed33584ee189e072d0fb8f" );
3540  add_reseed_len = unhexify( add_reseed, "ab2f99e2d983aa8dd05336a090584f4f84d485a4763e00ced42ddda72483cd84" );
3541  add2_len = unhexify( add2, "0ecd7680e2e9f0250a43e28f2f8936d7ef16f45d79c0fa3f69e4fafce4aeb362" );
3542 
3543  test_offset = 0;
3544  fct_chk( ctr_drbg_init_entropy_len( &ctx, entropy_func, entropy, add_init, add_init_len, 32 ) == 0 );
3545 
3546  fct_chk( ctr_drbg_random_with_add( &ctx, buf, 16, add1, add1_len ) == 0 );
3547  fct_chk( ctr_drbg_reseed( &ctx, add_reseed, add_reseed_len ) == 0 );
3548  fct_chk( ctr_drbg_random_with_add( &ctx, buf, 16, add2, add2_len ) == 0 );
3549  hexify( output_str, buf, 16 );
3550  fct_chk( strcmp( (char *) output_str, "08e38625611bb0fb844f43439550bd7a" ) == 0 );
3551  }
3552  FCT_TEST_END();
3553 
3554 
3555  FCT_TEST_BGN(ctr_drbg_nist_validation_aes_256_use_dffalse256128256256_2)
3556  {
3557  unsigned char entropy[512];
3558  unsigned char add_init[512];
3559  unsigned char add1[512];
3560  unsigned char add_reseed[512];
3561  unsigned char add2[512];
3562  ctr_drbg_context ctx;
3563  unsigned char buf[512];
3564  unsigned char output_str[512];
3565  int add_init_len, add1_len, add_reseed_len, add2_len;
3566 
3567  memset( output_str, 0, 512 );
3568 
3569  unhexify( entropy, "c78ff6b9fc91cbce246c9fcc2366d5f7dd6d99fb1325d8997f36819232d5fcd12ccafdcbefd01409d90acd0e0ffb7427c820b2d729fe7e845e6a6168fc1af0b5" );
3570  add_init_len = unhexify( add_init, "6c79e1556889b3c074fc083a120d73784b888c5acb877899f17ce52e424b84178d144441aa9f328c730a951b02b048df" );
3571  add1_len = unhexify( add1, "60cba10826de22c5e85d06357de63d6b2ff0719694dafca6ab33283f3a4aacdd" );
3572  add_reseed_len = unhexify( add_reseed, "8943c22fb68b30811790a99b9cbb056e1a2c329185a199c76ba5aeceb2fcd769" );
3573  add2_len = unhexify( add2, "70671a50e8387bf232989d904c19215c7535ad2d0c5dec30a744c8d2706be6ec" );
3574 
3575  test_offset = 0;
3576  fct_chk( ctr_drbg_init_entropy_len( &ctx, entropy_func, entropy, add_init, add_init_len, 32 ) == 0 );
3577 
3578  fct_chk( ctr_drbg_random_with_add( &ctx, buf, 16, add1, add1_len ) == 0 );
3579  fct_chk( ctr_drbg_reseed( &ctx, add_reseed, add_reseed_len ) == 0 );
3580  fct_chk( ctr_drbg_random_with_add( &ctx, buf, 16, add2, add2_len ) == 0 );
3581  hexify( output_str, buf, 16 );
3582  fct_chk( strcmp( (char *) output_str, "f6b94b671cae8dfa8387719bfd75ee84" ) == 0 );
3583  }
3584  FCT_TEST_END();
3585 
3586 
3587  FCT_TEST_BGN(ctr_drbg_nist_validation_aes_256_use_dffalse256128256256_3)
3588  {
3589  unsigned char entropy[512];
3590  unsigned char add_init[512];
3591  unsigned char add1[512];
3592  unsigned char add_reseed[512];
3593  unsigned char add2[512];
3594  ctr_drbg_context ctx;
3595  unsigned char buf[512];
3596  unsigned char output_str[512];
3597  int add_init_len, add1_len, add_reseed_len, add2_len;
3598 
3599  memset( output_str, 0, 512 );
3600 
3601  unhexify( entropy, "21a21c9314b37d4ade4a50a5d85995e0be07e358ed9bca19daa867a8d47847105dca7a424f32f715adb8fea5d3a41cfe388872a42ab18aa5cbcd7bde4adc3f8b" );
3602  add_init_len = unhexify( add_init, "f5ab77b2a8e370548b88febfd79772144cd5fc8d78062582addd4ff1e5c10094b390e66b3c4efb087510de1b9d25703f" );
3603  add1_len = unhexify( add1, "023d582569a7ff1405e44cf09ceebb9d3254eef72286e4b87e6577a8ab091a06" );
3604  add_reseed_len = unhexify( add_reseed, "39597519872d49fbd186704241ba1dc10b1f84f9296fb61d597dbd655a18f997" );
3605  add2_len = unhexify( add2, "3091c9fe96109b41da63aa5fa00d716b5fa20e96d4f3e0f9c97666a706fa56f1" );
3606 
3607  test_offset = 0;
3608  fct_chk( ctr_drbg_init_entropy_len( &ctx, entropy_func, entropy, add_init, add_init_len, 32 ) == 0 );
3609 
3610  fct_chk( ctr_drbg_random_with_add( &ctx, buf, 16, add1, add1_len ) == 0 );
3611  fct_chk( ctr_drbg_reseed( &ctx, add_reseed, add_reseed_len ) == 0 );
3612  fct_chk( ctr_drbg_random_with_add( &ctx, buf, 16, add2, add2_len ) == 0 );
3613  hexify( output_str, buf, 16 );
3614  fct_chk( strcmp( (char *) output_str, "1fb57058b3ba8751df5a99f018798983" ) == 0 );
3615  }
3616  FCT_TEST_END();
3617 
3618 
3619  FCT_TEST_BGN(ctr_drbg_nist_validation_aes_256_use_dffalse256128256256_4)
3620  {
3621  unsigned char entropy[512];
3622  unsigned char add_init[512];
3623  unsigned char add1[512];
3624  unsigned char add_reseed[512];
3625  unsigned char add2[512];
3626  ctr_drbg_context ctx;
3627  unsigned char buf[512];
3628  unsigned char output_str[512];
3629  int add_init_len, add1_len, add_reseed_len, add2_len;
3630 
3631  memset( output_str, 0, 512 );
3632 
3633  unhexify( entropy, "192054dddac02157a35eb7f75ae8ebdb43d6b969e33942fb16ff06cd6d8a602506c41e4e743b8230e8239b71b31b2d5e3614e3a65d79e91d5b9fc9d2a66f8553" );
3634  add_init_len = unhexify( add_init, "f0b79e292d0e393e78b6d6117e06d2e725823fe35bde1146502967a78d99d6bca564f0e2f324272f968be5baab4aeb29" );
3635  add1_len = unhexify( add1, "b12241e90d80f129004287c5b9911a70f7159794e6f9c1023b3b68da9237e8b7" );
3636  add_reseed_len = unhexify( add_reseed, "59e9c3c0f90e91f22c35a3be0c65f16157c569c7e3c78a545d9840f648c60069" );
3637  add2_len = unhexify( add2, "089a59af69f47ddb4191bd27720bb4c29216f738c48c0e14d2b8afd68de63c17" );
3638 
3639  test_offset = 0;
3640  fct_chk( ctr_drbg_init_entropy_len( &ctx, entropy_func, entropy, add_init, add_init_len, 32 ) == 0 );
3641 
3642  fct_chk( ctr_drbg_random_with_add( &ctx, buf, 16, add1, add1_len ) == 0 );
3643  fct_chk( ctr_drbg_reseed( &ctx, add_reseed, add_reseed_len ) == 0 );
3644  fct_chk( ctr_drbg_random_with_add( &ctx, buf, 16, add2, add2_len ) == 0 );
3645  hexify( output_str, buf, 16 );
3646  fct_chk( strcmp( (char *) output_str, "15287156e544617529e7eede4aa9c70e" ) == 0 );
3647  }
3648  FCT_TEST_END();
3649 
3650 
3651  FCT_TEST_BGN(ctr_drbg_nist_validation_aes_256_use_dffalse256128256256_5)
3652  {
3653  unsigned char entropy[512];
3654  unsigned char add_init[512];
3655  unsigned char add1[512];
3656  unsigned char add_reseed[512];
3657  unsigned char add2[512];
3658  ctr_drbg_context ctx;
3659  unsigned char buf[512];
3660  unsigned char output_str[512];
3661  int add_init_len, add1_len, add_reseed_len, add2_len;
3662 
3663  memset( output_str, 0, 512 );
3664 
3665  unhexify( entropy, "ef081af1f62400a3d193969d689a40234998afb646d99a7c4b9cbbf47e650cda93a90e754a16fffa25fc2a2edab09720b4520c47309ec4f6d9f76f0162af6cae" );
3666  add_init_len = unhexify( add_init, "e3f33843aecb35d01001ff92ab9a0f1a5431ba9de3e4f3247cda8c62acc86f7066448f639d8ba8b5249337f8c353bbbd" );
3667  add1_len = unhexify( add1, "e7cc55b72862544a8661b5034e15587b1e5a45eb5dc744f5fa1db9b267f1c3ff" );
3668  add_reseed_len = unhexify( add_reseed, "882d30c888eb8e344b1d17057074606fe232ceb42eb71055264ede7bb638f2a2" );
3669  add2_len = unhexify( add2, "9ce65e95c1e735fe950e52c324e7551403d0ef70ad865bd31fef1e22b129fdd6" );
3670 
3671  test_offset = 0;
3672  fct_chk( ctr_drbg_init_entropy_len( &ctx, entropy_func, entropy, add_init, add_init_len, 32 ) == 0 );
3673 
3674  fct_chk( ctr_drbg_random_with_add( &ctx, buf, 16, add1, add1_len ) == 0 );
3675  fct_chk( ctr_drbg_reseed( &ctx, add_reseed, add_reseed_len ) == 0 );
3676  fct_chk( ctr_drbg_random_with_add( &ctx, buf, 16, add2, add2_len ) == 0 );
3677  hexify( output_str, buf, 16 );
3678  fct_chk( strcmp( (char *) output_str, "205e3a53367c4a5183be74bb875fa717" ) == 0 );
3679  }
3680  FCT_TEST_END();
3681 
3682 
3683  FCT_TEST_BGN(ctr_drbg_nist_validation_aes_256_use_dffalse256128256256_6)
3684  {
3685  unsigned char entropy[512];
3686  unsigned char add_init[512];
3687  unsigned char add1[512];
3688  unsigned char add_reseed[512];
3689  unsigned char add2[512];
3690  ctr_drbg_context ctx;
3691  unsigned char buf[512];
3692  unsigned char output_str[512];
3693  int add_init_len, add1_len, add_reseed_len, add2_len;
3694 
3695  memset( output_str, 0, 512 );
3696 
3697  unhexify( entropy, "fae3d554d12a14e29de1b622922f27559559ca1518c9f800375a37a212e8b9a653cc3700223e9404d5bf781d15fccf638050a1394592caba001cfc65d61ef90b" );
3698  add_init_len = unhexify( add_init, "f30a18d597d8591a22dee908de95c5af74884b025f39b4f6707d28447d9d0a3114a57bc2d9eed8e621ec75e8ce389a16" );
3699  add1_len = unhexify( add1, "54240edd89016ed27e3bb3977a206836f5ef1fba0f000af95337d79caca9cf71" );
3700  add_reseed_len = unhexify( add_reseed, "250611e51852d933ff1a177b509c05e3228cb9f46dfb7b26848a68aad2ce4779" );
3701  add2_len = unhexify( add2, "f8b602d89fa1a0bfb31d0bd49246b458200a1adb28b64a68f7c197f335d69706" );
3702 
3703  test_offset = 0;
3704  fct_chk( ctr_drbg_init_entropy_len( &ctx, entropy_func, entropy, add_init, add_init_len, 32 ) == 0 );
3705 
3706  fct_chk( ctr_drbg_random_with_add( &ctx, buf, 16, add1, add1_len ) == 0 );
3707  fct_chk( ctr_drbg_reseed( &ctx, add_reseed, add_reseed_len ) == 0 );
3708  fct_chk( ctr_drbg_random_with_add( &ctx, buf, 16, add2, add2_len ) == 0 );
3709  hexify( output_str, buf, 16 );
3710  fct_chk( strcmp( (char *) output_str, "7b63bfb325bafe7d9ef342cd14ea40a4" ) == 0 );
3711  }
3712  FCT_TEST_END();
3713 
3714 
3715  FCT_TEST_BGN(ctr_drbg_nist_validation_aes_256_use_dffalse256128256256_7)
3716  {
3717  unsigned char entropy[512];
3718  unsigned char add_init[512];
3719  unsigned char add1[512];
3720  unsigned char add_reseed[512];
3721  unsigned char add2[512];
3722  ctr_drbg_context ctx;
3723  unsigned char buf[512];
3724  unsigned char output_str[512];
3725  int add_init_len, add1_len, add_reseed_len, add2_len;
3726 
3727  memset( output_str, 0, 512 );
3728 
3729  unhexify( entropy, "8e60115b4af9c8e5606223792539e9ba87e9ef46cd16fcc09046db1ef8d3c036241cae5d61141711818e9e861dbd833632069ebf5af1bd6d4e513f059ab1efd3" );
3730  add_init_len = unhexify( add_init, "c8dbc3d39beb612811c52e2b46ef76d2b7bd5d3a90ceddf9fb864fe6f44e36687d88158d61014e192f9a3cd474338e13" );
3731  add1_len = unhexify( add1, "9b56eba0838457f736fc5efa2cfbe698908340f07d4680e279d21dd530fdc8c8" );
3732  add_reseed_len = unhexify( add_reseed, "62c47ece469a7a409e4b2b76d1c793aaf11654e177cc8bf63faff3e6c5a5395c" );
3733  add2_len = unhexify( add2, "4251597013d0c949c53bbd945477b78aa91baa95f1ff757c3a039ccc4e1f4789" );
3734 
3735  test_offset = 0;
3736  fct_chk( ctr_drbg_init_entropy_len( &ctx, entropy_func, entropy, add_init, add_init_len, 32 ) == 0 );
3737 
3738  fct_chk( ctr_drbg_random_with_add( &ctx, buf, 16, add1, add1_len ) == 0 );
3739  fct_chk( ctr_drbg_reseed( &ctx, add_reseed, add_reseed_len ) == 0 );
3740  fct_chk( ctr_drbg_random_with_add( &ctx, buf, 16, add2, add2_len ) == 0 );
3741  hexify( output_str, buf, 16 );
3742  fct_chk( strcmp( (char *) output_str, "af2f37160940f0cc27d144a043ddf79b" ) == 0 );
3743  }
3744  FCT_TEST_END();
3745 
3746 
3747  FCT_TEST_BGN(ctr_drbg_nist_validation_aes_256_use_dffalse256128256256_8)
3748  {
3749  unsigned char entropy[512];
3750  unsigned char add_init[512];
3751  unsigned char add1[512];
3752  unsigned char add_reseed[512];
3753  unsigned char add2[512];
3754  ctr_drbg_context ctx;
3755  unsigned char buf[512];
3756  unsigned char output_str[512];
3757  int add_init_len, add1_len, add_reseed_len, add2_len;
3758 
3759  memset( output_str, 0, 512 );
3760 
3761  unhexify( entropy, "95da91f4185b254322ef0fc852473a9b9e4c274b242ded8a4eae6f1e2badde0664cf57f2128aa3dc83e436f7e80928a01d93bf25011eedf0190d0bf3619cd555" );
3762  add_init_len = unhexify( add_init, "a37f9ed6c4e8f74ff16046b0678ef7bd24fcdca247b771ea1ce1fd48e3f5d2067e38aaf64ec59f1f49d96fa85e60ef03" );
3763  add1_len = unhexify( add1, "b4a22f5598f79d34f0b9600763c081b0200ba489da7028ad0283828545c6d594" );
3764  add_reseed_len = unhexify( add_reseed, "fa3edc0962b20a9d9e1d0afcad907c8097c21d7a65c0e47c63d65cea94bf43bd" );
3765  add2_len = unhexify( add2, "49ba791a227e9e391e04225ad67f43f64754daac0b0bb4c6db77320943231ec3" );
3766 
3767  test_offset = 0;
3768  fct_chk( ctr_drbg_init_entropy_len( &ctx, entropy_func, entropy, add_init, add_init_len, 32 ) == 0 );
3769 
3770  fct_chk( ctr_drbg_random_with_add( &ctx, buf, 16, add1, add1_len ) == 0 );
3771  fct_chk( ctr_drbg_reseed( &ctx, add_reseed, add_reseed_len ) == 0 );
3772  fct_chk( ctr_drbg_random_with_add( &ctx, buf, 16, add2, add2_len ) == 0 );
3773  hexify( output_str, buf, 16 );
3774  fct_chk( strcmp( (char *) output_str, "32f313ded225289793c14a71d1d32c9f" ) == 0 );
3775  }
3776  FCT_TEST_END();
3777 
3778 
3779  FCT_TEST_BGN(ctr_drbg_nist_validation_aes_256_use_dffalse256128256256_9)
3780  {
3781  unsigned char entropy[512];
3782  unsigned char add_init[512];
3783  unsigned char add1[512];
3784  unsigned char add_reseed[512];
3785  unsigned char add2[512];
3786  ctr_drbg_context ctx;
3787  unsigned char buf[512];
3788  unsigned char output_str[512];
3789  int add_init_len, add1_len, add_reseed_len, add2_len;
3790 
3791  memset( output_str, 0, 512 );
3792 
3793  unhexify( entropy, "f22dd3517350176e35e1b7ecc8c00bea4747f0ac17bda1b1ddf8cdf7be53ff8c326268366e89cf3b023a9646177a0dcca902f0c98bf3840c9cbdf5c0494bee3c" );
3794  add_init_len = unhexify( add_init, "87f85b9c19eba1d953b6613cf555c21bc74428d9a8fee15e6cd717e240506f3e80860423973a66c61820d4ce1c6bb77d" );
3795  add1_len = unhexify( add1, "611caa00f93d4456fd2abb90de4dbcd934afbf1a56c2c4633b704c998f649960" );
3796  add_reseed_len = unhexify( add_reseed, "cba68367dc2fc92250e23e2b1a547fb3231b2beaab5e5a2ee39c5c74c9bab5f5" );
3797  add2_len = unhexify( add2, "f4895c9653b44a96152b893b7c94db80057fb67824d61c5c4186b9d8f16d3d98" );
3798 
3799  test_offset = 0;
3800  fct_chk( ctr_drbg_init_entropy_len( &ctx, entropy_func, entropy, add_init, add_init_len, 32 ) == 0 );
3801 
3802  fct_chk( ctr_drbg_random_with_add( &ctx, buf, 16, add1, add1_len ) == 0 );
3803  fct_chk( ctr_drbg_reseed( &ctx, add_reseed, add_reseed_len ) == 0 );
3804  fct_chk( ctr_drbg_random_with_add( &ctx, buf, 16, add2, add2_len ) == 0 );
3805  hexify( output_str, buf, 16 );
3806  fct_chk( strcmp( (char *) output_str, "a05de6531a1aa1b2ba3faea8ad6ac209" ) == 0 );
3807  }
3808  FCT_TEST_END();
3809 
3810 
3811  FCT_TEST_BGN(ctr_drbg_nist_validation_aes_256_use_dffalse256128256256_10)
3812  {
3813  unsigned char entropy[512];
3814  unsigned char add_init[512];
3815  unsigned char add1[512];
3816  unsigned char add_reseed[512];
3817  unsigned char add2[512];
3818  ctr_drbg_context ctx;
3819  unsigned char buf[512];
3820  unsigned char output_str[512];
3821  int add_init_len, add1_len, add_reseed_len, add2_len;
3822 
3823  memset( output_str, 0, 512 );
3824 
3825  unhexify( entropy, "bba34e6f4ee27e5d4e885e59f8bbb0dc7353a8912e66637d7515a66e5398d9a8cbd328fed32f71bdd34c73cdf97e0d211be6dabfb0144e1011fd136cf01ea4e4" );
3826  add_init_len = unhexify( add_init, "9670deb707caabc888a3b0df7270942934732e02be728a4bedb5fc9ca4d675b2f3b47c7132c364ce6292cef7c19b60c7" );
3827  add1_len = unhexify( add1, "9f55da36babd6ea42082f5f5d4330f023440bb864f8ad5498a29cf89757eaeab" );
3828  add_reseed_len = unhexify( add_reseed, "8013a309058c91c80f4d966f98bce1d4291003ad547e915777a3fce8ae2eaf77" );
3829  add2_len = unhexify( add2, "c83106272d44e832e94c7096c9c11f6342e12ec06d5db336424af73d12451406" );
3830 
3831  test_offset = 0;
3832  fct_chk( ctr_drbg_init_entropy_len( &ctx, entropy_func, entropy, add_init, add_init_len, 32 ) == 0 );
3833 
3834  fct_chk( ctr_drbg_random_with_add( &ctx, buf, 16, add1, add1_len ) == 0 );
3835  fct_chk( ctr_drbg_reseed( &ctx, add_reseed, add_reseed_len ) == 0 );
3836  fct_chk( ctr_drbg_random_with_add( &ctx, buf, 16, add2, add2_len ) == 0 );
3837  hexify( output_str, buf, 16 );
3838  fct_chk( strcmp( (char *) output_str, "bc8d4d00609662c1163dca930901821d" ) == 0 );
3839  }
3840  FCT_TEST_END();
3841 
3842 
3843  FCT_TEST_BGN(ctr_drbg_nist_validation_aes_256_use_dffalse256128256256_11)
3844  {
3845  unsigned char entropy[512];
3846  unsigned char add_init[512];
3847  unsigned char add1[512];
3848  unsigned char add_reseed[512];
3849  unsigned char add2[512];
3850  ctr_drbg_context ctx;
3851  unsigned char buf[512];
3852  unsigned char output_str[512];
3853  int add_init_len, add1_len, add_reseed_len, add2_len;
3854 
3855  memset( output_str, 0, 512 );
3856 
3857  unhexify( entropy, "ed0e524ed2990ef348dbb15b3f964b12ad3109978d6952ae193b21e94510a47406926620798e71a0ffcbdd2e54ec45509d784a8bfc9d59cb733f9f11fc474b5e" );
3858  add_init_len = unhexify( add_init, "6d984c8ab923a7e118447fd53ad287b8f01d1e6112cff12bfb338ecd3ed16bafdd634677c600bdd68f852a946f45c3d9" );
3859  add1_len = unhexify( add1, "0a3a32260d04dd7a82fb0873ecae7db5e5a4b6a51b09f4bf8a989e1afacbda3b" );
3860  add_reseed_len = unhexify( add_reseed, "3cbcabb83aab5a3e54836bbf12d3a7862a18e2dffeeb8bdd5770936d61fd839a" );
3861  add2_len = unhexify( add2, "f63b30a3efc0273eba03bf3cf90b1e4ac20b00e53a317dbf77b0fe70960e7c60" );
3862 
3863  test_offset = 0;
3864  fct_chk( ctr_drbg_init_entropy_len( &ctx, entropy_func, entropy, add_init, add_init_len, 32 ) == 0 );
3865 
3866  fct_chk( ctr_drbg_random_with_add( &ctx, buf, 16, add1, add1_len ) == 0 );
3867  fct_chk( ctr_drbg_reseed( &ctx, add_reseed, add_reseed_len ) == 0 );
3868  fct_chk( ctr_drbg_random_with_add( &ctx, buf, 16, add2, add2_len ) == 0 );
3869  hexify( output_str, buf, 16 );
3870  fct_chk( strcmp( (char *) output_str, "ab9af144e8fad6a978a636ad84e0469e" ) == 0 );
3871  }
3872  FCT_TEST_END();
3873 
3874 
3875  FCT_TEST_BGN(ctr_drbg_nist_validation_aes_256_use_dffalse256128256256_12)
3876  {
3877  unsigned char entropy[512];
3878  unsigned char add_init[512];
3879  unsigned char add1[512];
3880  unsigned char add_reseed[512];
3881  unsigned char add2[512];
3882  ctr_drbg_context ctx;
3883  unsigned char buf[512];
3884  unsigned char output_str[512];
3885  int add_init_len, add1_len, add_reseed_len, add2_len;
3886 
3887  memset( output_str, 0, 512 );
3888 
3889  unhexify( entropy, "2882d4a30b22659b87ad2d71db1d7cf093ffca80079a4ef21660de9223940969afec70b0384a54b1de9bcca6b43fb182e58d8dfcad82b0df99a8929201476ae9" );
3890  add_init_len = unhexify( add_init, "2c59520d6f8ce946dcc5222f4fc80ba83f38df9dce2861412eebb1614245331626e7fb93eedbad33a12e94c276deff0a" );
3891  add1_len = unhexify( add1, "d3c17a2d9c5da051b2d1825120814eaee07dfca65ab4df01195c8b1fcea0ed41" );
3892  add_reseed_len = unhexify( add_reseed, "dcc39555b87f31973ae085f83eaf497441d22ab6d87b69e47296b0ab51733687" );
3893  add2_len = unhexify( add2, "9a8a1b4ccf8230e3d3a1be79e60ae06c393fe6b1ca245281825317468ca114c7" );
3894 
3895  test_offset = 0;
3896  fct_chk( ctr_drbg_init_entropy_len( &ctx, entropy_func, entropy, add_init, add_init_len, 32 ) == 0 );
3897 
3898  fct_chk( ctr_drbg_random_with_add( &ctx, buf, 16, add1, add1_len ) == 0 );
3899  fct_chk( ctr_drbg_reseed( &ctx, add_reseed, add_reseed_len ) == 0 );
3900  fct_chk( ctr_drbg_random_with_add( &ctx, buf, 16, add2, add2_len ) == 0 );
3901  hexify( output_str, buf, 16 );
3902  fct_chk( strcmp( (char *) output_str, "fba523a09c587ecad4e7e7fd81e5ca39" ) == 0 );
3903  }
3904  FCT_TEST_END();
3905 
3906 
3907  FCT_TEST_BGN(ctr_drbg_nist_validation_aes_256_use_dffalse256128256256_13)
3908  {
3909  unsigned char entropy[512];
3910  unsigned char add_init[512];
3911  unsigned char add1[512];
3912  unsigned char add_reseed[512];
3913  unsigned char add2[512];
3914  ctr_drbg_context ctx;
3915  unsigned char buf[512];
3916  unsigned char output_str[512];
3917  int add_init_len, add1_len, add_reseed_len, add2_len;
3918 
3919  memset( output_str, 0, 512 );
3920 
3921  unhexify( entropy, "8ae9a5903da32a38b7c6fed92dd0c6a035ca5104a3528d71a3eacc2f1681379724991a0053e8dac65e35f3deee0435e99f86364577c8ebdba321872973dc9790" );
3922  add_init_len = unhexify( add_init, "1c1207f50b645aaed5c16fe36f6aae83af4924e6b98a7e2a2533a584c1bac123f8b6f0e05109e0132950ae97b389001a" );
3923  add1_len = unhexify( add1, "568bfee681d7f9be23a175a3cbf441b513829a9cbdf0706c145fdcd7803ce099" );
3924  add_reseed_len = unhexify( add_reseed, "e32cb5fec72c068894aaeabfc1b8d5e0de0b5acdf287a82e130a46e846770dc2" );
3925  add2_len = unhexify( add2, "d4418c333687a1c15cac7d4021f7d8823a114bb98f92c8a6dccc59ff8ad51c1f" );
3926 
3927  test_offset = 0;
3928  fct_chk( ctr_drbg_init_entropy_len( &ctx, entropy_func, entropy, add_init, add_init_len, 32 ) == 0 );
3929 
3930  fct_chk( ctr_drbg_random_with_add( &ctx, buf, 16, add1, add1_len ) == 0 );
3931  fct_chk( ctr_drbg_reseed( &ctx, add_reseed, add_reseed_len ) == 0 );
3932  fct_chk( ctr_drbg_random_with_add( &ctx, buf, 16, add2, add2_len ) == 0 );
3933  hexify( output_str, buf, 16 );
3934  fct_chk( strcmp( (char *) output_str, "194e3018377cef71610794006b95def5" ) == 0 );
3935  }
3936  FCT_TEST_END();
3937 
3938 
3939  FCT_TEST_BGN(ctr_drbg_nist_validation_aes_256_use_dffalse256128256256_14)
3940  {
3941  unsigned char entropy[512];
3942  unsigned char add_init[512];
3943  unsigned char add1[512];
3944  unsigned char add_reseed[512];
3945  unsigned char add2[512];
3946  ctr_drbg_context ctx;
3947  unsigned char buf[512];
3948  unsigned char output_str[512];
3949  int add_init_len, add1_len, add_reseed_len, add2_len;
3950 
3951  memset( output_str, 0, 512 );
3952 
3953  unhexify( entropy, "98a0db985544c33990aee0f69655dba7198e6720ce56ff9d4662e26f0c6b4ee7ab599932c05295f6c5a4011085c5b2c861a5a8ae4f572ce614ff2dafc0fddb34" );
3954  add_init_len = unhexify( add_init, "28254014c5d6ebf9bd9e5f3946fc98e55fe351deee8fc70333e4f20f1f7719a522b3ea9a4424afe68208d1cc6c128c47" );
3955  add1_len = unhexify( add1, "64215cbe384f1f4cf548078ffd51f91eee9a8bae5aacdd19ca16bcaaf354f8ad" );
3956  add_reseed_len = unhexify( add_reseed, "2e21df638dabe24aebf62d97e25f701f781d12d0064f2f5a4a44d320c90b7260" );
3957  add2_len = unhexify( add2, "7f936274f74a466cbf69dbfe46db79f3c349377df683cb461f2da3b842ad438e" );
3958 
3959  test_offset = 0;
3960  fct_chk( ctr_drbg_init_entropy_len( &ctx, entropy_func, entropy, add_init, add_init_len, 32 ) == 0 );
3961 
3962  fct_chk( ctr_drbg_random_with_add( &ctx, buf, 16, add1, add1_len ) == 0 );
3963  fct_chk( ctr_drbg_reseed( &ctx, add_reseed, add_reseed_len ) == 0 );
3964  fct_chk( ctr_drbg_random_with_add( &ctx, buf, 16, add2, add2_len ) == 0 );
3965  hexify( output_str, buf, 16 );
3966  fct_chk( strcmp( (char *) output_str, "25c469cc8407b82f42e34f11db3d8462" ) == 0 );
3967  }
3968  FCT_TEST_END();
3969 
3970 
3971  FCT_TEST_BGN(ctr_drbg_nist_validation_aes_256_use_dffalse25612800_0)
3972  {
3973  unsigned char entropy[512];
3974  unsigned char add_init[512];
3975  unsigned char add1[512];
3976  unsigned char add_reseed[512];
3977  unsigned char add2[512];
3978  ctr_drbg_context ctx;
3979  unsigned char buf[512];
3980  unsigned char output_str[512];
3981  int add_init_len, add1_len, add_reseed_len, add2_len;
3982 
3983  memset( output_str, 0, 512 );
3984 
3985  unhexify( entropy, "fea104f90c5881df7ad1c863307bad22c98770ecd0d717513a2807682582e3e18e81d7935c8a7bacddd5176e7ca4911b9f8f5b1d9c349152fa215393eb006384" );
3986  add_init_len = unhexify( add_init, "e26c8a13dae5c2da81023f27ab10b878" );
3987  add1_len = unhexify( add1, "" );
3988  add_reseed_len = unhexify( add_reseed, "" );
3989  add2_len = unhexify( add2, "" );
3990 
3991  test_offset = 0;
3992  fct_chk( ctr_drbg_init_entropy_len( &ctx, entropy_func, entropy, add_init, add_init_len, 32 ) == 0 );
3993 
3994  fct_chk( ctr_drbg_random_with_add( &ctx, buf, 16, add1, add1_len ) == 0 );
3995  fct_chk( ctr_drbg_reseed( &ctx, add_reseed, add_reseed_len ) == 0 );
3996  fct_chk( ctr_drbg_random_with_add( &ctx, buf, 16, add2, add2_len ) == 0 );
3997  hexify( output_str, buf, 16 );
3998  fct_chk( strcmp( (char *) output_str, "fd87337c305a0a8ef8eef797601732c2" ) == 0 );
3999  }
4000  FCT_TEST_END();
4001 
4002 
4003  FCT_TEST_BGN(ctr_drbg_nist_validation_aes_256_use_dffalse25612800_1)
4004  {
4005  unsigned char entropy[512];
4006  unsigned char add_init[512];
4007  unsigned char add1[512];
4008  unsigned char add_reseed[512];
4009  unsigned char add2[512];
4010  ctr_drbg_context ctx;
4011  unsigned char buf[512];
4012  unsigned char output_str[512];
4013  int add_init_len, add1_len, add_reseed_len, add2_len;
4014 
4015  memset( output_str, 0, 512 );
4016 
4017  unhexify( entropy, "1d723cbc2ff2c115160e7240340adbf31c717696d0fdfecf3ec21150fca00cde477d37e2abbe32f399a505b74d82e502fbff94cecac87e87127d1397d3d76532" );
4018  add_init_len = unhexify( add_init, "8d7dda20a9807804bfc37bd7472d3b0c" );
4019  add1_len = unhexify( add1, "" );
4020  add_reseed_len = unhexify( add_reseed, "" );
4021  add2_len = unhexify( add2, "" );
4022 
4023  test_offset = 0;
4024  fct_chk( ctr_drbg_init_entropy_len( &ctx, entropy_func, entropy, add_init, add_init_len, 32 ) == 0 );
4025 
4026  fct_chk( ctr_drbg_random_with_add( &ctx, buf, 16, add1, add1_len ) == 0 );
4027  fct_chk( ctr_drbg_reseed( &ctx, add_reseed, add_reseed_len ) == 0 );
4028  fct_chk( ctr_drbg_random_with_add( &ctx, buf, 16, add2, add2_len ) == 0 );
4029  hexify( output_str, buf, 16 );
4030  fct_chk( strcmp( (char *) output_str, "7221761b913b1f50125abca6c3b2f229" ) == 0 );
4031  }
4032  FCT_TEST_END();
4033 
4034 
4035  FCT_TEST_BGN(ctr_drbg_nist_validation_aes_256_use_dffalse25612800_2)
4036  {
4037  unsigned char entropy[512];
4038  unsigned char add_init[512];
4039  unsigned char add1[512];
4040  unsigned char add_reseed[512];
4041  unsigned char add2[512];
4042  ctr_drbg_context ctx;
4043  unsigned char buf[512];
4044  unsigned char output_str[512];
4045  int add_init_len, add1_len, add_reseed_len, add2_len;
4046 
4047  memset( output_str, 0, 512 );
4048 
4049  unhexify( entropy, "0820fc21cecba6b2fe053a269a34e6a7637dedaf55ef46d266f672ca7cfd9cc21cd807e2b7f6a1c640b4f059952ae6da7282c5c32959fed39f734a5e88a408d2" );
4050  add_init_len = unhexify( add_init, "c02e3b6fd4fea7ec517a232f48aaa8cb" );
4051  add1_len = unhexify( add1, "" );
4052  add_reseed_len = unhexify( add_reseed, "" );
4053  add2_len = unhexify( add2, "" );
4054 
4055  test_offset = 0;
4056  fct_chk( ctr_drbg_init_entropy_len( &ctx, entropy_func, entropy, add_init, add_init_len, 32 ) == 0 );
4057 
4058  fct_chk( ctr_drbg_random_with_add( &ctx, buf, 16, add1, add1_len ) == 0 );
4059  fct_chk( ctr_drbg_reseed( &ctx, add_reseed, add_reseed_len ) == 0 );
4060  fct_chk( ctr_drbg_random_with_add( &ctx, buf, 16, add2, add2_len ) == 0 );
4061  hexify( output_str, buf, 16 );
4062  fct_chk( strcmp( (char *) output_str, "667d4dbefe938d6a662440a17965a334" ) == 0 );
4063  }
4064  FCT_TEST_END();
4065 
4066 
4067  FCT_TEST_BGN(ctr_drbg_nist_validation_aes_256_use_dffalse25612800_3)
4068  {
4069  unsigned char entropy[512];
4070  unsigned char add_init[512];
4071  unsigned char add1[512];
4072  unsigned char add_reseed[512];
4073  unsigned char add2[512];
4074  ctr_drbg_context ctx;
4075  unsigned char buf[512];
4076  unsigned char output_str[512];
4077  int add_init_len, add1_len, add_reseed_len, add2_len;
4078 
4079  memset( output_str, 0, 512 );
4080 
4081  unhexify( entropy, "ef0aae3f9c425253205215e5bf0ad70f141ad8cc72a332247cfe989601ca4fc52ba48b82db4d00fe1f279979b5aed1ae2ec2b02d2c921ee2d9cb89e3a900b97d" );
4082  add_init_len = unhexify( add_init, "9aee0326f9b16f88a4114e8d49b8e282" );
4083  add1_len = unhexify( add1, "" );
4084  add_reseed_len = unhexify( add_reseed, "" );
4085  add2_len = unhexify( add2, "" );
4086 
4087  test_offset = 0;
4088  fct_chk( ctr_drbg_init_entropy_len( &ctx, entropy_func, entropy, add_init, add_init_len, 32 ) == 0 );
4089 
4090  fct_chk( ctr_drbg_random_with_add( &ctx, buf, 16, add1, add1_len ) == 0 );
4091  fct_chk( ctr_drbg_reseed( &ctx, add_reseed, add_reseed_len ) == 0 );
4092  fct_chk( ctr_drbg_random_with_add( &ctx, buf, 16, add2, add2_len ) == 0 );
4093  hexify( output_str, buf, 16 );
4094  fct_chk( strcmp( (char *) output_str, "651ad783fe3def80a8456552e405b98d" ) == 0 );
4095  }
4096  FCT_TEST_END();
4097 
4098 
4099  FCT_TEST_BGN(ctr_drbg_nist_validation_aes_256_use_dffalse25612800_4)
4100  {
4101  unsigned char entropy[512];
4102  unsigned char add_init[512];
4103  unsigned char add1[512];
4104  unsigned char add_reseed[512];
4105  unsigned char add2[512];
4106  ctr_drbg_context ctx;
4107  unsigned char buf[512];
4108  unsigned char output_str[512];
4109  int add_init_len, add1_len, add_reseed_len, add2_len;
4110 
4111  memset( output_str, 0, 512 );
4112 
4113  unhexify( entropy, "a9262ed5b54880cc8ecd4119cce9afe3de8875d403f7ca6b8ed8c88559470b29e644fddd83e127c5f938bc8a425db169c33c5c2d0b0c5133c8f87bbc0b0a7d79" );
4114  add_init_len = unhexify( add_init, "1e7a4961d1cd2fd30f571b92a763c2c5" );
4115  add1_len = unhexify( add1, "" );
4116  add_reseed_len = unhexify( add_reseed, "" );
4117  add2_len = unhexify( add2, "" );
4118 
4119  test_offset = 0;
4120  fct_chk( ctr_drbg_init_entropy_len( &ctx, entropy_func, entropy, add_init, add_init_len, 32 ) == 0 );
4121 
4122  fct_chk( ctr_drbg_random_with_add( &ctx, buf, 16, add1, add1_len ) == 0 );
4123  fct_chk( ctr_drbg_reseed( &ctx, add_reseed, add_reseed_len ) == 0 );
4124  fct_chk( ctr_drbg_random_with_add( &ctx, buf, 16, add2, add2_len ) == 0 );
4125  hexify( output_str, buf, 16 );
4126  fct_chk( strcmp( (char *) output_str, "1124c509ca52693977cf461b0f0a0da9" ) == 0 );
4127  }
4128  FCT_TEST_END();
4129 
4130 
4131  FCT_TEST_BGN(ctr_drbg_nist_validation_aes_256_use_dffalse25612800_5)
4132  {
4133  unsigned char entropy[512];
4134  unsigned char add_init[512];
4135  unsigned char add1[512];
4136  unsigned char add_reseed[512];
4137  unsigned char add2[512];
4138  ctr_drbg_context ctx;
4139  unsigned char buf[512];
4140  unsigned char output_str[512];
4141  int add_init_len, add1_len, add_reseed_len, add2_len;
4142 
4143  memset( output_str, 0, 512 );
4144 
4145  unhexify( entropy, "554cf6fad1c376ad6148cd40b53105c16e2f5dd5fa564865b26faa8c318150bfb2294e711735df5eb86ff4b4e778531793bad42403d93a80d05c5421229a53da" );
4146  add_init_len = unhexify( add_init, "ae0b0d2e84f48c632f031356cdea60ac" );
4147  add1_len = unhexify( add1, "" );
4148  add_reseed_len = unhexify( add_reseed, "" );
4149  add2_len = unhexify( add2, "" );
4150 
4151  test_offset = 0;
4152  fct_chk( ctr_drbg_init_entropy_len( &ctx, entropy_func, entropy, add_init, add_init_len, 32 ) == 0 );
4153 
4154  fct_chk( ctr_drbg_random_with_add( &ctx, buf, 16, add1, add1_len ) == 0 );
4155  fct_chk( ctr_drbg_reseed( &ctx, add_reseed, add_reseed_len ) == 0 );
4156  fct_chk( ctr_drbg_random_with_add( &ctx, buf, 16, add2, add2_len ) == 0 );
4157  hexify( output_str, buf, 16 );
4158  fct_chk( strcmp( (char *) output_str, "1212e5d3070b1cdf52c0217866481c58" ) == 0 );
4159  }
4160  FCT_TEST_END();
4161 
4162 
4163  FCT_TEST_BGN(ctr_drbg_nist_validation_aes_256_use_dffalse25612800_6)
4164  {
4165  unsigned char entropy[512];
4166  unsigned char add_init[512];
4167  unsigned char add1[512];
4168  unsigned char add_reseed[512];
4169  unsigned char add2[512];
4170  ctr_drbg_context ctx;
4171  unsigned char buf[512];
4172  unsigned char output_str[512];
4173  int add_init_len, add1_len, add_reseed_len, add2_len;
4174 
4175  memset( output_str, 0, 512 );
4176 
4177  unhexify( entropy, "7cffe2bef0d42374f7263a386b67fba991e59cefd73590cbcde3a4dc635a5a328f1a8e5edd3ada75854f251ee9f2de6cd247f64c6ca4f6c983805aa0fe9d3106" );
4178  add_init_len = unhexify( add_init, "16b8c7495d43cd2ff5f65ad2ab48ecef" );
4179  add1_len = unhexify( add1, "" );
4180  add_reseed_len = unhexify( add_reseed, "" );
4181  add2_len = unhexify( add2, "" );
4182 
4183  test_offset = 0;
4184  fct_chk( ctr_drbg_init_entropy_len( &ctx, entropy_func, entropy, add_init, add_init_len, 32 ) == 0 );
4185 
4186  fct_chk( ctr_drbg_random_with_add( &ctx, buf, 16, add1, add1_len ) == 0 );
4187  fct_chk( ctr_drbg_reseed( &ctx, add_reseed, add_reseed_len ) == 0 );
4188  fct_chk( ctr_drbg_random_with_add( &ctx, buf, 16, add2, add2_len ) == 0 );
4189  hexify( output_str, buf, 16 );
4190  fct_chk( strcmp( (char *) output_str, "d3869a9c5004b8a6ae8d8f0f461b602b" ) == 0 );
4191  }
4192  FCT_TEST_END();
4193 
4194 
4195  FCT_TEST_BGN(ctr_drbg_nist_validation_aes_256_use_dffalse25612800_7)
4196  {
4197  unsigned char entropy[512];
4198  unsigned char add_init[512];
4199  unsigned char add1[512];
4200  unsigned char add_reseed[512];
4201  unsigned char add2[512];
4202  ctr_drbg_context ctx;
4203  unsigned char buf[512];
4204  unsigned char output_str[512];
4205  int add_init_len, add1_len, add_reseed_len, add2_len;
4206 
4207  memset( output_str, 0, 512 );
4208 
4209  unhexify( entropy, "59759bb91b3c4feb18c0f086269ec52e097b67698f4dfe91ebe8bef851caa35cadb3fd22d1309f13510e1252856c71394a8e210fdbf3c7aae7998865f98e8744" );
4210  add_init_len = unhexify( add_init, "a2d5eff6f73f98e5b04c01967dffa69b" );
4211  add1_len = unhexify( add1, "" );
4212  add_reseed_len = unhexify( add_reseed, "" );
4213  add2_len = unhexify( add2, "" );
4214 
4215  test_offset = 0;
4216  fct_chk( ctr_drbg_init_entropy_len( &ctx, entropy_func, entropy, add_init, add_init_len, 32 ) == 0 );
4217 
4218  fct_chk( ctr_drbg_random_with_add( &ctx, buf, 16, add1, add1_len ) == 0 );
4219  fct_chk( ctr_drbg_reseed( &ctx, add_reseed, add_reseed_len ) == 0 );
4220  fct_chk( ctr_drbg_random_with_add( &ctx, buf, 16, add2, add2_len ) == 0 );
4221  hexify( output_str, buf, 16 );
4222  fct_chk( strcmp( (char *) output_str, "a1f99bd9522342e963af2ec8eed25c08" ) == 0 );
4223  }
4224  FCT_TEST_END();
4225 
4226 
4227  FCT_TEST_BGN(ctr_drbg_nist_validation_aes_256_use_dffalse25612800_8)
4228  {
4229  unsigned char entropy[512];
4230  unsigned char add_init[512];
4231  unsigned char add1[512];
4232  unsigned char add_reseed[512];
4233  unsigned char add2[512];
4234  ctr_drbg_context ctx;
4235  unsigned char buf[512];
4236  unsigned char output_str[512];
4237  int add_init_len, add1_len, add_reseed_len, add2_len;
4238 
4239  memset( output_str, 0, 512 );
4240 
4241  unhexify( entropy, "0ec7c617f85bec74044111020c977be32ab8050b326ebc03715bbbffa5a34622f2264d4b5141b7883281c21ea91981155a64fb7b902e674e9a41a8a86c32052b" );
4242  add_init_len = unhexify( add_init, "ea1f47fe5e281136706419ea9b652967" );
4243  add1_len = unhexify( add1, "" );
4244  add_reseed_len = unhexify( add_reseed, "" );
4245  add2_len = unhexify( add2, "" );
4246 
4247  test_offset = 0;
4248  fct_chk( ctr_drbg_init_entropy_len( &ctx, entropy_func, entropy, add_init, add_init_len, 32 ) == 0 );
4249 
4250  fct_chk( ctr_drbg_random_with_add( &ctx, buf, 16, add1, add1_len ) == 0 );
4251  fct_chk( ctr_drbg_reseed( &ctx, add_reseed, add_reseed_len ) == 0 );
4252  fct_chk( ctr_drbg_random_with_add( &ctx, buf, 16, add2, add2_len ) == 0 );
4253  hexify( output_str, buf, 16 );
4254  fct_chk( strcmp( (char *) output_str, "daf75b8288fc66802b23af5fd04a9434" ) == 0 );
4255  }
4256  FCT_TEST_END();
4257 
4258 
4259  FCT_TEST_BGN(ctr_drbg_nist_validation_aes_256_use_dffalse25612800_9)
4260  {
4261  unsigned char entropy[512];
4262  unsigned char add_init[512];
4263  unsigned char add1[512];
4264  unsigned char add_reseed[512];
4265  unsigned char add2[512];
4266  ctr_drbg_context ctx;
4267  unsigned char buf[512];
4268  unsigned char output_str[512];
4269  int add_init_len, add1_len, add_reseed_len, add2_len;
4270 
4271  memset( output_str, 0, 512 );
4272 
4273  unhexify( entropy, "cd7ce90f0141e80f6bd6ff3d981d8a0a877d0ddae7c98f9091763b5946fc38b64c1ef698485007d53251ad278daf5d4ae94a725d617fc9a45a919a9e785a9849" );
4274  add_init_len = unhexify( add_init, "6f072c681a82c00dcd0d9dd5b7ffa2af" );
4275  add1_len = unhexify( add1, "" );
4276  add_reseed_len = unhexify( add_reseed, "" );
4277  add2_len = unhexify( add2, "" );
4278 
4279  test_offset = 0;
4280  fct_chk( ctr_drbg_init_entropy_len( &ctx, entropy_func, entropy, add_init, add_init_len, 32 ) == 0 );
4281 
4282  fct_chk( ctr_drbg_random_with_add( &ctx, buf, 16, add1, add1_len ) == 0 );
4283  fct_chk( ctr_drbg_reseed( &ctx, add_reseed, add_reseed_len ) == 0 );
4284  fct_chk( ctr_drbg_random_with_add( &ctx, buf, 16, add2, add2_len ) == 0 );
4285  hexify( output_str, buf, 16 );
4286  fct_chk( strcmp( (char *) output_str, "39c0144f28c5a490eff6221b62384602" ) == 0 );
4287  }
4288  FCT_TEST_END();
4289 
4290 
4291  FCT_TEST_BGN(ctr_drbg_nist_validation_aes_256_use_dffalse25612800_10)
4292  {
4293  unsigned char entropy[512];
4294  unsigned char add_init[512];
4295  unsigned char add1[512];
4296  unsigned char add_reseed[512];
4297  unsigned char add2[512];
4298  ctr_drbg_context ctx;
4299  unsigned char buf[512];
4300  unsigned char output_str[512];
4301  int add_init_len, add1_len, add_reseed_len, add2_len;
4302 
4303  memset( output_str, 0, 512 );
4304 
4305  unhexify( entropy, "854766e842eb165a31551f96008354bca1628a9520d29c3cc4f6a41068bf76d8054b75b7d69f5865266c310b5e9f0290af37c5d94535cb5dc9c854ea1cb36eb7" );
4306  add_init_len = unhexify( add_init, "9d730655366e2aa89ee09332bd0a5053" );
4307  add1_len = unhexify( add1, "" );
4308  add_reseed_len = unhexify( add_reseed, "" );
4309  add2_len = unhexify( add2, "" );
4310 
4311  test_offset = 0;
4312  fct_chk( ctr_drbg_init_entropy_len( &ctx, entropy_func, entropy, add_init, add_init_len, 32 ) == 0 );
4313 
4314  fct_chk( ctr_drbg_random_with_add( &ctx, buf, 16, add1, add1_len ) == 0 );
4315  fct_chk( ctr_drbg_reseed( &ctx, add_reseed, add_reseed_len ) == 0 );
4316  fct_chk( ctr_drbg_random_with_add( &ctx, buf, 16, add2, add2_len ) == 0 );
4317  hexify( output_str, buf, 16 );
4318  fct_chk( strcmp( (char *) output_str, "baa2a3ed6fdc049d0f158693db8c70ef" ) == 0 );
4319  }
4320  FCT_TEST_END();
4321 
4322 
4323  FCT_TEST_BGN(ctr_drbg_nist_validation_aes_256_use_dffalse25612800_11)
4324  {
4325  unsigned char entropy[512];
4326  unsigned char add_init[512];
4327  unsigned char add1[512];
4328  unsigned char add_reseed[512];
4329  unsigned char add2[512];
4330  ctr_drbg_context ctx;
4331  unsigned char buf[512];
4332  unsigned char output_str[512];
4333  int add_init_len, add1_len, add_reseed_len, add2_len;
4334 
4335  memset( output_str, 0, 512 );
4336 
4337  unhexify( entropy, "6abfab14cbf222d553d0e930a38941f6f271b48943ea6f69e796e30135bc9eb30204b77ab416ac066da0a649c8558e5a0eac62f54f2f6e66c207cab461c71510" );
4338  add_init_len = unhexify( add_init, "3363881611bfd5d16814360e83d8544f" );
4339  add1_len = unhexify( add1, "" );
4340  add_reseed_len = unhexify( add_reseed, "" );
4341  add2_len = unhexify( add2, "" );
4342 
4343  test_offset = 0;
4344  fct_chk( ctr_drbg_init_entropy_len( &ctx, entropy_func, entropy, add_init, add_init_len, 32 ) == 0 );
4345 
4346  fct_chk( ctr_drbg_random_with_add( &ctx, buf, 16, add1, add1_len ) == 0 );
4347  fct_chk( ctr_drbg_reseed( &ctx, add_reseed, add_reseed_len ) == 0 );
4348  fct_chk( ctr_drbg_random_with_add( &ctx, buf, 16, add2, add2_len ) == 0 );
4349  hexify( output_str, buf, 16 );
4350  fct_chk( strcmp( (char *) output_str, "5be410ce54288e881acd3e566964df78" ) == 0 );
4351  }
4352  FCT_TEST_END();
4353 
4354 
4355  FCT_TEST_BGN(ctr_drbg_nist_validation_aes_256_use_dffalse25612800_12)
4356  {
4357  unsigned char entropy[512];
4358  unsigned char add_init[512];
4359  unsigned char add1[512];
4360  unsigned char add_reseed[512];
4361  unsigned char add2[512];
4362  ctr_drbg_context ctx;
4363  unsigned char buf[512];
4364  unsigned char output_str[512];
4365  int add_init_len, add1_len, add_reseed_len, add2_len;
4366 
4367  memset( output_str, 0, 512 );
4368 
4369  unhexify( entropy, "0d2e446cad387a962ff2217c7cf4826dcabb997ab7f74f64aa18fbcb69151993f263925ae71f9dfdff122bb61802480f2803930efce01a3f37c97101893c140f" );
4370  add_init_len = unhexify( add_init, "14e589065423528ff84a1f89507ab519" );
4371  add1_len = unhexify( add1, "" );
4372  add_reseed_len = unhexify( add_reseed, "" );
4373  add2_len = unhexify( add2, "" );
4374 
4375  test_offset = 0;
4376  fct_chk( ctr_drbg_init_entropy_len( &ctx, entropy_func, entropy, add_init, add_init_len, 32 ) == 0 );
4377 
4378  fct_chk( ctr_drbg_random_with_add( &ctx, buf, 16, add1, add1_len ) == 0 );
4379  fct_chk( ctr_drbg_reseed( &ctx, add_reseed, add_reseed_len ) == 0 );
4380  fct_chk( ctr_drbg_random_with_add( &ctx, buf, 16, add2, add2_len ) == 0 );
4381  hexify( output_str, buf, 16 );
4382  fct_chk( strcmp( (char *) output_str, "fc2d3df6c9aae68fb01d8382fcd82104" ) == 0 );
4383  }
4384  FCT_TEST_END();
4385 
4386 
4387  FCT_TEST_BGN(ctr_drbg_nist_validation_aes_256_use_dffalse25612800_13)
4388  {
4389  unsigned char entropy[512];
4390  unsigned char add_init[512];
4391  unsigned char add1[512];
4392  unsigned char add_reseed[512];
4393  unsigned char add2[512];
4394  ctr_drbg_context ctx;
4395  unsigned char buf[512];
4396  unsigned char output_str[512];
4397  int add_init_len, add1_len, add_reseed_len, add2_len;
4398 
4399  memset( output_str, 0, 512 );
4400 
4401  unhexify( entropy, "aa04d9fc56349fdd31d868e9efc2938f9104c0291e55ac0aa0c24ec4609731b8e0ac04b42180bde1af6ad1b26faff8a6de60a8a4a828cd6f8758c54b6037a0ee" );
4402  add_init_len = unhexify( add_init, "974c5ae90347d839475f0f994f2bf01d" );
4403  add1_len = unhexify( add1, "" );
4404  add_reseed_len = unhexify( add_reseed, "" );
4405  add2_len = unhexify( add2, "" );
4406 
4407  test_offset = 0;
4408  fct_chk( ctr_drbg_init_entropy_len( &ctx, entropy_func, entropy, add_init, add_init_len, 32 ) == 0 );
4409 
4410  fct_chk( ctr_drbg_random_with_add( &ctx, buf, 16, add1, add1_len ) == 0 );
4411  fct_chk( ctr_drbg_reseed( &ctx, add_reseed, add_reseed_len ) == 0 );
4412  fct_chk( ctr_drbg_random_with_add( &ctx, buf, 16, add2, add2_len ) == 0 );
4413  hexify( output_str, buf, 16 );
4414  fct_chk( strcmp( (char *) output_str, "3caec482015003643d5a319a2af48fb4" ) == 0 );
4415  }
4416  FCT_TEST_END();
4417 
4418 
4419  FCT_TEST_BGN(ctr_drbg_nist_validation_aes_256_use_dffalse25612800_14)
4420  {
4421  unsigned char entropy[512];
4422  unsigned char add_init[512];
4423  unsigned char add1[512];
4424  unsigned char add_reseed[512];
4425  unsigned char add2[512];
4426  ctr_drbg_context ctx;
4427  unsigned char buf[512];
4428  unsigned char output_str[512];
4429  int add_init_len, add1_len, add_reseed_len, add2_len;
4430 
4431  memset( output_str, 0, 512 );
4432 
4433  unhexify( entropy, "203bba645fb5ccee3383cf402e04c713b7a6b6cca8b154e827520daac4ea3a0247bbdc3b2cd853e170587d22c70fb96c320ea71cb80c04826316c7317c797b8a" );
4434  add_init_len = unhexify( add_init, "b3a110587a16c1eafe51128a66816ecf" );
4435  add1_len = unhexify( add1, "" );
4436  add_reseed_len = unhexify( add_reseed, "" );
4437  add2_len = unhexify( add2, "" );
4438 
4439  test_offset = 0;
4440  fct_chk( ctr_drbg_init_entropy_len( &ctx, entropy_func, entropy, add_init, add_init_len, 32 ) == 0 );
4441 
4442  fct_chk( ctr_drbg_random_with_add( &ctx, buf, 16, add1, add1_len ) == 0 );
4443  fct_chk( ctr_drbg_reseed( &ctx, add_reseed, add_reseed_len ) == 0 );
4444  fct_chk( ctr_drbg_random_with_add( &ctx, buf, 16, add2, add2_len ) == 0 );
4445  hexify( output_str, buf, 16 );
4446  fct_chk( strcmp( (char *) output_str, "9af4f67a30a4346e0cfcf51c45fd2589" ) == 0 );
4447  }
4448  FCT_TEST_END();
4449 
4450 
4451  FCT_TEST_BGN(ctr_drbg_nist_validation_aes_256_use_dffalse2561280256_0)
4452  {
4453  unsigned char entropy[512];
4454  unsigned char add_init[512];
4455  unsigned char add1[512];
4456  unsigned char add_reseed[512];
4457  unsigned char add2[512];
4458  ctr_drbg_context ctx;
4459  unsigned char buf[512];
4460  unsigned char output_str[512];
4461  int add_init_len, add1_len, add_reseed_len, add2_len;
4462 
4463  memset( output_str, 0, 512 );
4464 
4465  unhexify( entropy, "951e712d057028158831ca8c74d4ae303c6e4641c344a1c80292260bdd9d8e2f5b97606370e95903e3124659de3e3f6e021cd9ccc86aa4a619c0e94b2a9aa3cc" );
4466  add_init_len = unhexify( add_init, "55546068cd524c51496c5fc9622b64c6" );
4467  add1_len = unhexify( add1, "2d6de8661c7a30a0ca6a20c13c4c04421ba200fbef4f6eb499c17aee1561faf1" );
4468  add_reseed_len = unhexify( add_reseed, "41797b2eeaccb8a002538d3480cb0b76060ee5ba9d7e4a2bb2b201154f61c975" );
4469  add2_len = unhexify( add2, "b744980bb0377e176b07f48e7994fffd7b0d8a539e1f02a5535d2f4051f054f3" );
4470 
4471  test_offset = 0;
4472  fct_chk( ctr_drbg_init_entropy_len( &ctx, entropy_func, entropy, add_init, add_init_len, 32 ) == 0 );
4473 
4474  fct_chk( ctr_drbg_random_with_add( &ctx, buf, 16, add1, add1_len ) == 0 );
4475  fct_chk( ctr_drbg_reseed( &ctx, add_reseed, add_reseed_len ) == 0 );
4476  fct_chk( ctr_drbg_random_with_add( &ctx, buf, 16, add2, add2_len ) == 0 );
4477  hexify( output_str, buf, 16 );
4478  fct_chk( strcmp( (char *) output_str, "65b9f7382ed578af03efa2008dbdd56f" ) == 0 );
4479  }
4480  FCT_TEST_END();
4481 
4482 
4483  FCT_TEST_BGN(ctr_drbg_nist_validation_aes_256_use_dffalse2561280256_1)
4484  {
4485  unsigned char entropy[512];
4486  unsigned char add_init[512];
4487  unsigned char add1[512];
4488  unsigned char add_reseed[512];
4489  unsigned char add2[512];
4490  ctr_drbg_context ctx;
4491  unsigned char buf[512];
4492  unsigned char output_str[512];
4493  int add_init_len, add1_len, add_reseed_len, add2_len;
4494 
4495  memset( output_str, 0, 512 );
4496 
4497  unhexify( entropy, "6e9b31755c1f45df7d685f86044ab3bc25433a3ff08ab5de7154e06b0867f4e3531ed2e2a15ab63c611fc2894240fdac1d3292d1b36da87caa2080d1c41bcf24" );
4498  add_init_len = unhexify( add_init, "a0c92565640a3315cac8da6d0458fb07" );
4499  add1_len = unhexify( add1, "c6c74690bdee26288d2f87a06435d664431206b23b24f426e847fb892d40d5d5" );
4500  add_reseed_len = unhexify( add_reseed, "4e7dc1adbc8bc16ba7b584c18a0d7e4383c470bff2f320af54ad5ade5f43265b" );
4501  add2_len = unhexify( add2, "c6fb8ee194a339726f5051b91925c6a214079a661ec78358e98fc4f41e8c4724" );
4502 
4503  test_offset = 0;
4504  fct_chk( ctr_drbg_init_entropy_len( &ctx, entropy_func, entropy, add_init, add_init_len, 32 ) == 0 );
4505 
4506  fct_chk( ctr_drbg_random_with_add( &ctx, buf, 16, add1, add1_len ) == 0 );
4507  fct_chk( ctr_drbg_reseed( &ctx, add_reseed, add_reseed_len ) == 0 );
4508  fct_chk( ctr_drbg_random_with_add( &ctx, buf, 16, add2, add2_len ) == 0 );
4509  hexify( output_str, buf, 16 );
4510  fct_chk( strcmp( (char *) output_str, "c3f849ee7d87291301e11b467fa2162f" ) == 0 );
4511  }
4512  FCT_TEST_END();
4513 
4514 
4515  FCT_TEST_BGN(ctr_drbg_nist_validation_aes_256_use_dffalse2561280256_2)
4516  {
4517  unsigned char entropy[512];
4518  unsigned char add_init[512];
4519  unsigned char add1[512];
4520  unsigned char add_reseed[512];
4521  unsigned char add2[512];
4522  ctr_drbg_context ctx;
4523  unsigned char buf[512];
4524  unsigned char output_str[512];
4525  int add_init_len, add1_len, add_reseed_len, add2_len;
4526 
4527  memset( output_str, 0, 512 );
4528 
4529  unhexify( entropy, "62c2c790cb56518ed2d8d65952bbd4ab85a56463495c940b94f403a93338bdc96129feea9335b1a3e0ada7cf4c207f4732013bc6a52db41407bf5d6fe9183b3c" );
4530  add_init_len = unhexify( add_init, "63e143bd6a87065a00eea930593f9b29" );
4531  add1_len = unhexify( add1, "7b4e9ff0c8f8c90f8b324c7189226d3adccd79df2d0c22b52fb31dbb5dfefba6" );
4532  add_reseed_len = unhexify( add_reseed, "49e1aecf2b96a366325dc1892c016a5535dd2480360a382e9cc78bf75b2bba37" );
4533  add2_len = unhexify( add2, "f4ce1d27e759f3ba4a56aaab713642b4c56810c9995fbfc04ce285429f95a8f4" );
4534 
4535  test_offset = 0;
4536  fct_chk( ctr_drbg_init_entropy_len( &ctx, entropy_func, entropy, add_init, add_init_len, 32 ) == 0 );
4537 
4538  fct_chk( ctr_drbg_random_with_add( &ctx, buf, 16, add1, add1_len ) == 0 );
4539  fct_chk( ctr_drbg_reseed( &ctx, add_reseed, add_reseed_len ) == 0 );
4540  fct_chk( ctr_drbg_random_with_add( &ctx, buf, 16, add2, add2_len ) == 0 );
4541  hexify( output_str, buf, 16 );
4542  fct_chk( strcmp( (char *) output_str, "513111abaae3069e599b56f7e5fb91d1" ) == 0 );
4543  }
4544  FCT_TEST_END();
4545 
4546 
4547  FCT_TEST_BGN(ctr_drbg_nist_validation_aes_256_use_dffalse2561280256_3)
4548  {
4549  unsigned char entropy[512];
4550  unsigned char add_init[512];
4551  unsigned char add1[512];
4552  unsigned char add_reseed[512];
4553  unsigned char add2[512];
4554  ctr_drbg_context ctx;
4555  unsigned char buf[512];
4556  unsigned char output_str[512];
4557  int add_init_len, add1_len, add_reseed_len, add2_len;
4558 
4559  memset( output_str, 0, 512 );
4560 
4561  unhexify( entropy, "2fab4a629e4b21f27488a0c9ed36fc8e75bee0c386346c6ec59a6f045975e29818440a6638eb3b9e952e19df82d6dc7b8b9c18530aef763d0709b3b55433ddc6" );
4562  add_init_len = unhexify( add_init, "98dc16e95f97b5b9d8287875774d9d19" );
4563  add1_len = unhexify( add1, "2e9d2f52a55df05fb8b9549947f8690c9ce410268d1d3aa7d69e63cbb28e4eb8" );
4564  add_reseed_len = unhexify( add_reseed, "57ecdad71d709dcdb1eba6cf36e0ecf04aaccd7527ca44c6f96768968027274f" );
4565  add2_len = unhexify( add2, "7b2da3d1ae252a71bccbb318e0eec95493a236f0dec97f2600de9f0743030529" );
4566 
4567  test_offset = 0;
4568  fct_chk( ctr_drbg_init_entropy_len( &ctx, entropy_func, entropy, add_init, add_init_len, 32 ) == 0 );
4569 
4570  fct_chk( ctr_drbg_random_with_add( &ctx, buf, 16, add1, add1_len ) == 0 );
4571  fct_chk( ctr_drbg_reseed( &ctx, add_reseed, add_reseed_len ) == 0 );
4572  fct_chk( ctr_drbg_random_with_add( &ctx, buf, 16, add2, add2_len ) == 0 );
4573  hexify( output_str, buf, 16 );
4574  fct_chk( strcmp( (char *) output_str, "841882e4d9346bea32b1216eebc06aac" ) == 0 );
4575  }
4576  FCT_TEST_END();
4577 
4578 
4579  FCT_TEST_BGN(ctr_drbg_nist_validation_aes_256_use_dffalse2561280256_4)
4580  {
4581  unsigned char entropy[512];
4582  unsigned char add_init[512];
4583  unsigned char add1[512];
4584  unsigned char add_reseed[512];
4585  unsigned char add2[512];
4586  ctr_drbg_context ctx;
4587  unsigned char buf[512];
4588  unsigned char output_str[512];
4589  int add_init_len, add1_len, add_reseed_len, add2_len;
4590 
4591  memset( output_str, 0, 512 );
4592 
4593  unhexify( entropy, "c00b28c78da4f9ce159741437fe7f90e4e23ecd01cd292f197202decbbc823d9ce46b8191c11e8f8d007d38e2ecd93b8bd9bbad5812aaf547ddf4c7a6738b777" );
4594  add_init_len = unhexify( add_init, "5dbac5c313527d4d0e5ca9b6f5596ed7" );
4595  add1_len = unhexify( add1, "460c54f4c3fe49d9b25b069ff6664517ed3b234890175a59cde5c3bc230c0a9e" );
4596  add_reseed_len = unhexify( add_reseed, "bf5187f1f55ae6711c2bc1884324490bf2d29d29e95cad7a1c295045eed5a310" );
4597  add2_len = unhexify( add2, "28fd8277dcb807741d4d5cb255a8d9a32ef56a880ccf2b3dcca54645bd6f1013" );
4598 
4599  test_offset = 0;
4600  fct_chk( ctr_drbg_init_entropy_len( &ctx, entropy_func, entropy, add_init, add_init_len, 32 ) == 0 );
4601 
4602  fct_chk( ctr_drbg_random_with_add( &ctx, buf, 16, add1, add1_len ) == 0 );
4603  fct_chk( ctr_drbg_reseed( &ctx, add_reseed, add_reseed_len ) == 0 );
4604  fct_chk( ctr_drbg_random_with_add( &ctx, buf, 16, add2, add2_len ) == 0 );
4605  hexify( output_str, buf, 16 );
4606  fct_chk( strcmp( (char *) output_str, "b488f5c13bb017b0d9de2092d577c76e" ) == 0 );
4607  }
4608  FCT_TEST_END();
4609 
4610 
4611  FCT_TEST_BGN(ctr_drbg_nist_validation_aes_256_use_dffalse2561280256_5)
4612  {
4613  unsigned char entropy[512];
4614  unsigned char add_init[512];
4615  unsigned char add1[512];
4616  unsigned char add_reseed[512];
4617  unsigned char add2[512];
4618  ctr_drbg_context ctx;
4619  unsigned char buf[512];
4620  unsigned char output_str[512];
4621  int add_init_len, add1_len, add_reseed_len, add2_len;
4622 
4623  memset( output_str, 0, 512 );
4624 
4625  unhexify( entropy, "4c1cc9ebe7a03cde31860637d8222faeefa9cbf789fab62e99a98d83084fef29eafcf7177d62d55435a1acb77e7a61ad86c47d1950b8683e167fe3ece3f8c9e8" );
4626  add_init_len = unhexify( add_init, "254d5f5044415c694a89249b0b6e1a2c" );
4627  add1_len = unhexify( add1, "71af584657160f0f0b81740ef93017a37c174bee5a02c8967f087fdbfd33bfde" );
4628  add_reseed_len = unhexify( add_reseed, "96e8522f6ed8e8a9772ffb19e9416a1c6293ad6d1ecd317972e2f6258d7d68dd" );
4629  add2_len = unhexify( add2, "3aaa5e4d6af79055742150e630c5e3a46288e216d6607793c021d6705349f96a" );
4630 
4631  test_offset = 0;
4632  fct_chk( ctr_drbg_init_entropy_len( &ctx, entropy_func, entropy, add_init, add_init_len, 32 ) == 0 );
4633 
4634  fct_chk( ctr_drbg_random_with_add( &ctx, buf, 16, add1, add1_len ) == 0 );
4635  fct_chk( ctr_drbg_reseed( &ctx, add_reseed, add_reseed_len ) == 0 );
4636  fct_chk( ctr_drbg_random_with_add( &ctx, buf, 16, add2, add2_len ) == 0 );
4637  hexify( output_str, buf, 16 );
4638  fct_chk( strcmp( (char *) output_str, "66629af4a0e90550b9bd3811243d6b86" ) == 0 );
4639  }
4640  FCT_TEST_END();
4641 
4642 
4643  FCT_TEST_BGN(ctr_drbg_nist_validation_aes_256_use_dffalse2561280256_6)
4644  {
4645  unsigned char entropy[512];
4646  unsigned char add_init[512];
4647  unsigned char add1[512];
4648  unsigned char add_reseed[512];
4649  unsigned char add2[512];
4650  ctr_drbg_context ctx;
4651  unsigned char buf[512];
4652  unsigned char output_str[512];
4653  int add_init_len, add1_len, add_reseed_len, add2_len;
4654 
4655  memset( output_str, 0, 512 );
4656 
4657  unhexify( entropy, "ff62d52aed55d8e966044f7f7c5013b4915197c73668e01b4487c3243bbf5f9248a4fdd6ef0f63b87fc8d1c5d514ff243319b2fbdfa474d5f83b935399655e15" );
4658  add_init_len = unhexify( add_init, "b46fceed0fcc29665815cc9459971913" );
4659  add1_len = unhexify( add1, "994d6b5393fbf0351f0bcfb48e1e763b377b732c73bf8e28dec720a2cadcb8a5" );
4660  add_reseed_len = unhexify( add_reseed, "118bb8c7a43b9c30afaf9ce4db3e6a60a3f9d01c30b9ab3572662955808b41e4" );
4661  add2_len = unhexify( add2, "bb47e443090afc32ee34873bd106bf867650adf5b5d90a2e7d0e58ed0ae83e8a" );
4662 
4663  test_offset = 0;
4664  fct_chk( ctr_drbg_init_entropy_len( &ctx, entropy_func, entropy, add_init, add_init_len, 32 ) == 0 );
4665 
4666  fct_chk( ctr_drbg_random_with_add( &ctx, buf, 16, add1, add1_len ) == 0 );
4667  fct_chk( ctr_drbg_reseed( &ctx, add_reseed, add_reseed_len ) == 0 );
4668  fct_chk( ctr_drbg_random_with_add( &ctx, buf, 16, add2, add2_len ) == 0 );
4669  hexify( output_str, buf, 16 );
4670  fct_chk( strcmp( (char *) output_str, "1865fee6024db510690725f16b938487" ) == 0 );
4671  }
4672  FCT_TEST_END();
4673 
4674 
4675  FCT_TEST_BGN(ctr_drbg_nist_validation_aes_256_use_dffalse2561280256_7)
4676  {
4677  unsigned char entropy[512];
4678  unsigned char add_init[512];
4679  unsigned char add1[512];
4680  unsigned char add_reseed[512];
4681  unsigned char add2[512];
4682  ctr_drbg_context ctx;
4683  unsigned char buf[512];
4684  unsigned char output_str[512];
4685  int add_init_len, add1_len, add_reseed_len, add2_len;
4686 
4687  memset( output_str, 0, 512 );
4688 
4689  unhexify( entropy, "bf1ba4166007b53fcaee41f9c54771c8a0b309a52ea7894a005783c1e3e43e2eb9871d7909a1c3567953aabdf75e38c8f5578c51a692d883755102a0c82c7c12" );
4690  add_init_len = unhexify( add_init, "e1a5dd32fc7cefb281d5d6ce3200f4ca" );
4691  add1_len = unhexify( add1, "32e9922bd780303828091a140274d04f879cd821f352bd18bcaa49ffef840010" );
4692  add_reseed_len = unhexify( add_reseed, "01830ddd2f0e323c90830beddedf1480e6c23b0d99c2201871f18cc308ab3139" );
4693  add2_len = unhexify( add2, "f36d792dbde7609b8bf4724d7d71362840b309c5f2961e2537c8b5979a569ae8" );
4694 
4695  test_offset = 0;
4696  fct_chk( ctr_drbg_init_entropy_len( &ctx, entropy_func, entropy, add_init, add_init_len, 32 ) == 0 );
4697 
4698  fct_chk( ctr_drbg_random_with_add( &ctx, buf, 16, add1, add1_len ) == 0 );
4699  fct_chk( ctr_drbg_reseed( &ctx, add_reseed, add_reseed_len ) == 0 );
4700  fct_chk( ctr_drbg_random_with_add( &ctx, buf, 16, add2, add2_len ) == 0 );
4701  hexify( output_str, buf, 16 );
4702  fct_chk( strcmp( (char *) output_str, "7080e8379a43c2e28e07d0c7ed9705a8" ) == 0 );
4703  }
4704  FCT_TEST_END();
4705 
4706 
4707  FCT_TEST_BGN(ctr_drbg_nist_validation_aes_256_use_dffalse2561280256_8)
4708  {
4709  unsigned char entropy[512];
4710  unsigned char add_init[512];
4711  unsigned char add1[512];
4712  unsigned char add_reseed[512];
4713  unsigned char add2[512];
4714  ctr_drbg_context ctx;
4715  unsigned char buf[512];
4716  unsigned char output_str[512];
4717  int add_init_len, add1_len, add_reseed_len, add2_len;
4718 
4719  memset( output_str, 0, 512 );
4720 
4721  unhexify( entropy, "6ac34c4ce22b644632283ab13e294df2093e939d32411340b046c26fcc449d0fd6d14132c7205df303dbb663190e6e86ad12e14e145b6603308241f38d94eb5d" );
4722  add_init_len = unhexify( add_init, "d1b7be857a422b425ae62c61e90a192a" );
4723  add1_len = unhexify( add1, "aacfe8553d5ffef6abc3fd8f94d796cae2079ff04f7ab1b41982003f02427c7a" );
4724  add_reseed_len = unhexify( add_reseed, "01d2d1bc29d6a6b52bb29bd6652be772096ca23c838c40730d5b4a4f8f735daa" );
4725  add2_len = unhexify( add2, "27af728ee07d3f5902f4e56453b6a9feb308ef14795eb5630b2651debdd36d5b" );
4726 
4727  test_offset = 0;
4728  fct_chk( ctr_drbg_init_entropy_len( &ctx, entropy_func, entropy, add_init, add_init_len, 32 ) == 0 );
4729 
4730  fct_chk( ctr_drbg_random_with_add( &ctx, buf, 16, add1, add1_len ) == 0 );
4731  fct_chk( ctr_drbg_reseed( &ctx, add_reseed, add_reseed_len ) == 0 );
4732  fct_chk( ctr_drbg_random_with_add( &ctx, buf, 16, add2, add2_len ) == 0 );
4733  hexify( output_str, buf, 16 );
4734  fct_chk( strcmp( (char *) output_str, "b03fbcd03fa1cc69db0a4e3492a52bad" ) == 0 );
4735  }
4736  FCT_TEST_END();
4737 
4738 
4739  FCT_TEST_BGN(ctr_drbg_nist_validation_aes_256_use_dffalse2561280256_9)
4740  {
4741  unsigned char entropy[512];
4742  unsigned char add_init[512];
4743  unsigned char add1[512];
4744  unsigned char add_reseed[512];
4745  unsigned char add2[512];
4746  ctr_drbg_context ctx;
4747  unsigned char buf[512];
4748  unsigned char output_str[512];
4749  int add_init_len, add1_len, add_reseed_len, add2_len;
4750 
4751  memset( output_str, 0, 512 );
4752 
4753  unhexify( entropy, "5684c3eb99314127078484959314d52b3bc50cb3615c0eef6b48850d98aee04c528b0693be13ed1bb4040e8e96cb13c316143f0815cd68d1bb7931a3d9b88a3d" );
4754  add_init_len = unhexify( add_init, "a2c49aa6f3f92e36266bf267af5877ed" );
4755  add1_len = unhexify( add1, "566522085426b76bdef152adefd73ef0f76eee4614bc5a4391629ec49e0acffb" );
4756  add_reseed_len = unhexify( add_reseed, "30ef9585148dd2270c41540a4235328de8952f28cf5472df463e88e837419e99" );
4757  add2_len = unhexify( add2, "adc46e0afcf69302f62c84c5c4bfcbb7132f8db118d1a84dc2b910753fe86a2d" );
4758 
4759  test_offset = 0;
4760  fct_chk( ctr_drbg_init_entropy_len( &ctx, entropy_func, entropy, add_init, add_init_len, 32 ) == 0 );
4761 
4762  fct_chk( ctr_drbg_random_with_add( &ctx, buf, 16, add1, add1_len ) == 0 );
4763  fct_chk( ctr_drbg_reseed( &ctx, add_reseed, add_reseed_len ) == 0 );
4764  fct_chk( ctr_drbg_random_with_add( &ctx, buf, 16, add2, add2_len ) == 0 );
4765  hexify( output_str, buf, 16 );
4766  fct_chk( strcmp( (char *) output_str, "4edc4383977ee91aaa2f5b9ac4257570" ) == 0 );
4767  }
4768  FCT_TEST_END();
4769 
4770 
4771  FCT_TEST_BGN(ctr_drbg_nist_validation_aes_256_use_dffalse2561280256_10)
4772  {
4773  unsigned char entropy[512];
4774  unsigned char add_init[512];
4775  unsigned char add1[512];
4776  unsigned char add_reseed[512];
4777  unsigned char add2[512];
4778  ctr_drbg_context ctx;
4779  unsigned char buf[512];
4780  unsigned char output_str[512];
4781  int add_init_len, add1_len, add_reseed_len, add2_len;
4782 
4783  memset( output_str, 0, 512 );
4784 
4785  unhexify( entropy, "ab7bca5595084bccdba80ade7ac3df2a0ce198fa49d29414c0249ec3d1c50d271ca74ba5c3521576a89a1964e6deded2d5ba7ff28a364a8f9235981bec1bedfa" );
4786  add_init_len = unhexify( add_init, "43852c53041a3a4f710435dbd3e4382b" );
4787  add1_len = unhexify( add1, "c5612a9540b64fc134074cb36f4c9ea62fff993938709b5d354a917e5265adee" );
4788  add_reseed_len = unhexify( add_reseed, "eee2258aba665aa6d3f5b8c2207f135276f597adb2a0fbfb16a20460e8cc3c68" );
4789  add2_len = unhexify( add2, "a6d6d126bed13dbcf2b327aa884b7260a9c388cb03751dbe9feb28a3fe351d62" );
4790 
4791  test_offset = 0;
4792  fct_chk( ctr_drbg_init_entropy_len( &ctx, entropy_func, entropy, add_init, add_init_len, 32 ) == 0 );
4793 
4794  fct_chk( ctr_drbg_random_with_add( &ctx, buf, 16, add1, add1_len ) == 0 );
4795  fct_chk( ctr_drbg_reseed( &ctx, add_reseed, add_reseed_len ) == 0 );
4796  fct_chk( ctr_drbg_random_with_add( &ctx, buf, 16, add2, add2_len ) == 0 );
4797  hexify( output_str, buf, 16 );
4798  fct_chk( strcmp( (char *) output_str, "e04c3de51a1ffe8cda89e881c396584b" ) == 0 );
4799  }
4800  FCT_TEST_END();
4801 
4802 
4803  FCT_TEST_BGN(ctr_drbg_nist_validation_aes_256_use_dffalse2561280256_11)
4804  {
4805  unsigned char entropy[512];
4806  unsigned char add_init[512];
4807  unsigned char add1[512];
4808  unsigned char add_reseed[512];
4809  unsigned char add2[512];
4810  ctr_drbg_context ctx;
4811  unsigned char buf[512];
4812  unsigned char output_str[512];
4813  int add_init_len, add1_len, add_reseed_len, add2_len;
4814 
4815  memset( output_str, 0, 512 );
4816 
4817  unhexify( entropy, "b3a4a3c4d3d53ffa41b85ce3b8f292b1cc8e5af7488286d4c581005f8c02c5545c09bb08d8470b8cffdf62731b1d4b75c036af7dc4f2f1fc7e9a496f3d235f2d" );
4818  add_init_len = unhexify( add_init, "52628551ce90c338ed94b655d4f05811" );
4819  add1_len = unhexify( add1, "f5f9d5b51075b12aa300afdc7b8ea3944fc8cf4d1e95625cc4e42fdfdcbeb169" );
4820  add_reseed_len = unhexify( add_reseed, "60bccbc7345f23733fe8f8eb9760975057238705d9cee33b3269f9bfedd72202" );
4821  add2_len = unhexify( add2, "c0fa3afd6e9decfbffa7ea6678d2481c5f55ec0a35172ff93214b997400e97c3" );
4822 
4823  test_offset = 0;
4824  fct_chk( ctr_drbg_init_entropy_len( &ctx, entropy_func, entropy, add_init, add_init_len, 32 ) == 0 );
4825 
4826  fct_chk( ctr_drbg_random_with_add( &ctx, buf, 16, add1, add1_len ) == 0 );
4827  fct_chk( ctr_drbg_reseed( &ctx, add_reseed, add_reseed_len ) == 0 );
4828  fct_chk( ctr_drbg_random_with_add( &ctx, buf, 16, add2, add2_len ) == 0 );
4829  hexify( output_str, buf, 16 );
4830  fct_chk( strcmp( (char *) output_str, "5a113906e1ef76b7b75fefbf20d78ef8" ) == 0 );
4831  }
4832  FCT_TEST_END();
4833 
4834 
4835  FCT_TEST_BGN(ctr_drbg_nist_validation_aes_256_use_dffalse2561280256_12)
4836  {
4837  unsigned char entropy[512];
4838  unsigned char add_init[512];
4839  unsigned char add1[512];
4840  unsigned char add_reseed[512];
4841  unsigned char add2[512];
4842  ctr_drbg_context ctx;
4843  unsigned char buf[512];
4844  unsigned char output_str[512];
4845  int add_init_len, add1_len, add_reseed_len, add2_len;
4846 
4847  memset( output_str, 0, 512 );
4848 
4849  unhexify( entropy, "1ab7c7d8fe8f505e1dd7ddb8e7cda962572f7004b2a14c7a7c5bcf24bd16616e2c42c50ae5db9981ccd7d0c79062ac572d3893486bd0ae1f99cbc1d28a9e4c1e" );
4850  add_init_len = unhexify( add_init, "0e4873c4cbcde280abc6711a66dbb81a" );
4851  add1_len = unhexify( add1, "e4b89e28663e853f8b380c8a4491b54121fe6927340a74342362c37d8d615b66" );
4852  add_reseed_len = unhexify( add_reseed, "619775878879eff9ee2189790ff6f187baed4ed1b156029b80e7a070a1072a09" );
4853  add2_len = unhexify( add2, "ba3d673e5e41bd1abbc7191cc4b9a945201b8fef0016e4774047ee2abf499e74" );
4854 
4855  test_offset = 0;
4856  fct_chk( ctr_drbg_init_entropy_len( &ctx, entropy_func, entropy, add_init, add_init_len, 32 ) == 0 );
4857 
4858  fct_chk( ctr_drbg_random_with_add( &ctx, buf, 16, add1, add1_len ) == 0 );
4859  fct_chk( ctr_drbg_reseed( &ctx, add_reseed, add_reseed_len ) == 0 );
4860  fct_chk( ctr_drbg_random_with_add( &ctx, buf, 16, add2, add2_len ) == 0 );
4861  hexify( output_str, buf, 16 );
4862  fct_chk( strcmp( (char *) output_str, "4758fd021c34a5cf6bea760ad09438a0" ) == 0 );
4863  }
4864  FCT_TEST_END();
4865 
4866 
4867  FCT_TEST_BGN(ctr_drbg_nist_validation_aes_256_use_dffalse2561280256_13)
4868  {
4869  unsigned char entropy[512];
4870  unsigned char add_init[512];
4871  unsigned char add1[512];
4872  unsigned char add_reseed[512];
4873  unsigned char add2[512];
4874  ctr_drbg_context ctx;
4875  unsigned char buf[512];
4876  unsigned char output_str[512];
4877  int add_init_len, add1_len, add_reseed_len, add2_len;
4878 
4879  memset( output_str, 0, 512 );
4880 
4881  unhexify( entropy, "748a5f5fde271c563a8f8d15520d6818f7ed0efb9b434adf2ff9471b391dd225b37868179ffa9a6e58df3b1b765b8945685a2f966d29648dd86a42078339650b" );
4882  add_init_len = unhexify( add_init, "0684e8ef93c3363ba535c4e573af1c24" );
4883  add1_len = unhexify( add1, "e90c82153d2280f1ddb55bd65e7752bf6717fbe08c49414f6c129bf608578db7" );
4884  add_reseed_len = unhexify( add_reseed, "c17e97c93cfabe0b925ca5d22615a06430a201b7595ad0d9967cc89a4777947d" );
4885  add2_len = unhexify( add2, "3d554c430c8928dcdb1f6d5e5a4306b309856a9b78c5f431c55d7ebd519443bb" );
4886 
4887  test_offset = 0;
4888  fct_chk( ctr_drbg_init_entropy_len( &ctx, entropy_func, entropy, add_init, add_init_len, 32 ) == 0 );
4889 
4890  fct_chk( ctr_drbg_random_with_add( &ctx, buf, 16, add1, add1_len ) == 0 );
4891  fct_chk( ctr_drbg_reseed( &ctx, add_reseed, add_reseed_len ) == 0 );
4892  fct_chk( ctr_drbg_random_with_add( &ctx, buf, 16, add2, add2_len ) == 0 );
4893  hexify( output_str, buf, 16 );
4894  fct_chk( strcmp( (char *) output_str, "d3da71af70e196483c951d95eb3f0135" ) == 0 );
4895  }
4896  FCT_TEST_END();
4897 
4898 
4899  FCT_TEST_BGN(ctr_drbg_nist_validation_aes_256_use_dffalse2561280256_14)
4900  {
4901  unsigned char entropy[512];
4902  unsigned char add_init[512];
4903  unsigned char add1[512];
4904  unsigned char add_reseed[512];
4905  unsigned char add2[512];
4906  ctr_drbg_context ctx;
4907  unsigned char buf[512];
4908  unsigned char output_str[512];
4909  int add_init_len, add1_len, add_reseed_len, add2_len;
4910 
4911  memset( output_str, 0, 512 );
4912 
4913  unhexify( entropy, "e2366eec626bfd9cb932bcaa0569de6a7a37cf1dfde1f25d00d1a0c89fe25fea592cbd2af7c8202521fa48e15f7cc7e97e431b222b516a3ad2bb7b55b7fcf7f4" );
4914  add_init_len = unhexify( add_init, "89b885ddb12abc4f7422334f27c00439" );
4915  add1_len = unhexify( add1, "c77ee92bd17939efe9bee48af66589aee1d9fe4cd6c8ae26b74b3799e35342a6" );
4916  add_reseed_len = unhexify( add_reseed, "23e80d36ca72ecc38551e7e0a4f9502bed0e160f382d802f48fb2714ec6e3315" );
4917  add2_len = unhexify( add2, "6b83f7458dc813ce0b963b231c424e8bced599d002c0ef91a9c20dcc3f172ea5" );
4918 
4919  test_offset = 0;
4920  fct_chk( ctr_drbg_init_entropy_len( &ctx, entropy_func, entropy, add_init, add_init_len, 32 ) == 0 );
4921 
4922  fct_chk( ctr_drbg_random_with_add( &ctx, buf, 16, add1, add1_len ) == 0 );
4923  fct_chk( ctr_drbg_reseed( &ctx, add_reseed, add_reseed_len ) == 0 );
4924  fct_chk( ctr_drbg_random_with_add( &ctx, buf, 16, add2, add2_len ) == 0 );
4925  hexify( output_str, buf, 16 );
4926  fct_chk( strcmp( (char *) output_str, "81d13a6b79f05137e233e3c3a1091360" ) == 0 );
4927  }
4928  FCT_TEST_END();
4929 
4930 
4931  FCT_TEST_BGN(ctr_drbg_nist_validation_aes_256_use_dffalse2561282560_0)
4932  {
4933  unsigned char entropy[512];
4934  unsigned char add_init[512];
4935  unsigned char add1[512];
4936  unsigned char add_reseed[512];
4937  unsigned char add2[512];
4938  ctr_drbg_context ctx;
4939  unsigned char buf[512];
4940  unsigned char output_str[512];
4941  int add_init_len, add1_len, add_reseed_len, add2_len;
4942 
4943  memset( output_str, 0, 512 );
4944 
4945  unhexify( entropy, "77de4e5db3b308c38c814228583dfd1eb415771f4ae30f9cc2d35b48075286a4e8c2c6f441d1aac496d0d4be395d078519e31cb77d06d6f7fd4c033bc40fd659" );
4946  add_init_len = unhexify( add_init, "ff568be02a46343113f06949a16cc7d9da315aef82f5681f0459650e5e180e65d1d77b00e5ce3e3f9eb6c18efff4db36" );
4947  add1_len = unhexify( add1, "" );
4948  add_reseed_len = unhexify( add_reseed, "" );
4949  add2_len = unhexify( add2, "" );
4950 
4951  test_offset = 0;
4952  fct_chk( ctr_drbg_init_entropy_len( &ctx, entropy_func, entropy, add_init, add_init_len, 32 ) == 0 );
4953 
4954  fct_chk( ctr_drbg_random_with_add( &ctx, buf, 16, add1, add1_len ) == 0 );
4955  fct_chk( ctr_drbg_reseed( &ctx, add_reseed, add_reseed_len ) == 0 );
4956  fct_chk( ctr_drbg_random_with_add( &ctx, buf, 16, add2, add2_len ) == 0 );
4957  hexify( output_str, buf, 16 );
4958  fct_chk( strcmp( (char *) output_str, "448ac707ba934c909335425de62944d6" ) == 0 );
4959  }
4960  FCT_TEST_END();
4961 
4962 
4963  FCT_TEST_BGN(ctr_drbg_nist_validation_aes_256_use_dffalse2561282560_1)
4964  {
4965  unsigned char entropy[512];
4966  unsigned char add_init[512];
4967  unsigned char add1[512];
4968  unsigned char add_reseed[512];
4969  unsigned char add2[512];
4970  ctr_drbg_context ctx;
4971  unsigned char buf[512];
4972  unsigned char output_str[512];
4973  int add_init_len, add1_len, add_reseed_len, add2_len;
4974 
4975  memset( output_str, 0, 512 );
4976 
4977  unhexify( entropy, "667d3ed9f41a154ea33b55182b8bee4d7d46eff8e890c7036cf7c2665d44c28f9e3a8cff166dabfaf262933d337e729e0b6a60a51d00ba18f877bdc9d0cc659e" );
4978  add_init_len = unhexify( add_init, "6f092b85eb9f96427642f69467911172cba6df86e0db08d04e824cde6fb91d9b9af2cea53f42d53c45ee3e69a2327172" );
4979  add1_len = unhexify( add1, "" );
4980  add_reseed_len = unhexify( add_reseed, "" );
4981  add2_len = unhexify( add2, "" );
4982 
4983  test_offset = 0;
4984  fct_chk( ctr_drbg_init_entropy_len( &ctx, entropy_func, entropy, add_init, add_init_len, 32 ) == 0 );
4985 
4986  fct_chk( ctr_drbg_random_with_add( &ctx, buf, 16, add1, add1_len ) == 0 );
4987  fct_chk( ctr_drbg_reseed( &ctx, add_reseed, add_reseed_len ) == 0 );
4988  fct_chk( ctr_drbg_random_with_add( &ctx, buf, 16, add2, add2_len ) == 0 );
4989  hexify( output_str, buf, 16 );
4990  fct_chk( strcmp( (char *) output_str, "16a200f683ab862947e061cddaac5597" ) == 0 );
4991  }
4992  FCT_TEST_END();
4993 
4994 
4995  FCT_TEST_BGN(ctr_drbg_nist_validation_aes_256_use_dffalse2561282560_2)
4996  {
4997  unsigned char entropy[512];
4998  unsigned char add_init[512];
4999  unsigned char add1[512];
5000  unsigned char add_reseed[512];
5001  unsigned char add2[512];
5002  ctr_drbg_context ctx;
5003  unsigned char buf[512];
5004  unsigned char output_str[512];
5005  int add_init_len, add1_len, add_reseed_len, add2_len;
5006 
5007  memset( output_str, 0, 512 );
5008 
5009  unhexify( entropy, "80e56f9893beb9f22b2b03caa8f1861d5b31b37f636f2ccbc7e4040ad3073aa20f2f3c6bfefc041df8e57e7100794c42732b6d4b63d8bb51329ca99671d53c7c" );
5010  add_init_len = unhexify( add_init, "26e635a6a2b6402b968c1eea13c6a980a0ee9b8497abc14fccdc5bf8439008861f74de2c200505185bf5907d3adc9de2" );
5011  add1_len = unhexify( add1, "" );
5012  add_reseed_len = unhexify( add_reseed, "" );
5013  add2_len = unhexify( add2, "" );
5014 
5015  test_offset = 0;
5016  fct_chk( ctr_drbg_init_entropy_len( &ctx, entropy_func, entropy, add_init, add_init_len, 32 ) == 0 );
5017 
5018  fct_chk( ctr_drbg_random_with_add( &ctx, buf, 16, add1, add1_len ) == 0 );
5019  fct_chk( ctr_drbg_reseed( &ctx, add_reseed, add_reseed_len ) == 0 );
5020  fct_chk( ctr_drbg_random_with_add( &ctx, buf, 16, add2, add2_len ) == 0 );
5021  hexify( output_str, buf, 16 );
5022  fct_chk( strcmp( (char *) output_str, "807586c977febcf2ad28fcd45e1a1deb" ) == 0 );
5023  }
5024  FCT_TEST_END();
5025 
5026 
5027  FCT_TEST_BGN(ctr_drbg_nist_validation_aes_256_use_dffalse2561282560_3)
5028  {
5029  unsigned char entropy[512];
5030  unsigned char add_init[512];
5031  unsigned char add1[512];
5032  unsigned char add_reseed[512];
5033  unsigned char add2[512];
5034  ctr_drbg_context ctx;
5035  unsigned char buf[512];
5036  unsigned char output_str[512];
5037  int add_init_len, add1_len, add_reseed_len, add2_len;
5038 
5039  memset( output_str, 0, 512 );
5040 
5041  unhexify( entropy, "c963e17ef46b7b2c68756019704ec7435ec093c423600b3f2f99dd8989f8539a11b1b0598e93e84d50b65e816e794421ab546b202e4b224a8494538dda85da82" );
5042  add_init_len = unhexify( add_init, "b239c485d319ce964d69bd3dbc5b7ab9cc72ac9134a25e641bcd3c8b6f89e7e08ef2d0a45cf67667a4e2e634b32d73ff" );
5043  add1_len = unhexify( add1, "" );
5044  add_reseed_len = unhexify( add_reseed, "" );
5045  add2_len = unhexify( add2, "" );
5046 
5047  test_offset = 0;
5048  fct_chk( ctr_drbg_init_entropy_len( &ctx, entropy_func, entropy, add_init, add_init_len, 32 ) == 0 );
5049 
5050  fct_chk( ctr_drbg_random_with_add( &ctx, buf, 16, add1, add1_len ) == 0 );
5051  fct_chk( ctr_drbg_reseed( &ctx, add_reseed, add_reseed_len ) == 0 );
5052  fct_chk( ctr_drbg_random_with_add( &ctx, buf, 16, add2, add2_len ) == 0 );
5053  hexify( output_str, buf, 16 );
5054  fct_chk( strcmp( (char *) output_str, "2a3218b4d59f99bd3825631a6eefb09c" ) == 0 );
5055  }
5056  FCT_TEST_END();
5057 
5058 
5059  FCT_TEST_BGN(ctr_drbg_nist_validation_aes_256_use_dffalse2561282560_4)
5060  {
5061  unsigned char entropy[512];
5062  unsigned char add_init[512];
5063  unsigned char add1[512];
5064  unsigned char add_reseed[512];
5065  unsigned char add2[512];
5066  ctr_drbg_context ctx;
5067  unsigned char buf[512];
5068  unsigned char output_str[512];
5069  int add_init_len, add1_len, add_reseed_len, add2_len;
5070 
5071  memset( output_str, 0, 512 );
5072 
5073  unhexify( entropy, "71a440b70a2b5ce41b85de27d987fa2a0628d7990dd7cd1460fddc5410ce6e9bb0ae4f90231f45bc71188fd94e4170389a8bbe4a7e781c95c9a97ad78ba7d07b" );
5074  add_init_len = unhexify( add_init, "0239545a23735b803ae7cb7766194917d6cce164f7ec4f65c6ccd5ec1db5297722d4b7466589da4d39f4585856bc1d7e" );
5075  add1_len = unhexify( add1, "" );
5076  add_reseed_len = unhexify( add_reseed, "" );
5077  add2_len = unhexify( add2, "" );
5078 
5079  test_offset = 0;
5080  fct_chk( ctr_drbg_init_entropy_len( &ctx, entropy_func, entropy, add_init, add_init_len, 32 ) == 0 );
5081 
5082  fct_chk( ctr_drbg_random_with_add( &ctx, buf, 16, add1, add1_len ) == 0 );
5083  fct_chk( ctr_drbg_reseed( &ctx, add_reseed, add_reseed_len ) == 0 );
5084  fct_chk( ctr_drbg_random_with_add( &ctx, buf, 16, add2, add2_len ) == 0 );
5085  hexify( output_str, buf, 16 );
5086  fct_chk( strcmp( (char *) output_str, "9dafaa8b727c4829dda10a831e67419d" ) == 0 );
5087  }
5088  FCT_TEST_END();
5089 
5090 
5091  FCT_TEST_BGN(ctr_drbg_nist_validation_aes_256_use_dffalse2561282560_5)
5092  {
5093  unsigned char entropy[512];
5094  unsigned char add_init[512];
5095  unsigned char add1[512];
5096  unsigned char add_reseed[512];
5097  unsigned char add2[512];
5098  ctr_drbg_context ctx;
5099  unsigned char buf[512];
5100  unsigned char output_str[512];
5101  int add_init_len, add1_len, add_reseed_len, add2_len;
5102 
5103  memset( output_str, 0, 512 );
5104 
5105  unhexify( entropy, "d8908cfc1ea8518c1442e46731f30fdad85399894db262b8f4fdc0dbcbf11b60b60b25d3108f4b169fcbef621a14c635525fa3af8ccef6b91f808479509967f4" );
5106  add_init_len = unhexify( add_init, "237e8916eadd65e3422fe59ab257b7e6957fe24f760b499fbd052241879e8294b01d2169ec2b98f52660d9f5170dee22" );
5107  add1_len = unhexify( add1, "" );
5108  add_reseed_len = unhexify( add_reseed, "" );
5109  add2_len = unhexify( add2, "" );
5110 
5111  test_offset = 0;
5112  fct_chk( ctr_drbg_init_entropy_len( &ctx, entropy_func, entropy, add_init, add_init_len, 32 ) == 0 );
5113 
5114  fct_chk( ctr_drbg_random_with_add( &ctx, buf, 16, add1, add1_len ) == 0 );
5115  fct_chk( ctr_drbg_reseed( &ctx, add_reseed, add_reseed_len ) == 0 );
5116  fct_chk( ctr_drbg_random_with_add( &ctx, buf, 16, add2, add2_len ) == 0 );
5117  hexify( output_str, buf, 16 );
5118  fct_chk( strcmp( (char *) output_str, "593c39c56bb9e476550299ee8d85d2fc" ) == 0 );
5119  }
5120  FCT_TEST_END();
5121 
5122 
5123  FCT_TEST_BGN(ctr_drbg_nist_validation_aes_256_use_dffalse2561282560_6)
5124  {
5125  unsigned char entropy[512];
5126  unsigned char add_init[512];
5127  unsigned char add1[512];
5128  unsigned char add_reseed[512];
5129  unsigned char add2[512];
5130  ctr_drbg_context ctx;
5131  unsigned char buf[512];
5132  unsigned char output_str[512];
5133  int add_init_len, add1_len, add_reseed_len, add2_len;
5134 
5135  memset( output_str, 0, 512 );
5136 
5137  unhexify( entropy, "6767c3eb6ba1b19412c32bfe44e4d0317beba10f3abea328cda7b7c14109b72046c8691c1c7b28487037d381f77a3bbc8464a51b87de68bdc50ec9c658f915ab" );
5138  add_init_len = unhexify( add_init, "28b6639b415c79012c749dc2a0d18433ec36eda55815f0841241453fa11b9d572b7c29208e01dbb0be91e1075f305d7f" );
5139  add1_len = unhexify( add1, "" );
5140  add_reseed_len = unhexify( add_reseed, "" );
5141  add2_len = unhexify( add2, "" );
5142 
5143  test_offset = 0;
5144  fct_chk( ctr_drbg_init_entropy_len( &ctx, entropy_func, entropy, add_init, add_init_len, 32 ) == 0 );
5145 
5146  fct_chk( ctr_drbg_random_with_add( &ctx, buf, 16, add1, add1_len ) == 0 );
5147  fct_chk( ctr_drbg_reseed( &ctx, add_reseed, add_reseed_len ) == 0 );
5148  fct_chk( ctr_drbg_random_with_add( &ctx, buf, 16, add2, add2_len ) == 0 );
5149  hexify( output_str, buf, 16 );
5150  fct_chk( strcmp( (char *) output_str, "e390806219fa727e74a90011b4835ed6" ) == 0 );
5151  }
5152  FCT_TEST_END();
5153 
5154 
5155  FCT_TEST_BGN(ctr_drbg_nist_validation_aes_256_use_dffalse2561282560_7)
5156  {
5157  unsigned char entropy[512];
5158  unsigned char add_init[512];
5159  unsigned char add1[512];
5160  unsigned char add_reseed[512];
5161  unsigned char add2[512];
5162  ctr_drbg_context ctx;
5163  unsigned char buf[512];
5164  unsigned char output_str[512];
5165  int add_init_len, add1_len, add_reseed_len, add2_len;
5166 
5167  memset( output_str, 0, 512 );
5168 
5169  unhexify( entropy, "510b0dc06e84ceb901c7195c2f00ad7a04bdd75e0ab52b3d2cd47ddfcd89248dd58e3f1aa8c1ffe306f493905f65369eaed2a5b337dff8ac81c4c1e8903a6ad5" );
5170  add_init_len = unhexify( add_init, "ce735a8549fc3f9dfc7b96bf0d48936a711439ac7271d715a278718aca9e2fe3c801030bc74b048ac1e40852345e87cc" );
5171  add1_len = unhexify( add1, "" );
5172  add_reseed_len = unhexify( add_reseed, "" );
5173  add2_len = unhexify( add2, "" );
5174 
5175  test_offset = 0;
5176  fct_chk( ctr_drbg_init_entropy_len( &ctx, entropy_func, entropy, add_init, add_init_len, 32 ) == 0 );
5177 
5178  fct_chk( ctr_drbg_random_with_add( &ctx, buf, 16, add1, add1_len ) == 0 );
5179  fct_chk( ctr_drbg_reseed( &ctx, add_reseed, add_reseed_len ) == 0 );
5180  fct_chk( ctr_drbg_random_with_add( &ctx, buf, 16, add2, add2_len ) == 0 );
5181  hexify( output_str, buf, 16 );
5182  fct_chk( strcmp( (char *) output_str, "ba871ba5843083b553a57cf8defa39d7" ) == 0 );
5183  }
5184  FCT_TEST_END();
5185 
5186 
5187  FCT_TEST_BGN(ctr_drbg_nist_validation_aes_256_use_dffalse2561282560_8)
5188  {
5189  unsigned char entropy[512];
5190  unsigned char add_init[512];
5191  unsigned char add1[512];
5192  unsigned char add_reseed[512];
5193  unsigned char add2[512];
5194  ctr_drbg_context ctx;
5195  unsigned char buf[512];
5196  unsigned char output_str[512];
5197  int add_init_len, add1_len, add_reseed_len, add2_len;
5198 
5199  memset( output_str, 0, 512 );
5200 
5201  unhexify( entropy, "97511ae52590a0b64b75c37e10b89671880d2d6e8f90780ac27263dbc0e32d0824be5e80a88cf8fc3d4c607eb873c0322d09b9ca3498c4015c53ca6fee890093" );
5202  add_init_len = unhexify( add_init, "841ea92fa42c06769c5c52fe152d07837b8ff0048392caa5dd045054353d363b25439eb5885e96771dded4005f2baf42" );
5203  add1_len = unhexify( add1, "" );
5204  add_reseed_len = unhexify( add_reseed, "" );
5205  add2_len = unhexify( add2, "" );
5206 
5207  test_offset = 0;
5208  fct_chk( ctr_drbg_init_entropy_len( &ctx, entropy_func, entropy, add_init, add_init_len, 32 ) == 0 );
5209 
5210  fct_chk( ctr_drbg_random_with_add( &ctx, buf, 16, add1, add1_len ) == 0 );
5211  fct_chk( ctr_drbg_reseed( &ctx, add_reseed, add_reseed_len ) == 0 );
5212  fct_chk( ctr_drbg_random_with_add( &ctx, buf, 16, add2, add2_len ) == 0 );
5213  hexify( output_str, buf, 16 );
5214  fct_chk( strcmp( (char *) output_str, "a8fb31362bd997adf4d9116e23dbaf10" ) == 0 );
5215  }
5216  FCT_TEST_END();
5217 
5218 
5219  FCT_TEST_BGN(ctr_drbg_nist_validation_aes_256_use_dffalse2561282560_9)
5220  {
5221  unsigned char entropy[512];
5222  unsigned char add_init[512];
5223  unsigned char add1[512];
5224  unsigned char add_reseed[512];
5225  unsigned char add2[512];
5226  ctr_drbg_context ctx;
5227  unsigned char buf[512];
5228  unsigned char output_str[512];
5229  int add_init_len, add1_len, add_reseed_len, add2_len;
5230 
5231  memset( output_str, 0, 512 );
5232 
5233  unhexify( entropy, "bafc0ba64669c9a36514bde6169034101f29e2a0a4b9a55c0aae7dff0c5aca2371b523e26dc44bf75493bdaa023d1555294178288b70f1ae72150d9f7265b4e6" );
5234  add_init_len = unhexify( add_init, "55cd76fa5f004b97bb8e14170f79f52715d18c60f142b06d16e8e06c274798190a79c8b325163989d86323c03dbe0d68" );
5235  add1_len = unhexify( add1, "" );
5236  add_reseed_len = unhexify( add_reseed, "" );
5237  add2_len = unhexify( add2, "" );
5238 
5239  test_offset = 0;
5240  fct_chk( ctr_drbg_init_entropy_len( &ctx, entropy_func, entropy, add_init, add_init_len, 32 ) == 0 );
5241 
5242  fct_chk( ctr_drbg_random_with_add( &ctx, buf, 16, add1, add1_len ) == 0 );
5243  fct_chk( ctr_drbg_reseed( &ctx, add_reseed, add_reseed_len ) == 0 );
5244  fct_chk( ctr_drbg_random_with_add( &ctx, buf, 16, add2, add2_len ) == 0 );
5245  hexify( output_str, buf, 16 );
5246  fct_chk( strcmp( (char *) output_str, "fa16dbdaf01b3c202426adabf61fa64a" ) == 0 );
5247  }
5248  FCT_TEST_END();
5249 
5250 
5251  FCT_TEST_BGN(ctr_drbg_nist_validation_aes_256_use_dffalse2561282560_10)
5252  {
5253  unsigned char entropy[512];
5254  unsigned char add_init[512];
5255  unsigned char add1[512];
5256  unsigned char add_reseed[512];
5257  unsigned char add2[512];
5258  ctr_drbg_context ctx;
5259  unsigned char buf[512];
5260  unsigned char output_str[512];
5261  int add_init_len, add1_len, add_reseed_len, add2_len;
5262 
5263  memset( output_str, 0, 512 );
5264 
5265  unhexify( entropy, "92194e2c700fa724489683d0b6ddcf72c89b9c3f3ff584e802ae426be4908b1ade093bcf9baf7738b988dc0fde1739498a97c9610da853a7c83981c6a7b68096" );
5266  add_init_len = unhexify( add_init, "ff3f3098fa3d2b23b38ed982e7afb61d46b4848c878b9280f8e5ed6bd81176e76f0a2a85071a411829cf84421c22f23e" );
5267  add1_len = unhexify( add1, "" );
5268  add_reseed_len = unhexify( add_reseed, "" );
5269  add2_len = unhexify( add2, "" );
5270 
5271  test_offset = 0;
5272  fct_chk( ctr_drbg_init_entropy_len( &ctx, entropy_func, entropy, add_init, add_init_len, 32 ) == 0 );
5273 
5274  fct_chk( ctr_drbg_random_with_add( &ctx, buf, 16, add1, add1_len ) == 0 );
5275  fct_chk( ctr_drbg_reseed( &ctx, add_reseed, add_reseed_len ) == 0 );
5276  fct_chk( ctr_drbg_random_with_add( &ctx, buf, 16, add2, add2_len ) == 0 );
5277  hexify( output_str, buf, 16 );
5278  fct_chk( strcmp( (char *) output_str, "f85490426dc243ba09f9719bff73545a" ) == 0 );
5279  }
5280  FCT_TEST_END();
5281 
5282 
5283  FCT_TEST_BGN(ctr_drbg_nist_validation_aes_256_use_dffalse2561282560_11)
5284  {
5285  unsigned char entropy[512];
5286  unsigned char add_init[512];
5287  unsigned char add1[512];
5288  unsigned char add_reseed[512];
5289  unsigned char add2[512];
5290  ctr_drbg_context ctx;
5291  unsigned char buf[512];
5292  unsigned char output_str[512];
5293  int add_init_len, add1_len, add_reseed_len, add2_len;
5294 
5295  memset( output_str, 0, 512 );
5296 
5297  unhexify( entropy, "7c3806a32ccf3252ac27a92a07209cd7000b160faa70b9024420b903587d1d77f002d3abe28b563d32ccc502b88f83bc5996f3dbbf0f57835839eadd94563b9d" );
5298  add_init_len = unhexify( add_init, "7242c1020a63770cccf6f8100970990232a9d11d61c9b0d38fe5e7a568a86252a66481212e5d53c868561298dd5bdeec" );
5299  add1_len = unhexify( add1, "" );
5300  add_reseed_len = unhexify( add_reseed, "" );
5301  add2_len = unhexify( add2, "" );
5302 
5303  test_offset = 0;
5304  fct_chk( ctr_drbg_init_entropy_len( &ctx, entropy_func, entropy, add_init, add_init_len, 32 ) == 0 );
5305 
5306  fct_chk( ctr_drbg_random_with_add( &ctx, buf, 16, add1, add1_len ) == 0 );
5307  fct_chk( ctr_drbg_reseed( &ctx, add_reseed, add_reseed_len ) == 0 );
5308  fct_chk( ctr_drbg_random_with_add( &ctx, buf, 16, add2, add2_len ) == 0 );
5309  hexify( output_str, buf, 16 );
5310  fct_chk( strcmp( (char *) output_str, "2232181f08c1569efaad1a82bcb5f3ba" ) == 0 );
5311  }
5312  FCT_TEST_END();
5313 
5314 
5315  FCT_TEST_BGN(ctr_drbg_nist_validation_aes_256_use_dffalse2561282560_12)
5316  {
5317  unsigned char entropy[512];
5318  unsigned char add_init[512];
5319  unsigned char add1[512];
5320  unsigned char add_reseed[512];
5321  unsigned char add2[512];
5322  ctr_drbg_context ctx;
5323  unsigned char buf[512];
5324  unsigned char output_str[512];
5325  int add_init_len, add1_len, add_reseed_len, add2_len;
5326 
5327  memset( output_str, 0, 512 );
5328 
5329  unhexify( entropy, "fdae5f1ea253108fcb255d215a3ce1dc1d101acf89de4423b75a74619e95f3feaa35b5e0bec430b0ad9567df818989c36c77742129af335c90ceb6dd79c7d2c4" );
5330  add_init_len = unhexify( add_init, "a2e445290fed8187df6d2a57e68385bb62d700cb8f140410766b53e69e6a0f2939bbfa7ce091525c9051f064e383a2e1" );
5331  add1_len = unhexify( add1, "" );
5332  add_reseed_len = unhexify( add_reseed, "" );
5333  add2_len = unhexify( add2, "" );
5334 
5335  test_offset = 0;
5336  fct_chk( ctr_drbg_init_entropy_len( &ctx, entropy_func, entropy, add_init, add_init_len, 32 ) == 0 );
5337 
5338  fct_chk( ctr_drbg_random_with_add( &ctx, buf, 16, add1, add1_len ) == 0 );
5339  fct_chk( ctr_drbg_reseed( &ctx, add_reseed, add_reseed_len ) == 0 );
5340  fct_chk( ctr_drbg_random_with_add( &ctx, buf, 16, add2, add2_len ) == 0 );
5341  hexify( output_str, buf, 16 );
5342  fct_chk( strcmp( (char *) output_str, "3841e2d795b17cb9a2081d6016a1a71d" ) == 0 );
5343  }
5344  FCT_TEST_END();
5345 
5346 
5347  FCT_TEST_BGN(ctr_drbg_nist_validation_aes_256_use_dffalse2561282560_13)
5348  {
5349  unsigned char entropy[512];
5350  unsigned char add_init[512];
5351  unsigned char add1[512];
5352  unsigned char add_reseed[512];
5353  unsigned char add2[512];
5354  ctr_drbg_context ctx;
5355  unsigned char buf[512];
5356  unsigned char output_str[512];
5357  int add_init_len, add1_len, add_reseed_len, add2_len;
5358 
5359  memset( output_str, 0, 512 );
5360 
5361  unhexify( entropy, "77bef884a91126564b3214029ac6842d86e4c1fa283e33d6828d428377416f66947e39a4a6708e10bfdae8337a6f302420a6649fc109d0f094c18c1e9361375a" );
5362  add_init_len = unhexify( add_init, "bc885454e385d911336dda9b7a609a6a7079a4a5a860fcd704161c34658bd98685bb03418b7f24f2ed9475eb8ceb232e" );
5363  add1_len = unhexify( add1, "" );
5364  add_reseed_len = unhexify( add_reseed, "" );
5365  add2_len = unhexify( add2, "" );
5366 
5367  test_offset = 0;
5368  fct_chk( ctr_drbg_init_entropy_len( &ctx, entropy_func, entropy, add_init, add_init_len, 32 ) == 0 );
5369 
5370  fct_chk( ctr_drbg_random_with_add( &ctx, buf, 16, add1, add1_len ) == 0 );
5371  fct_chk( ctr_drbg_reseed( &ctx, add_reseed, add_reseed_len ) == 0 );
5372  fct_chk( ctr_drbg_random_with_add( &ctx, buf, 16, add2, add2_len ) == 0 );
5373  hexify( output_str, buf, 16 );
5374  fct_chk( strcmp( (char *) output_str, "ea20780ed280d8109f811a6a398c3e76" ) == 0 );
5375  }
5376  FCT_TEST_END();
5377 
5378 
5379  FCT_TEST_BGN(ctr_drbg_nist_validation_aes_256_use_dffalse2561282560_14)
5380  {
5381  unsigned char entropy[512];
5382  unsigned char add_init[512];
5383  unsigned char add1[512];
5384  unsigned char add_reseed[512];
5385  unsigned char add2[512];
5386  ctr_drbg_context ctx;
5387  unsigned char buf[512];
5388  unsigned char output_str[512];
5389  int add_init_len, add1_len, add_reseed_len, add2_len;
5390 
5391  memset( output_str, 0, 512 );
5392 
5393  unhexify( entropy, "56940a6fc4823c9e42e8ffed63fc3cf46d0a2b305c236a511b0b5ec7005ecd8989bf2006ebe52ed55845f7cc25d3d0086cece95f0bff6fa7e17ddf474704abfe" );
5394  add_init_len = unhexify( add_init, "c1825cf00cdc2da93adb3e7a33c1f3a76c49166887883744ea2683ddca23f31900f25c434364c992a6d913f753a9c42a" );
5395  add1_len = unhexify( add1, "" );
5396  add_reseed_len = unhexify( add_reseed, "" );
5397  add2_len = unhexify( add2, "" );
5398 
5399  test_offset = 0;
5400  fct_chk( ctr_drbg_init_entropy_len( &ctx, entropy_func, entropy, add_init, add_init_len, 32 ) == 0 );
5401 
5402  fct_chk( ctr_drbg_random_with_add( &ctx, buf, 16, add1, add1_len ) == 0 );
5403  fct_chk( ctr_drbg_reseed( &ctx, add_reseed, add_reseed_len ) == 0 );
5404  fct_chk( ctr_drbg_random_with_add( &ctx, buf, 16, add2, add2_len ) == 0 );
5405  hexify( output_str, buf, 16 );
5406  fct_chk( strcmp( (char *) output_str, "b037c7f0f85f4d7eaeeb17f4c8643a74" ) == 0 );
5407  }
5408  FCT_TEST_END();
5409 
5410 
5411  FCT_TEST_BGN(ctr_drbg_nist_validation_aes_256_use_dffalse256128256256_0)
5412  {
5413  unsigned char entropy[512];
5414  unsigned char add_init[512];
5415  unsigned char add1[512];
5416  unsigned char add_reseed[512];
5417  unsigned char add2[512];
5418  ctr_drbg_context ctx;
5419  unsigned char buf[512];
5420  unsigned char output_str[512];
5421  int add_init_len, add1_len, add_reseed_len, add2_len;
5422 
5423  memset( output_str, 0, 512 );
5424 
5425  unhexify( entropy, "5d85c56d0d20ee39958a90f301d2f8bb136fa34d09b41a0c9375114a0df9c1dcdb2a62c4be398d9eaf2440949b806f0e5a977da608eeb652a41711d1e9b72655" );
5426  add_init_len = unhexify( add_init, "19b83c0deea6463a3912d21ffc8d8041a5b30640352abc9652770cfca99dc53c9c09942ddd67b91f4da50a8615462ce4" );
5427  add1_len = unhexify( add1, "9c1db928b95c84cb674060a6d2f6b7a6a5d43e9ee967e9f821bf309ca5f8821f" );
5428  add_reseed_len = unhexify( add_reseed, "a3111cb57365c617df0b0bb3a1aada49ca789bc75903eeb21e42a7d3d0dd0825" );
5429  add2_len = unhexify( add2, "ce7f557c70676987d13aca60bc4585147efeed97be139871a1b29caa1e180af9" );
5430 
5431  test_offset = 0;
5432  fct_chk( ctr_drbg_init_entropy_len( &ctx, entropy_func, entropy, add_init, add_init_len, 32 ) == 0 );
5433 
5434  fct_chk( ctr_drbg_random_with_add( &ctx, buf, 16, add1, add1_len ) == 0 );
5435  fct_chk( ctr_drbg_reseed( &ctx, add_reseed, add_reseed_len ) == 0 );
5436  fct_chk( ctr_drbg_random_with_add( &ctx, buf, 16, add2, add2_len ) == 0 );
5437  hexify( output_str, buf, 16 );
5438  fct_chk( strcmp( (char *) output_str, "4a49430277d64446e2fa75763eb79ec6" ) == 0 );
5439  }
5440  FCT_TEST_END();
5441 
5442 
5443  FCT_TEST_BGN(ctr_drbg_nist_validation_aes_256_use_dffalse256128256256_1)
5444  {
5445  unsigned char entropy[512];
5446  unsigned char add_init[512];
5447  unsigned char add1[512];
5448  unsigned char add_reseed[512];
5449  unsigned char add2[512];
5450  ctr_drbg_context ctx;
5451  unsigned char buf[512];
5452  unsigned char output_str[512];
5453  int add_init_len, add1_len, add_reseed_len, add2_len;
5454 
5455  memset( output_str, 0, 512 );
5456 
5457  unhexify( entropy, "2975a099f7e6530e5576534c25171f39131d6bffb99259f7f2bbf7d77de9fb1e829052b54a9631a733113021692eba1097438347c6de82307a0c2bb308edf065" );
5458  add_init_len = unhexify( add_init, "239f21be6cda23e8660c8a5e04c79f6dad6f363ac6dcffd9228699ae43fbce5ac3c51645500cb3eae68f0b604dc4472c" );
5459  add1_len = unhexify( add1, "d451a54584e6d1d634217379e7e60e67303e19dd4ba63b097899c7349a5a7433" );
5460  add_reseed_len = unhexify( add_reseed, "a33dc24c6a656eb26275415581d568b7c2424a9c5fb9e2944ca35ecbf641f713" );
5461  add2_len = unhexify( add2, "8dfccc62379af46844df136122b72a878d9d61b40ccaa029b09e6b9f0b4d0192" );
5462 
5463  test_offset = 0;
5464  fct_chk( ctr_drbg_init_entropy_len( &ctx, entropy_func, entropy, add_init, add_init_len, 32 ) == 0 );
5465 
5466  fct_chk( ctr_drbg_random_with_add( &ctx, buf, 16, add1, add1_len ) == 0 );
5467  fct_chk( ctr_drbg_reseed( &ctx, add_reseed, add_reseed_len ) == 0 );
5468  fct_chk( ctr_drbg_random_with_add( &ctx, buf, 16, add2, add2_len ) == 0 );
5469  hexify( output_str, buf, 16 );
5470  fct_chk( strcmp( (char *) output_str, "005e91760d89ecb64b5fc3b0e222fca3" ) == 0 );
5471  }
5472  FCT_TEST_END();
5473 
5474 
5475  FCT_TEST_BGN(ctr_drbg_nist_validation_aes_256_use_dffalse256128256256_2)
5476  {
5477  unsigned char entropy[512];
5478  unsigned char add_init[512];
5479  unsigned char add1[512];
5480  unsigned char add_reseed[512];
5481  unsigned char add2[512];
5482  ctr_drbg_context ctx;
5483  unsigned char buf[512];
5484  unsigned char output_str[512];
5485  int add_init_len, add1_len, add_reseed_len, add2_len;
5486 
5487  memset( output_str, 0, 512 );
5488 
5489  unhexify( entropy, "37c94d11ed0e93b8199d43d6eb242165dddd12fe39c0bea4cdef6bcfeb5d17bb866f080a9daef128f685fb3bc59c945927fb0aa3e17068515c3c92fbdf04a228" );
5490  add_init_len = unhexify( add_init, "e326abbe1db3ead3738d2ca4d9f1d62080cd23ff3396f43a0af992bed2420cec6661dfaac83c3c4d83347ac840f7dc14" );
5491  add1_len = unhexify( add1, "1ff41405dbb3b12b8ddc973069edc2d2801af0e0dc9bde2cdd35c5b2d4091509" );
5492  add_reseed_len = unhexify( add_reseed, "138b6d2eabef4b32174afb0156ad1df570cf6e5f6ebde5d19cc30daffd9ca4f2" );
5493  add2_len = unhexify( add2, "f27cf7422808c54c58fcdde1cece92f5342c7a10ac43ab3b2e53362b2272e3ad" );
5494 
5495  test_offset = 0;
5496  fct_chk( ctr_drbg_init_entropy_len( &ctx, entropy_func, entropy, add_init, add_init_len, 32 ) == 0 );
5497 
5498  fct_chk( ctr_drbg_random_with_add( &ctx, buf, 16, add1, add1_len ) == 0 );
5499  fct_chk( ctr_drbg_reseed( &ctx, add_reseed, add_reseed_len ) == 0 );
5500  fct_chk( ctr_drbg_random_with_add( &ctx, buf, 16, add2, add2_len ) == 0 );
5501  hexify( output_str, buf, 16 );
5502  fct_chk( strcmp( (char *) output_str, "506d6fae6fff9f222e65ac86df61a832" ) == 0 );
5503  }
5504  FCT_TEST_END();
5505 
5506 
5507  FCT_TEST_BGN(ctr_drbg_nist_validation_aes_256_use_dffalse256128256256_3)
5508  {
5509  unsigned char entropy[512];
5510  unsigned char add_init[512];
5511  unsigned char add1[512];
5512  unsigned char add_reseed[512];
5513  unsigned char add2[512];
5514  ctr_drbg_context ctx;
5515  unsigned char buf[512];
5516  unsigned char output_str[512];
5517  int add_init_len, add1_len, add_reseed_len, add2_len;
5518 
5519  memset( output_str, 0, 512 );
5520 
5521  unhexify( entropy, "514ec8c02439290853434e75e3d0bd159eacd5ac13b8f202cfd5c36cdc0fe99b53a1b7a1619e94eb661ac825a48ea5ef8bb9120dd6efc351e39eb7cc5223f637" );
5522  add_init_len = unhexify( add_init, "cb0229d2bb72d910b0169e8f93318905aef8dd93ed91a2f8388545db32db3f2489e7988b50de64c49a9f7feb5abe8630" );
5523  add1_len = unhexify( add1, "a6ed69c9216c551793107f1bdaa04944f6d76fe4474f64bb08b0ebc10a18f337" );
5524  add_reseed_len = unhexify( add_reseed, "e0bc1cc56fdfeef686e0c7ec359e2e8bd48d76c8643c40d12325328170bbf702" );
5525  add2_len = unhexify( add2, "87c5b23aa3c100ff9e368fc47534ff8fa2f9e2bfd3599519ee6f60164485cf6d" );
5526 
5527  test_offset = 0;
5528  fct_chk( ctr_drbg_init_entropy_len( &ctx, entropy_func, entropy, add_init, add_init_len, 32 ) == 0 );
5529 
5530  fct_chk( ctr_drbg_random_with_add( &ctx, buf, 16, add1, add1_len ) == 0 );
5531  fct_chk( ctr_drbg_reseed( &ctx, add_reseed, add_reseed_len ) == 0 );
5532  fct_chk( ctr_drbg_random_with_add( &ctx, buf, 16, add2, add2_len ) == 0 );
5533  hexify( output_str, buf, 16 );
5534  fct_chk( strcmp( (char *) output_str, "bd419968f636e374268ccdd62403f79c" ) == 0 );
5535  }
5536  FCT_TEST_END();
5537 
5538 
5539  FCT_TEST_BGN(ctr_drbg_nist_validation_aes_256_use_dffalse256128256256_4)
5540  {
5541  unsigned char entropy[512];
5542  unsigned char add_init[512];
5543  unsigned char add1[512];
5544  unsigned char add_reseed[512];
5545  unsigned char add2[512];
5546  ctr_drbg_context ctx;
5547  unsigned char buf[512];
5548  unsigned char output_str[512];
5549  int add_init_len, add1_len, add_reseed_len, add2_len;
5550 
5551  memset( output_str, 0, 512 );
5552 
5553  unhexify( entropy, "9facd9f4587819acb358e4936d9f44b67ddf82616e79a44ffd6a2510f652f6b9cebc1424b5c642362b19f63c615f49686df66a8f80ddffb56ce0c0d8540150fb" );
5554  add_init_len = unhexify( add_init, "bdd156ef3c4e09b77fe8781c446eac55b562e4ee1b7d15515a966882d4c7fadb0fc7b37554ba03908838db40499ded5b" );
5555  add1_len = unhexify( add1, "35ea316fe302786f626e3831530622b62eb33a3608d4af3384ecfcbd198f3f05" );
5556  add_reseed_len = unhexify( add_reseed, "8d4fae22290b6ef8618ded1c3412e85fab7b8d17fb9cbd09dbc87f97279cc72d" );
5557  add2_len = unhexify( add2, "2f54928372e4ce447201427a3ae05769ae1c54b2e83bdc86d380a90b07f2890c" );
5558 
5559  test_offset = 0;
5560  fct_chk( ctr_drbg_init_entropy_len( &ctx, entropy_func, entropy, add_init, add_init_len, 32 ) == 0 );
5561 
5562  fct_chk( ctr_drbg_random_with_add( &ctx, buf, 16, add1, add1_len ) == 0 );
5563  fct_chk( ctr_drbg_reseed( &ctx, add_reseed, add_reseed_len ) == 0 );
5564  fct_chk( ctr_drbg_random_with_add( &ctx, buf, 16, add2, add2_len ) == 0 );
5565  hexify( output_str, buf, 16 );
5566  fct_chk( strcmp( (char *) output_str, "8045e8da88b1bc126785c8a771db5354" ) == 0 );
5567  }
5568  FCT_TEST_END();
5569 
5570 
5571  FCT_TEST_BGN(ctr_drbg_nist_validation_aes_256_use_dffalse256128256256_5)
5572  {
5573  unsigned char entropy[512];
5574  unsigned char add_init[512];
5575  unsigned char add1[512];
5576  unsigned char add_reseed[512];
5577  unsigned char add2[512];
5578  ctr_drbg_context ctx;
5579  unsigned char buf[512];
5580  unsigned char output_str[512];
5581  int add_init_len, add1_len, add_reseed_len, add2_len;
5582 
5583  memset( output_str, 0, 512 );
5584 
5585  unhexify( entropy, "36895f574e9e9d08e6c885d305eb4764c1e5689d1f99c2462b3ebdf659e8ce43818dfc886ec797843bfee361b554cd5f969b0c7b0381b53f4afc1bcadbf7eb1c" );
5586  add_init_len = unhexify( add_init, "154876298a1b63334624b367da984eb31d7260abe79ced41de35ba68a716233a5df0937b90f89dde7fd55a9693c9031f" );
5587  add1_len = unhexify( add1, "c3a46105c50a167a5b0391053f3814a06c90cea2c1fa9329d97fdbc62887ff6d" );
5588  add_reseed_len = unhexify( add_reseed, "54c7d66c65dbddb4665981bff0f503de37d724362aeb67abce6a870fd6a7398a" );
5589  add2_len = unhexify( add2, "58204ca953cbd46dd6c8870b358cba77c436870db49bcd3e2f92697bb580b460" );
5590 
5591  test_offset = 0;
5592  fct_chk( ctr_drbg_init_entropy_len( &ctx, entropy_func, entropy, add_init, add_init_len, 32 ) == 0 );
5593 
5594  fct_chk( ctr_drbg_random_with_add( &ctx, buf, 16, add1, add1_len ) == 0 );
5595  fct_chk( ctr_drbg_reseed( &ctx, add_reseed, add_reseed_len ) == 0 );
5596  fct_chk( ctr_drbg_random_with_add( &ctx, buf, 16, add2, add2_len ) == 0 );
5597  hexify( output_str, buf, 16 );
5598  fct_chk( strcmp( (char *) output_str, "cd903c0f11ea701214f91715cfec11a3" ) == 0 );
5599  }
5600  FCT_TEST_END();
5601 
5602 
5603  FCT_TEST_BGN(ctr_drbg_nist_validation_aes_256_use_dffalse256128256256_6)
5604  {
5605  unsigned char entropy[512];
5606  unsigned char add_init[512];
5607  unsigned char add1[512];
5608  unsigned char add_reseed[512];
5609  unsigned char add2[512];
5610  ctr_drbg_context ctx;
5611  unsigned char buf[512];
5612  unsigned char output_str[512];
5613  int add_init_len, add1_len, add_reseed_len, add2_len;
5614 
5615  memset( output_str, 0, 512 );
5616 
5617  unhexify( entropy, "1cd97b6e6e7f19401e409aea7b3ec33a8faefd71402b8f34a73c1cb1af215e0e87debe68bce590d41c1f90c6ad9db3d30b3901862e076d765ffdf58776e5fb7e" );
5618  add_init_len = unhexify( add_init, "94e273fde1e699f84aeef343eb0277c50d169bb5496575301021a2be50df6a555d1422ea88e0e4d905158e93fd8d0089" );
5619  add1_len = unhexify( add1, "6ee75e9f9aee6ac93e20f742f20427e5eb9b4ad2ed06fbba8c7b7870a96941ac" );
5620  add_reseed_len = unhexify( add_reseed, "0ba60399893ede284372bc4e0a37702a23b16aa8e5fe70ea95429af87ff291aa" );
5621  add2_len = unhexify( add2, "94bd2b51c32d29cd14e2123221e45ec0cf1f38766fb6bb0716856d0138f6fa39" );
5622 
5623  test_offset = 0;
5624  fct_chk( ctr_drbg_init_entropy_len( &ctx, entropy_func, entropy, add_init, add_init_len, 32 ) == 0 );
5625 
5626  fct_chk( ctr_drbg_random_with_add( &ctx, buf, 16, add1, add1_len ) == 0 );
5627  fct_chk( ctr_drbg_reseed( &ctx, add_reseed, add_reseed_len ) == 0 );
5628  fct_chk( ctr_drbg_random_with_add( &ctx, buf, 16, add2, add2_len ) == 0 );
5629  hexify( output_str, buf, 16 );
5630  fct_chk( strcmp( (char *) output_str, "831793686abd406f7b385cd59e497b18" ) == 0 );
5631  }
5632  FCT_TEST_END();
5633 
5634 
5635  FCT_TEST_BGN(ctr_drbg_nist_validation_aes_256_use_dffalse256128256256_7)
5636  {
5637  unsigned char entropy[512];
5638  unsigned char add_init[512];
5639  unsigned char add1[512];
5640  unsigned char add_reseed[512];
5641  unsigned char add2[512];
5642  ctr_drbg_context ctx;
5643  unsigned char buf[512];
5644  unsigned char output_str[512];
5645  int add_init_len, add1_len, add_reseed_len, add2_len;
5646 
5647  memset( output_str, 0, 512 );
5648 
5649  unhexify( entropy, "de6d2a3b6ad9af07058d3b1d1976cf61d49566b965eb4e9b74a4cad8e286e7a40b254b860e2e209a8cb4cff3a8e615b84f5ae7505957a758e266a4c3e915d251" );
5650  add_init_len = unhexify( add_init, "5a699113ebf98bff9cb780ce29747a61ba2d7581a5716065d018c89348d7c2ed3f5bba32442cd192c1e37b77b98f5791" );
5651  add1_len = unhexify( add1, "ed18c16a61ba5ecc0755f94c286390a6d46e6e26439dadd36c83ebdee42b4b4c" );
5652  add_reseed_len = unhexify( add_reseed, "7c4550d058b85580be2053fd9d933c87041c5c3f62a5b6b303259dafc90d9041" );
5653  add2_len = unhexify( add2, "ebebfcb9b4b3595e516939ca0688422bbdfc4b9f67b0d6619757cb315b7d7908" );
5654 
5655  test_offset = 0;
5656  fct_chk( ctr_drbg_init_entropy_len( &ctx, entropy_func, entropy, add_init, add_init_len, 32 ) == 0 );
5657 
5658  fct_chk( ctr_drbg_random_with_add( &ctx, buf, 16, add1, add1_len ) == 0 );
5659  fct_chk( ctr_drbg_reseed( &ctx, add_reseed, add_reseed_len ) == 0 );
5660  fct_chk( ctr_drbg_random_with_add( &ctx, buf, 16, add2, add2_len ) == 0 );
5661  hexify( output_str, buf, 16 );
5662  fct_chk( strcmp( (char *) output_str, "1a5a496aa2268483444b3740c9cc4104" ) == 0 );
5663  }
5664  FCT_TEST_END();
5665 
5666 
5667  FCT_TEST_BGN(ctr_drbg_nist_validation_aes_256_use_dffalse256128256256_8)
5668  {
5669  unsigned char entropy[512];
5670  unsigned char add_init[512];
5671  unsigned char add1[512];
5672  unsigned char add_reseed[512];
5673  unsigned char add2[512];
5674  ctr_drbg_context ctx;
5675  unsigned char buf[512];
5676  unsigned char output_str[512];
5677  int add_init_len, add1_len, add_reseed_len, add2_len;
5678 
5679  memset( output_str, 0, 512 );
5680 
5681  unhexify( entropy, "4765399ccbbf3d33433bb992ee29e4381f28d800b05431f1c5b3e949c5db72c582bfe8ba08db1575b866816cabbe5e1d31d8a870ceed49fb75676c97020d1f22" );
5682  add_init_len = unhexify( add_init, "42450f2689b87a3dd940f3b9e3b32d4654c725a24ddd2c22f006694321dacf1980b50f7ac0401626453ec836039bfdc9" );
5683  add1_len = unhexify( add1, "6ee5a7613c25ecec263a2fd2288948b2df9a05d50040c4031b0653878fdb067f" );
5684  add_reseed_len = unhexify( add_reseed, "68a1038481be7412d6a7c8474d4b2a2535c9b55ea301ee800d5a846127d345cb" );
5685  add2_len = unhexify( add2, "7a1915cf78e6da2dc7840cba40390d668d07571608b77857d2224c4531c17bb8" );
5686 
5687  test_offset = 0;
5688  fct_chk( ctr_drbg_init_entropy_len( &ctx, entropy_func, entropy, add_init, add_init_len, 32 ) == 0 );
5689 
5690  fct_chk( ctr_drbg_random_with_add( &ctx, buf, 16, add1, add1_len ) == 0 );
5691  fct_chk( ctr_drbg_reseed( &ctx, add_reseed, add_reseed_len ) == 0 );
5692  fct_chk( ctr_drbg_random_with_add( &ctx, buf, 16, add2, add2_len ) == 0 );
5693  hexify( output_str, buf, 16 );
5694  fct_chk( strcmp( (char *) output_str, "80a6c622e64495f9a391f5a8a9c76818" ) == 0 );
5695  }
5696  FCT_TEST_END();
5697 
5698 
5699  FCT_TEST_BGN(ctr_drbg_nist_validation_aes_256_use_dffalse256128256256_9)
5700  {
5701  unsigned char entropy[512];
5702  unsigned char add_init[512];
5703  unsigned char add1[512];
5704  unsigned char add_reseed[512];
5705  unsigned char add2[512];
5706  ctr_drbg_context ctx;
5707  unsigned char buf[512];
5708  unsigned char output_str[512];
5709  int add_init_len, add1_len, add_reseed_len, add2_len;
5710 
5711  memset( output_str, 0, 512 );
5712 
5713  unhexify( entropy, "d2f92706ca3fb9ced8183c74704440d7eedee1542c2e812f65afc83f4b62dadf1c51fa68f8d5f457a893211c8afc82c93e6a1e15822eff0d4ada6efd25d271a0" );
5714  add_init_len = unhexify( add_init, "873869e194201b822b140bdd7797dd1ed408f2190b759c068b7019e6707f60751e101d3465c4ec57dbf9d1ea7597fa44" );
5715  add1_len = unhexify( add1, "8d0393d2a1ae8930ea88773adfa47b49060f0bf2d3def2acc57786bfbd1e2d6f" );
5716  add_reseed_len = unhexify( add_reseed, "5bcf5ff4fbd9eaabf8bf82ec7c59b043fd64b0025ad1ab2b384e399b9e13147a" );
5717  add2_len = unhexify( add2, "6e2d05e286c90502a3abf2ee72ab7ffb520ce5facfb27e095787a09a412abec3" );
5718 
5719  test_offset = 0;
5720  fct_chk( ctr_drbg_init_entropy_len( &ctx, entropy_func, entropy, add_init, add_init_len, 32 ) == 0 );
5721 
5722  fct_chk( ctr_drbg_random_with_add( &ctx, buf, 16, add1, add1_len ) == 0 );
5723  fct_chk( ctr_drbg_reseed( &ctx, add_reseed, add_reseed_len ) == 0 );
5724  fct_chk( ctr_drbg_random_with_add( &ctx, buf, 16, add2, add2_len ) == 0 );
5725  hexify( output_str, buf, 16 );
5726  fct_chk( strcmp( (char *) output_str, "e1ceda71b8feb4b0d14d35bbb57a79a2" ) == 0 );
5727  }
5728  FCT_TEST_END();
5729 
5730 
5731  FCT_TEST_BGN(ctr_drbg_nist_validation_aes_256_use_dffalse256128256256_10)
5732  {
5733  unsigned char entropy[512];
5734  unsigned char add_init[512];
5735  unsigned char add1[512];
5736  unsigned char add_reseed[512];
5737  unsigned char add2[512];
5738  ctr_drbg_context ctx;
5739  unsigned char buf[512];
5740  unsigned char output_str[512];
5741  int add_init_len, add1_len, add_reseed_len, add2_len;
5742 
5743  memset( output_str, 0, 512 );
5744 
5745  unhexify( entropy, "34bc292809674352ffb60786dca59ec799188aa401b366a48cdeddf37c12ee4c666f8fb3a0d53df4cd7191166d50ff01d992f94cd92da7a385ffe5795b197ced" );
5746  add_init_len = unhexify( add_init, "1fecb5fe87c2a208b4f193e9c3ff810954c554150d544baea1685fb4774320315d5cb651be493ef120ef6966e3e7518c" );
5747  add1_len = unhexify( add1, "38249fed34a907768eac49267c2c613a65154eec5b73b541d7d7b314b5080061" );
5748  add_reseed_len = unhexify( add_reseed, "115be9cb914b50480fffe078d8170870b56129a0a74271dee063f8b2049e1be3" );
5749  add2_len = unhexify( add2, "69fa6faf7223f5bb1b55f35a544f78181579b1745990053357916fe507e51db6" );
5750 
5751  test_offset = 0;
5752  fct_chk( ctr_drbg_init_entropy_len( &ctx, entropy_func, entropy, add_init, add_init_len, 32 ) == 0 );
5753 
5754  fct_chk( ctr_drbg_random_with_add( &ctx, buf, 16, add1, add1_len ) == 0 );
5755  fct_chk( ctr_drbg_reseed( &ctx, add_reseed, add_reseed_len ) == 0 );
5756  fct_chk( ctr_drbg_random_with_add( &ctx, buf, 16, add2, add2_len ) == 0 );
5757  hexify( output_str, buf, 16 );
5758  fct_chk( strcmp( (char *) output_str, "60cc92d3ba3ff0715f5627182334ed1b" ) == 0 );
5759  }
5760  FCT_TEST_END();
5761 
5762 
5763  FCT_TEST_BGN(ctr_drbg_nist_validation_aes_256_use_dffalse256128256256_11)
5764  {
5765  unsigned char entropy[512];
5766  unsigned char add_init[512];
5767  unsigned char add1[512];
5768  unsigned char add_reseed[512];
5769  unsigned char add2[512];
5770  ctr_drbg_context ctx;
5771  unsigned char buf[512];
5772  unsigned char output_str[512];
5773  int add_init_len, add1_len, add_reseed_len, add2_len;
5774 
5775  memset( output_str, 0, 512 );
5776 
5777  unhexify( entropy, "4aa6917a5c9f370590d70536fdd89c916fec5e5bcbade8c6a6cfcf5b232c98a6b3e6b79a2dfb0778fbc3f1da7b06044d7b0fa2c04ffc3b71324aca1ee19f936b" );
5778  add_init_len = unhexify( add_init, "4d283eb5ecd85a1613c975e24832770643613c9a5aee0d8649bc0d68c89cf1ea6ec3a1a22eefd9e212d602c338d64c6e" );
5779  add1_len = unhexify( add1, "05a7092a684ba7a7fbd33533f9be58a4140a3855d4c5f44a31d665a0720c1739" );
5780  add_reseed_len = unhexify( add_reseed, "557ef1bedc890d1543de6cfeb25642782683d77a46bc8aa0836b07157599c7c3" );
5781  add2_len = unhexify( add2, "e87e45073ff8e36c38b128cd2275a160e431787b5e81f6c2fd7a37909eb72ea5" );
5782 
5783  test_offset = 0;
5784  fct_chk( ctr_drbg_init_entropy_len( &ctx, entropy_func, entropy, add_init, add_init_len, 32 ) == 0 );
5785 
5786  fct_chk( ctr_drbg_random_with_add( &ctx, buf, 16, add1, add1_len ) == 0 );
5787  fct_chk( ctr_drbg_reseed( &ctx, add_reseed, add_reseed_len ) == 0 );
5788  fct_chk( ctr_drbg_random_with_add( &ctx, buf, 16, add2, add2_len ) == 0 );
5789  hexify( output_str, buf, 16 );
5790  fct_chk( strcmp( (char *) output_str, "31ecfb1bcf3253ba5f71b185a66c7cff" ) == 0 );
5791  }
5792  FCT_TEST_END();
5793 
5794 
5795  FCT_TEST_BGN(ctr_drbg_nist_validation_aes_256_use_dffalse256128256256_12)
5796  {
5797  unsigned char entropy[512];
5798  unsigned char add_init[512];
5799  unsigned char add1[512];
5800  unsigned char add_reseed[512];
5801  unsigned char add2[512];
5802  ctr_drbg_context ctx;
5803  unsigned char buf[512];
5804  unsigned char output_str[512];
5805  int add_init_len, add1_len, add_reseed_len, add2_len;
5806 
5807  memset( output_str, 0, 512 );
5808 
5809  unhexify( entropy, "22f8ad57a2dfa8010e2865ad6263823652917b84dfea61f639efdb0fdbb35c6341ca7721095d69686212dffe78410c0d0db94f04756d52e7d76165d5a1d516d9" );
5810  add_init_len = unhexify( add_init, "a6f488104a6c03e354d5d1805c62dcd3016322d218747fa83f9199e20f6ab1cfbc2b889536bda1187f59b7294d557ff2" );
5811  add1_len = unhexify( add1, "fb9951d563f7aa88db545874b1a3049c5f79774d486e7a28aed1ed75f59224a5" );
5812  add_reseed_len = unhexify( add_reseed, "b1ea7c6b53e79e4e947e63086dee32dcc17bc4f27fba6142f8215ec081cdd5c9" );
5813  add2_len = unhexify( add2, "0d12cc0a39bfbf87194e4070f6b54caaabbe48fa192b96cfed2a794d95fa299d" );
5814 
5815  test_offset = 0;
5816  fct_chk( ctr_drbg_init_entropy_len( &ctx, entropy_func, entropy, add_init, add_init_len, 32 ) == 0 );
5817 
5818  fct_chk( ctr_drbg_random_with_add( &ctx, buf, 16, add1, add1_len ) == 0 );
5819  fct_chk( ctr_drbg_reseed( &ctx, add_reseed, add_reseed_len ) == 0 );
5820  fct_chk( ctr_drbg_random_with_add( &ctx, buf, 16, add2, add2_len ) == 0 );
5821  hexify( output_str, buf, 16 );
5822  fct_chk( strcmp( (char *) output_str, "62a1c5678e6e8fc738d375e2ca48751f" ) == 0 );
5823  }
5824  FCT_TEST_END();
5825 
5826 
5827  FCT_TEST_BGN(ctr_drbg_nist_validation_aes_256_use_dffalse256128256256_13)
5828  {
5829  unsigned char entropy[512];
5830  unsigned char add_init[512];
5831  unsigned char add1[512];
5832  unsigned char add_reseed[512];
5833  unsigned char add2[512];
5834  ctr_drbg_context ctx;
5835  unsigned char buf[512];
5836  unsigned char output_str[512];
5837  int add_init_len, add1_len, add_reseed_len, add2_len;
5838 
5839  memset( output_str, 0, 512 );
5840 
5841  unhexify( entropy, "d8be0ec1119ff959c32c9cf29914e3f7bf2b01bdbf806c2d9ba119ae2a2cfb565871762b02ee7bf68f1d280532fd7ae7368517f6f751739b228d23df2f207f35" );
5842  add_init_len = unhexify( add_init, "9d67e017e0abdd7c079bc0354f33dab696ad64146802f06d6cefd9cdefbf55b197f5899e5efaa269cc0432c87648ce18" );
5843  add1_len = unhexify( add1, "74a5e24477e8759bedfbaa196f398777108392efb8c64c65c0c9ecd6cd3b5f04" );
5844  add_reseed_len = unhexify( add_reseed, "70cbc6cfe1d6ab4bc30d66fa162d5d4b3029e4b1b9d759f3eae17fb508e91a46" );
5845  add2_len = unhexify( add2, "d3c538e042f0eb796b4af9b4e65cd850425c72e2c896fcea741c17172faf27d9" );
5846 
5847  test_offset = 0;
5848  fct_chk( ctr_drbg_init_entropy_len( &ctx, entropy_func, entropy, add_init, add_init_len, 32 ) == 0 );
5849 
5850  fct_chk( ctr_drbg_random_with_add( &ctx, buf, 16, add1, add1_len ) == 0 );
5851  fct_chk( ctr_drbg_reseed( &ctx, add_reseed, add_reseed_len ) == 0 );
5852  fct_chk( ctr_drbg_random_with_add( &ctx, buf, 16, add2, add2_len ) == 0 );
5853  hexify( output_str, buf, 16 );
5854  fct_chk( strcmp( (char *) output_str, "559a5e04b75cec250aac2433176a725e" ) == 0 );
5855  }
5856  FCT_TEST_END();
5857 
5858 
5859  FCT_TEST_BGN(ctr_drbg_nist_validation_aes_256_use_dffalse256128256256_14)
5860  {
5861  unsigned char entropy[512];
5862  unsigned char add_init[512];
5863  unsigned char add1[512];
5864  unsigned char add_reseed[512];
5865  unsigned char add2[512];
5866  ctr_drbg_context ctx;
5867  unsigned char buf[512];
5868  unsigned char output_str[512];
5869  int add_init_len, add1_len, add_reseed_len, add2_len;
5870 
5871  memset( output_str, 0, 512 );
5872 
5873  unhexify( entropy, "9ded87d289412dfda8935e5b08ec66b68abd1bae1fc5363e4341f58db954f1f9bc4b681c0d930ba080f85f8fd04c173cb2b77723ce67692efa7ade48b82b6926" );
5874  add_init_len = unhexify( add_init, "10914608a6d373a26c53ab83014283b678d73dfea65b4a3540af17f2fafa3b3cf698925b423edb9f946b906f43110795" );
5875  add1_len = unhexify( add1, "225159b4c679094f277516b2335b1e8b7d0a7ea33fd56822906d481fe412586d" );
5876  add_reseed_len = unhexify( add_reseed, "4967cd401cd466aba0be5f55615ca0d9fb8adbde5cb4e6ae3a0159fcd6c36bf0" );
5877  add2_len = unhexify( add2, "fec14f325b8b458ddf3e7f2e10938f4c2d04c8d9885bb5b9277bdc229c70b354" );
5878 
5879  test_offset = 0;
5880  fct_chk( ctr_drbg_init_entropy_len( &ctx, entropy_func, entropy, add_init, add_init_len, 32 ) == 0 );
5881 
5882  fct_chk( ctr_drbg_random_with_add( &ctx, buf, 16, add1, add1_len ) == 0 );
5883  fct_chk( ctr_drbg_reseed( &ctx, add_reseed, add_reseed_len ) == 0 );
5884  fct_chk( ctr_drbg_random_with_add( &ctx, buf, 16, add2, add2_len ) == 0 );
5885  hexify( output_str, buf, 16 );
5886  fct_chk( strcmp( (char *) output_str, "1cd5c0bdeb87c79235bead416c565d32" ) == 0 );
5887  }
5888  FCT_TEST_END();
5889 
5890 
5891  FCT_TEST_BGN(ctr_drbg_nist_validation_aes_256_use_dffalse25612800_0)
5892  {
5893  unsigned char entropy[512];
5894  unsigned char add_init[512];
5895  unsigned char add1[512];
5896  unsigned char add_reseed[512];
5897  unsigned char add2[512];
5898  ctr_drbg_context ctx;
5899  unsigned char buf[512];
5900  unsigned char output_str[512];
5901  int add_init_len, add1_len, add_reseed_len, add2_len;
5902 
5903  memset( output_str, 0, 512 );
5904 
5905  unhexify( entropy, "2462ad760ddbca4e013688bf61381f190c7b2de57cbeeec81d6ab7b6f067b75adc3545887f8d2aa5d9b9dfcbfa425d610faa9c247eb5d71145f302918e908ae5" );
5906  add_init_len = unhexify( add_init, "b023f6a6f73d4749b36eb54867994432" );
5907  add1_len = unhexify( add1, "" );
5908  add_reseed_len = unhexify( add_reseed, "" );
5909  add2_len = unhexify( add2, "" );
5910 
5911  test_offset = 0;
5912  fct_chk( ctr_drbg_init_entropy_len( &ctx, entropy_func, entropy, add_init, add_init_len, 32 ) == 0 );
5913 
5914  fct_chk( ctr_drbg_random_with_add( &ctx, buf, 16, add1, add1_len ) == 0 );
5915  fct_chk( ctr_drbg_reseed( &ctx, add_reseed, add_reseed_len ) == 0 );
5916  fct_chk( ctr_drbg_random_with_add( &ctx, buf, 16, add2, add2_len ) == 0 );
5917  hexify( output_str, buf, 16 );
5918  fct_chk( strcmp( (char *) output_str, "c0620c68515a4618e572db6e4c14473d" ) == 0 );
5919  }
5920  FCT_TEST_END();
5921 
5922 
5923  FCT_TEST_BGN(ctr_drbg_nist_validation_aes_256_use_dffalse25612800_1)
5924  {
5925  unsigned char entropy[512];
5926  unsigned char add_init[512];
5927  unsigned char add1[512];
5928  unsigned char add_reseed[512];
5929  unsigned char add2[512];
5930  ctr_drbg_context ctx;
5931  unsigned char buf[512];
5932  unsigned char output_str[512];
5933  int add_init_len, add1_len, add_reseed_len, add2_len;
5934 
5935  memset( output_str, 0, 512 );
5936 
5937  unhexify( entropy, "56b2e11d5c2d87d2c9c90c285e0041beb4594a6efdd577580095612e50cf47c0b76208337e1e18453082d725629667d86226ab22944bbfb40c38b7986e489adb" );
5938  add_init_len = unhexify( add_init, "7e0fcd953c1c8bb8d03d7a0e918fb59d" );
5939  add1_len = unhexify( add1, "" );
5940  add_reseed_len = unhexify( add_reseed, "" );
5941  add2_len = unhexify( add2, "" );
5942 
5943  test_offset = 0;
5944  fct_chk( ctr_drbg_init_entropy_len( &ctx, entropy_func, entropy, add_init, add_init_len, 32 ) == 0 );
5945 
5946  fct_chk( ctr_drbg_random_with_add( &ctx, buf, 16, add1, add1_len ) == 0 );
5947  fct_chk( ctr_drbg_reseed( &ctx, add_reseed, add_reseed_len ) == 0 );
5948  fct_chk( ctr_drbg_random_with_add( &ctx, buf, 16, add2, add2_len ) == 0 );
5949  hexify( output_str, buf, 16 );
5950  fct_chk( strcmp( (char *) output_str, "7194eee0d333fa5282dc44db964ecf5b" ) == 0 );
5951  }
5952  FCT_TEST_END();
5953 
5954 
5955  FCT_TEST_BGN(ctr_drbg_nist_validation_aes_256_use_dffalse25612800_2)
5956  {
5957  unsigned char entropy[512];
5958  unsigned char add_init[512];
5959  unsigned char add1[512];
5960  unsigned char add_reseed[512];
5961  unsigned char add2[512];
5962  ctr_drbg_context ctx;
5963  unsigned char buf[512];
5964  unsigned char output_str[512];
5965  int add_init_len, add1_len, add_reseed_len, add2_len;
5966 
5967  memset( output_str, 0, 512 );
5968 
5969  unhexify( entropy, "28e592fd9db72b40ae4888078aedde260f6de4f0472a7601258e694d7bb6af6810ff4eabdffb332932765fa1d66650fb78cc2be484c0ba803eb9a2502020e865" );
5970  add_init_len = unhexify( add_init, "0130217d4a3945402ed99d7b8504fe4b" );
5971  add1_len = unhexify( add1, "" );
5972  add_reseed_len = unhexify( add_reseed, "" );
5973  add2_len = unhexify( add2, "" );
5974 
5975  test_offset = 0;
5976  fct_chk( ctr_drbg_init_entropy_len( &ctx, entropy_func, entropy, add_init, add_init_len, 32 ) == 0 );
5977 
5978  fct_chk( ctr_drbg_random_with_add( &ctx, buf, 16, add1, add1_len ) == 0 );
5979  fct_chk( ctr_drbg_reseed( &ctx, add_reseed, add_reseed_len ) == 0 );
5980  fct_chk( ctr_drbg_random_with_add( &ctx, buf, 16, add2, add2_len ) == 0 );
5981  hexify( output_str, buf, 16 );
5982  fct_chk( strcmp( (char *) output_str, "4652f0545385fdbe02d05aec21668608" ) == 0 );
5983  }
5984  FCT_TEST_END();
5985 
5986 
5987  FCT_TEST_BGN(ctr_drbg_nist_validation_aes_256_use_dffalse25612800_3)
5988  {
5989  unsigned char entropy[512];
5990  unsigned char add_init[512];
5991  unsigned char add1[512];
5992  unsigned char add_reseed[512];
5993  unsigned char add2[512];
5994  ctr_drbg_context ctx;
5995  unsigned char buf[512];
5996  unsigned char output_str[512];
5997  int add_init_len, add1_len, add_reseed_len, add2_len;
5998 
5999  memset( output_str, 0, 512 );
6000 
6001  unhexify( entropy, "c561ab6acfbfb98879982ac7add92b80471e0154b77ccc9fd98e7c2013c411e8075948e97ab4db7505797a99d456e54e6585042efeff7e3970e399ea0d27537c" );
6002  add_init_len = unhexify( add_init, "07854447e33521d2d997d90c0887f42d" );
6003  add1_len = unhexify( add1, "" );
6004  add_reseed_len = unhexify( add_reseed, "" );
6005  add2_len = unhexify( add2, "" );
6006 
6007  test_offset = 0;
6008  fct_chk( ctr_drbg_init_entropy_len( &ctx, entropy_func, entropy, add_init, add_init_len, 32 ) == 0 );
6009 
6010  fct_chk( ctr_drbg_random_with_add( &ctx, buf, 16, add1, add1_len ) == 0 );
6011  fct_chk( ctr_drbg_reseed( &ctx, add_reseed, add_reseed_len ) == 0 );
6012  fct_chk( ctr_drbg_random_with_add( &ctx, buf, 16, add2, add2_len ) == 0 );
6013  hexify( output_str, buf, 16 );
6014  fct_chk( strcmp( (char *) output_str, "1a14a810c11b4f0af23c6467c47bbde0" ) == 0 );
6015  }
6016  FCT_TEST_END();
6017 
6018 
6019  FCT_TEST_BGN(ctr_drbg_nist_validation_aes_256_use_dffalse25612800_4)
6020  {
6021  unsigned char entropy[512];
6022  unsigned char add_init[512];
6023  unsigned char add1[512];
6024  unsigned char add_reseed[512];
6025  unsigned char add2[512];
6026  ctr_drbg_context ctx;
6027  unsigned char buf[512];
6028  unsigned char output_str[512];
6029  int add_init_len, add1_len, add_reseed_len, add2_len;
6030 
6031  memset( output_str, 0, 512 );
6032 
6033  unhexify( entropy, "747c7e9aace6d4f840c7b5261e0af796c516477421d52850a7072a0ab2c768fcc80c9ba8d18b228e77a7f6131c788a76515fe31aef4ed67376568231a4700fac" );
6034  add_init_len = unhexify( add_init, "68a8ec01581d6066391f3e5977465026" );
6035  add1_len = unhexify( add1, "" );
6036  add_reseed_len = unhexify( add_reseed, "" );
6037  add2_len = unhexify( add2, "" );
6038 
6039  test_offset = 0;
6040  fct_chk( ctr_drbg_init_entropy_len( &ctx, entropy_func, entropy, add_init, add_init_len, 32 ) == 0 );
6041 
6042  fct_chk( ctr_drbg_random_with_add( &ctx, buf, 16, add1, add1_len ) == 0 );
6043  fct_chk( ctr_drbg_reseed( &ctx, add_reseed, add_reseed_len ) == 0 );
6044  fct_chk( ctr_drbg_random_with_add( &ctx, buf, 16, add2, add2_len ) == 0 );
6045  hexify( output_str, buf, 16 );
6046  fct_chk( strcmp( (char *) output_str, "a5723c43743442fae3637bb553891aeb" ) == 0 );
6047  }
6048  FCT_TEST_END();
6049 
6050 
6051  FCT_TEST_BGN(ctr_drbg_nist_validation_aes_256_use_dffalse25612800_5)
6052  {
6053  unsigned char entropy[512];
6054  unsigned char add_init[512];
6055  unsigned char add1[512];
6056  unsigned char add_reseed[512];
6057  unsigned char add2[512];
6058  ctr_drbg_context ctx;
6059  unsigned char buf[512];
6060  unsigned char output_str[512];
6061  int add_init_len, add1_len, add_reseed_len, add2_len;
6062 
6063  memset( output_str, 0, 512 );
6064 
6065  unhexify( entropy, "9f7d839310846bd452827a185539c0eb0f106acc7bc4de80d3521a970b23483d57826b1484d329a2d1c2ecfeaf8eeffbaa6e1a305e3f1e47b96ad48a711ad1aa" );
6066  add_init_len = unhexify( add_init, "1459038c60b70bae7af0da6cfab707a2" );
6067  add1_len = unhexify( add1, "" );
6068  add_reseed_len = unhexify( add_reseed, "" );
6069  add2_len = unhexify( add2, "" );
6070 
6071  test_offset = 0;
6072  fct_chk( ctr_drbg_init_entropy_len( &ctx, entropy_func, entropy, add_init, add_init_len, 32 ) == 0 );
6073 
6074  fct_chk( ctr_drbg_random_with_add( &ctx, buf, 16, add1, add1_len ) == 0 );
6075  fct_chk( ctr_drbg_reseed( &ctx, add_reseed, add_reseed_len ) == 0 );
6076  fct_chk( ctr_drbg_random_with_add( &ctx, buf, 16, add2, add2_len ) == 0 );
6077  hexify( output_str, buf, 16 );
6078  fct_chk( strcmp( (char *) output_str, "5fcd6bf108fe68b85f61f85c0556f5c0" ) == 0 );
6079  }
6080  FCT_TEST_END();
6081 
6082 
6083  FCT_TEST_BGN(ctr_drbg_nist_validation_aes_256_use_dffalse25612800_6)
6084  {
6085  unsigned char entropy[512];
6086  unsigned char add_init[512];
6087  unsigned char add1[512];
6088  unsigned char add_reseed[512];
6089  unsigned char add2[512];
6090  ctr_drbg_context ctx;
6091  unsigned char buf[512];
6092  unsigned char output_str[512];
6093  int add_init_len, add1_len, add_reseed_len, add2_len;
6094 
6095  memset( output_str, 0, 512 );
6096 
6097  unhexify( entropy, "f1ce08587ac0338b4d0b8e075b42b6501e77758b30087de028a8622fb7abd7f65e3b4f802d1a472dedb9c1a6dc9263c65918d8b7fafd0ae7e9c39e2e8684af3f" );
6098  add_init_len = unhexify( add_init, "a3357db173df98da4dd02ee24ce5c303" );
6099  add1_len = unhexify( add1, "" );
6100  add_reseed_len = unhexify( add_reseed, "" );
6101  add2_len = unhexify( add2, "" );
6102 
6103  test_offset = 0;
6104  fct_chk( ctr_drbg_init_entropy_len( &ctx, entropy_func, entropy, add_init, add_init_len, 32 ) == 0 );
6105 
6106  fct_chk( ctr_drbg_random_with_add( &ctx, buf, 16, add1, add1_len ) == 0 );
6107  fct_chk( ctr_drbg_reseed( &ctx, add_reseed, add_reseed_len ) == 0 );
6108  fct_chk( ctr_drbg_random_with_add( &ctx, buf, 16, add2, add2_len ) == 0 );
6109  hexify( output_str, buf, 16 );
6110  fct_chk( strcmp( (char *) output_str, "8a5fa11d8e78fbf1ca4e4ca3e1ae82b8" ) == 0 );
6111  }
6112  FCT_TEST_END();
6113 
6114 
6115  FCT_TEST_BGN(ctr_drbg_nist_validation_aes_256_use_dffalse25612800_7)
6116  {
6117  unsigned char entropy[512];
6118  unsigned char add_init[512];
6119  unsigned char add1[512];
6120  unsigned char add_reseed[512];
6121  unsigned char add2[512];
6122  ctr_drbg_context ctx;
6123  unsigned char buf[512];
6124  unsigned char output_str[512];
6125  int add_init_len, add1_len, add_reseed_len, add2_len;
6126 
6127  memset( output_str, 0, 512 );
6128 
6129  unhexify( entropy, "bf1d715b3f56c433827c9cb429bee5ca61c80a8d9b2fd4498e1c86ce703637f8f7f34056ab0039e0baa63320df0ec61de60354f2ece06356d9be3c6d1cdcc4cf" );
6130  add_init_len = unhexify( add_init, "212f4c80c7e9287c8d25e3b965f91a3c" );
6131  add1_len = unhexify( add1, "" );
6132  add_reseed_len = unhexify( add_reseed, "" );
6133  add2_len = unhexify( add2, "" );
6134 
6135  test_offset = 0;
6136  fct_chk( ctr_drbg_init_entropy_len( &ctx, entropy_func, entropy, add_init, add_init_len, 32 ) == 0 );
6137 
6138  fct_chk( ctr_drbg_random_with_add( &ctx, buf, 16, add1, add1_len ) == 0 );
6139  fct_chk( ctr_drbg_reseed( &ctx, add_reseed, add_reseed_len ) == 0 );
6140  fct_chk( ctr_drbg_random_with_add( &ctx, buf, 16, add2, add2_len ) == 0 );
6141  hexify( output_str, buf, 16 );
6142  fct_chk( strcmp( (char *) output_str, "04ac2f969e828f375b03ee16317e8572" ) == 0 );
6143  }
6144  FCT_TEST_END();
6145 
6146 
6147  FCT_TEST_BGN(ctr_drbg_nist_validation_aes_256_use_dffalse25612800_8)
6148  {
6149  unsigned char entropy[512];
6150  unsigned char add_init[512];
6151  unsigned char add1[512];
6152  unsigned char add_reseed[512];
6153  unsigned char add2[512];
6154  ctr_drbg_context ctx;
6155  unsigned char buf[512];
6156  unsigned char output_str[512];
6157  int add_init_len, add1_len, add_reseed_len, add2_len;
6158 
6159  memset( output_str, 0, 512 );
6160 
6161  unhexify( entropy, "ae4316424fa765179404188eb8839ce84ad8db92cb12f39089a93a2dbdc371e2fdbef1ad080eb354eecdda3a10ea66ef647aa095afa1786c01bd1c9f70d8da4f" );
6162  add_init_len = unhexify( add_init, "46e85752e0af82fc63932950120e4b5d" );
6163  add1_len = unhexify( add1, "" );
6164  add_reseed_len = unhexify( add_reseed, "" );
6165  add2_len = unhexify( add2, "" );
6166 
6167  test_offset = 0;
6168  fct_chk( ctr_drbg_init_entropy_len( &ctx, entropy_func, entropy, add_init, add_init_len, 32 ) == 0 );
6169 
6170  fct_chk( ctr_drbg_random_with_add( &ctx, buf, 16, add1, add1_len ) == 0 );
6171  fct_chk( ctr_drbg_reseed( &ctx, add_reseed, add_reseed_len ) == 0 );
6172  fct_chk( ctr_drbg_random_with_add( &ctx, buf, 16, add2, add2_len ) == 0 );
6173  hexify( output_str, buf, 16 );
6174  fct_chk( strcmp( (char *) output_str, "de576284d8ad36b31bd4f8f3da633e36" ) == 0 );
6175  }
6176  FCT_TEST_END();
6177 
6178 
6179  FCT_TEST_BGN(ctr_drbg_nist_validation_aes_256_use_dffalse25612800_9)
6180  {
6181  unsigned char entropy[512];
6182  unsigned char add_init[512];
6183  unsigned char add1[512];
6184  unsigned char add_reseed[512];
6185  unsigned char add2[512];
6186  ctr_drbg_context ctx;
6187  unsigned char buf[512];
6188  unsigned char output_str[512];
6189  int add_init_len, add1_len, add_reseed_len, add2_len;
6190 
6191  memset( output_str, 0, 512 );
6192 
6193  unhexify( entropy, "b964a24bf98264327c0b9e2e1c99ed1b35f534be801c996f318bc2074ed2500ba8488c4feb442b507c3220523c0041c9543133379365e65e092850a5e3f96cc9" );
6194  add_init_len = unhexify( add_init, "ec2459b1dd7f50df63e14e40aa4a4e66" );
6195  add1_len = unhexify( add1, "" );
6196  add_reseed_len = unhexify( add_reseed, "" );
6197  add2_len = unhexify( add2, "" );
6198 
6199  test_offset = 0;
6200  fct_chk( ctr_drbg_init_entropy_len( &ctx, entropy_func, entropy, add_init, add_init_len, 32 ) == 0 );
6201 
6202  fct_chk( ctr_drbg_random_with_add( &ctx, buf, 16, add1, add1_len ) == 0 );
6203  fct_chk( ctr_drbg_reseed( &ctx, add_reseed, add_reseed_len ) == 0 );
6204  fct_chk( ctr_drbg_random_with_add( &ctx, buf, 16, add2, add2_len ) == 0 );
6205  hexify( output_str, buf, 16 );
6206  fct_chk( strcmp( (char *) output_str, "4d466e2f388aae40d1b31ce1f8ddc5e8" ) == 0 );
6207  }
6208  FCT_TEST_END();
6209 
6210 
6211  FCT_TEST_BGN(ctr_drbg_nist_validation_aes_256_use_dffalse25612800_10)
6212  {
6213  unsigned char entropy[512];
6214  unsigned char add_init[512];
6215  unsigned char add1[512];
6216  unsigned char add_reseed[512];
6217  unsigned char add2[512];
6218  ctr_drbg_context ctx;
6219  unsigned char buf[512];
6220  unsigned char output_str[512];
6221  int add_init_len, add1_len, add_reseed_len, add2_len;
6222 
6223  memset( output_str, 0, 512 );
6224 
6225  unhexify( entropy, "d5b3277cf8badf6be86af27dd36f23ffc580847c5fcb56c4d8a42339336f185c38ffb86f4d8aa7646c1aaed6c2b0c7ae7e4d435f481d62bb01e632f6bbb2abf9" );
6226  add_init_len = unhexify( add_init, "acf480d54f4c66d611519b72f2c0dca6" );
6227  add1_len = unhexify( add1, "" );
6228  add_reseed_len = unhexify( add_reseed, "" );
6229  add2_len = unhexify( add2, "" );
6230 
6231  test_offset = 0;
6232  fct_chk( ctr_drbg_init_entropy_len( &ctx, entropy_func, entropy, add_init, add_init_len, 32 ) == 0 );
6233 
6234  fct_chk( ctr_drbg_random_with_add( &ctx, buf, 16, add1, add1_len ) == 0 );
6235  fct_chk( ctr_drbg_reseed( &ctx, add_reseed, add_reseed_len ) == 0 );
6236  fct_chk( ctr_drbg_random_with_add( &ctx, buf, 16, add2, add2_len ) == 0 );
6237  hexify( output_str, buf, 16 );
6238  fct_chk( strcmp( (char *) output_str, "746aaa5423ef77ea6b1eda47410262dd" ) == 0 );
6239  }
6240  FCT_TEST_END();
6241 
6242 
6243  FCT_TEST_BGN(ctr_drbg_nist_validation_aes_256_use_dffalse25612800_11)
6244  {
6245  unsigned char entropy[512];
6246  unsigned char add_init[512];
6247  unsigned char add1[512];
6248  unsigned char add_reseed[512];
6249  unsigned char add2[512];
6250  ctr_drbg_context ctx;
6251  unsigned char buf[512];
6252  unsigned char output_str[512];
6253  int add_init_len, add1_len, add_reseed_len, add2_len;
6254 
6255  memset( output_str, 0, 512 );
6256 
6257  unhexify( entropy, "94aad8c772201435543efd9013c9f5f022038db6864e9ed4141ea75beb236844da6e6a17109262bc80f528427b37d9da6df03c7dd25be233774384a7f53197ea" );
6258  add_init_len = unhexify( add_init, "edb80fddc595b234e3c5c03b2be3d721" );
6259  add1_len = unhexify( add1, "" );
6260  add_reseed_len = unhexify( add_reseed, "" );
6261  add2_len = unhexify( add2, "" );
6262 
6263  test_offset = 0;
6264  fct_chk( ctr_drbg_init_entropy_len( &ctx, entropy_func, entropy, add_init, add_init_len, 32 ) == 0 );
6265 
6266  fct_chk( ctr_drbg_random_with_add( &ctx, buf, 16, add1, add1_len ) == 0 );
6267  fct_chk( ctr_drbg_reseed( &ctx, add_reseed, add_reseed_len ) == 0 );
6268  fct_chk( ctr_drbg_random_with_add( &ctx, buf, 16, add2, add2_len ) == 0 );
6269  hexify( output_str, buf, 16 );
6270  fct_chk( strcmp( (char *) output_str, "511927f10f800445b705ea3cfe6ec823" ) == 0 );
6271  }
6272  FCT_TEST_END();
6273 
6274 
6275  FCT_TEST_BGN(ctr_drbg_nist_validation_aes_256_use_dffalse25612800_12)
6276  {
6277  unsigned char entropy[512];
6278  unsigned char add_init[512];
6279  unsigned char add1[512];
6280  unsigned char add_reseed[512];
6281  unsigned char add2[512];
6282  ctr_drbg_context ctx;
6283  unsigned char buf[512];
6284  unsigned char output_str[512];
6285  int add_init_len, add1_len, add_reseed_len, add2_len;
6286 
6287  memset( output_str, 0, 512 );
6288 
6289  unhexify( entropy, "967050c11050a6d99a5da428d1f0fc8068b29ba4c66965addbfd31b745cb07d2439d268ab32a5fa2b1934bf277ff586506a941768468905ed980537d8baa1d07" );
6290  add_init_len = unhexify( add_init, "c7790c9888b0e731ca6ccd60c32bb98a" );
6291  add1_len = unhexify( add1, "" );
6292  add_reseed_len = unhexify( add_reseed, "" );
6293  add2_len = unhexify( add2, "" );
6294 
6295  test_offset = 0;
6296  fct_chk( ctr_drbg_init_entropy_len( &ctx, entropy_func, entropy, add_init, add_init_len, 32 ) == 0 );
6297 
6298  fct_chk( ctr_drbg_random_with_add( &ctx, buf, 16, add1, add1_len ) == 0 );
6299  fct_chk( ctr_drbg_reseed( &ctx, add_reseed, add_reseed_len ) == 0 );
6300  fct_chk( ctr_drbg_random_with_add( &ctx, buf, 16, add2, add2_len ) == 0 );
6301  hexify( output_str, buf, 16 );
6302  fct_chk( strcmp( (char *) output_str, "978493f0cece6f94d21863a519e06dbe" ) == 0 );
6303  }
6304  FCT_TEST_END();
6305 
6306 
6307  FCT_TEST_BGN(ctr_drbg_nist_validation_aes_256_use_dffalse25612800_13)
6308  {
6309  unsigned char entropy[512];
6310  unsigned char add_init[512];
6311  unsigned char add1[512];
6312  unsigned char add_reseed[512];
6313  unsigned char add2[512];
6314  ctr_drbg_context ctx;
6315  unsigned char buf[512];
6316  unsigned char output_str[512];
6317  int add_init_len, add1_len, add_reseed_len, add2_len;
6318 
6319  memset( output_str, 0, 512 );
6320 
6321  unhexify( entropy, "be3120e8515a98701b4b2fb0667de2bad3f32bcbf10fb9b820956f9aa7ffa1bbbafb70002a9c7fdd1cf7e76a735261798dc60a1163919d58e39ef0c38b54b27b" );
6322  add_init_len = unhexify( add_init, "58c75625771df61c48a82590eeed3378" );
6323  add1_len = unhexify( add1, "" );
6324  add_reseed_len = unhexify( add_reseed, "" );
6325  add2_len = unhexify( add2, "" );
6326 
6327  test_offset = 0;
6328  fct_chk( ctr_drbg_init_entropy_len( &ctx, entropy_func, entropy, add_init, add_init_len, 32 ) == 0 );
6329 
6330  fct_chk( ctr_drbg_random_with_add( &ctx, buf, 16, add1, add1_len ) == 0 );
6331  fct_chk( ctr_drbg_reseed( &ctx, add_reseed, add_reseed_len ) == 0 );
6332  fct_chk( ctr_drbg_random_with_add( &ctx, buf, 16, add2, add2_len ) == 0 );
6333  hexify( output_str, buf, 16 );
6334  fct_chk( strcmp( (char *) output_str, "90f5c486e7efe932258610e744506487" ) == 0 );
6335  }
6336  FCT_TEST_END();
6337 
6338 
6339  FCT_TEST_BGN(ctr_drbg_nist_validation_aes_256_use_dffalse25612800_14)
6340  {
6341  unsigned char entropy[512];
6342  unsigned char add_init[512];
6343  unsigned char add1[512];
6344  unsigned char add_reseed[512];
6345  unsigned char add2[512];
6346  ctr_drbg_context ctx;
6347  unsigned char buf[512];
6348  unsigned char output_str[512];
6349  int add_init_len, add1_len, add_reseed_len, add2_len;
6350 
6351  memset( output_str, 0, 512 );
6352 
6353  unhexify( entropy, "855c0e3a7567730b11e197c136e5c22b1dc7271d4dbe04bcdfd2fc0ef806b3c05b4264ee6c60d526506622ebf6130738dba4bf35c13ce33db19487312ee691fe" );
6354  add_init_len = unhexify( add_init, "d3f64c11aa21bb2d12278847547fb11b" );
6355  add1_len = unhexify( add1, "" );
6356  add_reseed_len = unhexify( add_reseed, "" );
6357  add2_len = unhexify( add2, "" );
6358 
6359  test_offset = 0;
6360  fct_chk( ctr_drbg_init_entropy_len( &ctx, entropy_func, entropy, add_init, add_init_len, 32 ) == 0 );
6361 
6362  fct_chk( ctr_drbg_random_with_add( &ctx, buf, 16, add1, add1_len ) == 0 );
6363  fct_chk( ctr_drbg_reseed( &ctx, add_reseed, add_reseed_len ) == 0 );
6364  fct_chk( ctr_drbg_random_with_add( &ctx, buf, 16, add2, add2_len ) == 0 );
6365  hexify( output_str, buf, 16 );
6366  fct_chk( strcmp( (char *) output_str, "33ed7089ebae738c6a7e6e2390d573e4" ) == 0 );
6367  }
6368  FCT_TEST_END();
6369 
6370 
6371  FCT_TEST_BGN(ctr_drbg_nist_validation_aes_256_use_dffalse2561280256_0)
6372  {
6373  unsigned char entropy[512];
6374  unsigned char add_init[512];
6375  unsigned char add1[512];
6376  unsigned char add_reseed[512];
6377  unsigned char add2[512];
6378  ctr_drbg_context ctx;
6379  unsigned char buf[512];
6380  unsigned char output_str[512];
6381  int add_init_len, add1_len, add_reseed_len, add2_len;
6382 
6383  memset( output_str, 0, 512 );
6384 
6385  unhexify( entropy, "2e5beadd89b663b3903d3a63c3ab5605bfb1a0045a42430e0220243c51a69f7ff7678c2f8edb7bb4a29b646f3edfaca2463f9defd342da87d22b1b8fdb012fd5" );
6386  add_init_len = unhexify( add_init, "132ad1c40afb066620f004f08409c59e" );
6387  add1_len = unhexify( add1, "150deb841d1a4d90e66e85b036d9f5a7efca726b907ae3e8f05e1d1338cdfd32" );
6388  add_reseed_len = unhexify( add_reseed, "fb199beeeaf3939be2a5f9e6ba22f97cdd2c7576e81eccc686facbdf8bb4f2aa" );
6389  add2_len = unhexify( add2, "4293341721f57e4548ce8c003531d38622446c8825904e1b868dcddc626c5164" );
6390 
6391  test_offset = 0;
6392  fct_chk( ctr_drbg_init_entropy_len( &ctx, entropy_func, entropy, add_init, add_init_len, 32 ) == 0 );
6393 
6394  fct_chk( ctr_drbg_random_with_add( &ctx, buf, 16, add1, add1_len ) == 0 );
6395  fct_chk( ctr_drbg_reseed( &ctx, add_reseed, add_reseed_len ) == 0 );
6396  fct_chk( ctr_drbg_random_with_add( &ctx, buf, 16, add2, add2_len ) == 0 );
6397  hexify( output_str, buf, 16 );
6398  fct_chk( strcmp( (char *) output_str, "66d8f3bfb78186b57136ec2c1602e1ef" ) == 0 );
6399  }
6400  FCT_TEST_END();
6401 
6402 
6403  FCT_TEST_BGN(ctr_drbg_nist_validation_aes_256_use_dffalse2561280256_1)
6404  {
6405  unsigned char entropy[512];
6406  unsigned char add_init[512];
6407  unsigned char add1[512];
6408  unsigned char add_reseed[512];
6409  unsigned char add2[512];
6410  ctr_drbg_context ctx;
6411  unsigned char buf[512];
6412  unsigned char output_str[512];
6413  int add_init_len, add1_len, add_reseed_len, add2_len;
6414 
6415  memset( output_str, 0, 512 );
6416 
6417  unhexify( entropy, "1d33b1b257a3ae1210fa2099307916a73dd92270769697ea2d7901f56865e3cae1be94b5024d0da3880bce06f0b31231c5a889f8ba3d92a20844b61009db672d" );
6418  add_init_len = unhexify( add_init, "1c1502ca97c109399a72a77c8d6cc22b" );
6419  add1_len = unhexify( add1, "23eede46eff4a04b08dcc2133e4537b332351f8469630f11b0c8853fb762a4bc" );
6420  add_reseed_len = unhexify( add_reseed, "6fd9f9da108e68aea9d1cecd81c49bcd0e7bedb348890f2248cb31c4277369f7" );
6421  add2_len = unhexify( add2, "76bcc11bd952123f78dd2ba60dd932d49203e418bb832d60b45c083e1e129834" );
6422 
6423  test_offset = 0;
6424  fct_chk( ctr_drbg_init_entropy_len( &ctx, entropy_func, entropy, add_init, add_init_len, 32 ) == 0 );
6425 
6426  fct_chk( ctr_drbg_random_with_add( &ctx, buf, 16, add1, add1_len ) == 0 );
6427  fct_chk( ctr_drbg_reseed( &ctx, add_reseed, add_reseed_len ) == 0 );
6428  fct_chk( ctr_drbg_random_with_add( &ctx, buf, 16, add2, add2_len ) == 0 );
6429  hexify( output_str, buf, 16 );
6430  fct_chk( strcmp( (char *) output_str, "a1eee46001616f2bf87729895da0d0d1" ) == 0 );
6431  }
6432  FCT_TEST_END();
6433 
6434 
6435  FCT_TEST_BGN(ctr_drbg_nist_validation_aes_256_use_dffalse2561280256_2)
6436  {
6437  unsigned char entropy[512];
6438  unsigned char add_init[512];
6439  unsigned char add1[512];
6440  unsigned char add_reseed[512];
6441  unsigned char add2[512];
6442  ctr_drbg_context ctx;
6443  unsigned char buf[512];
6444  unsigned char output_str[512];
6445  int add_init_len, add1_len, add_reseed_len, add2_len;
6446 
6447  memset( output_str, 0, 512 );
6448 
6449  unhexify( entropy, "5e8cc0fdadc170ed0f5e12f79a6b9e585f9d7c2926c163686a6a724495d88fabcec940d752545cae63f1792dcb966a7325f61997ba8883559ad6f6f8fc09898a" );
6450  add_init_len = unhexify( add_init, "c79c0a1db75e83af258cdf9ead81264d" );
6451  add1_len = unhexify( add1, "a2cf6c1c9e4489f504e17f385f08aa82775aa2b0a84abd0b7ee3c6b393d7fd50" );
6452  add_reseed_len = unhexify( add_reseed, "c7529b874e07d4b876196786d510cc038c9e1ab93c461df2474eba484ae6876f" );
6453  add2_len = unhexify( add2, "63c6e7f3548529386c9f47c5aece52ce8454da5db9a807a1b960f7730a61582b" );
6454 
6455  test_offset = 0;
6456  fct_chk( ctr_drbg_init_entropy_len( &ctx, entropy_func, entropy, add_init, add_init_len, 32 ) == 0 );
6457 
6458  fct_chk( ctr_drbg_random_with_add( &ctx, buf, 16, add1, add1_len ) == 0 );
6459  fct_chk( ctr_drbg_reseed( &ctx, add_reseed, add_reseed_len ) == 0 );
6460  fct_chk( ctr_drbg_random_with_add( &ctx, buf, 16, add2, add2_len ) == 0 );
6461  hexify( output_str, buf, 16 );
6462  fct_chk( strcmp( (char *) output_str, "43b7931e0b3b3769ef8972d0026896a3" ) == 0 );
6463  }
6464  FCT_TEST_END();
6465 
6466 
6467  FCT_TEST_BGN(ctr_drbg_nist_validation_aes_256_use_dffalse2561280256_3)
6468  {
6469  unsigned char entropy[512];
6470  unsigned char add_init[512];
6471  unsigned char add1[512];
6472  unsigned char add_reseed[512];
6473  unsigned char add2[512];
6474  ctr_drbg_context ctx;
6475  unsigned char buf[512];
6476  unsigned char output_str[512];
6477  int add_init_len, add1_len, add_reseed_len, add2_len;
6478 
6479  memset( output_str, 0, 512 );
6480 
6481  unhexify( entropy, "c3dae1863d323cc78f43ccb3f632fde29130e6b23b843ff5a8d79fddc3c1f92b55cd3dcaf7848d40d189c0de7790bebb889e01be05980dcdf30d2b3333426c50" );
6482  add_init_len = unhexify( add_init, "b44d1dd914e88840bc65a94ee199b3ac" );
6483  add1_len = unhexify( add1, "41e2fce9b48642a1b9bd1695314adcdd38e1a8afe4891e633c5088c6753438a2" );
6484  add_reseed_len = unhexify( add_reseed, "1eb3f8bbacb0c6b901718bfd7eba29f6f87e1fe056ad442d6d38c1351a684e1f" );
6485  add2_len = unhexify( add2, "85570db773f3f5202967376f91a0a9c09c89cd4eddd58cdc6210335fd5e7acef" );
6486 
6487  test_offset = 0;
6488  fct_chk( ctr_drbg_init_entropy_len( &ctx, entropy_func, entropy, add_init, add_init_len, 32 ) == 0 );
6489 
6490  fct_chk( ctr_drbg_random_with_add( &ctx, buf, 16, add1, add1_len ) == 0 );
6491  fct_chk( ctr_drbg_reseed( &ctx, add_reseed, add_reseed_len ) == 0 );
6492  fct_chk( ctr_drbg_random_with_add( &ctx, buf, 16, add2, add2_len ) == 0 );
6493  hexify( output_str, buf, 16 );
6494  fct_chk( strcmp( (char *) output_str, "bd53036538d9ed904a49966b5428a2a8" ) == 0 );
6495  }
6496  FCT_TEST_END();
6497 
6498 
6499  FCT_TEST_BGN(ctr_drbg_nist_validation_aes_256_use_dffalse2561280256_4)
6500  {
6501  unsigned char entropy[512];
6502  unsigned char add_init[512];
6503  unsigned char add1[512];
6504  unsigned char add_reseed[512];
6505  unsigned char add2[512];
6506  ctr_drbg_context ctx;
6507  unsigned char buf[512];
6508  unsigned char output_str[512];
6509  int add_init_len, add1_len, add_reseed_len, add2_len;
6510 
6511  memset( output_str, 0, 512 );
6512 
6513  unhexify( entropy, "be67434ac4d77f0f50ec5bacc8112d1480bd9f20d6b4ea768d9b51bb69c1dffcd8c30e4412127644aaa6fc453e59fb633f6a5a8c2f69e40d1863e35d4d4c0227" );
6514  add_init_len = unhexify( add_init, "5ef97f7af7df5cc6fa94f8428ec7be5c" );
6515  add1_len = unhexify( add1, "a64195b1e56cf97fd81e99fa1833d191faf62f534c874def4b8bed0ae7195ac7" );
6516  add_reseed_len = unhexify( add_reseed, "353cd3a8d9cd92bce82cd8d1cc198baa9276db478b0cfe50249e30c3042ee9db" );
6517  add2_len = unhexify( add2, "393ab4726f088fdfeb4df752e1b2aec678e41fa60781bc5e914296227d6b3dfc" );
6518 
6519  test_offset = 0;
6520  fct_chk( ctr_drbg_init_entropy_len( &ctx, entropy_func, entropy, add_init, add_init_len, 32 ) == 0 );
6521 
6522  fct_chk( ctr_drbg_random_with_add( &ctx, buf, 16, add1, add1_len ) == 0 );
6523  fct_chk( ctr_drbg_reseed( &ctx, add_reseed, add_reseed_len ) == 0 );
6524  fct_chk( ctr_drbg_random_with_add( &ctx, buf, 16, add2, add2_len ) == 0 );
6525  hexify( output_str, buf, 16 );
6526  fct_chk( strcmp( (char *) output_str, "24bdc2cad5dccd2309425f11a24c8c39" ) == 0 );
6527  }
6528  FCT_TEST_END();
6529 
6530 
6531  FCT_TEST_BGN(ctr_drbg_nist_validation_aes_256_use_dffalse2561280256_5)
6532  {
6533  unsigned char entropy[512];
6534  unsigned char add_init[512];
6535  unsigned char add1[512];
6536  unsigned char add_reseed[512];
6537  unsigned char add2[512];
6538  ctr_drbg_context ctx;
6539  unsigned char buf[512];
6540  unsigned char output_str[512];
6541  int add_init_len, add1_len, add_reseed_len, add2_len;
6542 
6543  memset( output_str, 0, 512 );
6544 
6545  unhexify( entropy, "cc070df6aa3623f74afd85b59d1bef2b1fcd9c8093362512ff109ebfe992ed75bd58b5ae1561d702b69065eb3cc0bd328ab698d4c6ca274e96d673309b5df5df" );
6546  add_init_len = unhexify( add_init, "567130da4e7ecc4db0f035d7ecb11878" );
6547  add1_len = unhexify( add1, "42033054cefa1f20b3443f8ab7d9635ae8f047b833c8529245ba8b4aa07edba3" );
6548  add_reseed_len = unhexify( add_reseed, "72972fb947bff60df291888ddbfd91e698e0c1c26a346b95fc7c5dac596d0073" );
6549  add2_len = unhexify( add2, "af29b6a13602ba9c6b11f8dbdeb6cb52e211f9cd2fc96e63b61e3c1ec631d2ea" );
6550 
6551  test_offset = 0;
6552  fct_chk( ctr_drbg_init_entropy_len( &ctx, entropy_func, entropy, add_init, add_init_len, 32 ) == 0 );
6553 
6554  fct_chk( ctr_drbg_random_with_add( &ctx, buf, 16, add1, add1_len ) == 0 );
6555  fct_chk( ctr_drbg_reseed( &ctx, add_reseed, add_reseed_len ) == 0 );
6556  fct_chk( ctr_drbg_random_with_add( &ctx, buf, 16, add2, add2_len ) == 0 );
6557  hexify( output_str, buf, 16 );
6558  fct_chk( strcmp( (char *) output_str, "b0849f8317e043271a3fc5f2eaaaaba2" ) == 0 );
6559  }
6560  FCT_TEST_END();
6561 
6562 
6563  FCT_TEST_BGN(ctr_drbg_nist_validation_aes_256_use_dffalse2561280256_6)
6564  {
6565  unsigned char entropy[512];
6566  unsigned char add_init[512];
6567  unsigned char add1[512];
6568  unsigned char add_reseed[512];
6569  unsigned char add2[512];
6570  ctr_drbg_context ctx;
6571  unsigned char buf[512];
6572  unsigned char output_str[512];
6573  int add_init_len, add1_len, add_reseed_len, add2_len;
6574 
6575  memset( output_str, 0, 512 );
6576 
6577  unhexify( entropy, "c4bf7a39caf26dc3f61311f54ab3095493c626a988f5abee2826c67a4f4b4d6a02329c99a6bcb5e387fa160741c871acc2929c1cc07f2f0a7ce1619eb7da1ec4" );
6578  add_init_len = unhexify( add_init, "2c20ae36f1e74542ed8b0a177b8050aa" );
6579  add1_len = unhexify( add1, "97c148dd10c3dd72b1eaaafbe37a9310ed15b23872e9f2b62d1feb91ea81ffe3" );
6580  add_reseed_len = unhexify( add_reseed, "23df0c30c68bf2eeb55d273a596f1f54ed916271595b906e4f7793b7a52f2573" );
6581  add2_len = unhexify( add2, "22f120fa09215105116919aaf8eebcb69eccd5da42feb737018a05268bf08e46" );
6582 
6583  test_offset = 0;
6584  fct_chk( ctr_drbg_init_entropy_len( &ctx, entropy_func, entropy, add_init, add_init_len, 32 ) == 0 );
6585 
6586  fct_chk( ctr_drbg_random_with_add( &ctx, buf, 16, add1, add1_len ) == 0 );
6587  fct_chk( ctr_drbg_reseed( &ctx, add_reseed, add_reseed_len ) == 0 );
6588  fct_chk( ctr_drbg_random_with_add( &ctx, buf, 16, add2, add2_len ) == 0 );
6589  hexify( output_str, buf, 16 );
6590  fct_chk( strcmp( (char *) output_str, "b7c73b9ceea2e6ca0be6a3773cdd6886" ) == 0 );
6591  }
6592  FCT_TEST_END();
6593 
6594 
6595  FCT_TEST_BGN(ctr_drbg_nist_validation_aes_256_use_dffalse2561280256_7)
6596  {
6597  unsigned char entropy[512];
6598  unsigned char add_init[512];
6599  unsigned char add1[512];
6600  unsigned char add_reseed[512];
6601  unsigned char add2[512];
6602  ctr_drbg_context ctx;
6603  unsigned char buf[512];
6604  unsigned char output_str[512];
6605  int add_init_len, add1_len, add_reseed_len, add2_len;
6606 
6607  memset( output_str, 0, 512 );
6608 
6609  unhexify( entropy, "979b5aeafe555aeba152ed66e32e30e110df20ee1f227932a72acfb8218aec767941efaefa091c0128dad9b93b06b28fc76e01f275e8ce1c02f0eb567c914f89" );
6610  add_init_len = unhexify( add_init, "2076f9e116a2648e1e664b815b1b3674" );
6611  add1_len = unhexify( add1, "d12fb10b9fa6d2fd0f39cf76294cd44dcbfa80dca7c2f8537c75453d985ef551" );
6612  add_reseed_len = unhexify( add_reseed, "4228a99faf35547a58c1a4d842301dca374f1f13c6fd067b7c1b815863b73158" );
6613  add2_len = unhexify( add2, "a3a7d5f1e2dcf95a90715ec5fd32e7f88c38b0a452b6ccd1f107458db4f74fd6" );
6614 
6615  test_offset = 0;
6616  fct_chk( ctr_drbg_init_entropy_len( &ctx, entropy_func, entropy, add_init, add_init_len, 32 ) == 0 );
6617 
6618  fct_chk( ctr_drbg_random_with_add( &ctx, buf, 16, add1, add1_len ) == 0 );
6619  fct_chk( ctr_drbg_reseed( &ctx, add_reseed, add_reseed_len ) == 0 );
6620  fct_chk( ctr_drbg_random_with_add( &ctx, buf, 16, add2, add2_len ) == 0 );
6621  hexify( output_str, buf, 16 );
6622  fct_chk( strcmp( (char *) output_str, "8a63a5002a3636b241f0bec14fd9c2ac" ) == 0 );
6623  }
6624  FCT_TEST_END();
6625 
6626 
6627  FCT_TEST_BGN(ctr_drbg_nist_validation_aes_256_use_dffalse2561280256_8)
6628  {
6629  unsigned char entropy[512];
6630  unsigned char add_init[512];
6631  unsigned char add1[512];
6632  unsigned char add_reseed[512];
6633  unsigned char add2[512];
6634  ctr_drbg_context ctx;
6635  unsigned char buf[512];
6636  unsigned char output_str[512];
6637  int add_init_len, add1_len, add_reseed_len, add2_len;
6638 
6639  memset( output_str, 0, 512 );
6640 
6641  unhexify( entropy, "c810cb9db0f169dbc30fda85ccb6d4c40db68d429eeb3653070db7641fbbaba60ef0ff970eaf40887b7e154e2ecd5331de7004689ec604e69927da630a8dd7a7" );
6642  add_init_len = unhexify( add_init, "a71015cf06ddd0a6cd72fa014cf0aee6" );
6643  add1_len = unhexify( add1, "5f99f45d8770041703e5a14521c501904fd05ff3340835ac0c41b86442e4939c" );
6644  add_reseed_len = unhexify( add_reseed, "eb7efa6e46ab926ea04c87eb9ce454f5b10717bd9d85305f27d71bea1bc991b3" );
6645  add2_len = unhexify( add2, "cbc80c6171d098fc81023486d327efe2415a0f32e5fa6f6793ce1d0e98783258" );
6646 
6647  test_offset = 0;
6648  fct_chk( ctr_drbg_init_entropy_len( &ctx, entropy_func, entropy, add_init, add_init_len, 32 ) == 0 );
6649 
6650  fct_chk( ctr_drbg_random_with_add( &ctx, buf, 16, add1, add1_len ) == 0 );
6651  fct_chk( ctr_drbg_reseed( &ctx, add_reseed, add_reseed_len ) == 0 );
6652  fct_chk( ctr_drbg_random_with_add( &ctx, buf, 16, add2, add2_len ) == 0 );
6653  hexify( output_str, buf, 16 );
6654  fct_chk( strcmp( (char *) output_str, "a353f6b350404f3f7b4fb724f84a948a" ) == 0 );
6655  }
6656  FCT_TEST_END();
6657 
6658 
6659  FCT_TEST_BGN(ctr_drbg_nist_validation_aes_256_use_dffalse2561280256_9)
6660  {
6661  unsigned char entropy[512];
6662  unsigned char add_init[512];
6663  unsigned char add1[512];
6664  unsigned char add_reseed[512];
6665  unsigned char add2[512];
6666  ctr_drbg_context ctx;
6667  unsigned char buf[512];
6668  unsigned char output_str[512];
6669  int add_init_len, add1_len, add_reseed_len, add2_len;
6670 
6671  memset( output_str, 0, 512 );
6672 
6673  unhexify( entropy, "831fc8d63592b6ce358c08aeac39d67c3e48b4c2617735b6fe5e9fa44d7aee9d60f2fcf549db239d5bed9c608c94e8f8c23b32901442ac53442127377bdcf205" );
6674  add_init_len = unhexify( add_init, "395931837614c322d8488ec6a2c4c919" );
6675  add1_len = unhexify( add1, "eb261c737c0a17c8cb1ae055c143f701b74c96c852e4a76ca3ea045e7efdf5ee" );
6676  add_reseed_len = unhexify( add_reseed, "153276007b3843a897efbf022bd1bcabcf655c7eb8acef9baac710b339ecfd99" );
6677  add2_len = unhexify( add2, "a8a5cb17a2945e5b41ff370cc88ac498389b89b6cd82bb3bbde81c212f7c17d4" );
6678 
6679  test_offset = 0;
6680  fct_chk( ctr_drbg_init_entropy_len( &ctx, entropy_func, entropy, add_init, add_init_len, 32 ) == 0 );
6681 
6682  fct_chk( ctr_drbg_random_with_add( &ctx, buf, 16, add1, add1_len ) == 0 );
6683  fct_chk( ctr_drbg_reseed( &ctx, add_reseed, add_reseed_len ) == 0 );
6684  fct_chk( ctr_drbg_random_with_add( &ctx, buf, 16, add2, add2_len ) == 0 );
6685  hexify( output_str, buf, 16 );
6686  fct_chk( strcmp( (char *) output_str, "537fc2b73183d2c0c106886937a6609c" ) == 0 );
6687  }
6688  FCT_TEST_END();
6689 
6690 
6691  FCT_TEST_BGN(ctr_drbg_nist_validation_aes_256_use_dffalse2561280256_10)
6692  {
6693  unsigned char entropy[512];
6694  unsigned char add_init[512];
6695  unsigned char add1[512];
6696  unsigned char add_reseed[512];
6697  unsigned char add2[512];
6698  ctr_drbg_context ctx;
6699  unsigned char buf[512];
6700  unsigned char output_str[512];
6701  int add_init_len, add1_len, add_reseed_len, add2_len;
6702 
6703  memset( output_str, 0, 512 );
6704 
6705  unhexify( entropy, "68c5cf31f7959ffaa83af9dd55a75ec001befbf835e42a789ac42d39d96128eb6d9b3f07ced15e57e39760390c065fb4425c19ef7184635c18e5ed28256937e1" );
6706  add_init_len = unhexify( add_init, "9a1983859dd6c4cb602970d705952b2b" );
6707  add1_len = unhexify( add1, "e06497a181a5362980579c91d263f630ad4794519a64261ede8b36cf0ac5e713" );
6708  add_reseed_len = unhexify( add_reseed, "714e4fc52aea763e23a1f5b18949ab8fd949f1768560559bccb49d78d51dfab5" );
6709  add2_len = unhexify( add2, "6b6b7f65fd472ad428df2bbb86b85067d0a6f89d9233eea92f5189a9163d0419" );
6710 
6711  test_offset = 0;
6712  fct_chk( ctr_drbg_init_entropy_len( &ctx, entropy_func, entropy, add_init, add_init_len, 32 ) == 0 );
6713 
6714  fct_chk( ctr_drbg_random_with_add( &ctx, buf, 16, add1, add1_len ) == 0 );
6715  fct_chk( ctr_drbg_reseed( &ctx, add_reseed, add_reseed_len ) == 0 );
6716  fct_chk( ctr_drbg_random_with_add( &ctx, buf, 16, add2, add2_len ) == 0 );
6717  hexify( output_str, buf, 16 );
6718  fct_chk( strcmp( (char *) output_str, "e32af8a81c59dc44540ed8845b447fdb" ) == 0 );
6719  }
6720  FCT_TEST_END();
6721 
6722 
6723  FCT_TEST_BGN(ctr_drbg_nist_validation_aes_256_use_dffalse2561280256_11)
6724  {
6725  unsigned char entropy[512];
6726  unsigned char add_init[512];
6727  unsigned char add1[512];
6728  unsigned char add_reseed[512];
6729  unsigned char add2[512];
6730  ctr_drbg_context ctx;
6731  unsigned char buf[512];
6732  unsigned char output_str[512];
6733  int add_init_len, add1_len, add_reseed_len, add2_len;
6734 
6735  memset( output_str, 0, 512 );
6736 
6737  unhexify( entropy, "6193f0e7b33ce19fde922aec9c93f1271ebcdd296d9c8c77029b59afa2064e3159088e07e91c14a4a3dc23b6005dd8ef1425d7d2ae8282a5b30b7498b6754234" );
6738  add_init_len = unhexify( add_init, "230576e9518fb9a6a8391a84919b0d97" );
6739  add1_len = unhexify( add1, "ffaca30a256d18836a0d49bbaad599a28fc7821d71aa91b97158a492d84a6280" );
6740  add_reseed_len = unhexify( add_reseed, "a3da13852d0717afed7c58c52530d2ae047b645a5e7aa8cfabc11478444151ac" );
6741  add2_len = unhexify( add2, "e15fdaeea31c95555fc509d2a266abf78d86ca11aa2f87ce1041142eb9f82bae" );
6742 
6743  test_offset = 0;
6744  fct_chk( ctr_drbg_init_entropy_len( &ctx, entropy_func, entropy, add_init, add_init_len, 32 ) == 0 );
6745 
6746  fct_chk( ctr_drbg_random_with_add( &ctx, buf, 16, add1, add1_len ) == 0 );
6747  fct_chk( ctr_drbg_reseed( &ctx, add_reseed, add_reseed_len ) == 0 );
6748  fct_chk( ctr_drbg_random_with_add( &ctx, buf, 16, add2, add2_len ) == 0 );
6749  hexify( output_str, buf, 16 );
6750  fct_chk( strcmp( (char *) output_str, "7906f8da1e140345c191dbc2de5ead1b" ) == 0 );
6751  }
6752  FCT_TEST_END();
6753 
6754 
6755  FCT_TEST_BGN(ctr_drbg_nist_validation_aes_256_use_dffalse2561280256_12)
6756  {
6757  unsigned char entropy[512];
6758  unsigned char add_init[512];
6759  unsigned char add1[512];
6760  unsigned char add_reseed[512];
6761  unsigned char add2[512];
6762  ctr_drbg_context ctx;
6763  unsigned char buf[512];
6764  unsigned char output_str[512];
6765  int add_init_len, add1_len, add_reseed_len, add2_len;
6766 
6767  memset( output_str, 0, 512 );
6768 
6769  unhexify( entropy, "cfbe8b1464b00bb9e0d18b04d2040ed9bd822741188812b98a440fbc66ff018ddf6c0ea20c62d01b8237bc7c3da9e3f9fb874fca79a360b4f0f967d8d02083ba" );
6770  add_init_len = unhexify( add_init, "e08a3a33adb4399a9be72fead224155f" );
6771  add1_len = unhexify( add1, "56f975849197e2eae5a2e6fb445a93c1fadf57280ac27e27c7cbea2cb00c10cc" );
6772  add_reseed_len = unhexify( add_reseed, "0a6d9e2d6e181addab0ea1ee89c65ce557e10fb8e8d43a24cdd27033d3fff507" );
6773  add2_len = unhexify( add2, "823e9400a9f563cc1fa5daf10f4ff1ab8affa18d8371f9cd0e067fcddce8caed" );
6774 
6775  test_offset = 0;
6776  fct_chk( ctr_drbg_init_entropy_len( &ctx, entropy_func, entropy, add_init, add_init_len, 32 ) == 0 );
6777 
6778  fct_chk( ctr_drbg_random_with_add( &ctx, buf, 16, add1, add1_len ) == 0 );
6779  fct_chk( ctr_drbg_reseed( &ctx, add_reseed, add_reseed_len ) == 0 );
6780  fct_chk( ctr_drbg_random_with_add( &ctx, buf, 16, add2, add2_len ) == 0 );
6781  hexify( output_str, buf, 16 );
6782  fct_chk( strcmp( (char *) output_str, "5ded298f98cffb2e7f5ea97bd50c7e3e" ) == 0 );
6783  }
6784  FCT_TEST_END();
6785 
6786 
6787  FCT_TEST_BGN(ctr_drbg_nist_validation_aes_256_use_dffalse2561280256_13)
6788  {
6789  unsigned char entropy[512];
6790  unsigned char add_init[512];
6791  unsigned char add1[512];
6792  unsigned char add_reseed[512];
6793  unsigned char add2[512];
6794  ctr_drbg_context ctx;
6795  unsigned char buf[512];
6796  unsigned char output_str[512];
6797  int add_init_len, add1_len, add_reseed_len, add2_len;
6798 
6799  memset( output_str, 0, 512 );
6800 
6801  unhexify( entropy, "f53343a5a455132df3d1b03db39e44d933855b375d7422ad0d07dfdfb352af28946eb29980793456ec8634bf113e75783246bbd05aa8a7cb5886d372fa012f58" );
6802  add_init_len = unhexify( add_init, "11c13b917d9f94fd7a008566d8598e89" );
6803  add1_len = unhexify( add1, "ff1d8d33083023ffbe28f153bddfa9d9f3c221da16f8f20967d2508fa7752b55" );
6804  add_reseed_len = unhexify( add_reseed, "66a98c7d778d798617e1d31d4bdfabf8d381d38b82125838ddf43fb7f5b27dc6" );
6805  add2_len = unhexify( add2, "407c72d7c890c00b249be00a53ae722e5d8033c84b1e1a6a69d4b278ba5db9eb" );
6806 
6807  test_offset = 0;
6808  fct_chk( ctr_drbg_init_entropy_len( &ctx, entropy_func, entropy, add_init, add_init_len, 32 ) == 0 );
6809 
6810  fct_chk( ctr_drbg_random_with_add( &ctx, buf, 16, add1, add1_len ) == 0 );
6811  fct_chk( ctr_drbg_reseed( &ctx, add_reseed, add_reseed_len ) == 0 );
6812  fct_chk( ctr_drbg_random_with_add( &ctx, buf, 16, add2, add2_len ) == 0 );
6813  hexify( output_str, buf, 16 );
6814  fct_chk( strcmp( (char *) output_str, "67ab88156f20d03b3a1bc363daefc0c6" ) == 0 );
6815  }
6816  FCT_TEST_END();
6817 
6818 
6819  FCT_TEST_BGN(ctr_drbg_nist_validation_aes_256_use_dffalse2561280256_14)
6820  {
6821  unsigned char entropy[512];
6822  unsigned char add_init[512];
6823  unsigned char add1[512];
6824  unsigned char add_reseed[512];
6825  unsigned char add2[512];
6826  ctr_drbg_context ctx;
6827  unsigned char buf[512];
6828  unsigned char output_str[512];
6829  int add_init_len, add1_len, add_reseed_len, add2_len;
6830 
6831  memset( output_str, 0, 512 );
6832 
6833  unhexify( entropy, "3d7e2987860cbcba14a12594e1a394ee754c9a7a65cecc990bc79b5e86e672e12f8c144d843e1abca46b4759a11b3d29f4e219077a8696efadee618f254cb80a" );
6834  add_init_len = unhexify( add_init, "7b95343a4ac0f8c8b2645c33757a3146" );
6835  add1_len = unhexify( add1, "16297534a79c4ae7493178226b29e42a6f1e0066aeaee8b5af65bcefa2ee3ebb" );
6836  add_reseed_len = unhexify( add_reseed, "b429ee986f16fb35fe2c47c03c0918870b4560f4ec4678f9df471cbd7ca6a887" );
6837  add2_len = unhexify( add2, "2b14d612eb00c7fba0d8e23bf91df91daef6f8e279e0050d5497ddf0f3466c76" );
6838 
6839  test_offset = 0;
6840  fct_chk( ctr_drbg_init_entropy_len( &ctx, entropy_func, entropy, add_init, add_init_len, 32 ) == 0 );
6841 
6842  fct_chk( ctr_drbg_random_with_add( &ctx, buf, 16, add1, add1_len ) == 0 );
6843  fct_chk( ctr_drbg_reseed( &ctx, add_reseed, add_reseed_len ) == 0 );
6844  fct_chk( ctr_drbg_random_with_add( &ctx, buf, 16, add2, add2_len ) == 0 );
6845  hexify( output_str, buf, 16 );
6846  fct_chk( strcmp( (char *) output_str, "8f72c17405163090fe0bd795b65811c6" ) == 0 );
6847  }
6848  FCT_TEST_END();
6849 
6850 
6851  FCT_TEST_BGN(ctr_drbg_nist_validation_aes_256_use_dffalse2561282560_0)
6852  {
6853  unsigned char entropy[512];
6854  unsigned char add_init[512];
6855  unsigned char add1[512];
6856  unsigned char add_reseed[512];
6857  unsigned char add2[512];
6858  ctr_drbg_context ctx;
6859  unsigned char buf[512];
6860  unsigned char output_str[512];
6861  int add_init_len, add1_len, add_reseed_len, add2_len;
6862 
6863  memset( output_str, 0, 512 );
6864 
6865  unhexify( entropy, "80bdf18288cb8adb6e3dacb09c553af2e7317c194d37f433eec27e324a0bad752899bda91fd41e5a08acdfd76007aecabc19c95a8bcede310f7320ce97aaad0e" );
6866  add_init_len = unhexify( add_init, "327290da2e9a19c840de8d33e425efaa5aa7a7afa4e5a812065965478d640f78520cf3c670b098943fec1914d4c8c411" );
6867  add1_len = unhexify( add1, "" );
6868  add_reseed_len = unhexify( add_reseed, "" );
6869  add2_len = unhexify( add2, "" );
6870 
6871  test_offset = 0;
6872  fct_chk( ctr_drbg_init_entropy_len( &ctx, entropy_func, entropy, add_init, add_init_len, 32 ) == 0 );
6873 
6874  fct_chk( ctr_drbg_random_with_add( &ctx, buf, 16, add1, add1_len ) == 0 );
6875  fct_chk( ctr_drbg_reseed( &ctx, add_reseed, add_reseed_len ) == 0 );
6876  fct_chk( ctr_drbg_random_with_add( &ctx, buf, 16, add2, add2_len ) == 0 );
6877  hexify( output_str, buf, 16 );
6878  fct_chk( strcmp( (char *) output_str, "c26222662ed3a649a1745dee5df4eef0" ) == 0 );
6879  }
6880  FCT_TEST_END();
6881 
6882 
6883  FCT_TEST_BGN(ctr_drbg_nist_validation_aes_256_use_dffalse2561282560_1)
6884  {
6885  unsigned char entropy[512];
6886  unsigned char add_init[512];
6887  unsigned char add1[512];
6888  unsigned char add_reseed[512];
6889  unsigned char add2[512];
6890  ctr_drbg_context ctx;
6891  unsigned char buf[512];
6892  unsigned char output_str[512];
6893  int add_init_len, add1_len, add_reseed_len, add2_len;
6894 
6895  memset( output_str, 0, 512 );
6896 
6897  unhexify( entropy, "ac71ff53140c1383eb379e5311e37637af933db494e5e689d065661e9095b8302e4174c392f324fac43695d9381e3cf4626a5347938ed9e21502cbd789cca363" );
6898  add_init_len = unhexify( add_init, "be14f473472db07a43b7f9a517735d7f7ede2aa70dbdb729bc4f578a0dce9d7fe9fd97939cd1ef731262417b5213bd7f" );
6899  add1_len = unhexify( add1, "" );
6900  add_reseed_len = unhexify( add_reseed, "" );
6901  add2_len = unhexify( add2, "" );
6902 
6903  test_offset = 0;
6904  fct_chk( ctr_drbg_init_entropy_len( &ctx, entropy_func, entropy, add_init, add_init_len, 32 ) == 0 );
6905 
6906  fct_chk( ctr_drbg_random_with_add( &ctx, buf, 16, add1, add1_len ) == 0 );
6907  fct_chk( ctr_drbg_reseed( &ctx, add_reseed, add_reseed_len ) == 0 );
6908  fct_chk( ctr_drbg_random_with_add( &ctx, buf, 16, add2, add2_len ) == 0 );
6909  hexify( output_str, buf, 16 );
6910  fct_chk( strcmp( (char *) output_str, "4bab95f9f05fc36a337b6f2582c2ce98" ) == 0 );
6911  }
6912  FCT_TEST_END();
6913 
6914 
6915  FCT_TEST_BGN(ctr_drbg_nist_validation_aes_256_use_dffalse2561282560_2)
6916  {
6917  unsigned char entropy[512];
6918  unsigned char add_init[512];
6919  unsigned char add1[512];
6920  unsigned char add_reseed[512];
6921  unsigned char add2[512];
6922  ctr_drbg_context ctx;
6923  unsigned char buf[512];
6924  unsigned char output_str[512];
6925  int add_init_len, add1_len, add_reseed_len, add2_len;
6926 
6927  memset( output_str, 0, 512 );
6928 
6929  unhexify( entropy, "bf9bf25a949d447274a8c72f1ae51399521f8aca39b1b37bb7b4d5cf3c67d55ef8dbacfb71aa9c5949416e2868b968883e517215bc20292894f8406ab39c1ea1" );
6930  add_init_len = unhexify( add_init, "88c31e24f4f859b668946ce73f8600621a70731440762b3c267ceab52a9d77a23d6f70ddba0e46a786697a906ccb18a3" );
6931  add1_len = unhexify( add1, "" );
6932  add_reseed_len = unhexify( add_reseed, "" );
6933  add2_len = unhexify( add2, "" );
6934 
6935  test_offset = 0;
6936  fct_chk( ctr_drbg_init_entropy_len( &ctx, entropy_func, entropy, add_init, add_init_len, 32 ) == 0 );
6937 
6938  fct_chk( ctr_drbg_random_with_add( &ctx, buf, 16, add1, add1_len ) == 0 );
6939  fct_chk( ctr_drbg_reseed( &ctx, add_reseed, add_reseed_len ) == 0 );
6940  fct_chk( ctr_drbg_random_with_add( &ctx, buf, 16, add2, add2_len ) == 0 );
6941  hexify( output_str, buf, 16 );
6942  fct_chk( strcmp( (char *) output_str, "841aaa0b171d1526ef365b9201adbff3" ) == 0 );
6943  }
6944  FCT_TEST_END();
6945 
6946 
6947  FCT_TEST_BGN(ctr_drbg_nist_validation_aes_256_use_dffalse2561282560_3)
6948  {
6949  unsigned char entropy[512];
6950  unsigned char add_init[512];
6951  unsigned char add1[512];
6952  unsigned char add_reseed[512];
6953  unsigned char add2[512];
6954  ctr_drbg_context ctx;
6955  unsigned char buf[512];
6956  unsigned char output_str[512];
6957  int add_init_len, add1_len, add_reseed_len, add2_len;
6958 
6959  memset( output_str, 0, 512 );
6960 
6961  unhexify( entropy, "686f4f9ee74c3402845fbad9353d7dfeff727584d892eb64bd84b764110cbe4ac8581e7e23acb95caf12979983e8947c570264aec292f1c7b756f7184007dcba" );
6962  add_init_len = unhexify( add_init, "8545a0de5ea028c8e5976d5b58fa50079b20ba716f0856cc1af7b98537c895f0266b956542d2b8ca661aef5da1f7f8c5" );
6963  add1_len = unhexify( add1, "" );
6964  add_reseed_len = unhexify( add_reseed, "" );
6965  add2_len = unhexify( add2, "" );
6966 
6967  test_offset = 0;
6968  fct_chk( ctr_drbg_init_entropy_len( &ctx, entropy_func, entropy, add_init, add_init_len, 32 ) == 0 );
6969 
6970  fct_chk( ctr_drbg_random_with_add( &ctx, buf, 16, add1, add1_len ) == 0 );
6971  fct_chk( ctr_drbg_reseed( &ctx, add_reseed, add_reseed_len ) == 0 );
6972  fct_chk( ctr_drbg_random_with_add( &ctx, buf, 16, add2, add2_len ) == 0 );
6973  hexify( output_str, buf, 16 );
6974  fct_chk( strcmp( (char *) output_str, "f6d6ae6449b2984df8bcb69584fb16f3" ) == 0 );
6975  }
6976  FCT_TEST_END();
6977 
6978 
6979  FCT_TEST_BGN(ctr_drbg_nist_validation_aes_256_use_dffalse2561282560_4)
6980  {
6981  unsigned char entropy[512];
6982  unsigned char add_init[512];
6983  unsigned char add1[512];
6984  unsigned char add_reseed[512];
6985  unsigned char add2[512];
6986  ctr_drbg_context ctx;
6987  unsigned char buf[512];
6988  unsigned char output_str[512];
6989  int add_init_len, add1_len, add_reseed_len, add2_len;
6990 
6991  memset( output_str, 0, 512 );
6992 
6993  unhexify( entropy, "5d1b8fa0ca2ee127d1bd41423c17b9a8c736715cc2906818e9216dfd81b7637b66c89b772b55ae707c6effa2d9ce7425df26f966646ab613d5599143cf51e5e8" );
6994  add_init_len = unhexify( add_init, "d6cd4b4fb9105374605deac7bb49ad792eb225daa560f2a86f66269bf9afc2ea01b6ee6f0eb4926d2f09329df6e90d79" );
6995  add1_len = unhexify( add1, "" );
6996  add_reseed_len = unhexify( add_reseed, "" );
6997  add2_len = unhexify( add2, "" );
6998 
6999  test_offset = 0;
7000  fct_chk( ctr_drbg_init_entropy_len( &ctx, entropy_func, entropy, add_init, add_init_len, 32 ) == 0 );
7001 
7002  fct_chk( ctr_drbg_random_with_add( &ctx, buf, 16, add1, add1_len ) == 0 );
7003  fct_chk( ctr_drbg_reseed( &ctx, add_reseed, add_reseed_len ) == 0 );
7004  fct_chk( ctr_drbg_random_with_add( &ctx, buf, 16, add2, add2_len ) == 0 );
7005  hexify( output_str, buf, 16 );
7006  fct_chk( strcmp( (char *) output_str, "c36ab451116d733eb4377de3511db5ce" ) == 0 );
7007  }
7008  FCT_TEST_END();
7009 
7010 
7011  FCT_TEST_BGN(ctr_drbg_nist_validation_aes_256_use_dffalse2561282560_5)
7012  {
7013  unsigned char entropy[512];
7014  unsigned char add_init[512];
7015  unsigned char add1[512];
7016  unsigned char add_reseed[512];
7017  unsigned char add2[512];
7018  ctr_drbg_context ctx;
7019  unsigned char buf[512];
7020  unsigned char output_str[512];
7021  int add_init_len, add1_len, add_reseed_len, add2_len;
7022 
7023  memset( output_str, 0, 512 );
7024 
7025  unhexify( entropy, "2026cf7c1b1fe9645ab8759958ac04fb1d8938b9913c3b7f22da81e398b2c00b1921e1d4edb5d21c4531515cb0f9644fe8068685b9fca813176e6780796e8ded" );
7026  add_init_len = unhexify( add_init, "e73ebae0d0834fdff1829ac3d9722fe9f1bc65b5f652fae5f7615af116440e3d5709b5cddd6065d568c246820de46b09" );
7027  add1_len = unhexify( add1, "" );
7028  add_reseed_len = unhexify( add_reseed, "" );
7029  add2_len = unhexify( add2, "" );
7030 
7031  test_offset = 0;
7032  fct_chk( ctr_drbg_init_entropy_len( &ctx, entropy_func, entropy, add_init, add_init_len, 32 ) == 0 );
7033 
7034  fct_chk( ctr_drbg_random_with_add( &ctx, buf, 16, add1, add1_len ) == 0 );
7035  fct_chk( ctr_drbg_reseed( &ctx, add_reseed, add_reseed_len ) == 0 );
7036  fct_chk( ctr_drbg_random_with_add( &ctx, buf, 16, add2, add2_len ) == 0 );
7037  hexify( output_str, buf, 16 );
7038  fct_chk( strcmp( (char *) output_str, "98d1dce30593de8a8d5b4d956f6c684b" ) == 0 );
7039  }
7040  FCT_TEST_END();
7041 
7042 
7043  FCT_TEST_BGN(ctr_drbg_nist_validation_aes_256_use_dffalse2561282560_6)
7044  {
7045  unsigned char entropy[512];
7046  unsigned char add_init[512];
7047  unsigned char add1[512];
7048  unsigned char add_reseed[512];
7049  unsigned char add2[512];
7050  ctr_drbg_context ctx;
7051  unsigned char buf[512];
7052  unsigned char output_str[512];
7053  int add_init_len, add1_len, add_reseed_len, add2_len;
7054 
7055  memset( output_str, 0, 512 );
7056 
7057  unhexify( entropy, "1d0dd1a87d59c69f28e118e1083d65f1ee0df31f6308a92dcc47503ec4d20a018d9821c6a7d64385724f0e941231426e028efe6d75e53ff8edf095ef1baf2656" );
7058  add_init_len = unhexify( add_init, "a53c1813c06b609eff9ddc77204b085ca985f22170b8ecfcbbf45ea11c45c24fcf25bc33150f9f97ce48244d5beb685c" );
7059  add1_len = unhexify( add1, "" );
7060  add_reseed_len = unhexify( add_reseed, "" );
7061  add2_len = unhexify( add2, "" );
7062 
7063  test_offset = 0;
7064  fct_chk( ctr_drbg_init_entropy_len( &ctx, entropy_func, entropy, add_init, add_init_len, 32 ) == 0 );
7065 
7066  fct_chk( ctr_drbg_random_with_add( &ctx, buf, 16, add1, add1_len ) == 0 );
7067  fct_chk( ctr_drbg_reseed( &ctx, add_reseed, add_reseed_len ) == 0 );
7068  fct_chk( ctr_drbg_random_with_add( &ctx, buf, 16, add2, add2_len ) == 0 );
7069  hexify( output_str, buf, 16 );
7070  fct_chk( strcmp( (char *) output_str, "035cec3a24ba7c44e5c19436c2689a75" ) == 0 );
7071  }
7072  FCT_TEST_END();
7073 
7074 
7075  FCT_TEST_BGN(ctr_drbg_nist_validation_aes_256_use_dffalse2561282560_7)
7076  {
7077  unsigned char entropy[512];
7078  unsigned char add_init[512];
7079  unsigned char add1[512];
7080  unsigned char add_reseed[512];
7081  unsigned char add2[512];
7082  ctr_drbg_context ctx;
7083  unsigned char buf[512];
7084  unsigned char output_str[512];
7085  int add_init_len, add1_len, add_reseed_len, add2_len;
7086 
7087  memset( output_str, 0, 512 );
7088 
7089  unhexify( entropy, "aa82a5ea33439d0c16a1cc13cbae53b169f4d369bcbdae81a9a38129c65ae0ea4f720576c012f8d7eb1c0202003c39d28453a22e502b4949cf5ba23a727721bf" );
7090  add_init_len = unhexify( add_init, "16d5b8290693a5c40c5a526dd6d653ac54cabb5608d77bb2cb7d6270b96c2fe2de076716ae8cf0a5c781edbde861dc70" );
7091  add1_len = unhexify( add1, "" );
7092  add_reseed_len = unhexify( add_reseed, "" );
7093  add2_len = unhexify( add2, "" );
7094 
7095  test_offset = 0;
7096  fct_chk( ctr_drbg_init_entropy_len( &ctx, entropy_func, entropy, add_init, add_init_len, 32 ) == 0 );
7097 
7098  fct_chk( ctr_drbg_random_with_add( &ctx, buf, 16, add1, add1_len ) == 0 );
7099  fct_chk( ctr_drbg_reseed( &ctx, add_reseed, add_reseed_len ) == 0 );
7100  fct_chk( ctr_drbg_random_with_add( &ctx, buf, 16, add2, add2_len ) == 0 );
7101  hexify( output_str, buf, 16 );
7102  fct_chk( strcmp( (char *) output_str, "de4ed9d163d11e9b52470d078df4c869" ) == 0 );
7103  }
7104  FCT_TEST_END();
7105 
7106 
7107  FCT_TEST_BGN(ctr_drbg_nist_validation_aes_256_use_dffalse2561282560_8)
7108  {
7109  unsigned char entropy[512];
7110  unsigned char add_init[512];
7111  unsigned char add1[512];
7112  unsigned char add_reseed[512];
7113  unsigned char add2[512];
7114  ctr_drbg_context ctx;
7115  unsigned char buf[512];
7116  unsigned char output_str[512];
7117  int add_init_len, add1_len, add_reseed_len, add2_len;
7118 
7119  memset( output_str, 0, 512 );
7120 
7121  unhexify( entropy, "3da9e9518eb1f1b6268e4597f158844ff672ddb414f7ec23fa66d6c86b90a732a7b3016a3387ec3dbed34eb479413d017932ebf9f2a2fea0b35d2bf4e06718f9" );
7122  add_init_len = unhexify( add_init, "68bfabdbb821cb978527ff18ce37c96c79ad751756551f36b6991981285a68854ec7f72f548c3395ad3ee40410064d4b" );
7123  add1_len = unhexify( add1, "" );
7124  add_reseed_len = unhexify( add_reseed, "" );
7125  add2_len = unhexify( add2, "" );
7126 
7127  test_offset = 0;
7128  fct_chk( ctr_drbg_init_entropy_len( &ctx, entropy_func, entropy, add_init, add_init_len, 32 ) == 0 );
7129 
7130  fct_chk( ctr_drbg_random_with_add( &ctx, buf, 16, add1, add1_len ) == 0 );
7131  fct_chk( ctr_drbg_reseed( &ctx, add_reseed, add_reseed_len ) == 0 );
7132  fct_chk( ctr_drbg_random_with_add( &ctx, buf, 16, add2, add2_len ) == 0 );
7133  hexify( output_str, buf, 16 );
7134  fct_chk( strcmp( (char *) output_str, "ec4e3e2b6b8763deb17b8611d1fe7953" ) == 0 );
7135  }
7136  FCT_TEST_END();
7137 
7138 
7139  FCT_TEST_BGN(ctr_drbg_nist_validation_aes_256_use_dffalse2561282560_9)
7140  {
7141  unsigned char entropy[512];
7142  unsigned char add_init[512];
7143  unsigned char add1[512];
7144  unsigned char add_reseed[512];
7145  unsigned char add2[512];
7146  ctr_drbg_context ctx;
7147  unsigned char buf[512];
7148  unsigned char output_str[512];
7149  int add_init_len, add1_len, add_reseed_len, add2_len;
7150 
7151  memset( output_str, 0, 512 );
7152 
7153  unhexify( entropy, "72ebeda7342770d03bc0e531754f946ca5cca684c41f9d089fe9147fad93b6154919c5cb2e6d162fbfde7b9ff0aa590a17993ca6c80bd59eee4134fc2ce944d8" );
7154  add_init_len = unhexify( add_init, "171a74ab694a7d7c2baa3ccf103ad94f11094e07a955ae9ac3bad370f1448753e99b63cc23d1878ab66f94136ec2ecac" );
7155  add1_len = unhexify( add1, "" );
7156  add_reseed_len = unhexify( add_reseed, "" );
7157  add2_len = unhexify( add2, "" );
7158 
7159  test_offset = 0;
7160  fct_chk( ctr_drbg_init_entropy_len( &ctx, entropy_func, entropy, add_init, add_init_len, 32 ) == 0 );
7161 
7162  fct_chk( ctr_drbg_random_with_add( &ctx, buf, 16, add1, add1_len ) == 0 );
7163  fct_chk( ctr_drbg_reseed( &ctx, add_reseed, add_reseed_len ) == 0 );
7164  fct_chk( ctr_drbg_random_with_add( &ctx, buf, 16, add2, add2_len ) == 0 );
7165  hexify( output_str, buf, 16 );
7166  fct_chk( strcmp( (char *) output_str, "582ab4f105c3e1fed9593f58fc335fc3" ) == 0 );
7167  }
7168  FCT_TEST_END();
7169 
7170 
7171  FCT_TEST_BGN(ctr_drbg_nist_validation_aes_256_use_dffalse2561282560_10)
7172  {
7173  unsigned char entropy[512];
7174  unsigned char add_init[512];
7175  unsigned char add1[512];
7176  unsigned char add_reseed[512];
7177  unsigned char add2[512];
7178  ctr_drbg_context ctx;
7179  unsigned char buf[512];
7180  unsigned char output_str[512];
7181  int add_init_len, add1_len, add_reseed_len, add2_len;
7182 
7183  memset( output_str, 0, 512 );
7184 
7185  unhexify( entropy, "8e27f0dbeae4613bcf0011105f824ed2ecb150a83a0994f8f6607833755216e016fb175e51d42370afe27b11c18477886b530c95bc31bd1c0f8fe00f61fc15a0" );
7186  add_init_len = unhexify( add_init, "caed30015b34064762591eba9a59f440566a6621832f650572362229e8a38cd0f5d6d322afd8444132056690d6fa5540" );
7187  add1_len = unhexify( add1, "" );
7188  add_reseed_len = unhexify( add_reseed, "" );
7189  add2_len = unhexify( add2, "" );
7190 
7191  test_offset = 0;
7192  fct_chk( ctr_drbg_init_entropy_len( &ctx, entropy_func, entropy, add_init, add_init_len, 32 ) == 0 );
7193 
7194  fct_chk( ctr_drbg_random_with_add( &ctx, buf, 16, add1, add1_len ) == 0 );
7195  fct_chk( ctr_drbg_reseed( &ctx, add_reseed, add_reseed_len ) == 0 );
7196  fct_chk( ctr_drbg_random_with_add( &ctx, buf, 16, add2, add2_len ) == 0 );
7197  hexify( output_str, buf, 16 );
7198  fct_chk( strcmp( (char *) output_str, "d42787e97147d457f1590c742443ad92" ) == 0 );
7199  }
7200  FCT_TEST_END();
7201 
7202 
7203  FCT_TEST_BGN(ctr_drbg_nist_validation_aes_256_use_dffalse2561282560_11)
7204  {
7205  unsigned char entropy[512];
7206  unsigned char add_init[512];
7207  unsigned char add1[512];
7208  unsigned char add_reseed[512];
7209  unsigned char add2[512];
7210  ctr_drbg_context ctx;
7211  unsigned char buf[512];
7212  unsigned char output_str[512];
7213  int add_init_len, add1_len, add_reseed_len, add2_len;
7214 
7215  memset( output_str, 0, 512 );
7216 
7217  unhexify( entropy, "38a8b685e6bbab67824f4cc72995043ea2854f067f2afaec762c9e78ff9d585a25bc63c8d0d075d06d43f3f694733982d26cbe0648b2d0cf8053918b912c303a" );
7218  add_init_len = unhexify( add_init, "c58d62f8145622cd86cfbda66bc26d2ce4c5610cd9cd1c326b99b60355a6fe751783c07f2cc21ba68f1f20ca70f0ad31" );
7219  add1_len = unhexify( add1, "" );
7220  add_reseed_len = unhexify( add_reseed, "" );
7221  add2_len = unhexify( add2, "" );
7222 
7223  test_offset = 0;
7224  fct_chk( ctr_drbg_init_entropy_len( &ctx, entropy_func, entropy, add_init, add_init_len, 32 ) == 0 );
7225 
7226  fct_chk( ctr_drbg_random_with_add( &ctx, buf, 16, add1, add1_len ) == 0 );
7227  fct_chk( ctr_drbg_reseed( &ctx, add_reseed, add_reseed_len ) == 0 );
7228  fct_chk( ctr_drbg_random_with_add( &ctx, buf, 16, add2, add2_len ) == 0 );
7229  hexify( output_str, buf, 16 );
7230  fct_chk( strcmp( (char *) output_str, "84001709f15a2fd167c161b5d376d86d" ) == 0 );
7231  }
7232  FCT_TEST_END();
7233 
7234 
7235  FCT_TEST_BGN(ctr_drbg_nist_validation_aes_256_use_dffalse2561282560_12)
7236  {
7237  unsigned char entropy[512];
7238  unsigned char add_init[512];
7239  unsigned char add1[512];
7240  unsigned char add_reseed[512];
7241  unsigned char add2[512];
7242  ctr_drbg_context ctx;
7243  unsigned char buf[512];
7244  unsigned char output_str[512];
7245  int add_init_len, add1_len, add_reseed_len, add2_len;
7246 
7247  memset( output_str, 0, 512 );
7248 
7249  unhexify( entropy, "f188a1ba21b1791ebf8a08d8ba555e49423d9178a561bcc1672539c3a7ba1d856eae9922c4d96c181ed045d6f1d15e855690cdae451edac60f1ca2021f1fec57" );
7250  add_init_len = unhexify( add_init, "dc9719050d5257152d8a7d60d3ef1fc5b8cb1700bafc7de863c019f244779c464b6214f21a2f6d0aa3ca282007615ce5" );
7251  add1_len = unhexify( add1, "" );
7252  add_reseed_len = unhexify( add_reseed, "" );
7253  add2_len = unhexify( add2, "" );
7254 
7255  test_offset = 0;
7256  fct_chk( ctr_drbg_init_entropy_len( &ctx, entropy_func, entropy, add_init, add_init_len, 32 ) == 0 );
7257 
7258  fct_chk( ctr_drbg_random_with_add( &ctx, buf, 16, add1, add1_len ) == 0 );
7259  fct_chk( ctr_drbg_reseed( &ctx, add_reseed, add_reseed_len ) == 0 );
7260  fct_chk( ctr_drbg_random_with_add( &ctx, buf, 16, add2, add2_len ) == 0 );
7261  hexify( output_str, buf, 16 );
7262  fct_chk( strcmp( (char *) output_str, "7540fed313c96261cac255bf83b5ae99" ) == 0 );
7263  }
7264  FCT_TEST_END();
7265 
7266 
7267  FCT_TEST_BGN(ctr_drbg_nist_validation_aes_256_use_dffalse2561282560_13)
7268  {
7269  unsigned char entropy[512];
7270  unsigned char add_init[512];
7271  unsigned char add1[512];
7272  unsigned char add_reseed[512];
7273  unsigned char add2[512];
7274  ctr_drbg_context ctx;
7275  unsigned char buf[512];
7276  unsigned char output_str[512];
7277  int add_init_len, add1_len, add_reseed_len, add2_len;
7278 
7279  memset( output_str, 0, 512 );
7280 
7281  unhexify( entropy, "0ddd0f4a43a7b54d9abb0928a2242c378db7a95a0b206baa642afe5cd55108f412f1d727fd591bca2c76355aa62aa8638cfa1916739bc66e02b9459ccd0881ba" );
7282  add_init_len = unhexify( add_init, "ff057781af4a4a1eefeb26ab38f82a2efb6f065de290ebf225bd693dfb1f97455b49143bdb430324c9d945c48824f6cc" );
7283  add1_len = unhexify( add1, "" );
7284  add_reseed_len = unhexify( add_reseed, "" );
7285  add2_len = unhexify( add2, "" );
7286 
7287  test_offset = 0;
7288  fct_chk( ctr_drbg_init_entropy_len( &ctx, entropy_func, entropy, add_init, add_init_len, 32 ) == 0 );
7289 
7290  fct_chk( ctr_drbg_random_with_add( &ctx, buf, 16, add1, add1_len ) == 0 );
7291  fct_chk( ctr_drbg_reseed( &ctx, add_reseed, add_reseed_len ) == 0 );
7292  fct_chk( ctr_drbg_random_with_add( &ctx, buf, 16, add2, add2_len ) == 0 );
7293  hexify( output_str, buf, 16 );
7294  fct_chk( strcmp( (char *) output_str, "8b6e74a94fcac0d2f212d3594213fbb6" ) == 0 );
7295  }
7296  FCT_TEST_END();
7297 
7298 
7299  FCT_TEST_BGN(ctr_drbg_nist_validation_aes_256_use_dffalse2561282560_14)
7300  {
7301  unsigned char entropy[512];
7302  unsigned char add_init[512];
7303  unsigned char add1[512];
7304  unsigned char add_reseed[512];
7305  unsigned char add2[512];
7306  ctr_drbg_context ctx;
7307  unsigned char buf[512];
7308  unsigned char output_str[512];
7309  int add_init_len, add1_len, add_reseed_len, add2_len;
7310 
7311  memset( output_str, 0, 512 );
7312 
7313  unhexify( entropy, "128566fe6c5b5595742190519445c25db85ee0ce29371f4cab213400d479d2bfe27655155be0fa237173abb214f0226a2f1770802dd69485adb25e6d837485e1" );
7314  add_init_len = unhexify( add_init, "ef027327e47fc5875c01cb17d798fdc2b27a5c78000727842f8a516f4e8dd34afc167ae145b1e763bebdca51e2f461a7" );
7315  add1_len = unhexify( add1, "" );
7316  add_reseed_len = unhexify( add_reseed, "" );
7317  add2_len = unhexify( add2, "" );
7318 
7319  test_offset = 0;
7320  fct_chk( ctr_drbg_init_entropy_len( &ctx, entropy_func, entropy, add_init, add_init_len, 32 ) == 0 );
7321 
7322  fct_chk( ctr_drbg_random_with_add( &ctx, buf, 16, add1, add1_len ) == 0 );
7323  fct_chk( ctr_drbg_reseed( &ctx, add_reseed, add_reseed_len ) == 0 );
7324  fct_chk( ctr_drbg_random_with_add( &ctx, buf, 16, add2, add2_len ) == 0 );
7325  hexify( output_str, buf, 16 );
7326  fct_chk( strcmp( (char *) output_str, "76cd1553b2b73d4ef6043a09fb90d679" ) == 0 );
7327  }
7328  FCT_TEST_END();
7329 
7330 
7331  FCT_TEST_BGN(ctr_drbg_nist_validation_aes_256_use_dffalse256128256256_0)
7332  {
7333  unsigned char entropy[512];
7334  unsigned char add_init[512];
7335  unsigned char add1[512];
7336  unsigned char add_reseed[512];
7337  unsigned char add2[512];
7338  ctr_drbg_context ctx;
7339  unsigned char buf[512];
7340  unsigned char output_str[512];
7341  int add_init_len, add1_len, add_reseed_len, add2_len;
7342 
7343  memset( output_str, 0, 512 );
7344 
7345  unhexify( entropy, "23677c04a2d6ab446b7b3c582a8071654d27859441b10799f08b788378b926ca4306e7cb5c0f9f104c607fbf0c379be49426e53bf5637225b551f0cc694d6593" );
7346  add_init_len = unhexify( add_init, "8e1a59210f876d017109cb90c7d5dd669b375d971266b7320ba8db9bd79b373bcc895974460e08eadd07a00ce7bdade9" );
7347  add1_len = unhexify( add1, "19e914ffbc6d872be010d66b17874010ec8b036a3d60d7f7dda5accc6962a542" );
7348  add_reseed_len = unhexify( add_reseed, "bd7a0c09e780e0ad783fd708355b8df77b4454c3d606fb8de053bffa5ecf9021" );
7349  add2_len = unhexify( add2, "d284dc2caf6d214f8909efc9a75297bccfc04353c2788a96f8b752749c7fec0c" );
7350 
7351  test_offset = 0;
7352  fct_chk( ctr_drbg_init_entropy_len( &ctx, entropy_func, entropy, add_init, add_init_len, 32 ) == 0 );
7353 
7354  fct_chk( ctr_drbg_random_with_add( &ctx, buf, 16, add1, add1_len ) == 0 );
7355  fct_chk( ctr_drbg_reseed( &ctx, add_reseed, add_reseed_len ) == 0 );
7356  fct_chk( ctr_drbg_random_with_add( &ctx, buf, 16, add2, add2_len ) == 0 );
7357  hexify( output_str, buf, 16 );
7358  fct_chk( strcmp( (char *) output_str, "129d256e7db6269e5a0a160d2278f305" ) == 0 );
7359  }
7360  FCT_TEST_END();
7361 
7362 
7363  FCT_TEST_BGN(ctr_drbg_nist_validation_aes_256_use_dffalse256128256256_1)
7364  {
7365  unsigned char entropy[512];
7366  unsigned char add_init[512];
7367  unsigned char add1[512];
7368  unsigned char add_reseed[512];
7369  unsigned char add2[512];
7370  ctr_drbg_context ctx;
7371  unsigned char buf[512];
7372  unsigned char output_str[512];
7373  int add_init_len, add1_len, add_reseed_len, add2_len;
7374 
7375  memset( output_str, 0, 512 );
7376 
7377  unhexify( entropy, "ec47b029643f85ea19388b6e9de6ab22705b060ae10cee71262027d0bdff5efd7393af619bc6658612fabc78439a0bd5a01255563a96013fa130dd06fd0f5442" );
7378  add_init_len = unhexify( add_init, "00674e633670c9971be7af789d37d5a4ef567b3ca4766722cd8f67e09d21cbbfa08d43ea1aa259999c6a307ae6347d62" );
7379  add1_len = unhexify( add1, "5b92bce3f87645126daa4704fd7df98b880aa07743a57399b985ad1a00b1f2fc" );
7380  add_reseed_len = unhexify( add_reseed, "8199de1338c688234c77262ef35423f4695b277726c76d8b5f426399c14d83b5" );
7381  add2_len = unhexify( add2, "eb95f5a4d8400cec2d4e0f548b6e92636b5e284fb6b61766a1f35bb9cdc5df0a" );
7382 
7383  test_offset = 0;
7384  fct_chk( ctr_drbg_init_entropy_len( &ctx, entropy_func, entropy, add_init, add_init_len, 32 ) == 0 );
7385 
7386  fct_chk( ctr_drbg_random_with_add( &ctx, buf, 16, add1, add1_len ) == 0 );
7387  fct_chk( ctr_drbg_reseed( &ctx, add_reseed, add_reseed_len ) == 0 );
7388  fct_chk( ctr_drbg_random_with_add( &ctx, buf, 16, add2, add2_len ) == 0 );
7389  hexify( output_str, buf, 16 );
7390  fct_chk( strcmp( (char *) output_str, "9fbe95817578eb272aa9da2f509c2a06" ) == 0 );
7391  }
7392  FCT_TEST_END();
7393 
7394 
7395  FCT_TEST_BGN(ctr_drbg_nist_validation_aes_256_use_dffalse256128256256_2)
7396  {
7397  unsigned char entropy[512];
7398  unsigned char add_init[512];
7399  unsigned char add1[512];
7400  unsigned char add_reseed[512];
7401  unsigned char add2[512];
7402  ctr_drbg_context ctx;
7403  unsigned char buf[512];
7404  unsigned char output_str[512];
7405  int add_init_len, add1_len, add_reseed_len, add2_len;
7406 
7407  memset( output_str, 0, 512 );
7408 
7409  unhexify( entropy, "a9bebd13711c0c22c94b3252654854515a9dc015fe69e688fbac9676b3d77ab67e19b020cd2427ac789ca17f656e499be3ba3ab2075ff95247c6355157eebc79" );
7410  add_init_len = unhexify( add_init, "2553423c3cb0fae8ca54af56f496e9935d5af4738898f77f789a9bee867dfbc6010c4e5bc68da2b922cdd84eea68e1da" );
7411  add1_len = unhexify( add1, "e74e45fa28697a06dab08545fde0cc26e7eca31c40aa68ee41c4de402fdcc961" );
7412  add_reseed_len = unhexify( add_reseed, "5aa8abf7062079929d6a131cd3844a5fb6514c07061e25cad67677d867297685" );
7413  add2_len = unhexify( add2, "84819109b2e09b46ba3f5464c34b28ce25a186f0e0fd83fe5fa0ab026c01292a" );
7414 
7415  test_offset = 0;
7416  fct_chk( ctr_drbg_init_entropy_len( &ctx, entropy_func, entropy, add_init, add_init_len, 32 ) == 0 );
7417 
7418  fct_chk( ctr_drbg_random_with_add( &ctx, buf, 16, add1, add1_len ) == 0 );
7419  fct_chk( ctr_drbg_reseed( &ctx, add_reseed, add_reseed_len ) == 0 );
7420  fct_chk( ctr_drbg_random_with_add( &ctx, buf, 16, add2, add2_len ) == 0 );
7421  hexify( output_str, buf, 16 );
7422  fct_chk( strcmp( (char *) output_str, "3846f3406e49040c48b5cfc9cbc75d1a" ) == 0 );
7423  }
7424  FCT_TEST_END();
7425 
7426 
7427  FCT_TEST_BGN(ctr_drbg_nist_validation_aes_256_use_dffalse256128256256_3)
7428  {
7429  unsigned char entropy[512];
7430  unsigned char add_init[512];
7431  unsigned char add1[512];
7432  unsigned char add_reseed[512];
7433  unsigned char add2[512];
7434  ctr_drbg_context ctx;
7435  unsigned char buf[512];
7436  unsigned char output_str[512];
7437  int add_init_len, add1_len, add_reseed_len, add2_len;
7438 
7439  memset( output_str, 0, 512 );
7440 
7441  unhexify( entropy, "a691b8bf6a407c93a36d18aeced4c75f76d8397d4ecbcd4e8f820cb393186897f05c1ef668b027fc78ba6da9bd554cc31a467d47b5e534b5340c7799383ec05c" );
7442  add_init_len = unhexify( add_init, "856f1371454bb9aa06be897dcda9b295817c6eeb865a9acb3a89d145bfe29ce5e1b3b12b714571afdfaca7951cd47e33" );
7443  add1_len = unhexify( add1, "2c81d1e94b33164a177d0183d182fe7d23ef4f88444246464e58bdd0de38d82c" );
7444  add_reseed_len = unhexify( add_reseed, "1b5dae81c96771bea091521c0973c5af76a03e3624160e2511e57ff43a1d32a9" );
7445  add2_len = unhexify( add2, "bf5878e2bd139f8f058f3d834acd771514da6d4c5b9ef84466e5a4e0e4b2eaaf" );
7446 
7447  test_offset = 0;
7448  fct_chk( ctr_drbg_init_entropy_len( &ctx, entropy_func, entropy, add_init, add_init_len, 32 ) == 0 );
7449 
7450  fct_chk( ctr_drbg_random_with_add( &ctx, buf, 16, add1, add1_len ) == 0 );
7451  fct_chk( ctr_drbg_reseed( &ctx, add_reseed, add_reseed_len ) == 0 );
7452  fct_chk( ctr_drbg_random_with_add( &ctx, buf, 16, add2, add2_len ) == 0 );
7453  hexify( output_str, buf, 16 );
7454  fct_chk( strcmp( (char *) output_str, "6a5ea73aad476ce201e173d4d5a7ffcc" ) == 0 );
7455  }
7456  FCT_TEST_END();
7457 
7458 
7459  FCT_TEST_BGN(ctr_drbg_nist_validation_aes_256_use_dffalse256128256256_4)
7460  {
7461  unsigned char entropy[512];
7462  unsigned char add_init[512];
7463  unsigned char add1[512];
7464  unsigned char add_reseed[512];
7465  unsigned char add2[512];
7466  ctr_drbg_context ctx;
7467  unsigned char buf[512];
7468  unsigned char output_str[512];
7469  int add_init_len, add1_len, add_reseed_len, add2_len;
7470 
7471  memset( output_str, 0, 512 );
7472 
7473  unhexify( entropy, "1ab9ada5eeebc3fc8e53f358b643476fcfd4dd9f092f21d2bc1c4bb1ffd01a0c5b207aaa09ff76a9cab0aa6ce62b6a65b2650ab448b8bb2e8696a7aa4b6f4e8d" );
7474  add_init_len = unhexify( add_init, "0436075cf8cf62ce623c2301ebd45203c98282611cfa5a12dd7c04525ffa7eb343a607af2f57feb7ce3af97e0abc2285" );
7475  add1_len = unhexify( add1, "62f07d1f49e40f7f472985947ac4d8ef2d58216d918f7942b9c70f43daff8972" );
7476  add_reseed_len = unhexify( add_reseed, "37ae758141fbc890ee7e1d0854426b2984fb1c094677e6a61546e9315bab0898" );
7477  add2_len = unhexify( add2, "353d1dd0c8d8656bc418a6a3ace138ecd62819d4e21b8bd87694ea683ec0cc37" );
7478 
7479  test_offset = 0;
7480  fct_chk( ctr_drbg_init_entropy_len( &ctx, entropy_func, entropy, add_init, add_init_len, 32 ) == 0 );
7481 
7482  fct_chk( ctr_drbg_random_with_add( &ctx, buf, 16, add1, add1_len ) == 0 );
7483  fct_chk( ctr_drbg_reseed( &ctx, add_reseed, add_reseed_len ) == 0 );
7484  fct_chk( ctr_drbg_random_with_add( &ctx, buf, 16, add2, add2_len ) == 0 );
7485  hexify( output_str, buf, 16 );
7486  fct_chk( strcmp( (char *) output_str, "bfee6bb4afc228da981bfe7f0d17578b" ) == 0 );
7487  }
7488  FCT_TEST_END();
7489 
7490 
7491  FCT_TEST_BGN(ctr_drbg_nist_validation_aes_256_use_dffalse256128256256_5)
7492  {
7493  unsigned char entropy[512];
7494  unsigned char add_init[512];
7495  unsigned char add1[512];
7496  unsigned char add_reseed[512];
7497  unsigned char add2[512];
7498  ctr_drbg_context ctx;
7499  unsigned char buf[512];
7500  unsigned char output_str[512];
7501  int add_init_len, add1_len, add_reseed_len, add2_len;
7502 
7503  memset( output_str, 0, 512 );
7504 
7505  unhexify( entropy, "c36004075f5fd078137ea08de6cb15f71aeb9eca21c891cfdf7a8c0d21790c94ffa93be5fa06beb5e82d9fbf173ef9b29c18511fee2455dbbe61d6b01baf024a" );
7506  add_init_len = unhexify( add_init, "d004a0893bf326d50ee52e04cb3e64409f204f4e9af780d5dd092d04162d088385b1f243000914c62cba3dadf9827c81" );
7507  add1_len = unhexify( add1, "7d313ada131650c7a506d2c194444ed202d568544caa75bbc60e57a0b74c9a10" );
7508  add_reseed_len = unhexify( add_reseed, "791d60238677ff53150cf7074061eac68335c0a7cec7de43ea63a5df0f312cd8" );
7509  add2_len = unhexify( add2, "6754366be264deb9e94f39e92ac2894bd93c1d7e1198d39e6eddccb0ea486f4d" );
7510 
7511  test_offset = 0;
7512  fct_chk( ctr_drbg_init_entropy_len( &ctx, entropy_func, entropy, add_init, add_init_len, 32 ) == 0 );
7513 
7514  fct_chk( ctr_drbg_random_with_add( &ctx, buf, 16, add1, add1_len ) == 0 );
7515  fct_chk( ctr_drbg_reseed( &ctx, add_reseed, add_reseed_len ) == 0 );
7516  fct_chk( ctr_drbg_random_with_add( &ctx, buf, 16, add2, add2_len ) == 0 );
7517  hexify( output_str, buf, 16 );
7518  fct_chk( strcmp( (char *) output_str, "1c29795f03e3c771603293473e347ab4" ) == 0 );
7519  }
7520  FCT_TEST_END();
7521 
7522 
7523  FCT_TEST_BGN(ctr_drbg_nist_validation_aes_256_use_dffalse256128256256_6)
7524  {
7525  unsigned char entropy[512];
7526  unsigned char add_init[512];
7527  unsigned char add1[512];
7528  unsigned char add_reseed[512];
7529  unsigned char add2[512];
7530  ctr_drbg_context ctx;
7531  unsigned char buf[512];
7532  unsigned char output_str[512];
7533  int add_init_len, add1_len, add_reseed_len, add2_len;
7534 
7535  memset( output_str, 0, 512 );
7536 
7537  unhexify( entropy, "c4d68b76dc0e785823be2da9d339dc900132f12721e8a63ebe92e36d740c5a5e5564c367bff4a52bc70b1c60c86f0bcb7c1d99c414956a259963207184f01246" );
7538  add_init_len = unhexify( add_init, "9a8c79b48ada409183f7260aa1415c9ee4e0b662e0fb81b5c56f85d76ed75efac5751dd4de7e7f8b53a36ee0dce2bc9e" );
7539  add1_len = unhexify( add1, "04c7060f36569a5d9578c718627fc2695e8d783c0c8aefca2744da6664e67c8c" );
7540  add_reseed_len = unhexify( add_reseed, "1d4b7d587421dea4f7f3e77fcf997607ecfeb6e665a9a184138eb5736b16f516" );
7541  add2_len = unhexify( add2, "8cb8daf9cda230d8d39b829b968aaa5f5d3e3106d8b693227ab1b6201b78a7b8" );
7542 
7543  test_offset = 0;
7544  fct_chk( ctr_drbg_init_entropy_len( &ctx, entropy_func, entropy, add_init, add_init_len, 32 ) == 0 );
7545 
7546  fct_chk( ctr_drbg_random_with_add( &ctx, buf, 16, add1, add1_len ) == 0 );
7547  fct_chk( ctr_drbg_reseed( &ctx, add_reseed, add_reseed_len ) == 0 );
7548  fct_chk( ctr_drbg_random_with_add( &ctx, buf, 16, add2, add2_len ) == 0 );
7549  hexify( output_str, buf, 16 );
7550  fct_chk( strcmp( (char *) output_str, "faa146098526546927a43fa4a5073e46" ) == 0 );
7551  }
7552  FCT_TEST_END();
7553 
7554 
7555  FCT_TEST_BGN(ctr_drbg_nist_validation_aes_256_use_dffalse256128256256_7)
7556  {
7557  unsigned char entropy[512];
7558  unsigned char add_init[512];
7559  unsigned char add1[512];
7560  unsigned char add_reseed[512];
7561  unsigned char add2[512];
7562  ctr_drbg_context ctx;
7563  unsigned char buf[512];
7564  unsigned char output_str[512];
7565  int add_init_len, add1_len, add_reseed_len, add2_len;
7566 
7567  memset( output_str, 0, 512 );
7568 
7569  unhexify( entropy, "ea7a046fa1760866bcb37fecf9ade7bcea4444662ea782d6f2820b22a96bab97b4c5adcb0a50ced885121b6b85a5074444b1555d9655f4f6ded31fe15281b30e" );
7570  add_init_len = unhexify( add_init, "a0736a5a8b0a394625d8985b05e3a9f277c7ba03b253c0e783359a8c4c086121cb46ea469c7756d5f099f5ee8ed16243" );
7571  add1_len = unhexify( add1, "47f3655dd05c42454fad68e330aabca49f27c76ba05ef07b6d77fba41153c0ab" );
7572  add_reseed_len = unhexify( add_reseed, "a5d07da3e399cc51d136096599fcbd9779e839b1fd86f21d7d1e23acd91f9fa7" );
7573  add2_len = unhexify( add2, "150b028b64a988fc1ffdfc9e66b4c8dfe4fcd8538ee976c89923638ebad33802" );
7574 
7575  test_offset = 0;
7576  fct_chk( ctr_drbg_init_entropy_len( &ctx, entropy_func, entropy, add_init, add_init_len, 32 ) == 0 );
7577 
7578  fct_chk( ctr_drbg_random_with_add( &ctx, buf, 16, add1, add1_len ) == 0 );
7579  fct_chk( ctr_drbg_reseed( &ctx, add_reseed, add_reseed_len ) == 0 );
7580  fct_chk( ctr_drbg_random_with_add( &ctx, buf, 16, add2, add2_len ) == 0 );
7581  hexify( output_str, buf, 16 );
7582  fct_chk( strcmp( (char *) output_str, "6ffdc685169b174ad0dd84cdeed050a7" ) == 0 );
7583  }
7584  FCT_TEST_END();
7585 
7586 
7587  FCT_TEST_BGN(ctr_drbg_nist_validation_aes_256_use_dffalse256128256256_8)
7588  {
7589  unsigned char entropy[512];
7590  unsigned char add_init[512];
7591  unsigned char add1[512];
7592  unsigned char add_reseed[512];
7593  unsigned char add2[512];
7594  ctr_drbg_context ctx;
7595  unsigned char buf[512];
7596  unsigned char output_str[512];
7597  int add_init_len, add1_len, add_reseed_len, add2_len;
7598 
7599  memset( output_str, 0, 512 );
7600 
7601  unhexify( entropy, "da5f9b2db13d0555846c00da96115036bb75ace66d56fc582d6cd0171e3e23335c5c2b8691e58af8899ed0204316479f849ca6f47309cae571ccb42d3d35c166" );
7602  add_init_len = unhexify( add_init, "d445a3d9332c8577715c1e93f119521bd31a464db08cdbd73d50080d62d5a48fba4cef2dd097ec749973037e33e8d6fa" );
7603  add1_len = unhexify( add1, "79346394f795f05c5a5199423649b8b5345355ef11eb4239db1c767c68afa70a" );
7604  add_reseed_len = unhexify( add_reseed, "c22810de9987b228c19680eb044da22a08032148a6015f358849d6d608a214b9" );
7605  add2_len = unhexify( add2, "7747d68ca8bcb43931f1edce4f8c9727dd56c1d1d2600ad1fb767eb4fbc7b2d6" );
7606 
7607  test_offset = 0;
7608  fct_chk( ctr_drbg_init_entropy_len( &ctx, entropy_func, entropy, add_init, add_init_len, 32 ) == 0 );
7609 
7610  fct_chk( ctr_drbg_random_with_add( &ctx, buf, 16, add1, add1_len ) == 0 );
7611  fct_chk( ctr_drbg_reseed( &ctx, add_reseed, add_reseed_len ) == 0 );
7612  fct_chk( ctr_drbg_random_with_add( &ctx, buf, 16, add2, add2_len ) == 0 );
7613  hexify( output_str, buf, 16 );
7614  fct_chk( strcmp( (char *) output_str, "f5c40babbec97cb60ba65200e82d7a68" ) == 0 );
7615  }
7616  FCT_TEST_END();
7617 
7618 
7619  FCT_TEST_BGN(ctr_drbg_nist_validation_aes_256_use_dffalse256128256256_9)
7620  {
7621  unsigned char entropy[512];
7622  unsigned char add_init[512];
7623  unsigned char add1[512];
7624  unsigned char add_reseed[512];
7625  unsigned char add2[512];
7626  ctr_drbg_context ctx;
7627  unsigned char buf[512];
7628  unsigned char output_str[512];
7629  int add_init_len, add1_len, add_reseed_len, add2_len;
7630 
7631  memset( output_str, 0, 512 );
7632 
7633  unhexify( entropy, "d663d2cfcddf40ff61377c3811266d927a5dfc7b73cf549e673e5a15f4056ad1f9733c8ed875ff77928284dc1cdb33accc47971d3626615a45b9a16d9baf426e" );
7634  add_init_len = unhexify( add_init, "2728be06796e2a77c60a401752cd36e4a051724aa3276a146b4b351017eee79c8257398c612fc1129c0e74ecef455cd3" );
7635  add1_len = unhexify( add1, "62349efbac4a4747d0e92727c67a6bc7f8404cf746002e7d3eeffb9a9be0bbdc" );
7636  add_reseed_len = unhexify( add_reseed, "381c0cffbdfa61a6af3f11ccd0e543208b584c3f520130e33617564ec7a48cf7" );
7637  add2_len = unhexify( add2, "6974043362f834fd793de07ceebd051599163d50489441005afc9db09a9ab44f" );
7638 
7639  test_offset = 0;
7640  fct_chk( ctr_drbg_init_entropy_len( &ctx, entropy_func, entropy, add_init, add_init_len, 32 ) == 0 );
7641 
7642  fct_chk( ctr_drbg_random_with_add( &ctx, buf, 16, add1, add1_len ) == 0 );
7643  fct_chk( ctr_drbg_reseed( &ctx, add_reseed, add_reseed_len ) == 0 );
7644  fct_chk( ctr_drbg_random_with_add( &ctx, buf, 16, add2, add2_len ) == 0 );
7645  hexify( output_str, buf, 16 );
7646  fct_chk( strcmp( (char *) output_str, "df7894746c599e02d985b195ca3b4863" ) == 0 );
7647  }
7648  FCT_TEST_END();
7649 
7650 
7651  FCT_TEST_BGN(ctr_drbg_nist_validation_aes_256_use_dffalse256128256256_10)
7652  {
7653  unsigned char entropy[512];
7654  unsigned char add_init[512];
7655  unsigned char add1[512];
7656  unsigned char add_reseed[512];
7657  unsigned char add2[512];
7658  ctr_drbg_context ctx;
7659  unsigned char buf[512];
7660  unsigned char output_str[512];
7661  int add_init_len, add1_len, add_reseed_len, add2_len;
7662 
7663  memset( output_str, 0, 512 );
7664 
7665  unhexify( entropy, "bf03a6b3e8e23ff53369b971217dc3d3f4c1211329c94847347b3aa77dc7a3e0670381573527844a1ade786f18631944558defffb9a00900ca55f97ec726126b" );
7666  add_init_len = unhexify( add_init, "2b65b56de410ee82e55bd2bf80e6cee356a37c3a3aa7042df45fa750a74e097b071fc18d6eed96523dd4fbb677b8c729" );
7667  add1_len = unhexify( add1, "59255e5cd2221316c945bd614471df76d5b2f394b8829de82e5c30bc178565e2" );
7668  add_reseed_len = unhexify( add_reseed, "5739bc14f0f2ef9d3393928aee67b0908adaf587650928916d8ae78b0077a3b3" );
7669  add2_len = unhexify( add2, "6b236cf0ee0dba0c92b26c60235d3868715a80c0efbc0c898b6f0b1ace8146e9" );
7670 
7671  test_offset = 0;
7672  fct_chk( ctr_drbg_init_entropy_len( &ctx, entropy_func, entropy, add_init, add_init_len, 32 ) == 0 );
7673 
7674  fct_chk( ctr_drbg_random_with_add( &ctx, buf, 16, add1, add1_len ) == 0 );
7675  fct_chk( ctr_drbg_reseed( &ctx, add_reseed, add_reseed_len ) == 0 );
7676  fct_chk( ctr_drbg_random_with_add( &ctx, buf, 16, add2, add2_len ) == 0 );
7677  hexify( output_str, buf, 16 );
7678  fct_chk( strcmp( (char *) output_str, "8374b571d7f2d94ce2bdadeb9d815397" ) == 0 );
7679  }
7680  FCT_TEST_END();
7681 
7682 
7683  FCT_TEST_BGN(ctr_drbg_nist_validation_aes_256_use_dffalse256128256256_11)
7684  {
7685  unsigned char entropy[512];
7686  unsigned char add_init[512];
7687  unsigned char add1[512];
7688  unsigned char add_reseed[512];
7689  unsigned char add2[512];
7690  ctr_drbg_context ctx;
7691  unsigned char buf[512];
7692  unsigned char output_str[512];
7693  int add_init_len, add1_len, add_reseed_len, add2_len;
7694 
7695  memset( output_str, 0, 512 );
7696 
7697  unhexify( entropy, "19705743eaaaa0e8890a0faa2e0df37c820d556c7a45f04d76276f9f9ce2e7c133258ae6d1ba9cdf7745d01745763d18dcd1af2c9e9b0bed2806e60f0f9b636c" );
7698  add_init_len = unhexify( add_init, "8756ee2c5e381c7c1dc530748b76a6274ef6583090e555d85210e2356feb2974a8f15119a04e9b481cd3bc557a197b8e" );
7699  add1_len = unhexify( add1, "2b4a92b682e9a557466af97b735e2ffdbac3bfc31fd5be2cd212cfbd4b8d690a" );
7700  add_reseed_len = unhexify( add_reseed, "e86504f10317bbeab346f3b9e4b310cbe9fbd81a42054f358eacd08cccab6eff" );
7701  add2_len = unhexify( add2, "19ffad856a6675268cc464ca6fdb8afd0912143e552668528d1484c9a54592cf" );
7702 
7703  test_offset = 0;
7704  fct_chk( ctr_drbg_init_entropy_len( &ctx, entropy_func, entropy, add_init, add_init_len, 32 ) == 0 );
7705 
7706  fct_chk( ctr_drbg_random_with_add( &ctx, buf, 16, add1, add1_len ) == 0 );
7707  fct_chk( ctr_drbg_reseed( &ctx, add_reseed, add_reseed_len ) == 0 );
7708  fct_chk( ctr_drbg_random_with_add( &ctx, buf, 16, add2, add2_len ) == 0 );
7709  hexify( output_str, buf, 16 );
7710  fct_chk( strcmp( (char *) output_str, "f347fd58aff2999530e258be77591701" ) == 0 );
7711  }
7712  FCT_TEST_END();
7713 
7714 
7715  FCT_TEST_BGN(ctr_drbg_nist_validation_aes_256_use_dffalse256128256256_12)
7716  {
7717  unsigned char entropy[512];
7718  unsigned char add_init[512];
7719  unsigned char add1[512];
7720  unsigned char add_reseed[512];
7721  unsigned char add2[512];
7722  ctr_drbg_context ctx;
7723  unsigned char buf[512];
7724  unsigned char output_str[512];
7725  int add_init_len, add1_len, add_reseed_len, add2_len;
7726 
7727  memset( output_str, 0, 512 );
7728 
7729  unhexify( entropy, "f9939592ab2b31d92ac72673da013a588ea17bbf02cfd6e79d79f8296601633d04ceb005110f266e6100040ef33194858def8b535314c73caa0e48fc4d2f6e2d" );
7730  add_init_len = unhexify( add_init, "f58be57e5035d5c455b17a41ccf7542ffd77f5c009e0a737118ed6c4188f78fcbdbe946bf82e1fa50fd81691de82dcf3" );
7731  add1_len = unhexify( add1, "bb1cb21a316d4b88093cbfc7917d614dca97090cdc8bb340d864547cb3e1fef6" );
7732  add_reseed_len = unhexify( add_reseed, "7e42d5439d81680c8edf5c571d548699730cfada33b650a4d510172a42b298bb" );
7733  add2_len = unhexify( add2, "e9e3cf180f72ba2c1a45d0a94b822943612143e0b642398796b0428ae1af6cf5" );
7734 
7735  test_offset = 0;
7736  fct_chk( ctr_drbg_init_entropy_len( &ctx, entropy_func, entropy, add_init, add_init_len, 32 ) == 0 );
7737 
7738  fct_chk( ctr_drbg_random_with_add( &ctx, buf, 16, add1, add1_len ) == 0 );
7739  fct_chk( ctr_drbg_reseed( &ctx, add_reseed, add_reseed_len ) == 0 );
7740  fct_chk( ctr_drbg_random_with_add( &ctx, buf, 16, add2, add2_len ) == 0 );
7741  hexify( output_str, buf, 16 );
7742  fct_chk( strcmp( (char *) output_str, "d0c83a4bf3517648b441d411ddcb808c" ) == 0 );
7743  }
7744  FCT_TEST_END();
7745 
7746 
7747  FCT_TEST_BGN(ctr_drbg_nist_validation_aes_256_use_dffalse256128256256_13)
7748  {
7749  unsigned char entropy[512];
7750  unsigned char add_init[512];
7751  unsigned char add1[512];
7752  unsigned char add_reseed[512];
7753  unsigned char add2[512];
7754  ctr_drbg_context ctx;
7755  unsigned char buf[512];
7756  unsigned char output_str[512];
7757  int add_init_len, add1_len, add_reseed_len, add2_len;
7758 
7759  memset( output_str, 0, 512 );
7760 
7761  unhexify( entropy, "b8d6be3036eeb5657fb10766354d4be897bd27973b3530270ccc02a08169a2e437b30a3635eb6ccb310f319257f58d8aa030c8aab616418e0914a46131306a0c" );
7762  add_init_len = unhexify( add_init, "898064243e44ff67151736ce8bb6f1c759cab4aaca9b87543a1ac984ef955cd5db76c1aa56aff83f1f6799f18fe531cc" );
7763  add1_len = unhexify( add1, "37572428df5826e6ae5ce95db4ef63f41e908f685204a7b64edb9f473c41e45c" );
7764  add_reseed_len = unhexify( add_reseed, "28beda0e0e346b447d32208c6b4c42dcd567acfe1e483fb4a95ea82cb8ce55a5" );
7765  add2_len = unhexify( add2, "7a0fffa541d723e16340eeb960b1b9c9aae912477e0ebfac03f8f1a3a8bdc531" );
7766 
7767  test_offset = 0;
7768  fct_chk( ctr_drbg_init_entropy_len( &ctx, entropy_func, entropy, add_init, add_init_len, 32 ) == 0 );
7769 
7770  fct_chk( ctr_drbg_random_with_add( &ctx, buf, 16, add1, add1_len ) == 0 );
7771  fct_chk( ctr_drbg_reseed( &ctx, add_reseed, add_reseed_len ) == 0 );
7772  fct_chk( ctr_drbg_random_with_add( &ctx, buf, 16, add2, add2_len ) == 0 );
7773  hexify( output_str, buf, 16 );
7774  fct_chk( strcmp( (char *) output_str, "611c9f6fc5193dbe3db96cbcd276168a" ) == 0 );
7775  }
7776  FCT_TEST_END();
7777 
7778 
7779  FCT_TEST_BGN(ctr_drbg_nist_validation_aes_256_use_dffalse256128256256_14)
7780  {
7781  unsigned char entropy[512];
7782  unsigned char add_init[512];
7783  unsigned char add1[512];
7784  unsigned char add_reseed[512];
7785  unsigned char add2[512];
7786  ctr_drbg_context ctx;
7787  unsigned char buf[512];
7788  unsigned char output_str[512];
7789  int add_init_len, add1_len, add_reseed_len, add2_len;
7790 
7791  memset( output_str, 0, 512 );
7792 
7793  unhexify( entropy, "5c9954fd0143e62c3bf2d5734052e3c9370f7b9d75c70f58fe33b12e3997ee2c8db84f8467affd7cfd9a9e7ec60da6f31bf9bf32aedf644e4934bd1fc916bc8d" );
7794  add_init_len = unhexify( add_init, "50de72903b9d99764123ffaa0c721e14ad1ab5c46a34c040f25324ba1d937b8ef10467161fcf2978c2a680ac5570c6d2" );
7795  add1_len = unhexify( add1, "d5dc4c9fc7171fcbfdaead558a565ffd55d245a58b22ad1666ee05131e33f49e" );
7796  add_reseed_len = unhexify( add_reseed, "ea3114e92e6a19f53b207a0a54cd363a6d053fed0a827f92556f0a8580f7a342" );
7797  add2_len = unhexify( add2, "53686f069b455af4692888d11fac15cf7b4bd38e198de4e62b7098f875198a75" );
7798 
7799  test_offset = 0;
7800  fct_chk( ctr_drbg_init_entropy_len( &ctx, entropy_func, entropy, add_init, add_init_len, 32 ) == 0 );
7801 
7802  fct_chk( ctr_drbg_random_with_add( &ctx, buf, 16, add1, add1_len ) == 0 );
7803  fct_chk( ctr_drbg_reseed( &ctx, add_reseed, add_reseed_len ) == 0 );
7804  fct_chk( ctr_drbg_random_with_add( &ctx, buf, 16, add2, add2_len ) == 0 );
7805  hexify( output_str, buf, 16 );
7806  fct_chk( strcmp( (char *) output_str, "9fb0df053e0345e5640aa97fedef50a6" ) == 0 );
7807  }
7808  FCT_TEST_END();
7809 
7810  }
7811  FCT_SUITE_END();
7812 
7813 #endif /* POLARSSL_CTR_DRBG_C */
7814 
7815 }
7816 FCT_END();
7817