PolarSSL v1.1.4
test_suite_ctr_drbg.c
Go to the documentation of this file.
00001 #include "fct.h"
00002 
00003 #include <polarssl/ctr_drbg.h>
00004 
00005 int test_offset;
00006 int entropy_func( void *data, unsigned char *buf, size_t len )
00007 {
00008     unsigned char *p = (unsigned char *) data;
00009     memcpy( buf, p + test_offset, len );
00010     test_offset += 32;
00011     return( 0 );
00012 }
00013 
00014 int ctr_drbg_init_entropy_len(
00015         ctr_drbg_context *ctx,
00016         int (*f_entropy)(void *, unsigned char *, size_t),
00017         void *p_entropy,
00018         const unsigned char *custom,
00019         size_t len,
00020         size_t entropy_len );
00021 
00022 #include <polarssl/config.h>
00023 
00024 #ifdef _MSC_VER
00025 #include <basetsd.h>
00026 typedef UINT32 uint32_t;
00027 #else
00028 #include <inttypes.h>
00029 #endif
00030 
00031 /*
00032  * 32-bit integer manipulation macros (big endian)
00033  */
00034 #ifndef GET_ULONG_BE
00035 #define GET_ULONG_BE(n,b,i)                             \
00036 {                                                       \
00037     (n) = ( (unsigned long) (b)[(i)    ] << 24 )        \
00038         | ( (unsigned long) (b)[(i) + 1] << 16 )        \
00039         | ( (unsigned long) (b)[(i) + 2] <<  8 )        \
00040         | ( (unsigned long) (b)[(i) + 3]       );       \
00041 }
00042 #endif
00043 
00044 #ifndef PUT_ULONG_BE
00045 #define PUT_ULONG_BE(n,b,i)                             \
00046 {                                                       \
00047     (b)[(i)    ] = (unsigned char) ( (n) >> 24 );       \
00048     (b)[(i) + 1] = (unsigned char) ( (n) >> 16 );       \
00049     (b)[(i) + 2] = (unsigned char) ( (n) >>  8 );       \
00050     (b)[(i) + 3] = (unsigned char) ( (n)       );       \
00051 }
00052 #endif
00053 
00054 int unhexify(unsigned char *obuf, const char *ibuf)
00055 {
00056     unsigned char c, c2;
00057     int len = strlen(ibuf) / 2;
00058     assert(!(strlen(ibuf) %1)); // must be even number of bytes
00059 
00060     while (*ibuf != 0)
00061     {
00062         c = *ibuf++;
00063         if( c >= '0' && c <= '9' )
00064             c -= '0';
00065         else if( c >= 'a' && c <= 'f' )
00066             c -= 'a' - 10;
00067         else if( c >= 'A' && c <= 'F' )
00068             c -= 'A' - 10;
00069         else
00070             assert( 0 );
00071 
00072         c2 = *ibuf++;
00073         if( c2 >= '0' && c2 <= '9' )
00074             c2 -= '0';
00075         else if( c2 >= 'a' && c2 <= 'f' )
00076             c2 -= 'a' - 10;
00077         else if( c2 >= 'A' && c2 <= 'F' )
00078             c2 -= 'A' - 10;
00079         else
00080             assert( 0 );
00081 
00082         *obuf++ = ( c << 4 ) | c2;
00083     }
00084 
00085     return len;
00086 }
00087 
00088 void hexify(unsigned char *obuf, const unsigned char *ibuf, int len)
00089 {
00090     unsigned char l, h;
00091 
00092     while (len != 0)
00093     {
00094         h = (*ibuf) / 16;
00095         l = (*ibuf) % 16;
00096 
00097         if( h < 10 )
00098             *obuf++ = '0' + h;
00099         else
00100             *obuf++ = 'a' + h - 10;
00101 
00102         if( l < 10 )
00103             *obuf++ = '0' + l;
00104         else
00105             *obuf++ = 'a' + l - 10;
00106 
00107         ++ibuf;
00108         len--;
00109     }
00110 }
00111 
00121 static int rnd_std_rand( void *rng_state, unsigned char *output, size_t len )
00122 {
00123     size_t i;
00124 
00125     if( rng_state != NULL )
00126         rng_state  = NULL;
00127 
00128     for( i = 0; i < len; ++i )
00129         output[i] = rand();
00130 
00131     return( 0 );
00132 }
00133 
00139 static int rnd_zero_rand( void *rng_state, unsigned char *output, size_t len )
00140 {
00141     if( rng_state != NULL )
00142         rng_state  = NULL;
00143 
00144     memset( output, 0, len );
00145 
00146     return( 0 );
00147 }
00148 
00149 typedef struct
00150 {
00151     unsigned char *buf;
00152     size_t length;
00153 } rnd_buf_info;
00154 
00166 static int rnd_buffer_rand( void *rng_state, unsigned char *output, size_t len )
00167 {
00168     rnd_buf_info *info = (rnd_buf_info *) rng_state;
00169     size_t use_len;
00170 
00171     if( rng_state == NULL )
00172         return( rnd_std_rand( NULL, output, len ) );
00173 
00174     use_len = len;
00175     if( len > info->length )
00176         use_len = info->length;
00177 
00178     if( use_len )
00179     {
00180         memcpy( output, info->buf, use_len );
00181         info->buf += use_len;
00182         info->length -= use_len;
00183     }
00184 
00185     if( len - use_len > 0 )
00186         return( rnd_std_rand( NULL, output + use_len, len - use_len ) );
00187 
00188     return( 0 );
00189 }
00190 
00198 typedef struct
00199 {
00200     uint32_t key[16];
00201     uint32_t v0, v1;
00202 } rnd_pseudo_info;
00203 
00212 static int rnd_pseudo_rand( void *rng_state, unsigned char *output, size_t len )
00213 {
00214     rnd_pseudo_info *info = (rnd_pseudo_info *) rng_state;
00215     uint32_t i, *k, sum, delta=0x9E3779B9;
00216     unsigned char result[4];
00217 
00218     if( rng_state == NULL )
00219         return( rnd_std_rand( NULL, output, len ) );
00220 
00221     k = info->key;
00222 
00223     while( len > 0 )
00224     {
00225         size_t use_len = ( len > 4 ) ? 4 : len;
00226         sum = 0;
00227 
00228         for( i = 0; i < 32; i++ )
00229         {
00230             info->v0 += (((info->v1 << 4) ^ (info->v1 >> 5)) + info->v1) ^ (sum + k[sum & 3]);
00231             sum += delta;
00232             info->v1 += (((info->v0 << 4) ^ (info->v0 >> 5)) + info->v0) ^ (sum + k[(sum>>11) & 3]);
00233         }
00234 
00235         PUT_ULONG_BE( info->v0, result, 0 );
00236         memcpy( output, result, use_len );
00237         len -= use_len;
00238     }
00239 
00240     return( 0 );
00241 }
00242 
00243 
00244 FCT_BGN()
00245 {
00246 #ifdef POLARSSL_CTR_DRBG_C
00247 
00248 
00249     FCT_SUITE_BGN(test_suite_ctr_drbg)
00250     {
00251 
00252         FCT_TEST_BGN(ctr_drbg_nist_validation_aes_256_use_dftrue25612800_0)
00253         {
00254             unsigned char entropy[512];
00255             unsigned char add_init[512];
00256             unsigned char add1[512];
00257             unsigned char add2[512];
00258             ctr_drbg_context ctx;
00259             unsigned char buf[512];
00260             unsigned char output_str[512];
00261             int add_init_len, add1_len, add2_len;
00262         
00263             memset( output_str, 0, 512 );
00264         
00265             unhexify( entropy, "c18081a65d44021619b3f180b1c920026a546f0c7081498b6ea662526d51b1cb583bfad5375ffbc9ff46d219c7223e95459d82e1e7229f633169d26b57474fa337c9981c0bfb91314d55b9e91c5a5ee49392cfc52312d5562c4a6effdc10d068" );
00266             add_init_len = unhexify( add_init, "d254fcff021e69d229c9cfad85fa486c" );
00267             add1_len = unhexify( add1, "" );
00268             add2_len = unhexify( add2, "" );
00269         
00270             test_offset = 0;
00271             fct_chk( ctr_drbg_init_entropy_len( &ctx, entropy_func, entropy, add_init, add_init_len, 32 ) == 0 );
00272             ctr_drbg_set_prediction_resistance( &ctx, CTR_DRBG_PR_ON );
00273         
00274             fct_chk( ctr_drbg_random_with_add( &ctx, buf, 16, add1, add1_len ) == 0 );
00275             fct_chk( ctr_drbg_random_with_add( &ctx, buf, 16, add2, add2_len ) == 0 );
00276             hexify( output_str, buf, 16 );
00277             fct_chk( strcmp( (char *) output_str, "34011656b429008f3563ecb5f2590723" ) == 0 );
00278         }
00279         FCT_TEST_END();
00280 
00281 
00282         FCT_TEST_BGN(ctr_drbg_nist_validation_aes_256_use_dftrue25612800_1)
00283         {
00284             unsigned char entropy[512];
00285             unsigned char add_init[512];
00286             unsigned char add1[512];
00287             unsigned char add2[512];
00288             ctr_drbg_context ctx;
00289             unsigned char buf[512];
00290             unsigned char output_str[512];
00291             int add_init_len, add1_len, add2_len;
00292         
00293             memset( output_str, 0, 512 );
00294         
00295             unhexify( entropy, "a7f38c750bd6ff41c4e79f5b7dd3024d58ca3f1f4c096486c4a73c4f74a2410c4c9c5143eb8c09df842ba4427f385bbf65c350b0bf2c87242c7a23c8c2e0e419e44e500c250f6bc0dc25ec0ce929c4ad5ffb7a87950c618f8cee1af4831b4b8e" );
00296             add_init_len = unhexify( add_init, "7be87545266dadd1d73546c0927afc8d" );
00297             add1_len = unhexify( add1, "" );
00298             add2_len = unhexify( add2, "" );
00299         
00300             test_offset = 0;
00301             fct_chk( ctr_drbg_init_entropy_len( &ctx, entropy_func, entropy, add_init, add_init_len, 32 ) == 0 );
00302             ctr_drbg_set_prediction_resistance( &ctx, CTR_DRBG_PR_ON );
00303         
00304             fct_chk( ctr_drbg_random_with_add( &ctx, buf, 16, add1, add1_len ) == 0 );
00305             fct_chk( ctr_drbg_random_with_add( &ctx, buf, 16, add2, add2_len ) == 0 );
00306             hexify( output_str, buf, 16 );
00307             fct_chk( strcmp( (char *) output_str, "d5b1da77f36ce58510b75dfde71dbd5d" ) == 0 );
00308         }
00309         FCT_TEST_END();
00310 
00311 
00312         FCT_TEST_BGN(ctr_drbg_nist_validation_aes_256_use_dftrue25612800_2)
00313         {
00314             unsigned char entropy[512];
00315             unsigned char add_init[512];
00316             unsigned char add1[512];
00317             unsigned char add2[512];
00318             ctr_drbg_context ctx;
00319             unsigned char buf[512];
00320             unsigned char output_str[512];
00321             int add_init_len, add1_len, add2_len;
00322         
00323             memset( output_str, 0, 512 );
00324         
00325             unhexify( entropy, "d20a0e5cdb714f01b48e00bae51909f345af05de13217e5d55fc6c2d705aea550420d9a458594d825b71e16b36130020cf5948fe813462061c1a222d1ff0e1e4b3d21ae8eee31d3260330d668d24ef3c8941b8720e8591b7deec4bd35a3a1f1a" );
00326             add_init_len = unhexify( add_init, "3771416b162f4d9c5f48a05b7aa73938" );
00327             add1_len = unhexify( add1, "" );
00328             add2_len = unhexify( add2, "" );
00329         
00330             test_offset = 0;
00331             fct_chk( ctr_drbg_init_entropy_len( &ctx, entropy_func, entropy, add_init, add_init_len, 32 ) == 0 );
00332             ctr_drbg_set_prediction_resistance( &ctx, CTR_DRBG_PR_ON );
00333         
00334             fct_chk( ctr_drbg_random_with_add( &ctx, buf, 16, add1, add1_len ) == 0 );
00335             fct_chk( ctr_drbg_random_with_add( &ctx, buf, 16, add2, add2_len ) == 0 );
00336             hexify( output_str, buf, 16 );
00337             fct_chk( strcmp( (char *) output_str, "3cbd7d53ac1772c959311419adad836e" ) == 0 );
00338         }
00339         FCT_TEST_END();
00340 
00341 
00342         FCT_TEST_BGN(ctr_drbg_nist_validation_aes_256_use_dftrue25612800_3)
00343         {
00344             unsigned char entropy[512];
00345             unsigned char add_init[512];
00346             unsigned char add1[512];
00347             unsigned char add2[512];
00348             ctr_drbg_context ctx;
00349             unsigned char buf[512];
00350             unsigned char output_str[512];
00351             int add_init_len, add1_len, add2_len;
00352         
00353             memset( output_str, 0, 512 );
00354         
00355             unhexify( entropy, "4df54a483b4510ed76049faae14b962fbb16459d1f6b4f4dbeca85deded6018361223c893f9442719c51eb5695e1304a1c2be8c05d0846b6510a9525a28831a8efcbd82aa50540d7e7864e2b8a42d44380cdc6e02eebb48d0b5a840b7cdd6e04" );
00356             add_init_len = unhexify( add_init, "f2bad8f7dab3f5886faa1cf6e1f52c87" );
00357             add1_len = unhexify( add1, "" );
00358             add2_len = unhexify( add2, "" );
00359         
00360             test_offset = 0;
00361             fct_chk( ctr_drbg_init_entropy_len( &ctx, entropy_func, entropy, add_init, add_init_len, 32 ) == 0 );
00362             ctr_drbg_set_prediction_resistance( &ctx, CTR_DRBG_PR_ON );
00363         
00364             fct_chk( ctr_drbg_random_with_add( &ctx, buf, 16, add1, add1_len ) == 0 );
00365             fct_chk( ctr_drbg_random_with_add( &ctx, buf, 16, add2, add2_len ) == 0 );
00366             hexify( output_str, buf, 16 );
00367             fct_chk( strcmp( (char *) output_str, "0062d822bc549bea292c37846340789b" ) == 0 );
00368         }
00369         FCT_TEST_END();
00370 
00371 
00372         FCT_TEST_BGN(ctr_drbg_nist_validation_aes_256_use_dftrue25612800_4)
00373         {
00374             unsigned char entropy[512];
00375             unsigned char add_init[512];
00376             unsigned char add1[512];
00377             unsigned char add2[512];
00378             ctr_drbg_context ctx;
00379             unsigned char buf[512];
00380             unsigned char output_str[512];
00381             int add_init_len, add1_len, add2_len;
00382         
00383             memset( output_str, 0, 512 );
00384         
00385             unhexify( entropy, "89defd4445061c080e4762afac194b9f79c4bb1ed88c961af41d9d37bd388a1d45c82ca46f404348a2ae5e22ce00aa35ebc7c5051d8800890d44d25284489efcbd1f5e2b16e403f6921f71bbdfcf7b9aeddef65bc92fbd1cb9e4ea389aee5179" );
00386             add_init_len = unhexify( add_init, "1c5760aa0fd4ce308735b28682b67246" );
00387             add1_len = unhexify( add1, "" );
00388             add2_len = unhexify( add2, "" );
00389         
00390             test_offset = 0;
00391             fct_chk( ctr_drbg_init_entropy_len( &ctx, entropy_func, entropy, add_init, add_init_len, 32 ) == 0 );
00392             ctr_drbg_set_prediction_resistance( &ctx, CTR_DRBG_PR_ON );
00393         
00394             fct_chk( ctr_drbg_random_with_add( &ctx, buf, 16, add1, add1_len ) == 0 );
00395             fct_chk( ctr_drbg_random_with_add( &ctx, buf, 16, add2, add2_len ) == 0 );
00396             hexify( output_str, buf, 16 );
00397             fct_chk( strcmp( (char *) output_str, "3baf81155548afca67d57c503d00a5b4" ) == 0 );
00398         }
00399         FCT_TEST_END();
00400 
00401 
00402         FCT_TEST_BGN(ctr_drbg_nist_validation_aes_256_use_dftrue25612800_5)
00403         {
00404             unsigned char entropy[512];
00405             unsigned char add_init[512];
00406             unsigned char add1[512];
00407             unsigned char add2[512];
00408             ctr_drbg_context ctx;
00409             unsigned char buf[512];
00410             unsigned char output_str[512];
00411             int add_init_len, add1_len, add2_len;
00412         
00413             memset( output_str, 0, 512 );
00414         
00415             unhexify( entropy, "2713d74affed98e3433559e17d240288bb1a1790904cd7754cad97007e205a157b8ddca704a3624413f2ec8361ccd85442fb0b7cc60a247f0fd102cef44677321514ea4186d0203ab7387925d0222800ce2078c4588bc50cdfccbc04fbecd593" );
00416             add_init_len = unhexify( add_init, "b72b9451a5e866e226978623d36b3491" );
00417             add1_len = unhexify( add1, "" );
00418             add2_len = unhexify( add2, "" );
00419         
00420             test_offset = 0;
00421             fct_chk( ctr_drbg_init_entropy_len( &ctx, entropy_func, entropy, add_init, add_init_len, 32 ) == 0 );
00422             ctr_drbg_set_prediction_resistance( &ctx, CTR_DRBG_PR_ON );
00423         
00424             fct_chk( ctr_drbg_random_with_add( &ctx, buf, 16, add1, add1_len ) == 0 );
00425             fct_chk( ctr_drbg_random_with_add( &ctx, buf, 16, add2, add2_len ) == 0 );
00426             hexify( output_str, buf, 16 );
00427             fct_chk( strcmp( (char *) output_str, "047a50890c282e26bfede4c0904f5369" ) == 0 );
00428         }
00429         FCT_TEST_END();
00430 
00431 
00432         FCT_TEST_BGN(ctr_drbg_nist_validation_aes_256_use_dftrue25612800_6)
00433         {
00434             unsigned char entropy[512];
00435             unsigned char add_init[512];
00436             unsigned char add1[512];
00437             unsigned char add2[512];
00438             ctr_drbg_context ctx;
00439             unsigned char buf[512];
00440             unsigned char output_str[512];
00441             int add_init_len, add1_len, add2_len;
00442         
00443             memset( output_str, 0, 512 );
00444         
00445             unhexify( entropy, "b160465448894c7d5ee1963bb3e1a2f3f75fcd167ffa332c41c4c91c1830b7c07413bd580302958aa6fa81588ad2b3173698a4afafda468acb368dbbd524207196b9a3be37ac21ba7a072b4c8223492ee18b48551524d5c3449c5c8d3517212e" );
00446             add_init_len = unhexify( add_init, "91b955a3e7eccd7f07290cba4464baff" );
00447             add1_len = unhexify( add1, "" );
00448             add2_len = unhexify( add2, "" );
00449         
00450             test_offset = 0;
00451             fct_chk( ctr_drbg_init_entropy_len( &ctx, entropy_func, entropy, add_init, add_init_len, 32 ) == 0 );
00452             ctr_drbg_set_prediction_resistance( &ctx, CTR_DRBG_PR_ON );
00453         
00454             fct_chk( ctr_drbg_random_with_add( &ctx, buf, 16, add1, add1_len ) == 0 );
00455             fct_chk( ctr_drbg_random_with_add( &ctx, buf, 16, add2, add2_len ) == 0 );
00456             hexify( output_str, buf, 16 );
00457             fct_chk( strcmp( (char *) output_str, "af2c062fedb98ee599ae1f47fc202071" ) == 0 );
00458         }
00459         FCT_TEST_END();
00460 
00461 
00462         FCT_TEST_BGN(ctr_drbg_nist_validation_aes_256_use_dftrue25612800_7)
00463         {
00464             unsigned char entropy[512];
00465             unsigned char add_init[512];
00466             unsigned char add1[512];
00467             unsigned char add2[512];
00468             ctr_drbg_context ctx;
00469             unsigned char buf[512];
00470             unsigned char output_str[512];
00471             int add_init_len, add1_len, add2_len;
00472         
00473             memset( output_str, 0, 512 );
00474         
00475             unhexify( entropy, "38dfbfb52c185acf74de00b5a50f0cd9688286747ab340cfe9ad30d38b390fd2443bfd7ea93941d8262ae0f66b0eab4ff64ba59a2ff940c3c26fda103e0d798dbcaa1318e842143975673af8408b5af48dfbaa56ca4f9ddc87100028b4a95549" );
00476             add_init_len = unhexify( add_init, "d08114670c4f6016a4cf9d2da3e3a674" );
00477             add1_len = unhexify( add1, "" );
00478             add2_len = unhexify( add2, "" );
00479         
00480             test_offset = 0;
00481             fct_chk( ctr_drbg_init_entropy_len( &ctx, entropy_func, entropy, add_init, add_init_len, 32 ) == 0 );
00482             ctr_drbg_set_prediction_resistance( &ctx, CTR_DRBG_PR_ON );
00483         
00484             fct_chk( ctr_drbg_random_with_add( &ctx, buf, 16, add1, add1_len ) == 0 );
00485             fct_chk( ctr_drbg_random_with_add( &ctx, buf, 16, add2, add2_len ) == 0 );
00486             hexify( output_str, buf, 16 );
00487             fct_chk( strcmp( (char *) output_str, "55030fef65c679ecaffb0dc070bfd4d2" ) == 0 );
00488         }
00489         FCT_TEST_END();
00490 
00491 
00492         FCT_TEST_BGN(ctr_drbg_nist_validation_aes_256_use_dftrue25612800_8)
00493         {
00494             unsigned char entropy[512];
00495             unsigned char add_init[512];
00496             unsigned char add1[512];
00497             unsigned char add2[512];
00498             ctr_drbg_context ctx;
00499             unsigned char buf[512];
00500             unsigned char output_str[512];
00501             int add_init_len, add1_len, add2_len;
00502         
00503             memset( output_str, 0, 512 );
00504         
00505             unhexify( entropy, "88fb2a8020e604ea64a620f4704078857062cc97e24604c30de4c70cbf5e5bea0f0db79d16f4db636a2d6cd992c5890389a40cfe93967eac609e5b9f66788944285758547c7136ef2ee3b38724ed340d61763d0d5991ece4924bb72483b96945" );
00506             add_init_len = unhexify( add_init, "e2af9abe8770e33798a5f05b22057d24" );
00507             add1_len = unhexify( add1, "" );
00508             add2_len = unhexify( add2, "" );
00509         
00510             test_offset = 0;
00511             fct_chk( ctr_drbg_init_entropy_len( &ctx, entropy_func, entropy, add_init, add_init_len, 32 ) == 0 );
00512             ctr_drbg_set_prediction_resistance( &ctx, CTR_DRBG_PR_ON );
00513         
00514             fct_chk( ctr_drbg_random_with_add( &ctx, buf, 16, add1, add1_len ) == 0 );
00515             fct_chk( ctr_drbg_random_with_add( &ctx, buf, 16, add2, add2_len ) == 0 );
00516             hexify( output_str, buf, 16 );
00517             fct_chk( strcmp( (char *) output_str, "a44f0cfa383916811fffb2e0cfc9bfc3" ) == 0 );
00518         }
00519         FCT_TEST_END();
00520 
00521 
00522         FCT_TEST_BGN(ctr_drbg_nist_validation_aes_256_use_dftrue25612800_9)
00523         {
00524             unsigned char entropy[512];
00525             unsigned char add_init[512];
00526             unsigned char add1[512];
00527             unsigned char add2[512];
00528             ctr_drbg_context ctx;
00529             unsigned char buf[512];
00530             unsigned char output_str[512];
00531             int add_init_len, add1_len, add2_len;
00532         
00533             memset( output_str, 0, 512 );
00534         
00535             unhexify( entropy, "340def3420b608420d81b4ea8252a3d86d3e1dd7597e6063ed923a73a7b8e981e6079f7f0c42deb9f4ef11d2f3581abadf44b06d882afdc47896777ce8dafd85ec040f7873d0e25c4be709c614a28b708e547266ac8f07f5fdb450d63bc0c999" );
00536             add_init_len = unhexify( add_init, "ae30f1642753c5cb6e118d7ff5d59f1d" );
00537             add1_len = unhexify( add1, "" );
00538             add2_len = unhexify( add2, "" );
00539         
00540             test_offset = 0;
00541             fct_chk( ctr_drbg_init_entropy_len( &ctx, entropy_func, entropy, add_init, add_init_len, 32 ) == 0 );
00542             ctr_drbg_set_prediction_resistance( &ctx, CTR_DRBG_PR_ON );
00543         
00544             fct_chk( ctr_drbg_random_with_add( &ctx, buf, 16, add1, add1_len ) == 0 );
00545             fct_chk( ctr_drbg_random_with_add( &ctx, buf, 16, add2, add2_len ) == 0 );
00546             hexify( output_str, buf, 16 );
00547             fct_chk( strcmp( (char *) output_str, "c7e7670145573581842bd1f3e0c6e90b" ) == 0 );
00548         }
00549         FCT_TEST_END();
00550 
00551 
00552         FCT_TEST_BGN(ctr_drbg_nist_validation_aes_256_use_dftrue25612800_10)
00553         {
00554             unsigned char entropy[512];
00555             unsigned char add_init[512];
00556             unsigned char add1[512];
00557             unsigned char add2[512];
00558             ctr_drbg_context ctx;
00559             unsigned char buf[512];
00560             unsigned char output_str[512];
00561             int add_init_len, add1_len, add2_len;
00562         
00563             memset( output_str, 0, 512 );
00564         
00565             unhexify( entropy, "21d6c822706d1af09e4d233c0ebac7f4ec60c7be2500dd41a85a19b2dc5c7da27f8a82164bd2a644218cb5ac283c547da1064784413eed5ecf32fadd00357abaae81225ac8d0391ead533362cff56798825445d639b0b45e0312aa7047c00b4d" );
00566             add_init_len = unhexify( add_init, "711ecfe467d6f83bcc82e566729669af" );
00567             add1_len = unhexify( add1, "" );
00568             add2_len = unhexify( add2, "" );
00569         
00570             test_offset = 0;
00571             fct_chk( ctr_drbg_init_entropy_len( &ctx, entropy_func, entropy, add_init, add_init_len, 32 ) == 0 );
00572             ctr_drbg_set_prediction_resistance( &ctx, CTR_DRBG_PR_ON );
00573         
00574             fct_chk( ctr_drbg_random_with_add( &ctx, buf, 16, add1, add1_len ) == 0 );
00575             fct_chk( ctr_drbg_random_with_add( &ctx, buf, 16, add2, add2_len ) == 0 );
00576             hexify( output_str, buf, 16 );
00577             fct_chk( strcmp( (char *) output_str, "d3a0d2c457f5e9d1328a9e1d22b6eaf6" ) == 0 );
00578         }
00579         FCT_TEST_END();
00580 
00581 
00582         FCT_TEST_BGN(ctr_drbg_nist_validation_aes_256_use_dftrue25612800_11)
00583         {
00584             unsigned char entropy[512];
00585             unsigned char add_init[512];
00586             unsigned char add1[512];
00587             unsigned char add2[512];
00588             ctr_drbg_context ctx;
00589             unsigned char buf[512];
00590             unsigned char output_str[512];
00591             int add_init_len, add1_len, add2_len;
00592         
00593             memset( output_str, 0, 512 );
00594         
00595             unhexify( entropy, "4ee32f0aeadb3936e17f1aa3b18c10f773def5f83500c2ba96f84408a2521c1258f6be9aa5cee528746629aa2b8118ac41dd98ef1b3de31d26b8c2ad3442081203f5ef21df409df3381fbf2e064fbaec64d731dc93b3218e34bb3b03bfd88373" );
00596             add_init_len = unhexify( add_init, "f9b22152bc0eff1ebf0bfafeea40aecf" );
00597             add1_len = unhexify( add1, "" );
00598             add2_len = unhexify( add2, "" );
00599         
00600             test_offset = 0;
00601             fct_chk( ctr_drbg_init_entropy_len( &ctx, entropy_func, entropy, add_init, add_init_len, 32 ) == 0 );
00602             ctr_drbg_set_prediction_resistance( &ctx, CTR_DRBG_PR_ON );
00603         
00604             fct_chk( ctr_drbg_random_with_add( &ctx, buf, 16, add1, add1_len ) == 0 );
00605             fct_chk( ctr_drbg_random_with_add( &ctx, buf, 16, add2, add2_len ) == 0 );
00606             hexify( output_str, buf, 16 );
00607             fct_chk( strcmp( (char *) output_str, "86009b14c4906a409abe6ca9b0718cbe" ) == 0 );
00608         }
00609         FCT_TEST_END();
00610 
00611 
00612         FCT_TEST_BGN(ctr_drbg_nist_validation_aes_256_use_dftrue25612800_12)
00613         {
00614             unsigned char entropy[512];
00615             unsigned char add_init[512];
00616             unsigned char add1[512];
00617             unsigned char add2[512];
00618             ctr_drbg_context ctx;
00619             unsigned char buf[512];
00620             unsigned char output_str[512];
00621             int add_init_len, add1_len, add2_len;
00622         
00623             memset( output_str, 0, 512 );
00624         
00625             unhexify( entropy, "fa81535670275e8ab74121377cf88a4742dd0d7a99cf06eb9c2b4fe2b03423dbe441201144c22a9fc0ca49f5ef614987a2271cc1089d10ee01b25163c090a1f263797e4f130920cdc3b890a078e8abbb070ded2e8fd717f4389f06ff2c10d180" );
00626             add_init_len = unhexify( add_init, "5174e76e904ff1471367ccace9c66ed9" );
00627             add1_len = unhexify( add1, "" );
00628             add2_len = unhexify( add2, "" );
00629         
00630             test_offset = 0;
00631             fct_chk( ctr_drbg_init_entropy_len( &ctx, entropy_func, entropy, add_init, add_init_len, 32 ) == 0 );
00632             ctr_drbg_set_prediction_resistance( &ctx, CTR_DRBG_PR_ON );
00633         
00634             fct_chk( ctr_drbg_random_with_add( &ctx, buf, 16, add1, add1_len ) == 0 );
00635             fct_chk( ctr_drbg_random_with_add( &ctx, buf, 16, add2, add2_len ) == 0 );
00636             hexify( output_str, buf, 16 );
00637             fct_chk( strcmp( (char *) output_str, "18d6fcd35457d2678175df36df5e215d" ) == 0 );
00638         }
00639         FCT_TEST_END();
00640 
00641 
00642         FCT_TEST_BGN(ctr_drbg_nist_validation_aes_256_use_dftrue25612800_13)
00643         {
00644             unsigned char entropy[512];
00645             unsigned char add_init[512];
00646             unsigned char add1[512];
00647             unsigned char add2[512];
00648             ctr_drbg_context ctx;
00649             unsigned char buf[512];
00650             unsigned char output_str[512];
00651             int add_init_len, add1_len, add2_len;
00652         
00653             memset( output_str, 0, 512 );
00654         
00655             unhexify( entropy, "930c290a797b85d58b52d0d92356436977b2f636f07d5a80c987fb7eea6b750cceb9eb87860547ab4029865a6810fc5c3663c4e369f290994461d2e9c7160a8b5985853bd9088b3e969f988fe6923b3994040eeee09ad353b969d58938237cfe" );
00656             add_init_len = unhexify( add_init, "73c372f60519e8eca371eaa13fb54f88" );
00657             add1_len = unhexify( add1, "" );
00658             add2_len = unhexify( add2, "" );
00659         
00660             test_offset = 0;
00661             fct_chk( ctr_drbg_init_entropy_len( &ctx, entropy_func, entropy, add_init, add_init_len, 32 ) == 0 );
00662             ctr_drbg_set_prediction_resistance( &ctx, CTR_DRBG_PR_ON );
00663         
00664             fct_chk( ctr_drbg_random_with_add( &ctx, buf, 16, add1, add1_len ) == 0 );
00665             fct_chk( ctr_drbg_random_with_add( &ctx, buf, 16, add2, add2_len ) == 0 );
00666             hexify( output_str, buf, 16 );
00667             fct_chk( strcmp( (char *) output_str, "f62c7cfbe74555744790bcc7930e03c3" ) == 0 );
00668         }
00669         FCT_TEST_END();
00670 
00671 
00672         FCT_TEST_BGN(ctr_drbg_nist_validation_aes_256_use_dftrue25612800_14)
00673         {
00674             unsigned char entropy[512];
00675             unsigned char add_init[512];
00676             unsigned char add1[512];
00677             unsigned char add2[512];
00678             ctr_drbg_context ctx;
00679             unsigned char buf[512];
00680             unsigned char output_str[512];
00681             int add_init_len, add1_len, add2_len;
00682         
00683             memset( output_str, 0, 512 );
00684         
00685             unhexify( entropy, "7065d128ddb2fc6ea31f4110b6c0934ed112c51d74a4a0741a0843d8befac22902a01353322674c3d58935144a0f8f171a99dbeab71272ff7518c46cc7ebb573adbf95bff8ec68eeba5e8ec1221655aed8420086bda89c7de34f217dce73ccab" );
00686             add_init_len = unhexify( add_init, "75ba8ddeef24f9f5b00b426a362c4f02" );
00687             add1_len = unhexify( add1, "" );
00688             add2_len = unhexify( add2, "" );
00689         
00690             test_offset = 0;
00691             fct_chk( ctr_drbg_init_entropy_len( &ctx, entropy_func, entropy, add_init, add_init_len, 32 ) == 0 );
00692             ctr_drbg_set_prediction_resistance( &ctx, CTR_DRBG_PR_ON );
00693         
00694             fct_chk( ctr_drbg_random_with_add( &ctx, buf, 16, add1, add1_len ) == 0 );
00695             fct_chk( ctr_drbg_random_with_add( &ctx, buf, 16, add2, add2_len ) == 0 );
00696             hexify( output_str, buf, 16 );
00697             fct_chk( strcmp( (char *) output_str, "700761857ea2763e8739b8f6f6481d1c" ) == 0 );
00698         }
00699         FCT_TEST_END();
00700 
00701 
00702         FCT_TEST_BGN(ctr_drbg_nist_validation_aes_256_use_dftrue2561280256_0)
00703         {
00704             unsigned char entropy[512];
00705             unsigned char add_init[512];
00706             unsigned char add1[512];
00707             unsigned char add2[512];
00708             ctr_drbg_context ctx;
00709             unsigned char buf[512];
00710             unsigned char output_str[512];
00711             int add_init_len, add1_len, add2_len;
00712         
00713             memset( output_str, 0, 512 );
00714         
00715             unhexify( entropy, "82c80d922c47bbec0f664dd623e22a11a3b84d308351e45e30ee286e89547d22c43e17b3ca0fa08f77eef1001ba696932e9ee890e7aac4661c138e5b5ce36773d3120c35f8c94e0a78ffbf407a63ca435392e17c07461522fdc1f63f037aacff" );
00716             add_init_len = unhexify( add_init, "14051b57277bc3d3bbae51bdecfb9f5d" );
00717             add1_len = unhexify( add1, "b70e7c1c4b8e0f1770e05b29a93f9d7a6540f23ab84136b05b161d85e5f19251" );
00718             add2_len = unhexify( add2, "5a737c128bd69f927f8f3ad68f93f6356d5f4ec0e36b6b50ced43dcd5c44dbc2" );
00719         
00720             test_offset = 0;
00721             fct_chk( ctr_drbg_init_entropy_len( &ctx, entropy_func, entropy, add_init, add_init_len, 32 ) == 0 );
00722             ctr_drbg_set_prediction_resistance( &ctx, CTR_DRBG_PR_ON );
00723         
00724             fct_chk( ctr_drbg_random_with_add( &ctx, buf, 16, add1, add1_len ) == 0 );
00725             fct_chk( ctr_drbg_random_with_add( &ctx, buf, 16, add2, add2_len ) == 0 );
00726             hexify( output_str, buf, 16 );
00727             fct_chk( strcmp( (char *) output_str, "a4e6c754194a09614994b36ecce33b55" ) == 0 );
00728         }
00729         FCT_TEST_END();
00730 
00731 
00732         FCT_TEST_BGN(ctr_drbg_nist_validation_aes_256_use_dftrue2561280256_1)
00733         {
00734             unsigned char entropy[512];
00735             unsigned char add_init[512];
00736             unsigned char add1[512];
00737             unsigned char add2[512];
00738             ctr_drbg_context ctx;
00739             unsigned char buf[512];
00740             unsigned char output_str[512];
00741             int add_init_len, add1_len, add2_len;
00742         
00743             memset( output_str, 0, 512 );
00744         
00745             unhexify( entropy, "952f3f179cbbda27ebd30f4fc31bf96baccb2adbaa9c090bc0f37044a44e85b3bc668cd3533faaf56b5da9242844d65733f7ac1f55c38b175749b88e18d19672b7bdab54e0ababdd4519fb07e0c25578f64ad40d0beb0a26275d5e2f4906aa70" );
00746             add_init_len = unhexify( add_init, "4526b268128ea35f8558b4e1d08388f2" );
00747             add1_len = unhexify( add1, "6b167c7cebea2e585ab974b60c4d305a113102ca8c3dc87651665728c4c675ad" );
00748             add2_len = unhexify( add2, "a038f1ca1f420eae449791f13be4901bfb91e41e052e02635b1f1817bd8969b1" );
00749         
00750             test_offset = 0;
00751             fct_chk( ctr_drbg_init_entropy_len( &ctx, entropy_func, entropy, add_init, add_init_len, 32 ) == 0 );
00752             ctr_drbg_set_prediction_resistance( &ctx, CTR_DRBG_PR_ON );
00753         
00754             fct_chk( ctr_drbg_random_with_add( &ctx, buf, 16, add1, add1_len ) == 0 );
00755             fct_chk( ctr_drbg_random_with_add( &ctx, buf, 16, add2, add2_len ) == 0 );
00756             hexify( output_str, buf, 16 );
00757             fct_chk( strcmp( (char *) output_str, "745ec376282e20fd1f9151f7040ed94a" ) == 0 );
00758         }
00759         FCT_TEST_END();
00760 
00761 
00762         FCT_TEST_BGN(ctr_drbg_nist_validation_aes_256_use_dftrue2561280256_2)
00763         {
00764             unsigned char entropy[512];
00765             unsigned char add_init[512];
00766             unsigned char add1[512];
00767             unsigned char add2[512];
00768             ctr_drbg_context ctx;
00769             unsigned char buf[512];
00770             unsigned char output_str[512];
00771             int add_init_len, add1_len, add2_len;
00772         
00773             memset( output_str, 0, 512 );
00774         
00775             unhexify( entropy, "75fd042bfd994de2c92e5aa505945ec93bd7cf366d86a356723fca3c9479ee17fb59c6ca8ba89784d43f06cdad113e5081e02427ee0714439d88dc1a6257fc91d99c1a15e92527847ab10883cc8f471cad8cf0882f5b6d33a846a00dee154012" );
00776             add_init_len = unhexify( add_init, "c1aafa90f394e0ba9a528032dc6780d3" );
00777             add1_len = unhexify( add1, "c704164ce80a400cb2f54d1b2d7efa20f32b699fa881bfc7b56cfd7c4bee1ea6" );
00778             add2_len = unhexify( add2, "f3baff4b6f42c8e75b70c2a72a027b14a99ae49a5a47c7af0f538843c94e1a69" );
00779         
00780             test_offset = 0;
00781             fct_chk( ctr_drbg_init_entropy_len( &ctx, entropy_func, entropy, add_init, add_init_len, 32 ) == 0 );
00782             ctr_drbg_set_prediction_resistance( &ctx, CTR_DRBG_PR_ON );
00783         
00784             fct_chk( ctr_drbg_random_with_add( &ctx, buf, 16, add1, add1_len ) == 0 );
00785             fct_chk( ctr_drbg_random_with_add( &ctx, buf, 16, add2, add2_len ) == 0 );
00786             hexify( output_str, buf, 16 );
00787             fct_chk( strcmp( (char *) output_str, "7af9113cd607cdb4c6534f401fe4e96c" ) == 0 );
00788         }
00789         FCT_TEST_END();
00790 
00791 
00792         FCT_TEST_BGN(ctr_drbg_nist_validation_aes_256_use_dftrue2561280256_3)
00793         {
00794             unsigned char entropy[512];
00795             unsigned char add_init[512];
00796             unsigned char add1[512];
00797             unsigned char add2[512];
00798             ctr_drbg_context ctx;
00799             unsigned char buf[512];
00800             unsigned char output_str[512];
00801             int add_init_len, add1_len, add2_len;
00802         
00803             memset( output_str, 0, 512 );
00804         
00805             unhexify( entropy, "0c3c6dd706076d6484478347559b495d7ee898c39cde06027bc99f7bf69ce1140ca04602265e1308af6dd6446a1cf151749b22a99e8a05d30cc3ccd00e663bc1bc37e08ee62834fcc52a4bc8c1d6442544187484f81dc729417d5bedfcab5a54" );
00806             add_init_len = unhexify( add_init, "e6e726b72e7b264a36ec0cd60d4578b5" );
00807             add1_len = unhexify( add1, "d84b978483c0bd8f8c231d92ea88ac21e6e667215804b15725a7ed32f7fc5dd7" );
00808             add2_len = unhexify( add2, "9a8971f6c559f7f197c73a94a92f957d1919ad305f4167c56fe729d50e5754a5" );
00809         
00810             test_offset = 0;
00811             fct_chk( ctr_drbg_init_entropy_len( &ctx, entropy_func, entropy, add_init, add_init_len, 32 ) == 0 );
00812             ctr_drbg_set_prediction_resistance( &ctx, CTR_DRBG_PR_ON );
00813         
00814             fct_chk( ctr_drbg_random_with_add( &ctx, buf, 16, add1, add1_len ) == 0 );
00815             fct_chk( ctr_drbg_random_with_add( &ctx, buf, 16, add2, add2_len ) == 0 );
00816             hexify( output_str, buf, 16 );
00817             fct_chk( strcmp( (char *) output_str, "e16ee5bceca30f1fbcadb5de2d7cfc42" ) == 0 );
00818         }
00819         FCT_TEST_END();
00820 
00821 
00822         FCT_TEST_BGN(ctr_drbg_nist_validation_aes_256_use_dftrue2561280256_4)
00823         {
00824             unsigned char entropy[512];
00825             unsigned char add_init[512];
00826             unsigned char add1[512];
00827             unsigned char add2[512];
00828             ctr_drbg_context ctx;
00829             unsigned char buf[512];
00830             unsigned char output_str[512];
00831             int add_init_len, add1_len, add2_len;
00832         
00833             memset( output_str, 0, 512 );
00834         
00835             unhexify( entropy, "a08ce39f2f671e1f934821a8db9070f39a734a7a20e70307fccca17db15bb4e8a421600df11d1a6e7806a14826739322c8043649ea707180f1d00dea752c2c36398030519465864c4d38163f5b0dd5be07dbc0ae29693ad4a67ca69f28414634" );
00836             add_init_len = unhexify( add_init, "0272d86db283244eb7ee0ed8c8054b89" );
00837             add1_len = unhexify( add1, "aa97055cf46ba26465dfb3ef1cf93191625c352768b2d8e34459499a27502e50" );
00838             add2_len = unhexify( add2, "dddd0007eb29fdf942220e920ca0637db4b91cbf898efd2696576ff6bfacb9d1" );
00839         
00840             test_offset = 0;
00841             fct_chk( ctr_drbg_init_entropy_len( &ctx, entropy_func, entropy, add_init, add_init_len, 32 ) == 0 );
00842             ctr_drbg_set_prediction_resistance( &ctx, CTR_DRBG_PR_ON );
00843         
00844             fct_chk( ctr_drbg_random_with_add( &ctx, buf, 16, add1, add1_len ) == 0 );
00845             fct_chk( ctr_drbg_random_with_add( &ctx, buf, 16, add2, add2_len ) == 0 );
00846             hexify( output_str, buf, 16 );
00847             fct_chk( strcmp( (char *) output_str, "9db0057e39ca6e0f16e79b4f8a0ed5c7" ) == 0 );
00848         }
00849         FCT_TEST_END();
00850 
00851 
00852         FCT_TEST_BGN(ctr_drbg_nist_validation_aes_256_use_dftrue2561280256_5)
00853         {
00854             unsigned char entropy[512];
00855             unsigned char add_init[512];
00856             unsigned char add1[512];
00857             unsigned char add2[512];
00858             ctr_drbg_context ctx;
00859             unsigned char buf[512];
00860             unsigned char output_str[512];
00861             int add_init_len, add1_len, add2_len;
00862         
00863             memset( output_str, 0, 512 );
00864         
00865             unhexify( entropy, "89af36a1c53f730c1b818b26aa510627b17e6f9da51c8e53930de883b7cc7a3e8c3c463c910646ac3ff08f05bca8e340daf9a322d133ae453fdf7e6860a27ff4495c89875431ba9de3e4f3247cda8c62acc86f7066448f639d8ba8b5249337f8" );
00866             add_init_len = unhexify( add_init, "4ad8f72a0d0e28a758722b20e3017d7e" );
00867             add1_len = unhexify( add1, "9d060b7ed63bdb59263c75ebe6a54bf3a4ac9c9926ca8fb49caa905a2651eead" );
00868             add2_len = unhexify( add2, "016099232dc44bb7cdb492f4955ab1aabc5dc0b5731447cea2eb1d92e41482d1" );
00869         
00870             test_offset = 0;
00871             fct_chk( ctr_drbg_init_entropy_len( &ctx, entropy_func, entropy, add_init, add_init_len, 32 ) == 0 );
00872             ctr_drbg_set_prediction_resistance( &ctx, CTR_DRBG_PR_ON );
00873         
00874             fct_chk( ctr_drbg_random_with_add( &ctx, buf, 16, add1, add1_len ) == 0 );
00875             fct_chk( ctr_drbg_random_with_add( &ctx, buf, 16, add2, add2_len ) == 0 );
00876             hexify( output_str, buf, 16 );
00877             fct_chk( strcmp( (char *) output_str, "4b658e95adae4bf0c418fded4431c27f" ) == 0 );
00878         }
00879         FCT_TEST_END();
00880 
00881 
00882         FCT_TEST_BGN(ctr_drbg_nist_validation_aes_256_use_dftrue2561280256_6)
00883         {
00884             unsigned char entropy[512];
00885             unsigned char add_init[512];
00886             unsigned char add1[512];
00887             unsigned char add2[512];
00888             ctr_drbg_context ctx;
00889             unsigned char buf[512];
00890             unsigned char output_str[512];
00891             int add_init_len, add1_len, add2_len;
00892         
00893             memset( output_str, 0, 512 );
00894         
00895             unhexify( entropy, "dc8c60dd42c85fed86cb32af035bbde5737526eb07991397c853256f2f0cb311bce70e1c5e32fc3510402d7d7e3de36fa5e584234daf391bc53cc651e001ab7fcf760679b3c82057f9d09bfdcab8e158d4daa63b20c0e1102f7a06bf5a2788dd" );
00896             add_init_len = unhexify( add_init, "aa19b944c2e1b9d27933bc87322bdf14" );
00897             add1_len = unhexify( add1, "6b98fec5f7de8098ff9df80f62473c73831edace832a767abf5965ea8bf789ba" );
00898             add2_len = unhexify( add2, "cc998bd5752f9c96ec35d9658cc8b3833dd6ab80c7accd6777c06c2cf7c01e59" );
00899         
00900             test_offset = 0;
00901             fct_chk( ctr_drbg_init_entropy_len( &ctx, entropy_func, entropy, add_init, add_init_len, 32 ) == 0 );
00902             ctr_drbg_set_prediction_resistance( &ctx, CTR_DRBG_PR_ON );
00903         
00904             fct_chk( ctr_drbg_random_with_add( &ctx, buf, 16, add1, add1_len ) == 0 );
00905             fct_chk( ctr_drbg_random_with_add( &ctx, buf, 16, add2, add2_len ) == 0 );
00906             hexify( output_str, buf, 16 );
00907             fct_chk( strcmp( (char *) output_str, "fc58833e0e27f7705e4937dd2aadb238" ) == 0 );
00908         }
00909         FCT_TEST_END();
00910 
00911 
00912         FCT_TEST_BGN(ctr_drbg_nist_validation_aes_256_use_dftrue2561280256_7)
00913         {
00914             unsigned char entropy[512];
00915             unsigned char add_init[512];
00916             unsigned char add1[512];
00917             unsigned char add2[512];
00918             ctr_drbg_context ctx;
00919             unsigned char buf[512];
00920             unsigned char output_str[512];
00921             int add_init_len, add1_len, add2_len;
00922         
00923             memset( output_str, 0, 512 );
00924         
00925             unhexify( entropy, "513fb96b6164ece801e52855aad28cb80131e7872d8432d27a974fb62d8d0100bb7ebcb8f5c066e230377a8847d6798c3d8090469b9719a80ac956ac33186b00eb8ca64c5530421f93932bc7c98ee92651e85dab562483bdb189676802726647" );
00926             add_init_len = unhexify( add_init, "10c8c17a25041e2ef0d3cc80671e4cfe" );
00927             add1_len = unhexify( add1, "240f36a0a598fe2116ffa682824f25acc35132f137f5221bc0ff05b501f5fd97" );
00928             add2_len = unhexify( add2, "22a5eb5aa00309a762ab60a8c2647eebe1083f8905104b5d375ed1661b4c8478" );
00929         
00930             test_offset = 0;
00931             fct_chk( ctr_drbg_init_entropy_len( &ctx, entropy_func, entropy, add_init, add_init_len, 32 ) == 0 );
00932             ctr_drbg_set_prediction_resistance( &ctx, CTR_DRBG_PR_ON );
00933         
00934             fct_chk( ctr_drbg_random_with_add( &ctx, buf, 16, add1, add1_len ) == 0 );
00935             fct_chk( ctr_drbg_random_with_add( &ctx, buf, 16, add2, add2_len ) == 0 );
00936             hexify( output_str, buf, 16 );
00937             fct_chk( strcmp( (char *) output_str, "145a16109ec39b0615a9916d07f0854e" ) == 0 );
00938         }
00939         FCT_TEST_END();
00940 
00941 
00942         FCT_TEST_BGN(ctr_drbg_nist_validation_aes_256_use_dftrue2561280256_8)
00943         {
00944             unsigned char entropy[512];
00945             unsigned char add_init[512];
00946             unsigned char add1[512];
00947             unsigned char add2[512];
00948             ctr_drbg_context ctx;
00949             unsigned char buf[512];
00950             unsigned char output_str[512];
00951             int add_init_len, add1_len, add2_len;
00952         
00953             memset( output_str, 0, 512 );
00954         
00955             unhexify( entropy, "df8bc70e45fe14abb02c1b9a9754c37497fc2f67709edd854196fc4d074b12797ce7cb292f14cb1d6904abf32bf229299db5ccf5a791a3b8cd3e40a64f38f6b57df759a863e09d7676d2f3ff2762cdab221151000dba32a67f38cab93d5b7a55" );
00956             add_init_len = unhexify( add_init, "cea0c3c12be683c0f27693650a6a3d7d" );
00957             add1_len = unhexify( add1, "bf2ac545d94e318066ff88f39791a8385e1a8539e99ac4fa5a6b97a4caead9d4" );
00958             add2_len = unhexify( add2, "846efef8672d256c63aa05a61de86a1bbc6950de8bfb9808d1c1066aef7f7d70" );
00959         
00960             test_offset = 0;
00961             fct_chk( ctr_drbg_init_entropy_len( &ctx, entropy_func, entropy, add_init, add_init_len, 32 ) == 0 );
00962             ctr_drbg_set_prediction_resistance( &ctx, CTR_DRBG_PR_ON );
00963         
00964             fct_chk( ctr_drbg_random_with_add( &ctx, buf, 16, add1, add1_len ) == 0 );
00965             fct_chk( ctr_drbg_random_with_add( &ctx, buf, 16, add2, add2_len ) == 0 );
00966             hexify( output_str, buf, 16 );
00967             fct_chk( strcmp( (char *) output_str, "8d8f0389d41adcac8ca7b61fc02409c3" ) == 0 );
00968         }
00969         FCT_TEST_END();
00970 
00971 
00972         FCT_TEST_BGN(ctr_drbg_nist_validation_aes_256_use_dftrue2561280256_9)
00973         {
00974             unsigned char entropy[512];
00975             unsigned char add_init[512];
00976             unsigned char add1[512];
00977             unsigned char add2[512];
00978             ctr_drbg_context ctx;
00979             unsigned char buf[512];
00980             unsigned char output_str[512];
00981             int add_init_len, add1_len, add2_len;
00982         
00983             memset( output_str, 0, 512 );
00984         
00985             unhexify( entropy, "51930fb7095edef3fc20aca2a24127f03d3c4b983329e013ad8a35016f581dd7b2d11bafbf971c1fdefd95a0024195e6e90a60ec39b1a8dbe0cb0c3aabf9cf56b662efc722b2dffa6c3be651f199cbc3da2315b4d55aeafd1492283889e1c34f" );
00986             add_init_len = unhexify( add_init, "1b782af2545352631983dc89945ffc37" );
00987             add1_len = unhexify( add1, "1b6295986f6fb55dc4c4c19a3dba41066fdc0297d50fb14e9501ba4378d662ed" );
00988             add2_len = unhexify( add2, "6e66ff63fc457014550b85210a18f00beab765f9e12aa16818f29d1449620d28" );
00989         
00990             test_offset = 0;
00991             fct_chk( ctr_drbg_init_entropy_len( &ctx, entropy_func, entropy, add_init, add_init_len, 32 ) == 0 );
00992             ctr_drbg_set_prediction_resistance( &ctx, CTR_DRBG_PR_ON );
00993         
00994             fct_chk( ctr_drbg_random_with_add( &ctx, buf, 16, add1, add1_len ) == 0 );
00995             fct_chk( ctr_drbg_random_with_add( &ctx, buf, 16, add2, add2_len ) == 0 );
00996             hexify( output_str, buf, 16 );
00997             fct_chk( strcmp( (char *) output_str, "78dfcb662736a831efaa592153a9aff9" ) == 0 );
00998         }
00999         FCT_TEST_END();
01000 
01001 
01002         FCT_TEST_BGN(ctr_drbg_nist_validation_aes_256_use_dftrue2561280256_10)
01003         {
01004             unsigned char entropy[512];
01005             unsigned char add_init[512];
01006             unsigned char add1[512];
01007             unsigned char add2[512];
01008             ctr_drbg_context ctx;
01009             unsigned char buf[512];
01010             unsigned char output_str[512];
01011             int add_init_len, add1_len, add2_len;
01012         
01013             memset( output_str, 0, 512 );
01014         
01015             unhexify( entropy, "d37403db6f84a7ba162e1cc351fe2e44d674ae8606280c9dac3e3975f30cbe1c9925e502a9804b91aada5cc97b259b90ccb5b8103394d9a28f0709fc9b5ffe9d73ad3672e02064ea68cebe3face5d823ee605c46c173db591135f564558dab4c" );
01016             add_init_len = unhexify( add_init, "6580f6df5c8de7c4a105c11ed44435c2" );
01017             add1_len = unhexify( add1, "97486a5e6ce6c6cf9d3f9a313d346cbc34b2bd54db80c5f8d74d6f6939f89519" );
01018             add2_len = unhexify( add2, "8377fcb52556f9974f1aa325d6e141d7b81355bd160abbc86e0007571b3c1904" );
01019         
01020             test_offset = 0;
01021             fct_chk( ctr_drbg_init_entropy_len( &ctx, entropy_func, entropy, add_init, add_init_len, 32 ) == 0 );
01022             ctr_drbg_set_prediction_resistance( &ctx, CTR_DRBG_PR_ON );
01023         
01024             fct_chk( ctr_drbg_random_with_add( &ctx, buf, 16, add1, add1_len ) == 0 );
01025             fct_chk( ctr_drbg_random_with_add( &ctx, buf, 16, add2, add2_len ) == 0 );
01026             hexify( output_str, buf, 16 );
01027             fct_chk( strcmp( (char *) output_str, "77031d3474303470dca9336b1692c504" ) == 0 );
01028         }
01029         FCT_TEST_END();
01030 
01031 
01032         FCT_TEST_BGN(ctr_drbg_nist_validation_aes_256_use_dftrue2561280256_11)
01033         {
01034             unsigned char entropy[512];
01035             unsigned char add_init[512];
01036             unsigned char add1[512];
01037             unsigned char add2[512];
01038             ctr_drbg_context ctx;
01039             unsigned char buf[512];
01040             unsigned char output_str[512];
01041             int add_init_len, add1_len, add2_len;
01042         
01043             memset( output_str, 0, 512 );
01044         
01045             unhexify( entropy, "a0de51b8efa44b8245dba31d78f7840b2b7abced4e265b4cd9628eabc6ebbccb0f118dd8cc958b36dc959e22c4a03dafa212eeedec7d25ee6c5961187bee83b1ed3a75c7bdd9d0713b16cc67e68231f4cb274c8f3dfcc7e5d288c426a0d43b8f" );
01046             add_init_len = unhexify( add_init, "f5303f148d6d6faca90aa88b07ab2ba9" );
01047             add1_len = unhexify( add1, "8d1fddc11dbad007e9b14679a5599e5e8a836197f14d010f3329d164c02d46d6" );
01048             add2_len = unhexify( add2, "9ceb6570568455d42a7397f8ca8b8af7a961a33a73770544cca563c04bc919ca" );
01049         
01050             test_offset = 0;
01051             fct_chk( ctr_drbg_init_entropy_len( &ctx, entropy_func, entropy, add_init, add_init_len, 32 ) == 0 );
01052             ctr_drbg_set_prediction_resistance( &ctx, CTR_DRBG_PR_ON );
01053         
01054             fct_chk( ctr_drbg_random_with_add( &ctx, buf, 16, add1, add1_len ) == 0 );
01055             fct_chk( ctr_drbg_random_with_add( &ctx, buf, 16, add2, add2_len ) == 0 );
01056             hexify( output_str, buf, 16 );
01057             fct_chk( strcmp( (char *) output_str, "9882f0bd1f6129a78b51d108e752b2d9" ) == 0 );
01058         }
01059         FCT_TEST_END();
01060 
01061 
01062         FCT_TEST_BGN(ctr_drbg_nist_validation_aes_256_use_dftrue2561280256_12)
01063         {
01064             unsigned char entropy[512];
01065             unsigned char add_init[512];
01066             unsigned char add1[512];
01067             unsigned char add2[512];
01068             ctr_drbg_context ctx;
01069             unsigned char buf[512];
01070             unsigned char output_str[512];
01071             int add_init_len, add1_len, add2_len;
01072         
01073             memset( output_str, 0, 512 );
01074         
01075             unhexify( entropy, "dbdbef9d217e9051025c321b628c1cc823d508ffdd13fc4edbe8677658a57ef5b64395a6b7d62c0e93dc0956ee0217ec48ae054f1d4680023cc1b2af666efa9e1458cf6b0dae72eef2392e93687bd1fb5f366bb2cdd12937ad09724e39db4189" );
01076             add_init_len = unhexify( add_init, "5a799c58985aa2898cc8fe8e5bc4a9f8" );
01077             add1_len = unhexify( add1, "8c179b35739e75719e74f7c3e038bc06eb3e212d6ade85275cfebf12b2dce2a2" );
01078             add2_len = unhexify( add2, "af617f2e228adde3edaf52a7e5979476dbb9cd2956a1737d93a16563bbbb4888" );
01079         
01080             test_offset = 0;
01081             fct_chk( ctr_drbg_init_entropy_len( &ctx, entropy_func, entropy, add_init, add_init_len, 32 ) == 0 );
01082             ctr_drbg_set_prediction_resistance( &ctx, CTR_DRBG_PR_ON );
01083         
01084             fct_chk( ctr_drbg_random_with_add( &ctx, buf, 16, add1, add1_len ) == 0 );
01085             fct_chk( ctr_drbg_random_with_add( &ctx, buf, 16, add2, add2_len ) == 0 );
01086             hexify( output_str, buf, 16 );
01087             fct_chk( strcmp( (char *) output_str, "49a04f3b4ef052747c7f4e77c91603e8" ) == 0 );
01088         }
01089         FCT_TEST_END();
01090 
01091 
01092         FCT_TEST_BGN(ctr_drbg_nist_validation_aes_256_use_dftrue2561280256_13)
01093         {
01094             unsigned char entropy[512];
01095             unsigned char add_init[512];
01096             unsigned char add1[512];
01097             unsigned char add2[512];
01098             ctr_drbg_context ctx;
01099             unsigned char buf[512];
01100             unsigned char output_str[512];
01101             int add_init_len, add1_len, add2_len;
01102         
01103             memset( output_str, 0, 512 );
01104         
01105             unhexify( entropy, "bf22b182d39622e941017285adbdfe446c3d1a72601d0e5a15674f3b1b260170b1b2ab6b588a0267d86776a5d4ce80e132d7135a581af75ea6de65153680e28ce35ce78d0917b4932000d62260149e5a3ae72bc250548390b664f53c697dac45" );
01106             add_init_len = unhexify( add_init, "8f5b51983a8156a529f559ac3afebbf0" );
01107             add1_len = unhexify( add1, "4cbb5b2d6e666d5dd3dd99b951ea435cae5a75d2e1eb41a48c775829b860e98b" );
01108             add2_len = unhexify( add2, "a4b4171c2592516404434932ad0a8ee67bd776a03479b507c406405b3d8962bc" );
01109         
01110             test_offset = 0;
01111             fct_chk( ctr_drbg_init_entropy_len( &ctx, entropy_func, entropy, add_init, add_init_len, 32 ) == 0 );
01112             ctr_drbg_set_prediction_resistance( &ctx, CTR_DRBG_PR_ON );
01113         
01114             fct_chk( ctr_drbg_random_with_add( &ctx, buf, 16, add1, add1_len ) == 0 );
01115             fct_chk( ctr_drbg_random_with_add( &ctx, buf, 16, add2, add2_len ) == 0 );
01116             hexify( output_str, buf, 16 );
01117             fct_chk( strcmp( (char *) output_str, "cab49631733f06e3fb3e0898e5ad22e7" ) == 0 );
01118         }
01119         FCT_TEST_END();
01120 
01121 
01122         FCT_TEST_BGN(ctr_drbg_nist_validation_aes_256_use_dftrue2561280256_14)
01123         {
01124             unsigned char entropy[512];
01125             unsigned char add_init[512];
01126             unsigned char add1[512];
01127             unsigned char add2[512];
01128             ctr_drbg_context ctx;
01129             unsigned char buf[512];
01130             unsigned char output_str[512];
01131             int add_init_len, add1_len, add2_len;
01132         
01133             memset( output_str, 0, 512 );
01134         
01135             unhexify( entropy, "1e50fada1e76a0d243e6f64c36a173ddc1f47a1dab834f5cd492568792958d5be22cce3110c8e8958b47f07b5c63f86b254942361d4d553e47d36103f47cd7f0bbee27d2e238b1d85671afe8284ee1fd2a431a5f69b2df73e95341c3a2e4fe4b" );
01136             add_init_len = unhexify( add_init, "9f305a77cbaec1ab408cfc0eb89c6cbb" );
01137             add1_len = unhexify( add1, "c254f3b40e773eb09053b226820f68cafa3458ad403ad36f715245a854752a93" );
01138             add2_len = unhexify( add2, "699e177b7be3353c45ce7b7a0d573b00087d700a9f2c1cd2e370e05d4ddadc86" );
01139         
01140             test_offset = 0;
01141             fct_chk( ctr_drbg_init_entropy_len( &ctx, entropy_func, entropy, add_init, add_init_len, 32 ) == 0 );
01142             ctr_drbg_set_prediction_resistance( &ctx, CTR_DRBG_PR_ON );
01143         
01144             fct_chk( ctr_drbg_random_with_add( &ctx, buf, 16, add1, add1_len ) == 0 );
01145             fct_chk( ctr_drbg_random_with_add( &ctx, buf, 16, add2, add2_len ) == 0 );
01146             hexify( output_str, buf, 16 );
01147             fct_chk( strcmp( (char *) output_str, "bb6b02b25a496f29245315f58a16febc" ) == 0 );
01148         }
01149         FCT_TEST_END();
01150 
01151 
01152         FCT_TEST_BGN(ctr_drbg_nist_validation_aes_256_use_dftrue2561282560_0)
01153         {
01154             unsigned char entropy[512];
01155             unsigned char add_init[512];
01156             unsigned char add1[512];
01157             unsigned char add2[512];
01158             ctr_drbg_context ctx;
01159             unsigned char buf[512];
01160             unsigned char output_str[512];
01161             int add_init_len, add1_len, add2_len;
01162         
01163             memset( output_str, 0, 512 );
01164         
01165             unhexify( entropy, "545a783ae97d827ed0b81d9752ad0f7e965f511b1f5dae0f872e9ec37cfe63af86c1d15e153887989b605773b16ad5505e65f617cfa8ef46547c4c3f9d0c4fd0b6e1cff5ca0f1929266fe43ba8f45ad664cfe5e90903a9cb722b42ae8989c148" );
01166             add_init_len = unhexify( add_init, "e09f65dcffc0d3a4d84bacc41617a4e46ce5184eca011049ab657566f728e4aa28315ffac166ebe50e1269b01c95b3a2" );
01167             add1_len = unhexify( add1, "" );
01168             add2_len = unhexify( add2, "" );
01169         
01170             test_offset = 0;
01171             fct_chk( ctr_drbg_init_entropy_len( &ctx, entropy_func, entropy, add_init, add_init_len, 32 ) == 0 );
01172             ctr_drbg_set_prediction_resistance( &ctx, CTR_DRBG_PR_ON );
01173         
01174             fct_chk( ctr_drbg_random_with_add( &ctx, buf, 16, add1, add1_len ) == 0 );
01175             fct_chk( ctr_drbg_random_with_add( &ctx, buf, 16, add2, add2_len ) == 0 );
01176             hexify( output_str, buf, 16 );
01177             fct_chk( strcmp( (char *) output_str, "1e77d7cc18775fef9a3d3e00903da01b" ) == 0 );
01178         }
01179         FCT_TEST_END();
01180 
01181 
01182         FCT_TEST_BGN(ctr_drbg_nist_validation_aes_256_use_dftrue2561282560_1)
01183         {
01184             unsigned char entropy[512];
01185             unsigned char add_init[512];
01186             unsigned char add1[512];
01187             unsigned char add2[512];
01188             ctr_drbg_context ctx;
01189             unsigned char buf[512];
01190             unsigned char output_str[512];
01191             int add_init_len, add1_len, add2_len;
01192         
01193             memset( output_str, 0, 512 );
01194         
01195             unhexify( entropy, "dde6c0850fe642602eb222ca7371213c598cef8c3e71e0593ea8edb54e1bed130b9b0aebe0893093b950c52f56eb9b338aa4bd01dae030515726ece1bf751660b4a3602da6400e4b94edebba646b5c3d4e64ceea1c4f14b7a19f0142783247df" );
01196             add_init_len = unhexify( add_init, "056cd44c8847d89da05fbef95e9660d589046b0c02f9b42c17fd8b069f831c73cd896005ec080113589b6f07be6e42ea" );
01197             add1_len = unhexify( add1, "" );
01198             add2_len = unhexify( add2, "" );
01199         
01200             test_offset = 0;
01201             fct_chk( ctr_drbg_init_entropy_len( &ctx, entropy_func, entropy, add_init, add_init_len, 32 ) == 0 );
01202             ctr_drbg_set_prediction_resistance( &ctx, CTR_DRBG_PR_ON );
01203         
01204             fct_chk( ctr_drbg_random_with_add( &ctx, buf, 16, add1, add1_len ) == 0 );
01205             fct_chk( ctr_drbg_random_with_add( &ctx, buf, 16, add2, add2_len ) == 0 );
01206             hexify( output_str, buf, 16 );
01207             fct_chk( strcmp( (char *) output_str, "a790ab939e63555d02ea1e9696051725" ) == 0 );
01208         }
01209         FCT_TEST_END();
01210 
01211 
01212         FCT_TEST_BGN(ctr_drbg_nist_validation_aes_256_use_dftrue2561282560_2)
01213         {
01214             unsigned char entropy[512];
01215             unsigned char add_init[512];
01216             unsigned char add1[512];
01217             unsigned char add2[512];
01218             ctr_drbg_context ctx;
01219             unsigned char buf[512];
01220             unsigned char output_str[512];
01221             int add_init_len, add1_len, add2_len;
01222         
01223             memset( output_str, 0, 512 );
01224         
01225             unhexify( entropy, "6fe09520e26f5abece0fceadc54913c650a9f55725af45a9a5f373d09b9970b8706b9041d0189a204f6a4eb527dfa86584a3bee3265b809c3932ae5e7228194a3cf7592fc9301c833b45a53be32b9caec9f0f91ba86519f12b0b235f68419c1e" );
01226             add_init_len = unhexify( add_init, "73c72c7dfe138ef4b9817d41b9722b3940762b59bda26b3f6bb8b30583e01d088a29726b71d36ffeebdb387010cb1bb6" );
01227             add1_len = unhexify( add1, "" );
01228             add2_len = unhexify( add2, "" );
01229         
01230             test_offset = 0;
01231             fct_chk( ctr_drbg_init_entropy_len( &ctx, entropy_func, entropy, add_init, add_init_len, 32 ) == 0 );
01232             ctr_drbg_set_prediction_resistance( &ctx, CTR_DRBG_PR_ON );
01233         
01234             fct_chk( ctr_drbg_random_with_add( &ctx, buf, 16, add1, add1_len ) == 0 );
01235             fct_chk( ctr_drbg_random_with_add( &ctx, buf, 16, add2, add2_len ) == 0 );
01236             hexify( output_str, buf, 16 );
01237             fct_chk( strcmp( (char *) output_str, "798d997f46ff7cc4206994085340325e" ) == 0 );
01238         }
01239         FCT_TEST_END();
01240 
01241 
01242         FCT_TEST_BGN(ctr_drbg_nist_validation_aes_256_use_dftrue2561282560_3)
01243         {
01244             unsigned char entropy[512];
01245             unsigned char add_init[512];
01246             unsigned char add1[512];
01247             unsigned char add2[512];
01248             ctr_drbg_context ctx;
01249             unsigned char buf[512];
01250             unsigned char output_str[512];
01251             int add_init_len, add1_len, add2_len;
01252         
01253             memset( output_str, 0, 512 );
01254         
01255             unhexify( entropy, "532960c23c8c8b2146576dde52fadc985134914abf42ca1c5f47206937fda41289ae5d9f935dc4ce45f77cad230a4f345599e3bae4071188324483a0b93593c96d8b6ac6c0d8b52f8795c44171f0d8cd0b1e85dc75ce8abe65d5f25460166ba0" );
01256             add_init_len = unhexify( add_init, "cdba7c7033c34852b7bc1a6b33edab36f41d563bd0395d1001c02ffc0c42ec8595ed2b5ddabc923372e3b6bb457833fa" );
01257             add1_len = unhexify( add1, "" );
01258             add2_len = unhexify( add2, "" );
01259         
01260             test_offset = 0;
01261             fct_chk( ctr_drbg_init_entropy_len( &ctx, entropy_func, entropy, add_init, add_init_len, 32 ) == 0 );
01262             ctr_drbg_set_prediction_resistance( &ctx, CTR_DRBG_PR_ON );
01263         
01264             fct_chk( ctr_drbg_random_with_add( &ctx, buf, 16, add1, add1_len ) == 0 );
01265             fct_chk( ctr_drbg_random_with_add( &ctx, buf, 16, add2, add2_len ) == 0 );
01266             hexify( output_str, buf, 16 );
01267             fct_chk( strcmp( (char *) output_str, "9d48160aca60f1a82baaa8a7d804a3d8" ) == 0 );
01268         }
01269         FCT_TEST_END();
01270 
01271 
01272         FCT_TEST_BGN(ctr_drbg_nist_validation_aes_256_use_dftrue2561282560_4)
01273         {
01274             unsigned char entropy[512];
01275             unsigned char add_init[512];
01276             unsigned char add1[512];
01277             unsigned char add2[512];
01278             ctr_drbg_context ctx;
01279             unsigned char buf[512];
01280             unsigned char output_str[512];
01281             int add_init_len, add1_len, add2_len;
01282         
01283             memset( output_str, 0, 512 );
01284         
01285             unhexify( entropy, "9216c9a833f81953792260a688eb7c3dfc85565ae6a6033203741a763db056247808e0ecd5ba1fc4549c3a757eba535adc786e810ddaae9a2714d31f5154f2c3ee81108669f1239f4f4efd6e18aabfa2d88f0ac25f4740108f6cfebffeb2d857" );
01286             add_init_len = unhexify( add_init, "02cef01aca992f60aa12db4b2c441689e4972a6f9deaf3663082afed642c1502b67b42d490af1c52c7e6eaf459882eca" );
01287             add1_len = unhexify( add1, "" );
01288             add2_len = unhexify( add2, "" );
01289         
01290             test_offset = 0;
01291             fct_chk( ctr_drbg_init_entropy_len( &ctx, entropy_func, entropy, add_init, add_init_len, 32 ) == 0 );
01292             ctr_drbg_set_prediction_resistance( &ctx, CTR_DRBG_PR_ON );
01293         
01294             fct_chk( ctr_drbg_random_with_add( &ctx, buf, 16, add1, add1_len ) == 0 );
01295             fct_chk( ctr_drbg_random_with_add( &ctx, buf, 16, add2, add2_len ) == 0 );
01296             hexify( output_str, buf, 16 );
01297             fct_chk( strcmp( (char *) output_str, "d6378bcf43be1ad42da83780c1dab314" ) == 0 );
01298         }
01299         FCT_TEST_END();
01300 
01301 
01302         FCT_TEST_BGN(ctr_drbg_nist_validation_aes_256_use_dftrue2561282560_5)
01303         {
01304             unsigned char entropy[512];
01305             unsigned char add_init[512];
01306             unsigned char add1[512];
01307             unsigned char add2[512];
01308             ctr_drbg_context ctx;
01309             unsigned char buf[512];
01310             unsigned char output_str[512];
01311             int add_init_len, add1_len, add2_len;
01312         
01313             memset( output_str, 0, 512 );
01314         
01315             unhexify( entropy, "80d4741e4e646748bb65e1289f1f9b3c21bffec4d0a666b301f199d76b4a83464583057079b069946b03d6ac81ebf9e6fa8d4081120f18bf58286a0c4de7576f36f3c7c353126f481a065ac28bdf28e13cd0c1e7911db6343c47d613f1750dc6" );
01316             add_init_len = unhexify( add_init, "d7d80084e9d1fbb9315c3bce1510dbf22cf11fa54177d913a3b04b64cb30957395bd6f3d7e3d866d1be41b29db9ed81d" );
01317             add1_len = unhexify( add1, "" );
01318             add2_len = unhexify( add2, "" );
01319         
01320             test_offset = 0;
01321             fct_chk( ctr_drbg_init_entropy_len( &ctx, entropy_func, entropy, add_init, add_init_len, 32 ) == 0 );
01322             ctr_drbg_set_prediction_resistance( &ctx, CTR_DRBG_PR_ON );
01323         
01324             fct_chk( ctr_drbg_random_with_add( &ctx, buf, 16, add1, add1_len ) == 0 );
01325             fct_chk( ctr_drbg_random_with_add( &ctx, buf, 16, add2, add2_len ) == 0 );
01326             hexify( output_str, buf, 16 );
01327             fct_chk( strcmp( (char *) output_str, "9165a92ed92248b2d237d9f46d39bde8" ) == 0 );
01328         }
01329         FCT_TEST_END();
01330 
01331 
01332         FCT_TEST_BGN(ctr_drbg_nist_validation_aes_256_use_dftrue2561282560_6)
01333         {
01334             unsigned char entropy[512];
01335             unsigned char add_init[512];
01336             unsigned char add1[512];
01337             unsigned char add2[512];
01338             ctr_drbg_context ctx;
01339             unsigned char buf[512];
01340             unsigned char output_str[512];
01341             int add_init_len, add1_len, add2_len;
01342         
01343             memset( output_str, 0, 512 );
01344         
01345             unhexify( entropy, "52df6336f93781115c2a77bd8f99cb717871fe14707947a21f6093dd9205bc378acf61329f8831369b4b1af0a9edfb25d74f5863f26859ad9c920767b113c47ed2690053bf9a2f7c7a67a8d680e08865720b9e9f7b6ae697e3c93e66f24b6ddc" );
01346             add_init_len = unhexify( add_init, "df5a68d3bede467fd69716f5f8fbac297594b8573921afb864ba76aaa6dd89e83b89e359a5a0dd1aac9b4acb9573d218" );
01347             add1_len = unhexify( add1, "" );
01348             add2_len = unhexify( add2, "" );
01349         
01350             test_offset = 0;
01351             fct_chk( ctr_drbg_init_entropy_len( &ctx, entropy_func, entropy, add_init, add_init_len, 32 ) == 0 );
01352             ctr_drbg_set_prediction_resistance( &ctx, CTR_DRBG_PR_ON );
01353         
01354             fct_chk( ctr_drbg_random_with_add( &ctx, buf, 16, add1, add1_len ) == 0 );
01355             fct_chk( ctr_drbg_random_with_add( &ctx, buf, 16, add2, add2_len ) == 0 );
01356             hexify( output_str, buf, 16 );
01357             fct_chk( strcmp( (char *) output_str, "c542cf248a163bbceee7b9f1453bd90b" ) == 0 );
01358         }
01359         FCT_TEST_END();
01360 
01361 
01362         FCT_TEST_BGN(ctr_drbg_nist_validation_aes_256_use_dftrue2561282560_7)
01363         {
01364             unsigned char entropy[512];
01365             unsigned char add_init[512];
01366             unsigned char add1[512];
01367             unsigned char add2[512];
01368             ctr_drbg_context ctx;
01369             unsigned char buf[512];
01370             unsigned char output_str[512];
01371             int add_init_len, add1_len, add2_len;
01372         
01373             memset( output_str, 0, 512 );
01374         
01375             unhexify( entropy, "aa560af2132cbd0624a69c7a7e733cd59a4f2d4e61d2b830087bd88f30fa792c7e4d3168fa86a10f7619d5b9dcf4f7bb08b350ba6a6bfc0fdfb7ee7aca07260c9a11abe49963c36efaefa94d2978ed09472bf93cc873d0f24c000762bb1402cd" );
01376             add_init_len = unhexify( add_init, "2945527372ff71edfa5776f55f7e4a247544aa6de974e81b2eba5552843ab6dfa248695f4f3225a43d4bf3672c3a6b2e" );
01377             add1_len = unhexify( add1, "" );
01378             add2_len = unhexify( add2, "" );
01379         
01380             test_offset = 0;
01381             fct_chk( ctr_drbg_init_entropy_len( &ctx, entropy_func, entropy, add_init, add_init_len, 32 ) == 0 );
01382             ctr_drbg_set_prediction_resistance( &ctx, CTR_DRBG_PR_ON );
01383         
01384             fct_chk( ctr_drbg_random_with_add( &ctx, buf, 16, add1, add1_len ) == 0 );
01385             fct_chk( ctr_drbg_random_with_add( &ctx, buf, 16, add2, add2_len ) == 0 );
01386             hexify( output_str, buf, 16 );
01387             fct_chk( strcmp( (char *) output_str, "33af0134eeca279dce5e69c2cda3f3f4" ) == 0 );
01388         }
01389         FCT_TEST_END();
01390 
01391 
01392         FCT_TEST_BGN(ctr_drbg_nist_validation_aes_256_use_dftrue2561282560_8)
01393         {
01394             unsigned char entropy[512];
01395             unsigned char add_init[512];
01396             unsigned char add1[512];
01397             unsigned char add2[512];
01398             ctr_drbg_context ctx;
01399             unsigned char buf[512];
01400             unsigned char output_str[512];
01401             int add_init_len, add1_len, add2_len;
01402         
01403             memset( output_str, 0, 512 );
01404         
01405             unhexify( entropy, "2d42b00248d95d9378a2aece40d636bc1ab22edaaa64daa34335195a9efa4c1b58f13ac184ca2be52e15c3a977abde2aa505243fc106c4ea6f0671fe0f209b106ea8965645af73d8ebb8a80251db2967149c701cfe1d157cc189b03bf1bff1ac" );
01406             add_init_len = unhexify( add_init, "b30cb767125674f6099a5cf7cb2e4f5b6c1cd1e32ffc1e393b1c5698b52b37f971f12521a7c1ffaaf3233d5391bc4c86" );
01407             add1_len = unhexify( add1, "" );
01408             add2_len = unhexify( add2, "" );
01409         
01410             test_offset = 0;
01411             fct_chk( ctr_drbg_init_entropy_len( &ctx, entropy_func, entropy, add_init, add_init_len, 32 ) == 0 );
01412             ctr_drbg_set_prediction_resistance( &ctx, CTR_DRBG_PR_ON );
01413         
01414             fct_chk( ctr_drbg_random_with_add( &ctx, buf, 16, add1, add1_len ) == 0 );
01415             fct_chk( ctr_drbg_random_with_add( &ctx, buf, 16, add2, add2_len ) == 0 );
01416             hexify( output_str, buf, 16 );
01417             fct_chk( strcmp( (char *) output_str, "1e10eff9ceebc7e5f66e5213cb07fca4" ) == 0 );
01418         }
01419         FCT_TEST_END();
01420 
01421 
01422         FCT_TEST_BGN(ctr_drbg_nist_validation_aes_256_use_dftrue2561282560_9)
01423         {
01424             unsigned char entropy[512];
01425             unsigned char add_init[512];
01426             unsigned char add1[512];
01427             unsigned char add2[512];
01428             ctr_drbg_context ctx;
01429             unsigned char buf[512];
01430             unsigned char output_str[512];
01431             int add_init_len, add1_len, add2_len;
01432         
01433             memset( output_str, 0, 512 );
01434         
01435             unhexify( entropy, "a1ff68a85e437475b1b518821dbaac1730071a4ddd3255361778194fb0cfe3293e38df81527d8b8da15d03acb26467b6b53d7952441b79f95b633f4a979d998fd0417b9193023288b657d30c0cb2dada264addf9d13f1f8ed10b74e2dd2b56b3" );
01436             add_init_len = unhexify( add_init, "c962a2da4524f08adcdd5ceddc04e669ad6154aee06164645e80c832506b98f9919451c7ec1d3a6a9704f83def8f6e2d" );
01437             add1_len = unhexify( add1, "" );
01438             add2_len = unhexify( add2, "" );
01439         
01440             test_offset = 0;
01441             fct_chk( ctr_drbg_init_entropy_len( &ctx, entropy_func, entropy, add_init, add_init_len, 32 ) == 0 );
01442             ctr_drbg_set_prediction_resistance( &ctx, CTR_DRBG_PR_ON );
01443         
01444             fct_chk( ctr_drbg_random_with_add( &ctx, buf, 16, add1, add1_len ) == 0 );
01445             fct_chk( ctr_drbg_random_with_add( &ctx, buf, 16, add2, add2_len ) == 0 );
01446             hexify( output_str, buf, 16 );
01447             fct_chk( strcmp( (char *) output_str, "58990069b72b7557c234d5caf4334853" ) == 0 );
01448         }
01449         FCT_TEST_END();
01450 
01451 
01452         FCT_TEST_BGN(ctr_drbg_nist_validation_aes_256_use_dftrue2561282560_10)
01453         {
01454             unsigned char entropy[512];
01455             unsigned char add_init[512];
01456             unsigned char add1[512];
01457             unsigned char add2[512];
01458             ctr_drbg_context ctx;
01459             unsigned char buf[512];
01460             unsigned char output_str[512];
01461             int add_init_len, add1_len, add2_len;
01462         
01463             memset( output_str, 0, 512 );
01464         
01465             unhexify( entropy, "207267911c12125cb3012230e4fafd257777ccbfb91653f77e4c1287574f9b79d81af7fb304790349dd457983cc99b48d5f4677ccd979fcc6e545cbf5b5c8b98102c9a89ae354349dbdee31a362d47c7cdae128034c0f4c3e71e298fe1af33c6" );
01466             add_init_len = unhexify( add_init, "a3cc1fe561d03a055e8eedaa0e713be490c4bd4c6839a5b98c2ac0139bf215bdc46783d2a3e6b9d15d9b7a8bfe15104b" );
01467             add1_len = unhexify( add1, "" );
01468             add2_len = unhexify( add2, "" );
01469         
01470             test_offset = 0;
01471             fct_chk( ctr_drbg_init_entropy_len( &ctx, entropy_func, entropy, add_init, add_init_len, 32 ) == 0 );
01472             ctr_drbg_set_prediction_resistance( &ctx, CTR_DRBG_PR_ON );
01473         
01474             fct_chk( ctr_drbg_random_with_add( &ctx, buf, 16, add1, add1_len ) == 0 );
01475             fct_chk( ctr_drbg_random_with_add( &ctx, buf, 16, add2, add2_len ) == 0 );
01476             hexify( output_str, buf, 16 );
01477             fct_chk( strcmp( (char *) output_str, "ffd1d259acd79111a6fb508181272831" ) == 0 );
01478         }
01479         FCT_TEST_END();
01480 
01481 
01482         FCT_TEST_BGN(ctr_drbg_nist_validation_aes_256_use_dftrue2561282560_11)
01483         {
01484             unsigned char entropy[512];
01485             unsigned char add_init[512];
01486             unsigned char add1[512];
01487             unsigned char add2[512];
01488             ctr_drbg_context ctx;
01489             unsigned char buf[512];
01490             unsigned char output_str[512];
01491             int add_init_len, add1_len, add2_len;
01492         
01493             memset( output_str, 0, 512 );
01494         
01495             unhexify( entropy, "3b9aec9f8bf8495004c5e4e731e5c347988e787caf003f001e68584e3510a6abdedffa15895702c2d57c304300f4f0af80a89bcc36b3cea2f08a0740236b80cfd2ea6e5cfe4144bc4ae09270fb6bc58c313dbaaedc16d643fc0565171f963222" );
01496             add_init_len = unhexify( add_init, "ecf186071b81e0ed384d4ebfb5bf261b4054e2e6072b51d21dfb6817adc51ff1c8956ff3612767538cdc8d73fade78b3" );
01497             add1_len = unhexify( add1, "" );
01498             add2_len = unhexify( add2, "" );
01499         
01500             test_offset = 0;
01501             fct_chk( ctr_drbg_init_entropy_len( &ctx, entropy_func, entropy, add_init, add_init_len, 32 ) == 0 );
01502             ctr_drbg_set_prediction_resistance( &ctx, CTR_DRBG_PR_ON );
01503         
01504             fct_chk( ctr_drbg_random_with_add( &ctx, buf, 16, add1, add1_len ) == 0 );
01505             fct_chk( ctr_drbg_random_with_add( &ctx, buf, 16, add2, add2_len ) == 0 );
01506             hexify( output_str, buf, 16 );
01507             fct_chk( strcmp( (char *) output_str, "a2d917f5ec39a090b55d51713006e49d" ) == 0 );
01508         }
01509         FCT_TEST_END();
01510 
01511 
01512         FCT_TEST_BGN(ctr_drbg_nist_validation_aes_256_use_dftrue2561282560_12)
01513         {
01514             unsigned char entropy[512];
01515             unsigned char add_init[512];
01516             unsigned char add1[512];
01517             unsigned char add2[512];
01518             ctr_drbg_context ctx;
01519             unsigned char buf[512];
01520             unsigned char output_str[512];
01521             int add_init_len, add1_len, add2_len;
01522         
01523             memset( output_str, 0, 512 );
01524         
01525             unhexify( entropy, "6b1e9d45c2ec598de7527b6414a339f26192fc4e3f5eff4b3a3e2a80ee0f2e9743031804d1be12b3c7ff6fbc222db1d97226890addeef0e1579a860e2279292c2f769416b7068f582f6ffc192ae4c4f1eeb41d5f77f0a612b059c47aef8e3d8e" );
01526             add_init_len = unhexify( add_init, "3fcedba86089709aa638d00713150df781d4a93e85f155338e90ff537bcbf017f37a2d62259f5d8cc40ddfb041592539" );
01527             add1_len = unhexify( add1, "" );
01528             add2_len = unhexify( add2, "" );
01529         
01530             test_offset = 0;
01531             fct_chk( ctr_drbg_init_entropy_len( &ctx, entropy_func, entropy, add_init, add_init_len, 32 ) == 0 );
01532             ctr_drbg_set_prediction_resistance( &ctx, CTR_DRBG_PR_ON );
01533         
01534             fct_chk( ctr_drbg_random_with_add( &ctx, buf, 16, add1, add1_len ) == 0 );
01535             fct_chk( ctr_drbg_random_with_add( &ctx, buf, 16, add2, add2_len ) == 0 );
01536             hexify( output_str, buf, 16 );
01537             fct_chk( strcmp( (char *) output_str, "aa414799c51957de97c0070fb00eb919" ) == 0 );
01538         }
01539         FCT_TEST_END();
01540 
01541 
01542         FCT_TEST_BGN(ctr_drbg_nist_validation_aes_256_use_dftrue2561282560_13)
01543         {
01544             unsigned char entropy[512];
01545             unsigned char add_init[512];
01546             unsigned char add1[512];
01547             unsigned char add2[512];
01548             ctr_drbg_context ctx;
01549             unsigned char buf[512];
01550             unsigned char output_str[512];
01551             int add_init_len, add1_len, add2_len;
01552         
01553             memset( output_str, 0, 512 );
01554         
01555             unhexify( entropy, "6d170cf472ea07da6146a7087ed15d3f5b6ad72b8c99e46bae3b89e49a6e63467199ee16096516c2362dbd181bf5343a29fd0932d72eeb019fc3bfea3a3b01ffc2b985e341cfb6479d9dc71e2197b5cffc402587182e5fe93b5a8cf75eac2e42" );
01556             add_init_len = unhexify( add_init, "f4c45fb8f58b7ebf73a0cd81c6a26686977558d4b8bf1cedfc6bd3754de6aaed5008fd72208437c54d8feb9a16ce3224" );
01557             add1_len = unhexify( add1, "" );
01558             add2_len = unhexify( add2, "" );
01559         
01560             test_offset = 0;
01561             fct_chk( ctr_drbg_init_entropy_len( &ctx, entropy_func, entropy, add_init, add_init_len, 32 ) == 0 );
01562             ctr_drbg_set_prediction_resistance( &ctx, CTR_DRBG_PR_ON );
01563         
01564             fct_chk( ctr_drbg_random_with_add( &ctx, buf, 16, add1, add1_len ) == 0 );
01565             fct_chk( ctr_drbg_random_with_add( &ctx, buf, 16, add2, add2_len ) == 0 );
01566             hexify( output_str, buf, 16 );
01567             fct_chk( strcmp( (char *) output_str, "f557f627688fe63c119cf0f25274aa74" ) == 0 );
01568         }
01569         FCT_TEST_END();
01570 
01571 
01572         FCT_TEST_BGN(ctr_drbg_nist_validation_aes_256_use_dftrue2561282560_14)
01573         {
01574             unsigned char entropy[512];
01575             unsigned char add_init[512];
01576             unsigned char add1[512];
01577             unsigned char add2[512];
01578             ctr_drbg_context ctx;
01579             unsigned char buf[512];
01580             unsigned char output_str[512];
01581             int add_init_len, add1_len, add2_len;
01582         
01583             memset( output_str, 0, 512 );
01584         
01585             unhexify( entropy, "c08a6f9797ea668cd14ba6338cb5d23c0921e637e66a96259f78e33e45aafd035edb44394cb459453b9b48beac1e32d3b6f281473cda42fb6fd6c6b9858e7a4143d81bfc2faf4ef4b632c473be50a87b982815be589a91ca750dc875a0808b89" );
01586             add_init_len = unhexify( add_init, "7120742a7807b66c5a9b50995d5494a5b9451bb795393c0d8a30ae665879269408f8297d49ab87410a7f16a65a54b1cb" );
01587             add1_len = unhexify( add1, "" );
01588             add2_len = unhexify( add2, "" );
01589         
01590             test_offset = 0;
01591             fct_chk( ctr_drbg_init_entropy_len( &ctx, entropy_func, entropy, add_init, add_init_len, 32 ) == 0 );
01592             ctr_drbg_set_prediction_resistance( &ctx, CTR_DRBG_PR_ON );
01593         
01594             fct_chk( ctr_drbg_random_with_add( &ctx, buf, 16, add1, add1_len ) == 0 );
01595             fct_chk( ctr_drbg_random_with_add( &ctx, buf, 16, add2, add2_len ) == 0 );
01596             hexify( output_str, buf, 16 );
01597             fct_chk( strcmp( (char *) output_str, "521973eac38e81de4e41ccc35db6193d" ) == 0 );
01598         }
01599         FCT_TEST_END();
01600 
01601 
01602         FCT_TEST_BGN(ctr_drbg_nist_validation_aes_256_use_dftrue256128256256_0)
01603         {
01604             unsigned char entropy[512];
01605             unsigned char add_init[512];
01606             unsigned char add1[512];
01607             unsigned char add2[512];
01608             ctr_drbg_context ctx;
01609             unsigned char buf[512];
01610             unsigned char output_str[512];
01611             int add_init_len, add1_len, add2_len;
01612         
01613             memset( output_str, 0, 512 );
01614         
01615             unhexify( entropy, "6168fc1af0b5956b85099b743f1378493b85ec93133ba94f96ab2ce4c88fdd6a0b23afdff162d7d34397f87704a84220bdf60fc1172f9f54bb561786680ebaa9bf6c592a0d440fae9a5e0373d8a6e1cf25613824869e53e8a4df56f406079c0f" );
01616             add_init_len = unhexify( add_init, "add2bbbab76589c3216c55332b36ffa46ecae72072d3845a32d34b2472c4632b9d12240c23268e8316370bd1064f686d" );
01617             add1_len = unhexify( add1, "7e084abbe3217cc923d2f8b07398ba847423ab068ae222d37bce9bd24a76b8de" );
01618             add2_len = unhexify( add2, "946bc99fab8dc5ec71881d008c8968e4c8077736176d7978c7064e99042829c3" );
01619         
01620             test_offset = 0;
01621             fct_chk( ctr_drbg_init_entropy_len( &ctx, entropy_func, entropy, add_init, add_init_len, 32 ) == 0 );
01622             ctr_drbg_set_prediction_resistance( &ctx, CTR_DRBG_PR_ON );
01623         
01624             fct_chk( ctr_drbg_random_with_add( &ctx, buf, 16, add1, add1_len ) == 0 );
01625             fct_chk( ctr_drbg_random_with_add( &ctx, buf, 16, add2, add2_len ) == 0 );
01626             hexify( output_str, buf, 16 );
01627             fct_chk( strcmp( (char *) output_str, "224ab4b8b6ee7db19ec9f9a0d9e29700" ) == 0 );
01628         }
01629         FCT_TEST_END();
01630 
01631 
01632         FCT_TEST_BGN(ctr_drbg_nist_validation_aes_256_use_dftrue256128256256_1)
01633         {
01634             unsigned char entropy[512];
01635             unsigned char add_init[512];
01636             unsigned char add1[512];
01637             unsigned char add2[512];
01638             ctr_drbg_context ctx;
01639             unsigned char buf[512];
01640             unsigned char output_str[512];
01641             int add_init_len, add1_len, add2_len;
01642         
01643             memset( output_str, 0, 512 );
01644         
01645             unhexify( entropy, "4db8e8a27fe7a0378e37d4cc01b6a465d34be91f48c52fdc1023ef2ea1241082f522805bc8777fda6c10e3d441b58f648edcd7d4df3df8c8a398d7b005c4fd6f41c9b033bd38fc5f577069251529b58273f6a9175feb3978798fdeb78a043232" );
01646             add_init_len = unhexify( add_init, "8964ebde61f0c4e23f8e91244ae9682ed0b17e424edd4c025b461a2d209a538583f29465df3f89cf04f703b771ff5c90" );
01647             add1_len = unhexify( add1, "5eb3fb44784f181852d80fcf7c2e3b8414ae797f7b9b013b59cf86b9d3a19006" );
01648             add2_len = unhexify( add2, "3eec358f7f9e789e4ad5a78dd73987addbf3ae5b06d826cec2d54425289dc9af" );
01649         
01650             test_offset = 0;
01651             fct_chk( ctr_drbg_init_entropy_len( &ctx, entropy_func, entropy, add_init, add_init_len, 32 ) == 0 );
01652             ctr_drbg_set_prediction_resistance( &ctx, CTR_DRBG_PR_ON );
01653         
01654             fct_chk( ctr_drbg_random_with_add( &ctx, buf, 16, add1, add1_len ) == 0 );
01655             fct_chk( ctr_drbg_random_with_add( &ctx, buf, 16, add2, add2_len ) == 0 );
01656             hexify( output_str, buf, 16 );
01657             fct_chk( strcmp( (char *) output_str, "9a66c015d2550e3f78c44b901075fabb" ) == 0 );
01658         }
01659         FCT_TEST_END();
01660 
01661 
01662         FCT_TEST_BGN(ctr_drbg_nist_validation_aes_256_use_dftrue256128256256_2)
01663         {
01664             unsigned char entropy[512];
01665             unsigned char add_init[512];
01666             unsigned char add1[512];
01667             unsigned char add2[512];
01668             ctr_drbg_context ctx;
01669             unsigned char buf[512];
01670             unsigned char output_str[512];
01671             int add_init_len, add1_len, add2_len;
01672         
01673             memset( output_str, 0, 512 );
01674         
01675             unhexify( entropy, "7338521e8e127e70da259b37f5f5cdf83079bdb4024234b8ceecfba8d8c3f1c8510ff91f3bd08f2c54f11b534048a320a15ba0fccec8da34d4ef7f49ade4847814c859831907992d0adab27046324d4d9a853eb986b8de25b34ea74eb3d11048" );
01676             add_init_len = unhexify( add_init, "98784aa794df5400890e6803f06d886aeb0833b1fea28a5f7952397aa21092ceafdb9194079f3609bc68233147c778e7" );
01677             add1_len = unhexify( add1, "b14c5314aac11cb43f45730e474b84fbf5d1480d94d0699b80e3570f6636aa72" );
01678             add2_len = unhexify( add2, "d6208912348236feee1d258092283dd9db75899769dd109cc2f0f26d88dcc6bf" );
01679         
01680             test_offset = 0;
01681             fct_chk( ctr_drbg_init_entropy_len( &ctx, entropy_func, entropy, add_init, add_init_len, 32 ) == 0 );
01682             ctr_drbg_set_prediction_resistance( &ctx, CTR_DRBG_PR_ON );
01683         
01684             fct_chk( ctr_drbg_random_with_add( &ctx, buf, 16, add1, add1_len ) == 0 );
01685             fct_chk( ctr_drbg_random_with_add( &ctx, buf, 16, add2, add2_len ) == 0 );
01686             hexify( output_str, buf, 16 );
01687             fct_chk( strcmp( (char *) output_str, "5ec75fdd1ed3a742328e11344784b681" ) == 0 );
01688         }
01689         FCT_TEST_END();
01690 
01691 
01692         FCT_TEST_BGN(ctr_drbg_nist_validation_aes_256_use_dftrue256128256256_3)
01693         {
01694             unsigned char entropy[512];
01695             unsigned char add_init[512];
01696             unsigned char add1[512];
01697             unsigned char add2[512];
01698             ctr_drbg_context ctx;
01699             unsigned char buf[512];
01700             unsigned char output_str[512];
01701             int add_init_len, add1_len, add2_len;
01702         
01703             memset( output_str, 0, 512 );
01704         
01705             unhexify( entropy, "c4da56f4239fde0bc49b1d852cb36c80205f9e99e5995a80be04bbbba15f25b8d054c397a34cff1326a71f0acc4f7942795cabc3fa46339dc54b4bf7f11c095af8503004d97c485acec8815d1404674592c896ecfabefcbf222f4fe5a3ced0af" );
01706             add_init_len = unhexify( add_init, "fe9b7df306c4ccd02afd6142c6650418325617945147de436a55e78aa45866116d6678e013a0e2c5a13e0d01fbd84039" );
01707             add1_len = unhexify( add1, "086d09a6ee20c69bf5c054ebc6250f06097c8da1a932fb3d4b1fb5f40af6268a" );
01708             add2_len = unhexify( add2, "44e64b14c49ebb75c536329bb41ab198848849ca121c960db99f7b26330b1f6d" );
01709         
01710             test_offset = 0;
01711             fct_chk( ctr_drbg_init_entropy_len( &ctx, entropy_func, entropy, add_init, add_init_len, 32 ) == 0 );
01712             ctr_drbg_set_prediction_resistance( &ctx, CTR_DRBG_PR_ON );
01713         
01714             fct_chk( ctr_drbg_random_with_add( &ctx, buf, 16, add1, add1_len ) == 0 );
01715             fct_chk( ctr_drbg_random_with_add( &ctx, buf, 16, add2, add2_len ) == 0 );
01716             hexify( output_str, buf, 16 );
01717             fct_chk( strcmp( (char *) output_str, "7aa3a7e159d194399fc8ef9eb531a704" ) == 0 );
01718         }
01719         FCT_TEST_END();
01720 
01721 
01722         FCT_TEST_BGN(ctr_drbg_nist_validation_aes_256_use_dftrue256128256256_4)
01723         {
01724             unsigned char entropy[512];
01725             unsigned char add_init[512];
01726             unsigned char add1[512];
01727             unsigned char add2[512];
01728             ctr_drbg_context ctx;
01729             unsigned char buf[512];
01730             unsigned char output_str[512];
01731             int add_init_len, add1_len, add2_len;
01732         
01733             memset( output_str, 0, 512 );
01734         
01735             unhexify( entropy, "a6b5dd5f1bad95331caae5852be50a26267af655c98feb8b66c45a8ae2ddfca270ab0d8023e43e6e22a7b5904d63482f045e85556b9c105cde0f3eb7b1fff1026086c80b195196803b5f664362b659578894d6551fb7c4566eec02202fdc298f" );
01736             add_init_len = unhexify( add_init, "c0d47ee2328185df2c299d270e11fee26df753a5b4f899fdc0dff79eb50748232f9f79cf3f5e9bd4a26a48e743843b02" );
01737             add1_len = unhexify( add1, "3b575d028046e7f6005dfcdfcdcf03ff77a9cacd2516bcdff7f3601a9a951317" );
01738             add2_len = unhexify( add2, "f13b58daed46f5bf3c62b518ab5c508dd2bc3e33d132939049421ff29c31c4f0" );
01739         
01740             test_offset = 0;
01741             fct_chk( ctr_drbg_init_entropy_len( &ctx, entropy_func, entropy, add_init, add_init_len, 32 ) == 0 );
01742             ctr_drbg_set_prediction_resistance( &ctx, CTR_DRBG_PR_ON );
01743         
01744             fct_chk( ctr_drbg_random_with_add( &ctx, buf, 16, add1, add1_len ) == 0 );
01745             fct_chk( ctr_drbg_random_with_add( &ctx, buf, 16, add2, add2_len ) == 0 );
01746             hexify( output_str, buf, 16 );
01747             fct_chk( strcmp( (char *) output_str, "8469dfa89453d1481abedd6cc62e4e44" ) == 0 );
01748         }
01749         FCT_TEST_END();
01750 
01751 
01752         FCT_TEST_BGN(ctr_drbg_nist_validation_aes_256_use_dftrue256128256256_5)
01753         {
01754             unsigned char entropy[512];
01755             unsigned char add_init[512];
01756             unsigned char add1[512];
01757             unsigned char add2[512];
01758             ctr_drbg_context ctx;
01759             unsigned char buf[512];
01760             unsigned char output_str[512];
01761             int add_init_len, add1_len, add2_len;
01762         
01763             memset( output_str, 0, 512 );
01764         
01765             unhexify( entropy, "7e3dca20a7a977b6616a684e309015cf6a37edd0d85819fe91d074c915b0c9540a8aa486f58685b064851d6164150b1c1b0e2e545c6358d28b2f5263b2fd12c503d271ab6de76d4fa4c604cae469335840328008d8ce5545586b9ea6b21da4f9" );
01766             add_init_len = unhexify( add_init, "a0db812a939fbf3942b00be018cff4578b9fb62629c766a50f3518fe634100b1cbc4244ae843fe32125c53b653705457" );
01767             add1_len = unhexify( add1, "554b297bc32866a52884fabfc6d837690de30467b8f9158b258869e6f4ed0831" );
01768             add2_len = unhexify( add2, "4f688cba5908e0699b33b508847f7dac32f233e6f02cf093efdacae74259f3b6" );
01769         
01770             test_offset = 0;
01771             fct_chk( ctr_drbg_init_entropy_len( &ctx, entropy_func, entropy, add_init, add_init_len, 32 ) == 0 );
01772             ctr_drbg_set_prediction_resistance( &ctx, CTR_DRBG_PR_ON );
01773         
01774             fct_chk( ctr_drbg_random_with_add( &ctx, buf, 16, add1, add1_len ) == 0 );
01775             fct_chk( ctr_drbg_random_with_add( &ctx, buf, 16, add2, add2_len ) == 0 );
01776             hexify( output_str, buf, 16 );
01777             fct_chk( strcmp( (char *) output_str, "9696dd6ed5875cdef4a918a6686455a8" ) == 0 );
01778         }
01779         FCT_TEST_END();
01780 
01781 
01782         FCT_TEST_BGN(ctr_drbg_nist_validation_aes_256_use_dftrue256128256256_6)
01783         {
01784             unsigned char entropy[512];
01785             unsigned char add_init[512];
01786             unsigned char add1[512];
01787             unsigned char add2[512];
01788             ctr_drbg_context ctx;
01789             unsigned char buf[512];
01790             unsigned char output_str[512];
01791             int add_init_len, add1_len, add2_len;
01792         
01793             memset( output_str, 0, 512 );
01794         
01795             unhexify( entropy, "efcf7536f32932526fe82b3a2333508404727878723fc09cbd902581d82463cf6acf1ddf4217ea6404469193e8db0e7e8c864ae655b49c6a095f80f1ab16985453f0fb729c119d8a3b820034626a93b1f70eb99b6cd8c990dda34a1c6a4b6eea" );
01796             add_init_len = unhexify( add_init, "ff6cd20443a32c9e938f2a617bbb969ba54040b12723b0d452a669b584ba16ffaacbe38af62b5a62e0c67d165d022344" );
01797             add1_len = unhexify( add1, "8d412208091b987ee0781ff679c50dbab9ef389156f570f27aaf3e699bdade48" );
01798             add2_len = unhexify( add2, "501381ce5e7718c92ee73e9c247965dd5f0bbde013c4b5e625e9af8907e40566" );
01799         
01800             test_offset = 0;
01801             fct_chk( ctr_drbg_init_entropy_len( &ctx, entropy_func, entropy, add_init, add_init_len, 32 ) == 0 );
01802             ctr_drbg_set_prediction_resistance( &ctx, CTR_DRBG_PR_ON );
01803         
01804             fct_chk( ctr_drbg_random_with_add( &ctx, buf, 16, add1, add1_len ) == 0 );
01805             fct_chk( ctr_drbg_random_with_add( &ctx, buf, 16, add2, add2_len ) == 0 );
01806             hexify( output_str, buf, 16 );
01807             fct_chk( strcmp( (char *) output_str, "4f323934adb8a2096f17d5c4d7444078" ) == 0 );
01808         }
01809         FCT_TEST_END();
01810 
01811 
01812         FCT_TEST_BGN(ctr_drbg_nist_validation_aes_256_use_dftrue256128256256_7)
01813         {
01814             unsigned char entropy[512];
01815             unsigned char add_init[512];
01816             unsigned char add1[512];
01817             unsigned char add2[512];
01818             ctr_drbg_context ctx;
01819             unsigned char buf[512];
01820             unsigned char output_str[512];
01821             int add_init_len, add1_len, add2_len;
01822         
01823             memset( output_str, 0, 512 );
01824         
01825             unhexify( entropy, "bfb0931b05a3fe232614e1b1c3060b3b07fb75d23ac10190a47a7245a6ecad5f3834e6727b75acc37e9d512d01a4a9cef6cb17eb97e4d1d7c1df572296972f0437a89c19894f721cbe085cf3b89767291a82b999bf3925357d860f181a3681ce" );
01826             add_init_len = unhexify( add_init, "bd14779153ed9696d3e5143c50b2050b6acd3ea2f8b670ef0e5f4bedf01705727bf9e64ae859214abe6ef497163f0236" );
01827             add1_len = unhexify( add1, "0b5dc1cdfc40cfdc225798da773411dc9a8779316ceb18d1e8f13809466c6366" );
01828             add2_len = unhexify( add2, "843eb7297570e536b5760c3158adb27c0c426c77d798c08314f53b59aa72d08b" );
01829         
01830             test_offset = 0;
01831             fct_chk( ctr_drbg_init_entropy_len( &ctx, entropy_func, entropy, add_init, add_init_len, 32 ) == 0 );
01832             ctr_drbg_set_prediction_resistance( &ctx, CTR_DRBG_PR_ON );
01833         
01834             fct_chk( ctr_drbg_random_with_add( &ctx, buf, 16, add1, add1_len ) == 0 );
01835             fct_chk( ctr_drbg_random_with_add( &ctx, buf, 16, add2, add2_len ) == 0 );
01836             hexify( output_str, buf, 16 );
01837             fct_chk( strcmp( (char *) output_str, "1e703f3122455a40536c39f9ea3ceaa6" ) == 0 );
01838         }
01839         FCT_TEST_END();
01840 
01841 
01842         FCT_TEST_BGN(ctr_drbg_nist_validation_aes_256_use_dftrue256128256256_8)
01843         {
01844             unsigned char entropy[512];
01845             unsigned char add_init[512];
01846             unsigned char add1[512];
01847             unsigned char add2[512];
01848             ctr_drbg_context ctx;
01849             unsigned char buf[512];
01850             unsigned char output_str[512];
01851             int add_init_len, add1_len, add2_len;
01852         
01853             memset( output_str, 0, 512 );
01854         
01855             unhexify( entropy, "a5b15cb1e039d7bbe2db80a32d4f402c7d3c59a45b05255401d1122770dbdb9894841964d5cadc9ae9af007d63e870d0510078885ca402bd222f16d2d27892e23292b65cf370b15d5e5a739ddd13e3e27f7c2e2b945f8e21897c3bbf05d8b043" );
01856             add_init_len = unhexify( add_init, "64b155fd4b8634663a7e8a602e2b9fe2477be74692643ccfd0b316a025ea6f1fc0dfd0833248cb011082be36cba3c5d1" );
01857             add1_len = unhexify( add1, "aea2fe995be77dfdca6ebaa1c05ba4c84d0e6b9a87905c398a3dfe08aeb26d38" );
01858             add2_len = unhexify( add2, "f4e9e7eb0eea4e2d419de6ad2909d36ec06c79097884bf98981e86dedae366ba" );
01859         
01860             test_offset = 0;
01861             fct_chk( ctr_drbg_init_entropy_len( &ctx, entropy_func, entropy, add_init, add_init_len, 32 ) == 0 );
01862             ctr_drbg_set_prediction_resistance( &ctx, CTR_DRBG_PR_ON );
01863         
01864             fct_chk( ctr_drbg_random_with_add( &ctx, buf, 16, add1, add1_len ) == 0 );
01865             fct_chk( ctr_drbg_random_with_add( &ctx, buf, 16, add2, add2_len ) == 0 );
01866             hexify( output_str, buf, 16 );
01867             fct_chk( strcmp( (char *) output_str, "4a28955dc97936b1c0aed0751a1afed5" ) == 0 );
01868         }
01869         FCT_TEST_END();
01870 
01871 
01872         FCT_TEST_BGN(ctr_drbg_nist_validation_aes_256_use_dftrue256128256256_9)
01873         {
01874             unsigned char entropy[512];
01875             unsigned char add_init[512];
01876             unsigned char add1[512];
01877             unsigned char add2[512];
01878             ctr_drbg_context ctx;
01879             unsigned char buf[512];
01880             unsigned char output_str[512];
01881             int add_init_len, add1_len, add2_len;
01882         
01883             memset( output_str, 0, 512 );
01884         
01885             unhexify( entropy, "d4e0347c2158b882eb1e165f7f2aa1324d6606fe259ca730b2a3367435cb93b89108e49bd97355215063f63e78e8926b264c8a97571fd4d55882364915b7bd544254c25c2b67cdd979737c7811bcdeef5b052d8fe05a89b3291ef669d5579a61" );
01886             add_init_len = unhexify( add_init, "e6c08e8b8d8e418477087911610096f7e0422083a376a77198e9c60fb2dc8c14aff33d7835878b65322f1561738b1ebb" );
01887             add1_len = unhexify( add1, "6607541177bc0c5f278c11cb2dcb187fc9f2c9a9e8eefa657ba92dee12d84b07" );
01888             add2_len = unhexify( add2, "7a439c8593b927867cfa853949e592baea0eeb394b0e2fe9ab0876243b7e11e2" );
01889         
01890             test_offset = 0;
01891             fct_chk( ctr_drbg_init_entropy_len( &ctx, entropy_func, entropy, add_init, add_init_len, 32 ) == 0 );
01892             ctr_drbg_set_prediction_resistance( &ctx, CTR_DRBG_PR_ON );
01893         
01894             fct_chk( ctr_drbg_random_with_add( &ctx, buf, 16, add1, add1_len ) == 0 );
01895             fct_chk( ctr_drbg_random_with_add( &ctx, buf, 16, add2, add2_len ) == 0 );
01896             hexify( output_str, buf, 16 );
01897             fct_chk( strcmp( (char *) output_str, "420888122f2e0334757c4af87bbc28a4" ) == 0 );
01898         }
01899         FCT_TEST_END();
01900 
01901 
01902         FCT_TEST_BGN(ctr_drbg_nist_validation_aes_256_use_dftrue256128256256_10)
01903         {
01904             unsigned char entropy[512];
01905             unsigned char add_init[512];
01906             unsigned char add1[512];
01907             unsigned char add2[512];
01908             ctr_drbg_context ctx;
01909             unsigned char buf[512];
01910             unsigned char output_str[512];
01911             int add_init_len, add1_len, add2_len;
01912         
01913             memset( output_str, 0, 512 );
01914         
01915             unhexify( entropy, "a21cf567362fed0edddfd0b1c2d85ff6d2db5484fca8bf90a82da2ab76efcac9286e417628496f37effda150ef4912125aac68aac72e6f900a70192d4ef0b4cc4e9419c93ffb245965ae30c5f8abe20f732d76080bde5a1c6b3f075eb35622d1" );
01916             add_init_len = unhexify( add_init, "4413ff775c9b7d9a3003e0b727e34554e0f615471d52aeb4a059777b372d60332a1a4bcaf906e598581bc5a369b2c933" );
01917             add1_len = unhexify( add1, "b924d145fc3ecd76f000f12638ef0a49a5d4cf887aa93fc9e5c536febc454f2d" );
01918             add2_len = unhexify( add2, "73dbb40b257e6598744f9107c8e7ff51a080407fc9e80d39d9a4db94f167c116" );
01919         
01920             test_offset = 0;
01921             fct_chk( ctr_drbg_init_entropy_len( &ctx, entropy_func, entropy, add_init, add_init_len, 32 ) == 0 );
01922             ctr_drbg_set_prediction_resistance( &ctx, CTR_DRBG_PR_ON );
01923         
01924             fct_chk( ctr_drbg_random_with_add( &ctx, buf, 16, add1, add1_len ) == 0 );
01925             fct_chk( ctr_drbg_random_with_add( &ctx, buf, 16, add2, add2_len ) == 0 );
01926             hexify( output_str, buf, 16 );
01927             fct_chk( strcmp( (char *) output_str, "84457ea753771ad7c97ce9c03ab08f43" ) == 0 );
01928         }
01929         FCT_TEST_END();
01930 
01931 
01932         FCT_TEST_BGN(ctr_drbg_nist_validation_aes_256_use_dftrue256128256256_11)
01933         {
01934             unsigned char entropy[512];
01935             unsigned char add_init[512];
01936             unsigned char add1[512];
01937             unsigned char add2[512];
01938             ctr_drbg_context ctx;
01939             unsigned char buf[512];
01940             unsigned char output_str[512];
01941             int add_init_len, add1_len, add2_len;
01942         
01943             memset( output_str, 0, 512 );
01944         
01945             unhexify( entropy, "c5a63c886af7ed7496473a6ae2f27f056c7e61c9aca8c5d095af11b2efe1a6b43344f92b37c7b6977ddbef1273e9511d9305fcbe7f32bc6a62f28d34841350362d2717dd00467224a35985b9fecc2739acd198743849dbfa97f458e2e7d6b1dc" );
01946             add_init_len = unhexify( add_init, "5e409d56afb6940f9ffa45e0f92ef4972acedd3557b8e0f5418e302f2720ae5289294176045ad3096ea68db634cf5597" );
01947             add1_len = unhexify( add1, "7fda133a23e929b17548a05013ff9c7085c5af9c979057b8f961ba7514509ff3" );
01948             add2_len = unhexify( add2, "bd061292b6bc3d3e71ed01af091f0169f70f23862efccd9e76345ff607dff3ec" );
01949         
01950             test_offset = 0;
01951             fct_chk( ctr_drbg_init_entropy_len( &ctx, entropy_func, entropy, add_init, add_init_len, 32 ) == 0 );
01952             ctr_drbg_set_prediction_resistance( &ctx, CTR_DRBG_PR_ON );
01953         
01954             fct_chk( ctr_drbg_random_with_add( &ctx, buf, 16, add1, add1_len ) == 0 );
01955             fct_chk( ctr_drbg_random_with_add( &ctx, buf, 16, add2, add2_len ) == 0 );
01956             hexify( output_str, buf, 16 );
01957             fct_chk( strcmp( (char *) output_str, "75b35dab3ad5e35c10ee39529a7f840f" ) == 0 );
01958         }
01959         FCT_TEST_END();
01960 
01961 
01962         FCT_TEST_BGN(ctr_drbg_nist_validation_aes_256_use_dftrue256128256256_12)
01963         {
01964             unsigned char entropy[512];
01965             unsigned char add_init[512];
01966             unsigned char add1[512];
01967             unsigned char add2[512];
01968             ctr_drbg_context ctx;
01969             unsigned char buf[512];
01970             unsigned char output_str[512];
01971             int add_init_len, add1_len, add2_len;
01972         
01973             memset( output_str, 0, 512 );
01974         
01975             unhexify( entropy, "0a6155ff422ff6ae9814f81bf353bd3454d0c9892f9f3d730dcd8c87626f813cbe1dff1922fe73e4a319be53f4ec05e965c27f239b1e51869069a7e7cdd916fc1fd6f640bfe4b761a8040f8db37fb5ee7508e7d226c7695fb2a8bd791fe49ef2" );
01976             add_init_len = unhexify( add_init, "ed2a52169791d7c7d332cf258ea4847c359335f9a6839ee767a8f76800ba28e94858cc9b7f526e62a93603fa2b1caa6b" );
01977             add1_len = unhexify( add1, "14073a1b4f07f3b594fa43d0c8781b8089dd2d9b8ad266e0321aaa6b71a0d058" );
01978             add2_len = unhexify( add2, "4247fc6886e8657b84369cf14469b42aa371d57d27093ee724f87bf20fa9e4e6" );
01979         
01980             test_offset = 0;
01981             fct_chk( ctr_drbg_init_entropy_len( &ctx, entropy_func, entropy, add_init, add_init_len, 32 ) == 0 );
01982             ctr_drbg_set_prediction_resistance( &ctx, CTR_DRBG_PR_ON );
01983         
01984             fct_chk( ctr_drbg_random_with_add( &ctx, buf, 16, add1, add1_len ) == 0 );
01985             fct_chk( ctr_drbg_random_with_add( &ctx, buf, 16, add2, add2_len ) == 0 );
01986             hexify( output_str, buf, 16 );
01987             fct_chk( strcmp( (char *) output_str, "f2aea2bc23e7c70f4ee2f7b60c59d24d" ) == 0 );
01988         }
01989         FCT_TEST_END();
01990 
01991 
01992         FCT_TEST_BGN(ctr_drbg_nist_validation_aes_256_use_dftrue256128256256_13)
01993         {
01994             unsigned char entropy[512];
01995             unsigned char add_init[512];
01996             unsigned char add1[512];
01997             unsigned char add2[512];
01998             ctr_drbg_context ctx;
01999             unsigned char buf[512];
02000             unsigned char output_str[512];
02001             int add_init_len, add1_len, add2_len;
02002         
02003             memset( output_str, 0, 512 );
02004         
02005             unhexify( entropy, "223d49f99a56cfcf2eb8cca39a8a82ee306c6272d521257f3d7d2a87699111e442fc55a399994d57373141f2207d43a8bbc1e086d67343b7dc2a891853c860fe43fb6be32cf035aca582bf5590cb5001b09b4976ea617fa7bd56da81fdef2df9" );
02006             add_init_len = unhexify( add_init, "f0d3a46501da7ab23d8688725f53f4289ce3bfa627646fe301533ec585f866caafb8131e95460566270f68cd25e1f153" );
02007             add1_len = unhexify( add1, "7d12673cad5ad5003400fb94547e2b987e934acf6b930c0e7aec72634bfb8388" );
02008             add2_len = unhexify( add2, "e8583b9983b3ac589a6bb7a8405edfc05d7aa5874a8643f9ac30a3d8945a9f96" );
02009         
02010             test_offset = 0;
02011             fct_chk( ctr_drbg_init_entropy_len( &ctx, entropy_func, entropy, add_init, add_init_len, 32 ) == 0 );
02012             ctr_drbg_set_prediction_resistance( &ctx, CTR_DRBG_PR_ON );
02013         
02014             fct_chk( ctr_drbg_random_with_add( &ctx, buf, 16, add1, add1_len ) == 0 );
02015             fct_chk( ctr_drbg_random_with_add( &ctx, buf, 16, add2, add2_len ) == 0 );
02016             hexify( output_str, buf, 16 );
02017             fct_chk( strcmp( (char *) output_str, "ce72c0ea0e76be6bc82331c9bddd7ffb" ) == 0 );
02018         }
02019         FCT_TEST_END();
02020 
02021 
02022         FCT_TEST_BGN(ctr_drbg_nist_validation_aes_256_use_dftrue256128256256_14)
02023         {
02024             unsigned char entropy[512];
02025             unsigned char add_init[512];
02026             unsigned char add1[512];
02027             unsigned char add2[512];
02028             ctr_drbg_context ctx;
02029             unsigned char buf[512];
02030             unsigned char output_str[512];
02031             int add_init_len, add1_len, add2_len;
02032         
02033             memset( output_str, 0, 512 );
02034         
02035             unhexify( entropy, "cdac62b5e4ccee8609b1f4b7a8733e69068c71219b6292ecb318b9d3479516807af280cfa20e455d5e96eb6794a3b963957f3c099fd1e1199706d36a06011836af890f3b7b15cda6346a06fdd0f194de40bfbec12b021b02eeabaa34d35b30a3" );
02036             add_init_len = unhexify( add_init, "1e4644df1d01f9a0f31d1d0c67bc9fb9a1ee2223fbfb25520d3881cde2b183b73fe1a8cc5f17796cf22aaaed57607420" );
02037             add1_len = unhexify( add1, "8169251ea55cce534c6efd0e8a2956d32ed73be71d12477cea8e0f1ab8251b50" );
02038             add2_len = unhexify( add2, "865d14cb37dd160a3f02f56ac32738f9e350da9e789a1f280ee7b7961ec918a7" );
02039         
02040             test_offset = 0;
02041             fct_chk( ctr_drbg_init_entropy_len( &ctx, entropy_func, entropy, add_init, add_init_len, 32 ) == 0 );
02042             ctr_drbg_set_prediction_resistance( &ctx, CTR_DRBG_PR_ON );
02043         
02044             fct_chk( ctr_drbg_random_with_add( &ctx, buf, 16, add1, add1_len ) == 0 );
02045             fct_chk( ctr_drbg_random_with_add( &ctx, buf, 16, add2, add2_len ) == 0 );
02046             hexify( output_str, buf, 16 );
02047             fct_chk( strcmp( (char *) output_str, "ff11ba8349daa9b9c87cf6ab4c2adfd7" ) == 0 );
02048         }
02049         FCT_TEST_END();
02050 
02051 
02052         FCT_TEST_BGN(ctr_drbg_nist_validation_aes_256_use_dffalse25612800_0)
02053         {
02054             unsigned char entropy[512];
02055             unsigned char add_init[512];
02056             unsigned char add1[512];
02057             unsigned char add_reseed[512];
02058             unsigned char add2[512];
02059             ctr_drbg_context ctx;
02060             unsigned char buf[512];
02061             unsigned char output_str[512];
02062             int add_init_len, add1_len, add_reseed_len, add2_len;
02063         
02064             memset( output_str, 0, 512 );
02065         
02066             unhexify( entropy, "5a194d5e2b31581454def675fb7958fec7db873e5689fc9d03217c68d8033820f9e65e04d856f3a9c44a4cbdc1d00846f5983d771c1b137e4e0f9d8ef409f92e" );
02067             add_init_len = unhexify( add_init, "1b54b8ff0642bff521f15c1c0b665f3f" );
02068             add1_len = unhexify( add1, "" );
02069             add_reseed_len = unhexify( add_reseed, "" );
02070             add2_len = unhexify( add2, "" );
02071         
02072             test_offset = 0;
02073             fct_chk( ctr_drbg_init_entropy_len( &ctx, entropy_func, entropy, add_init, add_init_len, 32 ) == 0 );
02074         
02075             fct_chk( ctr_drbg_random_with_add( &ctx, buf, 16, add1, add1_len ) == 0 );
02076             fct_chk( ctr_drbg_reseed( &ctx, add_reseed, add_reseed_len ) == 0 );
02077             fct_chk( ctr_drbg_random_with_add( &ctx, buf, 16, add2, add2_len ) == 0 );
02078             hexify( output_str, buf, 16 );
02079             fct_chk( strcmp( (char *) output_str, "a054303d8a7ea9889d903e077c6f218f" ) == 0 );
02080         }
02081         FCT_TEST_END();
02082 
02083 
02084         FCT_TEST_BGN(ctr_drbg_nist_validation_aes_256_use_dffalse25612800_1)
02085         {
02086             unsigned char entropy[512];
02087             unsigned char add_init[512];
02088             unsigned char add1[512];
02089             unsigned char add_reseed[512];
02090             unsigned char add2[512];
02091             ctr_drbg_context ctx;
02092             unsigned char buf[512];
02093             unsigned char output_str[512];
02094             int add_init_len, add1_len, add_reseed_len, add2_len;
02095         
02096             memset( output_str, 0, 512 );
02097         
02098             unhexify( entropy, "93b7055d7888ae234bfb431e379069d00ae810fbd48f2e06c204beae3b0bfaf091d1d0e853525ead0e7f79abb0f0bf68064576339c3585cfd6d9b55d4f39278d" );
02099             add_init_len = unhexify( add_init, "90bc3b555b9d6b6aeb1774a583f98cad" );
02100             add1_len = unhexify( add1, "" );
02101             add_reseed_len = unhexify( add_reseed, "" );
02102             add2_len = unhexify( add2, "" );
02103         
02104             test_offset = 0;
02105             fct_chk( ctr_drbg_init_entropy_len( &ctx, entropy_func, entropy, add_init, add_init_len, 32 ) == 0 );
02106         
02107             fct_chk( ctr_drbg_random_with_add( &ctx, buf, 16, add1, add1_len ) == 0 );
02108             fct_chk( ctr_drbg_reseed( &ctx, add_reseed, add_reseed_len ) == 0 );
02109             fct_chk( ctr_drbg_random_with_add( &ctx, buf, 16, add2, add2_len ) == 0 );
02110             hexify( output_str, buf, 16 );
02111             fct_chk( strcmp( (char *) output_str, "aaf27fc2bf64b0320dd3564bb9b03377" ) == 0 );
02112         }
02113         FCT_TEST_END();
02114 
02115 
02116         FCT_TEST_BGN(ctr_drbg_nist_validation_aes_256_use_dffalse25612800_2)
02117         {
02118             unsigned char entropy[512];
02119             unsigned char add_init[512];
02120             unsigned char add1[512];
02121             unsigned char add_reseed[512];
02122             unsigned char add2[512];
02123             ctr_drbg_context ctx;
02124             unsigned char buf[512];
02125             unsigned char output_str[512];
02126             int add_init_len, add1_len, add_reseed_len, add2_len;
02127         
02128             memset( output_str, 0, 512 );
02129         
02130             unhexify( entropy, "58364ceefad37581c518b7d42ac4f9aae22befd84cbc986c08d1fb20d3bd2400a899bafd470278fad8f0a50f8490af29f938471b4075654fda577dad20fa01ca" );
02131             add_init_len = unhexify( add_init, "4a2a7dcbde58b8b3c3f4697beb67bba2" );
02132             add1_len = unhexify( add1, "" );
02133             add_reseed_len = unhexify( add_reseed, "" );
02134             add2_len = unhexify( add2, "" );
02135         
02136             test_offset = 0;
02137             fct_chk( ctr_drbg_init_entropy_len( &ctx, entropy_func, entropy, add_init, add_init_len, 32 ) == 0 );
02138         
02139             fct_chk( ctr_drbg_random_with_add( &ctx, buf, 16, add1, add1_len ) == 0 );
02140             fct_chk( ctr_drbg_reseed( &ctx, add_reseed, add_reseed_len ) == 0 );
02141             fct_chk( ctr_drbg_random_with_add( &ctx, buf, 16, add2, add2_len ) == 0 );
02142             hexify( output_str, buf, 16 );
02143             fct_chk( strcmp( (char *) output_str, "20c5117a8aca72ee5ab91468daf44f29" ) == 0 );
02144         }
02145         FCT_TEST_END();
02146 
02147 
02148         FCT_TEST_BGN(ctr_drbg_nist_validation_aes_256_use_dffalse25612800_3)
02149         {
02150             unsigned char entropy[512];
02151             unsigned char add_init[512];
02152             unsigned char add1[512];
02153             unsigned char add_reseed[512];
02154             unsigned char add2[512];
02155             ctr_drbg_context ctx;
02156             unsigned char buf[512];
02157             unsigned char output_str[512];
02158             int add_init_len, add1_len, add_reseed_len, add2_len;
02159         
02160             memset( output_str, 0, 512 );
02161         
02162             unhexify( entropy, "2f044b8651e1c9d99317084cc6c4fa1f502dd62466a57d4b88bc0d703cabc562708201ac19cdb5cf918fae29c009fb1a2cf42fd714cc9a53ca5acb715482456a" );
02163             add_init_len = unhexify( add_init, "911faab1347ae2b3093a607c8bc77bfe" );
02164             add1_len = unhexify( add1, "" );
02165             add_reseed_len = unhexify( add_reseed, "" );
02166             add2_len = unhexify( add2, "" );
02167         
02168             test_offset = 0;
02169             fct_chk( ctr_drbg_init_entropy_len( &ctx, entropy_func, entropy, add_init, add_init_len, 32 ) == 0 );
02170         
02171             fct_chk( ctr_drbg_random_with_add( &ctx, buf, 16, add1, add1_len ) == 0 );
02172             fct_chk( ctr_drbg_reseed( &ctx, add_reseed, add_reseed_len ) == 0 );
02173             fct_chk( ctr_drbg_random_with_add( &ctx, buf, 16, add2, add2_len ) == 0 );
02174             hexify( output_str, buf, 16 );
02175             fct_chk( strcmp( (char *) output_str, "aae0c0ac97f53d222b83578a2b3dd05d" ) == 0 );
02176         }
02177         FCT_TEST_END();
02178 
02179 
02180         FCT_TEST_BGN(ctr_drbg_nist_validation_aes_256_use_dffalse25612800_4)
02181         {
02182             unsigned char entropy[512];
02183             unsigned char add_init[512];
02184             unsigned char add1[512];
02185             unsigned char add_reseed[512];
02186             unsigned char add2[512];
02187             ctr_drbg_context ctx;
02188             unsigned char buf[512];
02189             unsigned char output_str[512];
02190             int add_init_len, add1_len, add_reseed_len, add2_len;
02191         
02192             memset( output_str, 0, 512 );
02193         
02194             unhexify( entropy, "77d0f0efbc7ca794a51dff96e85b8e7dfd4875fbfb6e5593ae17908bfbddc313e051cb7d659c838180d834fdd987ae3c7f605aaa1b3a936575384b002a35dd98" );
02195             add_init_len = unhexify( add_init, "f959f1bc100ae30088017fae51289d8e" );
02196             add1_len = unhexify( add1, "" );
02197             add_reseed_len = unhexify( add_reseed, "" );
02198             add2_len = unhexify( add2, "" );
02199         
02200             test_offset = 0;
02201             fct_chk( ctr_drbg_init_entropy_len( &ctx, entropy_func, entropy, add_init, add_init_len, 32 ) == 0 );
02202         
02203             fct_chk( ctr_drbg_random_with_add( &ctx, buf, 16, add1, add1_len ) == 0 );
02204             fct_chk( ctr_drbg_reseed( &ctx, add_reseed, add_reseed_len ) == 0 );
02205             fct_chk( ctr_drbg_random_with_add( &ctx, buf, 16, add2, add2_len ) == 0 );
02206             hexify( output_str, buf, 16 );
02207             fct_chk( strcmp( (char *) output_str, "5d80bc3fffa42b89ccb390e8447e33e5" ) == 0 );
02208         }
02209         FCT_TEST_END();
02210 
02211 
02212         FCT_TEST_BGN(ctr_drbg_nist_validation_aes_256_use_dffalse25612800_5)
02213         {
02214             unsigned char entropy[512];
02215             unsigned char add_init[512];
02216             unsigned char add1[512];
02217             unsigned char add_reseed[512];
02218             unsigned char add2[512];
02219             ctr_drbg_context ctx;
02220             unsigned char buf[512];
02221             unsigned char output_str[512];
02222             int add_init_len, add1_len, add_reseed_len, add2_len;
02223         
02224             memset( output_str, 0, 512 );
02225         
02226             unhexify( entropy, "6bb14dc34f669759f8fa5453c4899eb5ac4e33a69e35e89b19a46dbd0888429d1367f7f3191e911b3b355b6e3b2426e242ef4140ddcc9676371101209662f253" );
02227             add_init_len = unhexify( add_init, "45a8bb33062783eede09b05a35bd44dd" );
02228             add1_len = unhexify( add1, "" );
02229             add_reseed_len = unhexify( add_reseed, "" );
02230             add2_len = unhexify( add2, "" );
02231         
02232             test_offset = 0;
02233             fct_chk( ctr_drbg_init_entropy_len( &ctx, entropy_func, entropy, add_init, add_init_len, 32 ) == 0 );
02234         
02235             fct_chk( ctr_drbg_random_with_add( &ctx, buf, 16, add1, add1_len ) == 0 );
02236             fct_chk( ctr_drbg_reseed( &ctx, add_reseed, add_reseed_len ) == 0 );
02237             fct_chk( ctr_drbg_random_with_add( &ctx, buf, 16, add2, add2_len ) == 0 );
02238             hexify( output_str, buf, 16 );
02239             fct_chk( strcmp( (char *) output_str, "0dfa9955a13a9c57a3546a04108b8e9e" ) == 0 );
02240         }
02241         FCT_TEST_END();
02242 
02243 
02244         FCT_TEST_BGN(ctr_drbg_nist_validation_aes_256_use_dffalse25612800_6)
02245         {
02246             unsigned char entropy[512];
02247             unsigned char add_init[512];
02248             unsigned char add1[512];
02249             unsigned char add_reseed[512];
02250             unsigned char add2[512];
02251             ctr_drbg_context ctx;
02252             unsigned char buf[512];
02253             unsigned char output_str[512];
02254             int add_init_len, add1_len, add_reseed_len, add2_len;
02255         
02256             memset( output_str, 0, 512 );
02257         
02258             unhexify( entropy, "b3d01bcb1ec747fdb7feb5a7de92807afa4338aba1c81ce1eb50955e125af46b19aed891366ec0f70b079037a5aeb33f07f4c894fdcda3ff41e2867ace1aa05c" );
02259             add_init_len = unhexify( add_init, "0ada129f9948073d628c11274cec3f69" );
02260             add1_len = unhexify( add1, "" );
02261             add_reseed_len = unhexify( add_reseed, "" );
02262             add2_len = unhexify( add2, "" );
02263         
02264             test_offset = 0;
02265             fct_chk( ctr_drbg_init_entropy_len( &ctx, entropy_func, entropy, add_init, add_init_len, 32 ) == 0 );
02266         
02267             fct_chk( ctr_drbg_random_with_add( &ctx, buf, 16, add1, add1_len ) == 0 );
02268             fct_chk( ctr_drbg_reseed( &ctx, add_reseed, add_reseed_len ) == 0 );
02269             fct_chk( ctr_drbg_random_with_add( &ctx, buf, 16, add2, add2_len ) == 0 );
02270             hexify( output_str, buf, 16 );
02271             fct_chk( strcmp( (char *) output_str, "f34710c9ebf9d5aaa5f797fd85a1c413" ) == 0 );
02272         }
02273         FCT_TEST_END();
02274 
02275 
02276         FCT_TEST_BGN(ctr_drbg_nist_validation_aes_256_use_dffalse25612800_7)
02277         {
02278             unsigned char entropy[512];
02279             unsigned char add_init[512];
02280             unsigned char add1[512];
02281             unsigned char add_reseed[512];
02282             unsigned char add2[512];
02283             ctr_drbg_context ctx;
02284             unsigned char buf[512];
02285             unsigned char output_str[512];
02286             int add_init_len, add1_len, add_reseed_len, add2_len;
02287         
02288             memset( output_str, 0, 512 );
02289         
02290             unhexify( entropy, "98482e58e44b8e4a6b09fa02c05fcc491da03a479a7fad13a83b6080d30b3b255e01a43568a9d6dd5cecf99b0ce9fd594d69eff8fa88159b2da24c33ba81a14d" );
02291             add_init_len = unhexify( add_init, "052a5ad4cd38de90e5d3c2fc430fa51e" );
02292             add1_len = unhexify( add1, "" );
02293             add_reseed_len = unhexify( add_reseed, "" );
02294             add2_len = unhexify( add2, "" );
02295         
02296             test_offset = 0;
02297             fct_chk( ctr_drbg_init_entropy_len( &ctx, entropy_func, entropy, add_init, add_init_len, 32 ) == 0 );
02298         
02299             fct_chk( ctr_drbg_random_with_add( &ctx, buf, 16, add1, add1_len ) == 0 );
02300             fct_chk( ctr_drbg_reseed( &ctx, add_reseed, add_reseed_len ) == 0 );
02301             fct_chk( ctr_drbg_random_with_add( &ctx, buf, 16, add2, add2_len ) == 0 );
02302             hexify( output_str, buf, 16 );
02303             fct_chk( strcmp( (char *) output_str, "3f55144eec263aed50f9c9a641538e55" ) == 0 );
02304         }
02305         FCT_TEST_END();
02306 
02307 
02308         FCT_TEST_BGN(ctr_drbg_nist_validation_aes_256_use_dffalse25612800_8)
02309         {
02310             unsigned char entropy[512];
02311             unsigned char add_init[512];
02312             unsigned char add1[512];
02313             unsigned char add_reseed[512];
02314             unsigned char add2[512];
02315             ctr_drbg_context ctx;
02316             unsigned char buf[512];
02317             unsigned char output_str[512];
02318             int add_init_len, add1_len, add_reseed_len, add2_len;
02319         
02320             memset( output_str, 0, 512 );
02321         
02322             unhexify( entropy, "6238d448015e86aa16af62cdc287f1c17b78a79809fa00b8c655e06715cd2b935bf4df966e3ec1f14b28cc1d080f882a7215e258430c91a4a0a2aa98d7cd8053" );
02323             add_init_len = unhexify( add_init, "004cd2f28f083d1cee68975d5cbbbe4f" );
02324             add1_len = unhexify( add1, "" );
02325             add_reseed_len = unhexify( add_reseed, "" );
02326             add2_len = unhexify( add2, "" );
02327         
02328             test_offset = 0;
02329             fct_chk( ctr_drbg_init_entropy_len( &ctx, entropy_func, entropy, add_init, add_init_len, 32 ) == 0 );
02330         
02331             fct_chk( ctr_drbg_random_with_add( &ctx, buf, 16, add1, add1_len ) == 0 );
02332             fct_chk( ctr_drbg_reseed( &ctx, add_reseed, add_reseed_len ) == 0 );
02333             fct_chk( ctr_drbg_random_with_add( &ctx, buf, 16, add2, add2_len ) == 0 );
02334             hexify( output_str, buf, 16 );
02335             fct_chk( strcmp( (char *) output_str, "b137119dbbd9d752a8dfceec05b884b6" ) == 0 );
02336         }
02337         FCT_TEST_END();
02338 
02339 
02340         FCT_TEST_BGN(ctr_drbg_nist_validation_aes_256_use_dffalse25612800_9)
02341         {
02342             unsigned char entropy[512];
02343             unsigned char add_init[512];
02344             unsigned char add1[512];
02345             unsigned char add_reseed[512];
02346             unsigned char add2[512];
02347             ctr_drbg_context ctx;
02348             unsigned char buf[512];
02349             unsigned char output_str[512];
02350             int add_init_len, add1_len, add_reseed_len, add2_len;
02351         
02352             memset( output_str, 0, 512 );
02353         
02354             unhexify( entropy, "50d3c4ecb1d6e95aebb87e9e8a5c869c11fb945dfad2e45ee90fb61931fcedd47d6005aa5df24bb9efc11bbb96bb21065d44e2532a1e17493f974a4bf8f8b580" );
02355             add_init_len = unhexify( add_init, "f985b3ea2d8b15db26a71895a2ff57cd" );
02356             add1_len = unhexify( add1, "" );
02357             add_reseed_len = unhexify( add_reseed, "" );
02358             add2_len = unhexify( add2, "" );
02359         
02360             test_offset = 0;
02361             fct_chk( ctr_drbg_init_entropy_len( &ctx, entropy_func, entropy, add_init, add_init_len, 32 ) == 0 );
02362         
02363             fct_chk( ctr_drbg_random_with_add( &ctx, buf, 16, add1, add1_len ) == 0 );
02364             fct_chk( ctr_drbg_reseed( &ctx, add_reseed, add_reseed_len ) == 0 );
02365             fct_chk( ctr_drbg_random_with_add( &ctx, buf, 16, add2, add2_len ) == 0 );
02366             hexify( output_str, buf, 16 );
02367             fct_chk( strcmp( (char *) output_str, "eb419628fbc441ae6a03e26aeecb34a6" ) == 0 );
02368         }
02369         FCT_TEST_END();
02370 
02371 
02372         FCT_TEST_BGN(ctr_drbg_nist_validation_aes_256_use_dffalse25612800_10)
02373         {
02374             unsigned char entropy[512];
02375             unsigned char add_init[512];
02376             unsigned char add1[512];
02377             unsigned char add_reseed[512];
02378             unsigned char add2[512];
02379             ctr_drbg_context ctx;
02380             unsigned char buf[512];
02381             unsigned char output_str[512];
02382             int add_init_len, add1_len, add_reseed_len, add2_len;
02383         
02384             memset( output_str, 0, 512 );
02385         
02386             unhexify( entropy, "d27cbeac39a6c899938197f0e61dc90be3a3a20fa5c5e1f7a76adde00598e59555c1e9fd102d4b52e1ae9fb004be8944bad85c58e341d1bee014057da98eb3bc" );
02387             add_init_len = unhexify( add_init, "100f196991b6e96f8b96a3456f6e2baf" );
02388             add1_len = unhexify( add1, "" );
02389             add_reseed_len = unhexify( add_reseed, "" );
02390             add2_len = unhexify( add2, "" );
02391         
02392             test_offset = 0;
02393             fct_chk( ctr_drbg_init_entropy_len( &ctx, entropy_func, entropy, add_init, add_init_len, 32 ) == 0 );
02394         
02395             fct_chk( ctr_drbg_random_with_add( &ctx, buf, 16, add1, add1_len ) == 0 );
02396             fct_chk( ctr_drbg_reseed( &ctx, add_reseed, add_reseed_len ) == 0 );
02397             fct_chk( ctr_drbg_random_with_add( &ctx, buf, 16, add2, add2_len ) == 0 );
02398             hexify( output_str, buf, 16 );
02399             fct_chk( strcmp( (char *) output_str, "e3e09d0ed827e4f24a20553fd1087c9d" ) == 0 );
02400         }
02401         FCT_TEST_END();
02402 
02403 
02404         FCT_TEST_BGN(ctr_drbg_nist_validation_aes_256_use_dffalse25612800_11)
02405         {
02406             unsigned char entropy[512];
02407             unsigned char add_init[512];
02408             unsigned char add1[512];
02409             unsigned char add_reseed[512];
02410             unsigned char add2[512];
02411             ctr_drbg_context ctx;
02412             unsigned char buf[512];
02413             unsigned char output_str[512];
02414             int add_init_len, add1_len, add_reseed_len, add2_len;
02415         
02416             memset( output_str, 0, 512 );
02417         
02418             unhexify( entropy, "16f9f5354d624c5ab1f82c750e05f51f2a2eeca7e5b774fd96148ddba3b38d34ba7f1472567c52087252480d305ad1c69e4aac8472a154ae03511d0e8aac905a" );
02419             add_init_len = unhexify( add_init, "88f55d9ba8fef7828483298321133fec" );
02420             add1_len = unhexify( add1, "" );
02421             add_reseed_len = unhexify( add_reseed, "" );
02422             add2_len = unhexify( add2, "" );
02423         
02424             test_offset = 0;
02425             fct_chk( ctr_drbg_init_entropy_len( &ctx, entropy_func, entropy, add_init, add_init_len, 32 ) == 0 );
02426         
02427             fct_chk( ctr_drbg_random_with_add( &ctx, buf, 16, add1, add1_len ) == 0 );
02428             fct_chk( ctr_drbg_reseed( &ctx, add_reseed, add_reseed_len ) == 0 );
02429             fct_chk( ctr_drbg_random_with_add( &ctx, buf, 16, add2, add2_len ) == 0 );
02430             hexify( output_str, buf, 16 );
02431             fct_chk( strcmp( (char *) output_str, "07cd821012ef03f16d8510c23b86baf3" ) == 0 );
02432         }
02433         FCT_TEST_END();
02434 
02435 
02436         FCT_TEST_BGN(ctr_drbg_nist_validation_aes_256_use_dffalse25612800_12)
02437         {
02438             unsigned char entropy[512];
02439             unsigned char add_init[512];
02440             unsigned char add1[512];
02441             unsigned char add_reseed[512];
02442             unsigned char add2[512];
02443             ctr_drbg_context ctx;
02444             unsigned char buf[512];
02445             unsigned char output_str[512];
02446             int add_init_len, add1_len, add_reseed_len, add2_len;
02447         
02448             memset( output_str, 0, 512 );
02449         
02450             unhexify( entropy, "70afbc83bf9ff09535d6f0ddc51278ad7909f11e6f198b59132c9e269deb41ba901c62346283e293b8714fd3241ae870f974ff33c35f9aff05144be039d24e50" );
02451             add_init_len = unhexify( add_init, "126479abd70b25acd891e1c4c92044f9" );
02452             add1_len = unhexify( add1, "" );
02453             add_reseed_len = unhexify( add_reseed, "" );
02454             add2_len = unhexify( add2, "" );
02455         
02456             test_offset = 0;
02457             fct_chk( ctr_drbg_init_entropy_len( &ctx, entropy_func, entropy, add_init, add_init_len, 32 ) == 0 );
02458         
02459             fct_chk( ctr_drbg_random_with_add( &ctx, buf, 16, add1, add1_len ) == 0 );
02460             fct_chk( ctr_drbg_reseed( &ctx, add_reseed, add_reseed_len ) == 0 );
02461             fct_chk( ctr_drbg_random_with_add( &ctx, buf, 16, add2, add2_len ) == 0 );
02462             hexify( output_str, buf, 16 );
02463             fct_chk( strcmp( (char *) output_str, "0f90df350741d88552a5b03b6488e9fb" ) == 0 );
02464         }
02465         FCT_TEST_END();
02466 
02467 
02468         FCT_TEST_BGN(ctr_drbg_nist_validation_aes_256_use_dffalse25612800_13)
02469         {
02470             unsigned char entropy[512];
02471             unsigned char add_init[512];
02472             unsigned char add1[512];
02473             unsigned char add_reseed[512];
02474             unsigned char add2[512];
02475             ctr_drbg_context ctx;
02476             unsigned char buf[512];
02477             unsigned char output_str[512];
02478             int add_init_len, add1_len, add_reseed_len, add2_len;
02479         
02480             memset( output_str, 0, 512 );
02481         
02482             unhexify( entropy, "5e5a9e1e3cb80738c238464ede1b6b6a321261a3b006a98a79265ad1f635573bba48dccf17b12f6868478252f556b77c3ec57a3bf6bb6599429453db2d050352" );
02483             add_init_len = unhexify( add_init, "a45f2fca553089fe04e7832059dc7976" );
02484             add1_len = unhexify( add1, "" );
02485             add_reseed_len = unhexify( add_reseed, "" );
02486             add2_len = unhexify( add2, "" );
02487         
02488             test_offset = 0;
02489             fct_chk( ctr_drbg_init_entropy_len( &ctx, entropy_func, entropy, add_init, add_init_len, 32 ) == 0 );
02490         
02491             fct_chk( ctr_drbg_random_with_add( &ctx, buf, 16, add1, add1_len ) == 0 );
02492             fct_chk( ctr_drbg_reseed( &ctx, add_reseed, add_reseed_len ) == 0 );
02493             fct_chk( ctr_drbg_random_with_add( &ctx, buf, 16, add2, add2_len ) == 0 );
02494             hexify( output_str, buf, 16 );
02495             fct_chk( strcmp( (char *) output_str, "6eb85ae2406c43814b687f74f4e942bc" ) == 0 );
02496         }
02497         FCT_TEST_END();
02498 
02499 
02500         FCT_TEST_BGN(ctr_drbg_nist_validation_aes_256_use_dffalse25612800_14)
02501         {
02502             unsigned char entropy[512];
02503             unsigned char add_init[512];
02504             unsigned char add1[512];
02505             unsigned char add_reseed[512];
02506             unsigned char add2[512];
02507             ctr_drbg_context ctx;
02508             unsigned char buf[512];
02509             unsigned char output_str[512];
02510             int add_init_len, add1_len, add_reseed_len, add2_len;
02511         
02512             memset( output_str, 0, 512 );
02513         
02514             unhexify( entropy, "31cfe60e5ed12ff37d7f2270963def598726320c02b910b5c6c795e2209b4b4a95866c64cb097af1d6404d1e6182edf9600e1855345375b201801d6f4c4e4b32" );
02515             add_init_len = unhexify( add_init, "52dbb43241002415966eaec2615aba27" );
02516             add1_len = unhexify( add1, "" );
02517             add_reseed_len = unhexify( add_reseed, "" );
02518             add2_len = unhexify( add2, "" );
02519         
02520             test_offset = 0;
02521             fct_chk( ctr_drbg_init_entropy_len( &ctx, entropy_func, entropy, add_init, add_init_len, 32 ) == 0 );
02522         
02523             fct_chk( ctr_drbg_random_with_add( &ctx, buf, 16, add1, add1_len ) == 0 );
02524             fct_chk( ctr_drbg_reseed( &ctx, add_reseed, add_reseed_len ) == 0 );
02525             fct_chk( ctr_drbg_random_with_add( &ctx, buf, 16, add2, add2_len ) == 0 );
02526             hexify( output_str, buf, 16 );
02527             fct_chk( strcmp( (char *) output_str, "2a270f5ef815665ddd07527c48719ab1" ) == 0 );
02528         }
02529         FCT_TEST_END();
02530 
02531 
02532         FCT_TEST_BGN(ctr_drbg_nist_validation_aes_256_use_dffalse2561280256_0)
02533         {
02534             unsigned char entropy[512];
02535             unsigned char add_init[512];
02536             unsigned char add1[512];
02537             unsigned char add_reseed[512];
02538             unsigned char add2[512];
02539             ctr_drbg_context ctx;
02540             unsigned char buf[512];
02541             unsigned char output_str[512];
02542             int add_init_len, add1_len, add_reseed_len, add2_len;
02543         
02544             memset( output_str, 0, 512 );
02545         
02546             unhexify( entropy, "f84d395b1734eac4600dbc36f6b1e1599bc7f2608dc8ecb3a55369d7b1b122a09f5ac9c16d9a2be37d2ff70a9bba732fc3785b23ff4ade3c8404da3f09f95a8f" );
02547             add_init_len = unhexify( add_init, "176200bb44808b5400b24e1b5f56cf73" );
02548             add1_len = unhexify( add1, "aef28c9169e9af74c73432d4aa6f5dff9ea4a53433de2ecb9bf380a8868c86e1" );
02549             add_reseed_len = unhexify( add_reseed, "0626ae19763c5313b627a8d65cf1cfba46dfd6773242738b9b81fde8d566ade1" );
02550             add2_len = unhexify( add2, "63c160ed6a6c1fffd0586f52fa488a9055533930b36d4fa5ea3467cda9ffe198" );
02551         
02552             test_offset = 0;
02553             fct_chk( ctr_drbg_init_entropy_len( &ctx, entropy_func, entropy, add_init, add_init_len, 32 ) == 0 );
02554         
02555             fct_chk( ctr_drbg_random_with_add( &ctx, buf, 16, add1, add1_len ) == 0 );
02556             fct_chk( ctr_drbg_reseed( &ctx, add_reseed, add_reseed_len ) == 0 );
02557             fct_chk( ctr_drbg_random_with_add( &ctx, buf, 16, add2, add2_len ) == 0 );
02558             hexify( output_str, buf, 16 );
02559             fct_chk( strcmp( (char *) output_str, "e8f91633725d786081625fb99336a993" ) == 0 );
02560         }
02561         FCT_TEST_END();
02562 
02563 
02564         FCT_TEST_BGN(ctr_drbg_nist_validation_aes_256_use_dffalse2561280256_1)
02565         {
02566             unsigned char entropy[512];
02567             unsigned char add_init[512];
02568             unsigned char add1[512];
02569             unsigned char add_reseed[512];
02570             unsigned char add2[512];
02571             ctr_drbg_context ctx;
02572             unsigned char buf[512];
02573             unsigned char output_str[512];
02574             int add_init_len, add1_len, add_reseed_len, add2_len;
02575         
02576             memset( output_str, 0, 512 );
02577         
02578             unhexify( entropy, "50755cc0178c68ae70befd7744f6f1e3f6a59b3bbe484a744436079c7fae8d83c4965516fb952c63e1d0561d92cccc56037465815c9e549c9adce4a064877128" );
02579             add_init_len = unhexify( add_init, "19c3d16197ac93bf58c4110c9e864804" );
02580             add1_len = unhexify( add1, "5cb82d2c297404f3db1909480c597dd081d94ca282ba9370786a50f3cbab6a9b" );
02581             add_reseed_len = unhexify( add_reseed, "96d130faf1a971920c2bf57bcd6c02d5a4af7d3c840706081e4a50e55f38bf96" );
02582             add2_len = unhexify( add2, "1b0d04f179690a30d501e8f6f82201dbab6d972ece2a0edfb5ca66a8c9bcf47d" );
02583         
02584             test_offset = 0;
02585             fct_chk( ctr_drbg_init_entropy_len( &ctx, entropy_func, entropy, add_init, add_init_len, 32 ) == 0 );
02586         
02587             fct_chk( ctr_drbg_random_with_add( &ctx, buf, 16, add1, add1_len ) == 0 );
02588             fct_chk( ctr_drbg_reseed( &ctx, add_reseed, add_reseed_len ) == 0 );
02589             fct_chk( ctr_drbg_random_with_add( &ctx, buf, 16, add2, add2_len ) == 0 );
02590             hexify( output_str, buf, 16 );
02591             fct_chk( strcmp( (char *) output_str, "4628b26492e5cb3b21956d4160f0b911" ) == 0 );
02592         }
02593         FCT_TEST_END();
02594 
02595 
02596         FCT_TEST_BGN(ctr_drbg_nist_validation_aes_256_use_dffalse2561280256_2)
02597         {
02598             unsigned char entropy[512];
02599             unsigned char add_init[512];
02600             unsigned char add1[512];
02601             unsigned char add_reseed[512];
02602             unsigned char add2[512];
02603             ctr_drbg_context ctx;
02604             unsigned char buf[512];
02605             unsigned char output_str[512];
02606             int add_init_len, add1_len, add_reseed_len, add2_len;
02607         
02608             memset( output_str, 0, 512 );
02609         
02610             unhexify( entropy, "e50c31ebbb735c4a53fc0535647ae1fff7a5ac4fa4068ba90f1fa03ca4ddedecd5b1898d5e38185054b0de7e348034b57067a82a478b0057e0c46de4a7280cd9" );
02611             add_init_len = unhexify( add_init, "4b1edd0f53bf4e012def80efd740140b" );
02612             add1_len = unhexify( add1, "e7154ec1f7ac369d0bd41238f603b5315314d1dc82f71191de9e74364226eb09" );
02613             add_reseed_len = unhexify( add_reseed, "9444238bd27c45128a25d55e0734d3adafecccb2c24abdaa50ac2ca479c3830b" );
02614             add2_len = unhexify( add2, "ab2488c8b7e819d8ce5ec1ffb77efc770453970d6b852b496426d5db05c03947" );
02615         
02616             test_offset = 0;
02617             fct_chk( ctr_drbg_init_entropy_len( &ctx, entropy_func, entropy, add_init, add_init_len, 32 ) == 0 );
02618         
02619             fct_chk( ctr_drbg_random_with_add( &ctx, buf, 16, add1, add1_len ) == 0 );
02620             fct_chk( ctr_drbg_reseed( &ctx, add_reseed, add_reseed_len ) == 0 );
02621             fct_chk( ctr_drbg_random_with_add( &ctx, buf, 16, add2, add2_len ) == 0 );
02622             hexify( output_str, buf, 16 );
02623             fct_chk( strcmp( (char *) output_str, "a488a87c04eb1c7586b8141ed45e7761" ) == 0 );
02624         }
02625         FCT_TEST_END();
02626 
02627 
02628         FCT_TEST_BGN(ctr_drbg_nist_validation_aes_256_use_dffalse2561280256_3)
02629         {
02630             unsigned char entropy[512];
02631             unsigned char add_init[512];
02632             unsigned char add1[512];
02633             unsigned char add_reseed[512];
02634             unsigned char add2[512];
02635             ctr_drbg_context ctx;
02636             unsigned char buf[512];
02637             unsigned char output_str[512];
02638             int add_init_len, add1_len, add_reseed_len, add2_len;
02639         
02640             memset( output_str, 0, 512 );
02641         
02642             unhexify( entropy, "5e029c173dc28ab19851a8db008efbcf862f4187fca84e4e6f5ba686e3005dba5b95c5a0bcf78fb35ada347af58ec0aca09ed4799cd8a734739f3c425273e441" );
02643             add_init_len = unhexify( add_init, "1f89c914649ae8a234c0e9230f3460f9" );
02644             add1_len = unhexify( add1, "b51f5fd5888552af0e9b667c2750c79106ce37c00c850afbe3776746d8c3bce1" );
02645             add_reseed_len = unhexify( add_reseed, "9b132a2cbffb8407aa06954ae6ebee265f986666757b5453601207e0cbb4871b" );
02646             add2_len = unhexify( add2, "f1c435e2ebf083a222218ee4602263872a2d3e097b536a8cc32a5a2220b8065f" );
02647         
02648             test_offset = 0;
02649             fct_chk( ctr_drbg_init_entropy_len( &ctx, entropy_func, entropy, add_init, add_init_len, 32 ) == 0 );
02650         
02651             fct_chk( ctr_drbg_random_with_add( &ctx, buf, 16, add1, add1_len ) == 0 );
02652             fct_chk( ctr_drbg_reseed( &ctx, add_reseed, add_reseed_len ) == 0 );
02653             fct_chk( ctr_drbg_random_with_add( &ctx, buf, 16, add2, add2_len ) == 0 );
02654             hexify( output_str, buf, 16 );
02655             fct_chk( strcmp( (char *) output_str, "a065cc203881254ca81bd9595515e705" ) == 0 );
02656         }
02657         FCT_TEST_END();
02658 
02659 
02660         FCT_TEST_BGN(ctr_drbg_nist_validation_aes_256_use_dffalse2561280256_4)
02661         {
02662             unsigned char entropy[512];
02663             unsigned char add_init[512];
02664             unsigned char add1[512];
02665             unsigned char add_reseed[512];
02666             unsigned char add2[512];
02667             ctr_drbg_context ctx;
02668             unsigned char buf[512];
02669             unsigned char output_str[512];
02670             int add_init_len, add1_len, add_reseed_len, add2_len;
02671         
02672             memset( output_str, 0, 512 );
02673         
02674             unhexify( entropy, "b66c882ae02c5215ed3bcd9e9a40934b09bf48a15fe7558c9d9ceb0ebec63625ea18f7c3ab341d9f7edd8e1d8816edecb34dbd71ae02771327b5ebc74613dadd" );
02675             add_init_len = unhexify( add_init, "0ef2be2d00a16051404fc2a0faa74fdc" );
02676             add1_len = unhexify( add1, "1ebe9893957a5c4a707793906d31bb201e88d88a22abd6baa6461fc61def7ffb" );
02677             add_reseed_len = unhexify( add_reseed, "f81e26744834413cb95af8d438d0050c7c968f929a33e35ee5c6715a0a520950" );
02678             add2_len = unhexify( add2, "687a848b2b6c715a0e613b3f3bb16cf2f056543eb9dd6b8aee8de8aa6fd8a1e6" );
02679         
02680             test_offset = 0;
02681             fct_chk( ctr_drbg_init_entropy_len( &ctx, entropy_func, entropy, add_init, add_init_len, 32 ) == 0 );
02682         
02683             fct_chk( ctr_drbg_random_with_add( &ctx, buf, 16, add1, add1_len ) == 0 );
02684             fct_chk( ctr_drbg_reseed( &ctx, add_reseed, add_reseed_len ) == 0 );
02685             fct_chk( ctr_drbg_random_with_add( &ctx, buf, 16, add2, add2_len ) == 0 );
02686             hexify( output_str, buf, 16 );
02687             fct_chk( strcmp( (char *) output_str, "a6c4a7e99d08cc847ac0b8c8bcf22ec0" ) == 0 );
02688         }
02689         FCT_TEST_END();
02690 
02691 
02692         FCT_TEST_BGN(ctr_drbg_nist_validation_aes_256_use_dffalse2561280256_5)
02693         {
02694             unsigned char entropy[512];
02695             unsigned char add_init[512];
02696             unsigned char add1[512];
02697             unsigned char add_reseed[512];
02698             unsigned char add2[512];
02699             ctr_drbg_context ctx;
02700             unsigned char buf[512];
02701             unsigned char output_str[512];
02702             int add_init_len, add1_len, add_reseed_len, add2_len;
02703         
02704             memset( output_str, 0, 512 );
02705         
02706             unhexify( entropy, "ad153fd266d9f73b21f4e5e88d3d13ba8325abdec427d5d8f671cfccdbd3510e9774d59a14d9b5472b217b7bcf355436a51965d2dff7c4ac586ab812f20d326e" );
02707             add_init_len = unhexify( add_init, "eb2439d156c4f51fb1943c26f27de8af" );
02708             add1_len = unhexify( add1, "e24bd6b69a40fa0a02cefbbaa282f8f63a80e154be338d1b913418d4ff7a810d" );
02709             add_reseed_len = unhexify( add_reseed, "fd40baf11d7cdd77641a2b46916cb0c12980e02612ef59fb6fe7dabbbe7a85c0" );
02710             add2_len = unhexify( add2, "a40019e3b85d7d5775e793dd4c09b2bdc8253694b1dcb73e63a18b066a7f7d0c" );
02711         
02712             test_offset = 0;
02713             fct_chk( ctr_drbg_init_entropy_len( &ctx, entropy_func, entropy, add_init, add_init_len, 32 ) == 0 );
02714         
02715             fct_chk( ctr_drbg_random_with_add( &ctx, buf, 16, add1, add1_len ) == 0 );
02716             fct_chk( ctr_drbg_reseed( &ctx, add_reseed, add_reseed_len ) == 0 );
02717             fct_chk( ctr_drbg_random_with_add( &ctx, buf, 16, add2, add2_len ) == 0 );
02718             hexify( output_str, buf, 16 );
02719             fct_chk( strcmp( (char *) output_str, "7cd8d2710147a0b7f053bb271edf07b5" ) == 0 );
02720         }
02721         FCT_TEST_END();
02722 
02723 
02724         FCT_TEST_BGN(ctr_drbg_nist_validation_aes_256_use_dffalse2561280256_6)
02725         {
02726             unsigned char entropy[512];
02727             unsigned char add_init[512];
02728             unsigned char add1[512];
02729             unsigned char add_reseed[512];
02730             unsigned char add2[512];
02731             ctr_drbg_context ctx;
02732             unsigned char buf[512];
02733             unsigned char output_str[512];
02734             int add_init_len, add1_len, add_reseed_len, add2_len;
02735         
02736             memset( output_str, 0, 512 );
02737         
02738             unhexify( entropy, "b249d2d9b269b58c5355710aaae98be12d8fb2e79046b4e6deeec28adad7e789999847e20de11f7c3277216374f117e3e006bdf99bb8631aa4c4c542cd482840" );
02739             add_init_len = unhexify( add_init, "b23796d88ee5ae75ff2ba4fbbd5e2de8" );
02740             add1_len = unhexify( add1, "79f0214b6b0c5ffb21b1d521498b71d22c67be4607c16300ab8dde3b52498097" );
02741             add_reseed_len = unhexify( add_reseed, "582be1e080264b3e68ec184347a5b6db1e8be1811578206e14ad84029fe39f71" );
02742             add2_len = unhexify( add2, "f5e9c3356810793f461f889d8c5003b1c0b20a284cb348301ce7b2dd7a1c7dd7" );
02743         
02744             test_offset = 0;
02745             fct_chk( ctr_drbg_init_entropy_len( &ctx, entropy_func, entropy, add_init, add_init_len, 32 ) == 0 );
02746         
02747             fct_chk( ctr_drbg_random_with_add( &ctx, buf, 16, add1, add1_len ) == 0 );
02748             fct_chk( ctr_drbg_reseed( &ctx, add_reseed, add_reseed_len ) == 0 );
02749             fct_chk( ctr_drbg_random_with_add( &ctx, buf, 16, add2, add2_len ) == 0 );
02750             hexify( output_str, buf, 16 );
02751             fct_chk( strcmp( (char *) output_str, "1aa8cf54994be6b329e9eb897007abf0" ) == 0 );
02752         }
02753         FCT_TEST_END();
02754 
02755 
02756         FCT_TEST_BGN(ctr_drbg_nist_validation_aes_256_use_dffalse2561280256_7)
02757         {
02758             unsigned char entropy[512];
02759             unsigned char add_init[512];
02760             unsigned char add1[512];
02761             unsigned char add_reseed[512];
02762             unsigned char add2[512];
02763             ctr_drbg_context ctx;
02764             unsigned char buf[512];
02765             unsigned char output_str[512];
02766             int add_init_len, add1_len, add_reseed_len, add2_len;
02767         
02768             memset( output_str, 0, 512 );
02769         
02770             unhexify( entropy, "3f1e90d88870a0bd03364036b655495e3e7d51bf67fb64ba0cbf003430af5585f5936b84ab3b8a55c02b8b6c54bea09cf2d77691858c5818991383add5f0c644" );
02771             add_init_len = unhexify( add_init, "081db0b1620a56afd87c2fd2bebb1db3" );
02772             add1_len = unhexify( add1, "5b98bc83ae8bed5c49cb71689dc39fee38d5d08bdfa2a01cee9d61e9f3d1e115" );
02773             add_reseed_len = unhexify( add_reseed, "aad3e58fdd98aa60fc2cae0df3fc734fff01a07f29f69c5ffeb96d299200d0d8" );
02774             add2_len = unhexify( add2, "bad9039ebb7c3a44061353542a2b1c1a89b3e9b493e9f59e438bfc80de3d1836" );
02775         
02776             test_offset = 0;
02777             fct_chk( ctr_drbg_init_entropy_len( &ctx, entropy_func, entropy, add_init, add_init_len, 32 ) == 0 );
02778         
02779             fct_chk( ctr_drbg_random_with_add( &ctx, buf, 16, add1, add1_len ) == 0 );
02780             fct_chk( ctr_drbg_reseed( &ctx, add_reseed, add_reseed_len ) == 0 );
02781             fct_chk( ctr_drbg_random_with_add( &ctx, buf, 16, add2, add2_len ) == 0 );
02782             hexify( output_str, buf, 16 );
02783             fct_chk( strcmp( (char *) output_str, "8d01e3dc48b28f016fc34655c54be81f" ) == 0 );
02784         }
02785         FCT_TEST_END();
02786 
02787 
02788         FCT_TEST_BGN(ctr_drbg_nist_validation_aes_256_use_dffalse2561280256_8)
02789         {
02790             unsigned char entropy[512];
02791             unsigned char add_init[512];
02792             unsigned char add1[512];
02793             unsigned char add_reseed[512];
02794             unsigned char add2[512];
02795             ctr_drbg_context ctx;
02796             unsigned char buf[512];
02797             unsigned char output_str[512];
02798             int add_init_len, add1_len, add_reseed_len, add2_len;
02799         
02800             memset( output_str, 0, 512 );
02801         
02802             unhexify( entropy, "b0e9b2192adc8912653d90a634d5d40c53ca4383290a8764bdf92667f859d833c3e72ad0ff41e07fe257b1ead11649be655c58a5df233114e7eda2558b7214d7" );
02803             add_init_len = unhexify( add_init, "a8427443d9c34abcdcca061a2bbcff52" );
02804             add1_len = unhexify( add1, "c6cad9fb17ada437d195d1f8b6a7fa463e20050e94024170d2ffc34b80a50108" );
02805             add_reseed_len = unhexify( add_reseed, "be461a9c1a72ebaf28ee732219e3ca54cbee36921daaa946917a7c63279a6b0e" );
02806             add2_len = unhexify( add2, "b6d110d6b746d7ccf7a48a4337ba341d52508d0336d017ae20377977163c1a20" );
02807         
02808             test_offset = 0;
02809             fct_chk( ctr_drbg_init_entropy_len( &ctx, entropy_func, entropy, add_init, add_init_len, 32 ) == 0 );
02810         
02811             fct_chk( ctr_drbg_random_with_add( &ctx, buf, 16, add1, add1_len ) == 0 );
02812             fct_chk( ctr_drbg_reseed( &ctx, add_reseed, add_reseed_len ) == 0 );
02813             fct_chk( ctr_drbg_random_with_add( &ctx, buf, 16, add2, add2_len ) == 0 );
02814             hexify( output_str, buf, 16 );
02815             fct_chk( strcmp( (char *) output_str, "16ccd63dbf7b24b6b427126b863f7c86" ) == 0 );
02816         }
02817         FCT_TEST_END();
02818 
02819 
02820         FCT_TEST_BGN(ctr_drbg_nist_validation_aes_256_use_dffalse2561280256_9)
02821         {
02822             unsigned char entropy[512];
02823             unsigned char add_init[512];
02824             unsigned char add1[512];
02825             unsigned char add_reseed[512];
02826             unsigned char add2[512];
02827             ctr_drbg_context ctx;
02828             unsigned char buf[512];
02829             unsigned char output_str[512];
02830             int add_init_len, add1_len, add_reseed_len, add2_len;
02831         
02832             memset( output_str, 0, 512 );
02833         
02834             unhexify( entropy, "89900b0febf6b4e19ab8fc5babb4122a8aad86d658d0c2f98988c99fbd8530ff4ad365bd5fddaa15f96537bd72deb5384405b610e6ebae83e848307051fd6c82" );
02835             add_init_len = unhexify( add_init, "86bd02976e6c50656372b8c212cf0a7a" );
02836             add1_len = unhexify( add1, "41bf3794ee54647a48a2588fdfdea686f1af6792e957d42f181f2631b207ac0c" );
02837             add_reseed_len = unhexify( add_reseed, "c4478afbea4eecb225448f069b02a74c2a222698c68e37eb144aff9e457f9610" );
02838             add2_len = unhexify( add2, "41a99e0d3f5b767f9bedcb2f878a5d99d42856bed29042d568b04e347624bf7f" );
02839         
02840             test_offset = 0;
02841             fct_chk( ctr_drbg_init_entropy_len( &ctx, entropy_func, entropy, add_init, add_init_len, 32 ) == 0 );
02842         
02843             fct_chk( ctr_drbg_random_with_add( &ctx, buf, 16, add1, add1_len ) == 0 );
02844             fct_chk( ctr_drbg_reseed( &ctx, add_reseed, add_reseed_len ) == 0 );
02845             fct_chk( ctr_drbg_random_with_add( &ctx, buf, 16, add2, add2_len ) == 0 );
02846             hexify( output_str, buf, 16 );
02847             fct_chk( strcmp( (char *) output_str, "863337529aac9ab1e9f7f8187ea7aa7d" ) == 0 );
02848         }
02849         FCT_TEST_END();
02850 
02851 
02852         FCT_TEST_BGN(ctr_drbg_nist_validation_aes_256_use_dffalse2561280256_10)
02853         {
02854             unsigned char entropy[512];
02855             unsigned char add_init[512];
02856             unsigned char add1[512];
02857             unsigned char add_reseed[512];
02858             unsigned char add2[512];
02859             ctr_drbg_context ctx;
02860             unsigned char buf[512];
02861             unsigned char output_str[512];
02862             int add_init_len, add1_len, add_reseed_len, add2_len;
02863         
02864             memset( output_str, 0, 512 );
02865         
02866             unhexify( entropy, "3e831b7715ce202c95ec85337e2c0061d972169955bd96fbe1f758508c0336b3226260ea5e66f943b538eb115ffe4d5e534cbe58262a610528641629bc12fc75" );
02867             add_init_len = unhexify( add_init, "e809ef8d4c3d82575833d51ac69481b2" );
02868             add1_len = unhexify( add1, "4d40c6a961168445c1691fea02ebd693cb4b3f74b03d45a350c65f0aaccb118b" );
02869             add_reseed_len = unhexify( add_reseed, "b07dc50e6ca7544ed6fdebd8f00ed5fa9b1f2213b477de8568eb92dddaabfe3f" );
02870             add2_len = unhexify( add2, "cbac982aa9f1830d0dc7373d9907670f561642adb1888f66b4150d3487bf0b8d" );
02871         
02872             test_offset = 0;
02873             fct_chk( ctr_drbg_init_entropy_len( &ctx, entropy_func, entropy, add_init, add_init_len, 32 ) == 0 );
02874         
02875             fct_chk( ctr_drbg_random_with_add( &ctx, buf, 16, add1, add1_len ) == 0 );
02876             fct_chk( ctr_drbg_reseed( &ctx, add_reseed, add_reseed_len ) == 0 );
02877             fct_chk( ctr_drbg_random_with_add( &ctx, buf, 16, add2, add2_len ) == 0 );
02878             hexify( output_str, buf, 16 );
02879             fct_chk( strcmp( (char *) output_str, "2814be767d79778ebb82a096976f30db" ) == 0 );
02880         }
02881         FCT_TEST_END();
02882 
02883 
02884         FCT_TEST_BGN(ctr_drbg_nist_validation_aes_256_use_dffalse2561280256_11)
02885         {
02886             unsigned char entropy[512];
02887             unsigned char add_init[512];
02888             unsigned char add1[512];
02889             unsigned char add_reseed[512];
02890             unsigned char add2[512];
02891             ctr_drbg_context ctx;
02892             unsigned char buf[512];
02893             unsigned char output_str[512];
02894             int add_init_len, add1_len, add_reseed_len, add2_len;
02895         
02896             memset( output_str, 0, 512 );
02897         
02898             unhexify( entropy, "6a3fd23e7dc934e6de6eb4cc846c0dc3cf35ea4be3f561c34666aed1bbd6331004afba5a5b83fff1e7b8a957fbee7cd9f8142326c796ca129ec9fbacf295b882" );
02899             add_init_len = unhexify( add_init, "ad71caa50420d213b25f5558e0dc1170" );
02900             add1_len = unhexify( add1, "3042dd041b89aaa61f185fdda706c77667515c037f2a88c6d47f23ddadc828ae" );
02901             add_reseed_len = unhexify( add_reseed, "9b1e3f72aaab66b202f17c5cc075cfba7242817b2b38c19fe8924ca325b826ea" );
02902             add2_len = unhexify( add2, "8660b503329aaea56acdb73ca83763299bac0f30264702cb9d52cbaf3d71d69d" );
02903         
02904             test_offset = 0;
02905             fct_chk( ctr_drbg_init_entropy_len( &ctx, entropy_func, entropy, add_init, add_init_len, 32 ) == 0 );
02906         
02907             fct_chk( ctr_drbg_random_with_add( &ctx, buf, 16, add1, add1_len ) == 0 );
02908             fct_chk( ctr_drbg_reseed( &ctx, add_reseed, add_reseed_len ) == 0 );
02909             fct_chk( ctr_drbg_random_with_add( &ctx, buf, 16, add2, add2_len ) == 0 );
02910             hexify( output_str, buf, 16 );
02911             fct_chk( strcmp( (char *) output_str, "c204a3174784d82b664e9a1c0a13ffa6" ) == 0 );
02912         }
02913         FCT_TEST_END();
02914 
02915 
02916         FCT_TEST_BGN(ctr_drbg_nist_validation_aes_256_use_dffalse2561280256_12)
02917         {
02918             unsigned char entropy[512];
02919             unsigned char add_init[512];
02920             unsigned char add1[512];
02921             unsigned char add_reseed[512];
02922             unsigned char add2[512];
02923             ctr_drbg_context ctx;
02924             unsigned char buf[512];
02925             unsigned char output_str[512];
02926             int add_init_len, add1_len, add_reseed_len, add2_len;
02927         
02928             memset( output_str, 0, 512 );
02929         
02930             unhexify( entropy, "baf8750e07194fc7172c736e0fdea0a632810d45602dff17ce37adf106d652f87e31b6bd24d21481c86444d8109586118672a6f93731b7438a3f0f39648b83a3" );
02931             add_init_len = unhexify( add_init, "5fd6606b08e7e625af788814bef7f263" );
02932             add1_len = unhexify( add1, "3c37193d40e79ce8d569d8aa7ef80aabaa294f1b6d5a8341805f5ac67a6abf42" );
02933             add_reseed_len = unhexify( add_reseed, "c7033b3b68be178d120379e7366980d076c73280e629dd6e82f5af1af258931b" );
02934             add2_len = unhexify( add2, "452218a426a58463940785a67cb34799a1787f39d376c9e56e4a3f2215785dad" );
02935         
02936             test_offset = 0;
02937             fct_chk( ctr_drbg_init_entropy_len( &ctx, entropy_func, entropy, add_init, add_init_len, 32 ) == 0 );
02938         
02939             fct_chk( ctr_drbg_random_with_add( &ctx, buf, 16, add1, add1_len ) == 0 );
02940             fct_chk( ctr_drbg_reseed( &ctx, add_reseed, add_reseed_len ) == 0 );
02941             fct_chk( ctr_drbg_random_with_add( &ctx, buf, 16, add2, add2_len ) == 0 );
02942             hexify( output_str, buf, 16 );
02943             fct_chk( strcmp( (char *) output_str, "561e16a8b297e458c4ec39ba43f0b67e" ) == 0 );
02944         }
02945         FCT_TEST_END();
02946 
02947 
02948         FCT_TEST_BGN(ctr_drbg_nist_validation_aes_256_use_dffalse2561280256_13)
02949         {
02950             unsigned char entropy[512];
02951             unsigned char add_init[512];
02952             unsigned char add1[512];
02953             unsigned char add_reseed[512];
02954             unsigned char add2[512];
02955             ctr_drbg_context ctx;
02956             unsigned char buf[512];
02957             unsigned char output_str[512];
02958             int add_init_len, add1_len, add_reseed_len, add2_len;
02959         
02960             memset( output_str, 0, 512 );
02961         
02962             unhexify( entropy, "6697f889fcf6dae16881dc1e540e5c07f9461d409acee31842b04f93c00efbba670dfbf6040c1c2e29ad89064eae283fd6d431832f356e492bc5b2049f229892" );
02963             add_init_len = unhexify( add_init, "08def734914ecf74b9eccb5dfaa045b8" );
02964             add1_len = unhexify( add1, "a6ac87af21efd3508990aac51d36243d46237b3755a0e68680adb59e19e8ae23" );
02965             add_reseed_len = unhexify( add_reseed, "0052152872b21615775431eb51889a264fed6ca44fa0436b72a419b91f92604c" );
02966             add2_len = unhexify( add2, "ebadf71565d9a8cc2621403c36e6411e7bed67193a843b90ccf2f7aa9f229ca2" );
02967         
02968             test_offset = 0;
02969             fct_chk( ctr_drbg_init_entropy_len( &ctx, entropy_func, entropy, add_init, add_init_len, 32 ) == 0 );
02970         
02971             fct_chk( ctr_drbg_random_with_add( &ctx, buf, 16, add1, add1_len ) == 0 );
02972             fct_chk( ctr_drbg_reseed( &ctx, add_reseed, add_reseed_len ) == 0 );
02973             fct_chk( ctr_drbg_random_with_add( &ctx, buf, 16, add2, add2_len ) == 0 );
02974             hexify( output_str, buf, 16 );
02975             fct_chk( strcmp( (char *) output_str, "c83fa5df210b63f4bf4a0aca63650aab" ) == 0 );
02976         }
02977         FCT_TEST_END();
02978 
02979 
02980         FCT_TEST_BGN(ctr_drbg_nist_validation_aes_256_use_dffalse2561280256_14)
02981         {
02982             unsigned char entropy[512];
02983             unsigned char add_init[512];
02984             unsigned char add1[512];
02985             unsigned char add_reseed[512];
02986             unsigned char add2[512];
02987             ctr_drbg_context ctx;
02988             unsigned char buf[512];
02989             unsigned char output_str[512];
02990             int add_init_len, add1_len, add_reseed_len, add2_len;
02991         
02992             memset( output_str, 0, 512 );
02993         
02994             unhexify( entropy, "719d1afcb6dc8ca26cba6a7c10f59cf82345b2a0c631a7879812d6f2d2663b49f9e92daecb81ff7c0790205d66694526477d6de54a269f542cb5e77fe4bc8db3" );
02995             add_init_len = unhexify( add_init, "6437862e93060def199029ff2182f1e5" );
02996             add1_len = unhexify( add1, "5c961db0ac2ea8caf62c9acc44465dcfb4d721fcb2cd3e1c76cdcb61bfaa7e75" );
02997             add_reseed_len = unhexify( add_reseed, "24eabd392d37493e306705d0b287be11a4d72dd4b9577ac4098ef0dae69b0000" );
02998             add2_len = unhexify( add2, "9e4f05c1b85613e97958bc3863e521331b2bd78fdf2585f84607bf2238e82415" );
02999         
03000             test_offset = 0;
03001             fct_chk( ctr_drbg_init_entropy_len( &ctx, entropy_func, entropy, add_init, add_init_len, 32 ) == 0 );
03002         
03003             fct_chk( ctr_drbg_random_with_add( &ctx, buf, 16, add1, add1_len ) == 0 );
03004             fct_chk( ctr_drbg_reseed( &ctx, add_reseed, add_reseed_len ) == 0 );
03005             fct_chk( ctr_drbg_random_with_add( &ctx, buf, 16, add2, add2_len ) == 0 );
03006             hexify( output_str, buf, 16 );
03007             fct_chk( strcmp( (char *) output_str, "21aaae76dc97c9bf7cf858054839653e" ) == 0 );
03008         }
03009         FCT_TEST_END();
03010 
03011 
03012         FCT_TEST_BGN(ctr_drbg_nist_validation_aes_256_use_dffalse2561282560_0)
03013         {
03014             unsigned char entropy[512];
03015             unsigned char add_init[512];
03016             unsigned char add1[512];
03017             unsigned char add_reseed[512];
03018             unsigned char add2[512];
03019             ctr_drbg_context ctx;
03020             unsigned char buf[512];
03021             unsigned char output_str[512];
03022             int add_init_len, add1_len, add_reseed_len, add2_len;
03023         
03024             memset( output_str, 0, 512 );
03025         
03026             unhexify( entropy, "7f88c3805ae0857c5cbb085a5d6259d26fb3a88dfe7084172ec959066f26296a800953ce19a24785b6acef451c4ce4c2dfb565cbe057f21b054a28633afbdd97" );
03027             add_init_len = unhexify( add_init, "cd7a1981c1b7079c1c38f5aeee86db22207cb9faed8c576b1724ca7817aa6abfb26c42a019eb4c2f4064f0587ea2b952" );
03028             add1_len = unhexify( add1, "" );
03029             add_reseed_len = unhexify( add_reseed, "" );
03030             add2_len = unhexify( add2, "" );
03031         
03032             test_offset = 0;
03033             fct_chk( ctr_drbg_init_entropy_len( &ctx, entropy_func, entropy, add_init, add_init_len, 32 ) == 0 );
03034         
03035             fct_chk( ctr_drbg_random_with_add( &ctx, buf, 16, add1, add1_len ) == 0 );
03036             fct_chk( ctr_drbg_reseed( &ctx, add_reseed, add_reseed_len ) == 0 );
03037             fct_chk( ctr_drbg_random_with_add( &ctx, buf, 16, add2, add2_len ) == 0 );
03038             hexify( output_str, buf, 16 );
03039             fct_chk( strcmp( (char *) output_str, "76c1cdb0b95af271b52ac3b0c9289146" ) == 0 );
03040         }
03041         FCT_TEST_END();
03042 
03043 
03044         FCT_TEST_BGN(ctr_drbg_nist_validation_aes_256_use_dffalse2561282560_1)
03045         {
03046             unsigned char entropy[512];
03047             unsigned char add_init[512];
03048             unsigned char add1[512];
03049             unsigned char add_reseed[512];
03050             unsigned char add2[512];
03051             ctr_drbg_context ctx;
03052             unsigned char buf[512];
03053             unsigned char output_str[512];
03054             int add_init_len, add1_len, add_reseed_len, add2_len;
03055         
03056             memset( output_str, 0, 512 );
03057         
03058             unhexify( entropy, "6f61703f92d3192cd982b2e52a8683e0d62918d51b12e084deae06c4a8e08ecfb3d2d30a980a70b083710bc45d9d407966b52829cf3813cc970b859aa4c871fe" );
03059             add_init_len = unhexify( add_init, "0ccdac2fd65a86bf8f8e9ddcabffb9d29a935139f627c165a815b23137eeee94cbb21be86ac5117379177d37728db6fd" );
03060             add1_len = unhexify( add1, "" );
03061             add_reseed_len = unhexify( add_reseed, "" );
03062             add2_len = unhexify( add2, "" );
03063         
03064             test_offset = 0;
03065             fct_chk( ctr_drbg_init_entropy_len( &ctx, entropy_func, entropy, add_init, add_init_len, 32 ) == 0 );
03066         
03067             fct_chk( ctr_drbg_random_with_add( &ctx, buf, 16, add1, add1_len ) == 0 );
03068             fct_chk( ctr_drbg_reseed( &ctx, add_reseed, add_reseed_len ) == 0 );
03069             fct_chk( ctr_drbg_random_with_add( &ctx, buf, 16, add2, add2_len ) == 0 );
03070             hexify( output_str, buf, 16 );
03071             fct_chk( strcmp( (char *) output_str, "e6c73e159d73c2ba8950cd77acb39c10" ) == 0 );
03072         }
03073         FCT_TEST_END();
03074 
03075 
03076         FCT_TEST_BGN(ctr_drbg_nist_validation_aes_256_use_dffalse2561282560_2)
03077         {
03078             unsigned char entropy[512];
03079             unsigned char add_init[512];
03080             unsigned char add1[512];
03081             unsigned char add_reseed[512];
03082             unsigned char add2[512];
03083             ctr_drbg_context ctx;
03084             unsigned char buf[512];
03085             unsigned char output_str[512];
03086             int add_init_len, add1_len, add_reseed_len, add2_len;
03087         
03088             memset( output_str, 0, 512 );
03089         
03090             unhexify( entropy, "c662ed723e7041877542fdcf629533d4a74393eb4dae4f3ec06d2d1c0d37ed7f519609a8485cb8deb578ae4cbb45c98ef7f2f2e677363e89fb3744286db6bfc1" );
03091             add_init_len = unhexify( add_init, "fbbcc4abfd671296de3e0dcf409a139e35deae126c1941bf1afcc8d3da3a2d65f54a6d317bb6d683a3a77f6266b007ff" );
03092             add1_len = unhexify( add1, "" );
03093             add_reseed_len = unhexify( add_reseed, "" );
03094             add2_len = unhexify( add2, "" );
03095         
03096             test_offset = 0;
03097             fct_chk( ctr_drbg_init_entropy_len( &ctx, entropy_func, entropy, add_init, add_init_len, 32 ) == 0 );
03098         
03099             fct_chk( ctr_drbg_random_with_add( &ctx, buf, 16, add1, add1_len ) == 0 );
03100             fct_chk( ctr_drbg_reseed( &ctx, add_reseed, add_reseed_len ) == 0 );
03101             fct_chk( ctr_drbg_random_with_add( &ctx, buf, 16, add2, add2_len ) == 0 );
03102             hexify( output_str, buf, 16 );
03103             fct_chk( strcmp( (char *) output_str, "9d934d34417c6d0858f4a3faacbe759e" ) == 0 );
03104         }
03105         FCT_TEST_END();
03106 
03107 
03108         FCT_TEST_BGN(ctr_drbg_nist_validation_aes_256_use_dffalse2561282560_3)
03109         {
03110             unsigned char entropy[512];
03111             unsigned char add_init[512];
03112             unsigned char add1[512];
03113             unsigned char add_reseed[512];
03114             unsigned char add2[512];
03115             ctr_drbg_context ctx;
03116             unsigned char buf[512];
03117             unsigned char output_str[512];
03118             int add_init_len, add1_len, add_reseed_len, add2_len;
03119         
03120             memset( output_str, 0, 512 );
03121         
03122             unhexify( entropy, "c57a5686486ebacc2422236b19110c754795a869a8157901cf71303de1adc6af16a952190a395d6c20e155e690f41922f6f721dc8e93da81afb844f68714cba7" );
03123             add_init_len = unhexify( add_init, "1b824790b6b22b246bcc1bcfbbb61a76045476672f917b72e79cca358e650eb29ed49fb0a5739e097f5f5336d46fc619" );
03124             add1_len = unhexify( add1, "" );
03125             add_reseed_len = unhexify( add_reseed, "" );
03126             add2_len = unhexify( add2, "" );
03127         
03128             test_offset = 0;
03129             fct_chk( ctr_drbg_init_entropy_len( &ctx, entropy_func, entropy, add_init, add_init_len, 32 ) == 0 );
03130         
03131             fct_chk( ctr_drbg_random_with_add( &ctx, buf, 16, add1, add1_len ) == 0 );
03132             fct_chk( ctr_drbg_reseed( &ctx, add_reseed, add_reseed_len ) == 0 );
03133             fct_chk( ctr_drbg_random_with_add( &ctx, buf, 16, add2, add2_len ) == 0 );
03134             hexify( output_str, buf, 16 );
03135             fct_chk( strcmp( (char *) output_str, "13e7bf23d88f3bb5a5106a8227c8c456" ) == 0 );
03136         }
03137         FCT_TEST_END();
03138 
03139 
03140         FCT_TEST_BGN(ctr_drbg_nist_validation_aes_256_use_dffalse2561282560_4)
03141         {
03142             unsigned char entropy[512];
03143             unsigned char add_init[512];
03144             unsigned char add1[512];
03145             unsigned char add_reseed[512];
03146             unsigned char add2[512];
03147             ctr_drbg_context ctx;
03148             unsigned char buf[512];
03149             unsigned char output_str[512];
03150             int add_init_len, add1_len, add_reseed_len, add2_len;
03151         
03152             memset( output_str, 0, 512 );
03153         
03154             unhexify( entropy, "6a0873634094be7028b885c345cd5016295eec5e524f069de6510ae8ac843dba2cc05c10baa8aad75eac8e8d1a8570f4d2a3cf718914a199deb3edf8c993a822" );
03155             add_init_len = unhexify( add_init, "2ea7861e374232cb8ceecbbd9a18fc1f63c31f833fe394f1e19c8ef61092a56f28342fa5b591f7b951583d50c12ef081" );
03156             add1_len = unhexify( add1, "" );
03157             add_reseed_len = unhexify( add_reseed, "" );
03158             add2_len = unhexify( add2, "" );
03159         
03160             test_offset = 0;
03161             fct_chk( ctr_drbg_init_entropy_len( &ctx, entropy_func, entropy, add_init, add_init_len, 32 ) == 0 );
03162         
03163             fct_chk( ctr_drbg_random_with_add( &ctx, buf, 16, add1, add1_len ) == 0 );
03164             fct_chk( ctr_drbg_reseed( &ctx, add_reseed, add_reseed_len ) == 0 );
03165             fct_chk( ctr_drbg_random_with_add( &ctx, buf, 16, add2, add2_len ) == 0 );
03166             hexify( output_str, buf, 16 );
03167             fct_chk( strcmp( (char *) output_str, "c008f46a242ae0babad17268c9e0839a" ) == 0 );
03168         }
03169         FCT_TEST_END();
03170 
03171 
03172         FCT_TEST_BGN(ctr_drbg_nist_validation_aes_256_use_dffalse2561282560_5)
03173         {
03174             unsigned char entropy[512];
03175             unsigned char add_init[512];
03176             unsigned char add1[512];
03177             unsigned char add_reseed[512];
03178             unsigned char add2[512];
03179             ctr_drbg_context ctx;
03180             unsigned char buf[512];
03181             unsigned char output_str[512];
03182             int add_init_len, add1_len, add_reseed_len, add2_len;
03183         
03184             memset( output_str, 0, 512 );
03185         
03186             unhexify( entropy, "f2059f7fb797e8e22de14dac783c56942a33d092c1ab68a762528ae8d74b7ad0690694ede462edbd6527550677b6d080d80cdabe51c963d5d6830a4ae04c993f" );
03187             add_init_len = unhexify( add_init, "39caa986b82b5303d98e07b211ddc5ce89a67506095cad1aeed63b8bfe0d9c3d3c906f0c05cfb6b26bab4af7d03c9e1a" );
03188             add1_len = unhexify( add1, "" );
03189             add_reseed_len = unhexify( add_reseed, "" );
03190             add2_len = unhexify( add2, "" );
03191         
03192             test_offset = 0;
03193             fct_chk( ctr_drbg_init_entropy_len( &ctx, entropy_func, entropy, add_init, add_init_len, 32 ) == 0 );
03194         
03195             fct_chk( ctr_drbg_random_with_add( &ctx, buf, 16, add1, add1_len ) == 0 );
03196             fct_chk( ctr_drbg_reseed( &ctx, add_reseed, add_reseed_len ) == 0 );
03197             fct_chk( ctr_drbg_random_with_add( &ctx, buf, 16, add2, add2_len ) == 0 );
03198             hexify( output_str, buf, 16 );
03199             fct_chk( strcmp( (char *) output_str, "202d3b2870be8f29b518f2e3e52f1564" ) == 0 );
03200         }
03201         FCT_TEST_END();
03202 
03203 
03204         FCT_TEST_BGN(ctr_drbg_nist_validation_aes_256_use_dffalse2561282560_6)
03205         {
03206             unsigned char entropy[512];
03207             unsigned char add_init[512];
03208             unsigned char add1[512];
03209             unsigned char add_reseed[512];
03210             unsigned char add2[512];
03211             ctr_drbg_context ctx;
03212             unsigned char buf[512];
03213             unsigned char output_str[512];
03214             int add_init_len, add1_len, add_reseed_len, add2_len;
03215         
03216             memset( output_str, 0, 512 );
03217         
03218             unhexify( entropy, "0a03b7d026fab3773e9724dacb436197954b770eca3060535f2f8152aa136942915304dede1de0f5e89bd91d8e92531b5e39373013628fea4ee7622b9255d179" );
03219             add_init_len = unhexify( add_init, "a4e25102c1b04bafd66bfe1ce4a4b340797f776f54a2b3afe351eede44e75c28e3525155f837e7974269d398048c83c3" );
03220             add1_len = unhexify( add1, "" );
03221             add_reseed_len = unhexify( add_reseed, "" );
03222             add2_len = unhexify( add2, "" );
03223         
03224             test_offset = 0;
03225             fct_chk( ctr_drbg_init_entropy_len( &ctx, entropy_func, entropy, add_init, add_init_len, 32 ) == 0 );
03226         
03227             fct_chk( ctr_drbg_random_with_add( &ctx, buf, 16, add1, add1_len ) == 0 );
03228             fct_chk( ctr_drbg_reseed( &ctx, add_reseed, add_reseed_len ) == 0 );
03229             fct_chk( ctr_drbg_random_with_add( &ctx, buf, 16, add2, add2_len ) == 0 );
03230             hexify( output_str, buf, 16 );
03231             fct_chk( strcmp( (char *) output_str, "be21cab637218ddffa3510c86271db7f" ) == 0 );
03232         }
03233         FCT_TEST_END();
03234 
03235 
03236         FCT_TEST_BGN(ctr_drbg_nist_validation_aes_256_use_dffalse2561282560_7)
03237         {
03238             unsigned char entropy[512];
03239             unsigned char add_init[512];
03240             unsigned char add1[512];
03241             unsigned char add_reseed[512];
03242             unsigned char add2[512];
03243             ctr_drbg_context ctx;
03244             unsigned char buf[512];
03245             unsigned char output_str[512];
03246             int add_init_len, add1_len, add_reseed_len, add2_len;
03247         
03248             memset( output_str, 0, 512 );
03249         
03250             unhexify( entropy, "d88312da6acbe792d087012c0bf3c83f363fa6b7a9dd45c3501009fb47b4cfcfeb7b31386155fe3b967f46e2898a00ecf51ec38b6e420852bef0a16081d778cc" );
03251             add_init_len = unhexify( add_init, "6de33a116425ebfe01f0a0124ad3fad382ca28473f5fc53885639788f9b1a470ab523b649bad87e76dee768f6abacb55" );
03252             add1_len = unhexify( add1, "" );
03253             add_reseed_len = unhexify( add_reseed, "" );
03254             add2_len = unhexify( add2, "" );
03255         
03256             test_offset = 0;
03257             fct_chk( ctr_drbg_init_entropy_len( &ctx, entropy_func, entropy, add_init, add_init_len, 32 ) == 0 );
03258         
03259             fct_chk( ctr_drbg_random_with_add( &ctx, buf, 16, add1, add1_len ) == 0 );
03260             fct_chk( ctr_drbg_reseed( &ctx, add_reseed, add_reseed_len ) == 0 );
03261             fct_chk( ctr_drbg_random_with_add( &ctx, buf, 16, add2, add2_len ) == 0 );
03262             hexify( output_str, buf, 16 );
03263             fct_chk( strcmp( (char *) output_str, "2c285bfd758f0156e782bb4467f6832c" ) == 0 );
03264         }
03265         FCT_TEST_END();
03266 
03267 
03268         FCT_TEST_BGN(ctr_drbg_nist_validation_aes_256_use_dffalse2561282560_8)
03269         {
03270             unsigned char entropy[512];
03271             unsigned char add_init[512];
03272             unsigned char add1[512];
03273             unsigned char add_reseed[512];
03274             unsigned char add2[512];
03275             ctr_drbg_context ctx;
03276             unsigned char buf[512];
03277             unsigned char output_str[512];
03278             int add_init_len, add1_len, add_reseed_len, add2_len;
03279         
03280             memset( output_str, 0, 512 );
03281         
03282             unhexify( entropy, "6a7873ccb7afb140e923acbec8256fa78232f40c0c8ba3dcbcf7074d26d6d18a7e78fffda328f097706b6d358048ee6a4728c92a6f62b3f2730a753b7bf5ec1f" );
03283             add_init_len = unhexify( add_init, "b8ab42fd3f6306426602cae0c48eb02ffa7053940389900c17846e1d9726251762095383f2ec3406b3381d94a6d53dd8" );
03284             add1_len = unhexify( add1, "" );
03285             add_reseed_len = unhexify( add_reseed, "" );
03286             add2_len = unhexify( add2, "" );
03287         
03288             test_offset = 0;
03289             fct_chk( ctr_drbg_init_entropy_len( &ctx, entropy_func, entropy, add_init, add_init_len, 32 ) == 0 );
03290         
03291             fct_chk( ctr_drbg_random_with_add( &ctx, buf, 16, add1, add1_len ) == 0 );
03292             fct_chk( ctr_drbg_reseed( &ctx, add_reseed, add_reseed_len ) == 0 );
03293             fct_chk( ctr_drbg_random_with_add( &ctx, buf, 16, add2, add2_len ) == 0 );
03294             hexify( output_str, buf, 16 );
03295             fct_chk( strcmp( (char *) output_str, "13504a2b09474f90d2e9ef40d1f2d0d5" ) == 0 );
03296         }
03297         FCT_TEST_END();
03298 
03299 
03300         FCT_TEST_BGN(ctr_drbg_nist_validation_aes_256_use_dffalse2561282560_9)
03301         {
03302             unsigned char entropy[512];
03303             unsigned char add_init[512];
03304             unsigned char add1[512];
03305             unsigned char add_reseed[512];
03306             unsigned char add2[512];
03307             ctr_drbg_context ctx;
03308             unsigned char buf[512];
03309             unsigned char output_str[512];
03310             int add_init_len, add1_len, add_reseed_len, add2_len;
03311         
03312             memset( output_str, 0, 512 );
03313         
03314             unhexify( entropy, "31ba5f801aeaac790f2480fbd2373a76ba1685ebebc5ae7cd4844733ec3cfb112634b3899104dcc16050e1206f8b3fb787d43d54de2c804fd3d8eb98e512bb00" );
03315             add_init_len = unhexify( add_init, "042b524444b9903c1ecb80af21eef0e884115561a15a1ab2f9f3a322edcbf14174f54d315196a632940c2c6f56612c09" );
03316             add1_len = unhexify( add1, "" );
03317             add_reseed_len = unhexify( add_reseed, "" );
03318             add2_len = unhexify( add2, "" );
03319         
03320             test_offset = 0;
03321             fct_chk( ctr_drbg_init_entropy_len( &ctx, entropy_func, entropy, add_init, add_init_len, 32 ) == 0 );
03322         
03323             fct_chk( ctr_drbg_random_with_add( &ctx, buf, 16, add1, add1_len ) == 0 );
03324             fct_chk( ctr_drbg_reseed( &ctx, add_reseed, add_reseed_len ) == 0 );
03325             fct_chk( ctr_drbg_random_with_add( &ctx, buf, 16, add2, add2_len ) == 0 );
03326             hexify( output_str, buf, 16 );
03327             fct_chk( strcmp( (char *) output_str, "0a0484c14e7868178e68d6d5c5f57c5c" ) == 0 );
03328         }
03329         FCT_TEST_END();
03330 
03331 
03332         FCT_TEST_BGN(ctr_drbg_nist_validation_aes_256_use_dffalse2561282560_10)
03333         {
03334             unsigned char entropy[512];
03335             unsigned char add_init[512];
03336             unsigned char add1[512];
03337             unsigned char add_reseed[512];
03338             unsigned char add2[512];
03339             ctr_drbg_context ctx;
03340             unsigned char buf[512];
03341             unsigned char output_str[512];
03342             int add_init_len, add1_len, add_reseed_len, add2_len;
03343         
03344             memset( output_str, 0, 512 );
03345         
03346             unhexify( entropy, "46dc837620872a5ffa642399213b4eebfb28ca069c5eaaf2a636f5bd647de365c11402b10ecd7780c56d464f56b653e17af8550b90a54adb38173a0b2f9e2ea7" );
03347             add_init_len = unhexify( add_init, "632758f92efaca39615862177c267906ab0424230d481ee0a5aa1a5f66697d3918d4aab3f310b72a7f2d71c0a96b9247" );
03348             add1_len = unhexify( add1, "" );
03349             add_reseed_len = unhexify( add_reseed, "" );
03350             add2_len = unhexify( add2, "" );
03351         
03352             test_offset = 0;
03353             fct_chk( ctr_drbg_init_entropy_len( &ctx, entropy_func, entropy, add_init, add_init_len, 32 ) == 0 );
03354         
03355             fct_chk( ctr_drbg_random_with_add( &ctx, buf, 16, add1, add1_len ) == 0 );
03356             fct_chk( ctr_drbg_reseed( &ctx, add_reseed, add_reseed_len ) == 0 );
03357             fct_chk( ctr_drbg_random_with_add( &ctx, buf, 16, add2, add2_len ) == 0 );
03358             hexify( output_str, buf, 16 );
03359             fct_chk( strcmp( (char *) output_str, "90432ce3f7b580961abecde259aa5af6" ) == 0 );
03360         }
03361         FCT_TEST_END();
03362 
03363 
03364         FCT_TEST_BGN(ctr_drbg_nist_validation_aes_256_use_dffalse2561282560_11)
03365         {
03366             unsigned char entropy[512];
03367             unsigned char add_init[512];
03368             unsigned char add1[512];
03369             unsigned char add_reseed[512];
03370             unsigned char add2[512];
03371             ctr_drbg_context ctx;
03372             unsigned char buf[512];
03373             unsigned char output_str[512];
03374             int add_init_len, add1_len, add_reseed_len, add2_len;
03375         
03376             memset( output_str, 0, 512 );
03377         
03378             unhexify( entropy, "76e92e9f00fc7d0c525c48739a8b3601c51f8f5996117a7e07497afee36829636e714dbcb84c8f8d57e0850a361a5bdfc21084a1c30fb7797ce6280e057309b7" );
03379             add_init_len = unhexify( add_init, "7b389118af3d0f8336b41cf58c2d810f0e5f9940703fd56a46c10a315fb09aafd7670c9e96ffa61e0cb750cb2aa6a7fe" );
03380             add1_len = unhexify( add1, "" );
03381             add_reseed_len = unhexify( add_reseed, "" );
03382             add2_len = unhexify( add2, "" );
03383         
03384             test_offset = 0;
03385             fct_chk( ctr_drbg_init_entropy_len( &ctx, entropy_func, entropy, add_init, add_init_len, 32 ) == 0 );
03386         
03387             fct_chk( ctr_drbg_random_with_add( &ctx, buf, 16, add1, add1_len ) == 0 );
03388             fct_chk( ctr_drbg_reseed( &ctx, add_reseed, add_reseed_len ) == 0 );
03389             fct_chk( ctr_drbg_random_with_add( &ctx, buf, 16, add2, add2_len ) == 0 );
03390             hexify( output_str, buf, 16 );
03391             fct_chk( strcmp( (char *) output_str, "7243964051082c0617e200fcbbe7ff45" ) == 0 );
03392         }
03393         FCT_TEST_END();
03394 
03395 
03396         FCT_TEST_BGN(ctr_drbg_nist_validation_aes_256_use_dffalse2561282560_12)
03397         {
03398             unsigned char entropy[512];
03399             unsigned char add_init[512];
03400             unsigned char add1[512];
03401             unsigned char add_reseed[512];
03402             unsigned char add2[512];
03403             ctr_drbg_context ctx;
03404             unsigned char buf[512];
03405             unsigned char output_str[512];
03406             int add_init_len, add1_len, add_reseed_len, add2_len;
03407         
03408             memset( output_str, 0, 512 );
03409         
03410             unhexify( entropy, "c9aa4739011c60f8e99db0580b3cad4269874d1dda1c81ffa872f01669e8f75215aaad1ccc301c12f90cd240bf99ad42bb06965afb0aa2bd3fcb681c710aa375" );
03411             add_init_len = unhexify( add_init, "e50d38434e9dfe3601e7ea1765d9fe777d467d9918974b5599ec19f42d7054b70ff6db63a3403d2fd09333eda17a5e76" );
03412             add1_len = unhexify( add1, "" );
03413             add_reseed_len = unhexify( add_reseed, "" );
03414             add2_len = unhexify( add2, "" );
03415         
03416             test_offset = 0;
03417             fct_chk( ctr_drbg_init_entropy_len( &ctx, entropy_func, entropy, add_init, add_init_len, 32 ) == 0 );
03418         
03419             fct_chk( ctr_drbg_random_with_add( &ctx, buf, 16, add1, add1_len ) == 0 );
03420             fct_chk( ctr_drbg_reseed( &ctx, add_reseed, add_reseed_len ) == 0 );
03421             fct_chk( ctr_drbg_random_with_add( &ctx, buf, 16, add2, add2_len ) == 0 );
03422             hexify( output_str, buf, 16 );
03423             fct_chk( strcmp( (char *) output_str, "28499495c94c6ceec1bd494e364ad97c" ) == 0 );
03424         }
03425         FCT_TEST_END();
03426 
03427 
03428         FCT_TEST_BGN(ctr_drbg_nist_validation_aes_256_use_dffalse2561282560_13)
03429         {
03430             unsigned char entropy[512];
03431             unsigned char add_init[512];
03432             unsigned char add1[512];
03433             unsigned char add_reseed[512];
03434             unsigned char add2[512];
03435             ctr_drbg_context ctx;
03436             unsigned char buf[512];
03437             unsigned char output_str[512];
03438             int add_init_len, add1_len, add_reseed_len, add2_len;
03439         
03440             memset( output_str, 0, 512 );
03441         
03442             unhexify( entropy, "b06960a92d32a9e9658d9800de87a3800f3595e173fdc46bef22966264953672e2d7c638cc7b1cada747026726baf6cea4c64ba956be8bb1d1801158bee5e5d4" );
03443             add_init_len = unhexify( add_init, "3253cb074d610db602b0a0d2836df1f20c3ee162d80b90b31660bb86ef3f0789fa857af4f45a5897bdd73c2295f879b6" );
03444             add1_len = unhexify( add1, "" );
03445             add_reseed_len = unhexify( add_reseed, "" );
03446             add2_len = unhexify( add2, "" );
03447         
03448             test_offset = 0;
03449             fct_chk( ctr_drbg_init_entropy_len( &ctx, entropy_func, entropy, add_init, add_init_len, 32 ) == 0 );
03450         
03451             fct_chk( ctr_drbg_random_with_add( &ctx, buf, 16, add1, add1_len ) == 0 );
03452             fct_chk( ctr_drbg_reseed( &ctx, add_reseed, add_reseed_len ) == 0 );
03453             fct_chk( ctr_drbg_random_with_add( &ctx, buf, 16, add2, add2_len ) == 0 );
03454             hexify( output_str, buf, 16 );
03455             fct_chk( strcmp( (char *) output_str, "b6608d6e5fcb4591a718f9149b79f8f1" ) == 0 );
03456         }
03457         FCT_TEST_END();
03458 
03459 
03460         FCT_TEST_BGN(ctr_drbg_nist_validation_aes_256_use_dffalse2561282560_14)
03461         {
03462             unsigned char entropy[512];
03463             unsigned char add_init[512];
03464             unsigned char add1[512];
03465             unsigned char add_reseed[512];
03466             unsigned char add2[512];
03467             ctr_drbg_context ctx;
03468             unsigned char buf[512];
03469             unsigned char output_str[512];
03470             int add_init_len, add1_len, add_reseed_len, add2_len;
03471         
03472             memset( output_str, 0, 512 );
03473         
03474             unhexify( entropy, "0e0105b12af35ac87cb23cf9ca8fb6a44307c3dcdc5bc890eb5253f4034c1533392a1760c98ba30d7751af93dd865d4bd66fbbeb215d7ff239b700527247775d" );
03475             add_init_len = unhexify( add_init, "83e4733566f90c8d69e6bcbe9fb52521ff3e26f806d9b7b86e9344cca0305dbf106de855240f1d35492cc6d651b8b6ae" );
03476             add1_len = unhexify( add1, "" );
03477             add_reseed_len = unhexify( add_reseed, "" );
03478             add2_len = unhexify( add2, "" );
03479         
03480             test_offset = 0;
03481             fct_chk( ctr_drbg_init_entropy_len( &ctx, entropy_func, entropy, add_init, add_init_len, 32 ) == 0 );
03482         
03483             fct_chk( ctr_drbg_random_with_add( &ctx, buf, 16, add1, add1_len ) == 0 );
03484             fct_chk( ctr_drbg_reseed( &ctx, add_reseed, add_reseed_len ) == 0 );
03485             fct_chk( ctr_drbg_random_with_add( &ctx, buf, 16, add2, add2_len ) == 0 );
03486             hexify( output_str, buf, 16 );
03487             fct_chk( strcmp( (char *) output_str, "68d64d1522c09a859b9b85b528d0d912" ) == 0 );
03488         }
03489         FCT_TEST_END();
03490 
03491 
03492         FCT_TEST_BGN(ctr_drbg_nist_validation_aes_256_use_dffalse256128256256_0)
03493         {
03494             unsigned char entropy[512];
03495             unsigned char add_init[512];
03496             unsigned char add1[512];
03497             unsigned char add_reseed[512];
03498             unsigned char add2[512];
03499             ctr_drbg_context ctx;
03500             unsigned char buf[512];
03501             unsigned char output_str[512];
03502             int add_init_len, add1_len, add_reseed_len, add2_len;
03503         
03504             memset( output_str, 0, 512 );
03505         
03506             unhexify( entropy, "a53e371017439193591e475087aaddd5c1c386cdca0ddb68e002d80fdc401a47dd40e5987b2716731568d276bf0c6715757903d3dede914642ddd467c879c81e" );
03507             add_init_len = unhexify( add_init, "a94da55afdc50ce51c9a3b8a4c4484408b52a24a93c34ea71e1ca705eb829ba65de4d4e07fa3d86b37845ff1c7d5f6d2" );
03508             add1_len = unhexify( add1, "20f422edf85ca16a01cfbe5f8d6c947fae12a857db2aa9bfc7b36581808d0d46" );
03509             add_reseed_len = unhexify( add_reseed, "7fd81fbd2ab51c115d834e99f65ca54020ed388ed59ee07593fe125e5d73fb75" );
03510             add2_len = unhexify( add2, "cd2cff14693e4c9efdfe260de986004930bab1c65057772a62392c3b74ebc90d" );
03511         
03512             test_offset = 0;
03513             fct_chk( ctr_drbg_init_entropy_len( &ctx, entropy_func, entropy, add_init, add_init_len, 32 ) == 0 );
03514         
03515             fct_chk( ctr_drbg_random_with_add( &ctx, buf, 16, add1, add1_len ) == 0 );
03516             fct_chk( ctr_drbg_reseed( &ctx, add_reseed, add_reseed_len ) == 0 );
03517             fct_chk( ctr_drbg_random_with_add( &ctx, buf, 16, add2, add2_len ) == 0 );
03518             hexify( output_str, buf, 16 );
03519             fct_chk( strcmp( (char *) output_str, "4f78beb94d978ce9d097feadfafd355e" ) == 0 );
03520         }
03521         FCT_TEST_END();
03522 
03523 
03524         FCT_TEST_BGN(ctr_drbg_nist_validation_aes_256_use_dffalse256128256256_1)
03525         {
03526             unsigned char entropy[512];
03527             unsigned char add_init[512];
03528             unsigned char add1[512];
03529             unsigned char add_reseed[512];
03530             unsigned char add2[512];
03531             ctr_drbg_context ctx;
03532             unsigned char buf[512];
03533             unsigned char output_str[512];
03534             int add_init_len, add1_len, add_reseed_len, add2_len;
03535         
03536             memset( output_str, 0, 512 );
03537         
03538             unhexify( entropy, "78d7d65c457218a63e2eb1eba287f121c5466728ac4f963aeaabf593b9d72b6376daea6436e55415ad097dee10c40a1ff61fca1c30b8ab51ed11ff090d19ef9a" );
03539             add_init_len = unhexify( add_init, "e8649d4f86b3de85fe39ff04d7afe6e4dd00770931330b27e975a7b1e7b5206ee2f247d50401a372c3a27197fec5da46" );
03540             add1_len = unhexify( add1, "cc57adc98b2540664403ad6fd50c9042f0bf0e0b54ed33584ee189e072d0fb8f" );
03541             add_reseed_len = unhexify( add_reseed, "ab2f99e2d983aa8dd05336a090584f4f84d485a4763e00ced42ddda72483cd84" );
03542             add2_len = unhexify( add2, "0ecd7680e2e9f0250a43e28f2f8936d7ef16f45d79c0fa3f69e4fafce4aeb362" );
03543         
03544             test_offset = 0;
03545             fct_chk( ctr_drbg_init_entropy_len( &ctx, entropy_func, entropy, add_init, add_init_len, 32 ) == 0 );
03546         
03547             fct_chk( ctr_drbg_random_with_add( &ctx, buf, 16, add1, add1_len ) == 0 );
03548             fct_chk( ctr_drbg_reseed( &ctx, add_reseed, add_reseed_len ) == 0 );
03549             fct_chk( ctr_drbg_random_with_add( &ctx, buf, 16, add2, add2_len ) == 0 );
03550             hexify( output_str, buf, 16 );
03551             fct_chk( strcmp( (char *) output_str, "08e38625611bb0fb844f43439550bd7a" ) == 0 );
03552         }
03553         FCT_TEST_END();
03554 
03555 
03556         FCT_TEST_BGN(ctr_drbg_nist_validation_aes_256_use_dffalse256128256256_2)
03557         {
03558             unsigned char entropy[512];
03559             unsigned char add_init[512];
03560             unsigned char add1[512];
03561             unsigned char add_reseed[512];
03562             unsigned char add2[512];
03563             ctr_drbg_context ctx;
03564             unsigned char buf[512];
03565             unsigned char output_str[512];
03566             int add_init_len, add1_len, add_reseed_len, add2_len;
03567         
03568             memset( output_str, 0, 512 );
03569         
03570             unhexify( entropy, "c78ff6b9fc91cbce246c9fcc2366d5f7dd6d99fb1325d8997f36819232d5fcd12ccafdcbefd01409d90acd0e0ffb7427c820b2d729fe7e845e6a6168fc1af0b5" );
03571             add_init_len = unhexify( add_init, "6c79e1556889b3c074fc083a120d73784b888c5acb877899f17ce52e424b84178d144441aa9f328c730a951b02b048df" );
03572             add1_len = unhexify( add1, "60cba10826de22c5e85d06357de63d6b2ff0719694dafca6ab33283f3a4aacdd" );
03573             add_reseed_len = unhexify( add_reseed, "8943c22fb68b30811790a99b9cbb056e1a2c329185a199c76ba5aeceb2fcd769" );
03574             add2_len = unhexify( add2, "70671a50e8387bf232989d904c19215c7535ad2d0c5dec30a744c8d2706be6ec" );
03575         
03576             test_offset = 0;
03577             fct_chk( ctr_drbg_init_entropy_len( &ctx, entropy_func, entropy, add_init, add_init_len, 32 ) == 0 );
03578         
03579             fct_chk( ctr_drbg_random_with_add( &ctx, buf, 16, add1, add1_len ) == 0 );
03580             fct_chk( ctr_drbg_reseed( &ctx, add_reseed, add_reseed_len ) == 0 );
03581             fct_chk( ctr_drbg_random_with_add( &ctx, buf, 16, add2, add2_len ) == 0 );
03582             hexify( output_str, buf, 16 );
03583             fct_chk( strcmp( (char *) output_str, "f6b94b671cae8dfa8387719bfd75ee84" ) == 0 );
03584         }
03585         FCT_TEST_END();
03586 
03587 
03588         FCT_TEST_BGN(ctr_drbg_nist_validation_aes_256_use_dffalse256128256256_3)
03589         {
03590             unsigned char entropy[512];
03591             unsigned char add_init[512];
03592             unsigned char add1[512];
03593             unsigned char add_reseed[512];
03594             unsigned char add2[512];
03595             ctr_drbg_context ctx;
03596             unsigned char buf[512];
03597             unsigned char output_str[512];
03598             int add_init_len, add1_len, add_reseed_len, add2_len;
03599         
03600             memset( output_str, 0, 512 );
03601         
03602             unhexify( entropy, "21a21c9314b37d4ade4a50a5d85995e0be07e358ed9bca19daa867a8d47847105dca7a424f32f715adb8fea5d3a41cfe388872a42ab18aa5cbcd7bde4adc3f8b" );
03603             add_init_len = unhexify( add_init, "f5ab77b2a8e370548b88febfd79772144cd5fc8d78062582addd4ff1e5c10094b390e66b3c4efb087510de1b9d25703f" );
03604             add1_len = unhexify( add1, "023d582569a7ff1405e44cf09ceebb9d3254eef72286e4b87e6577a8ab091a06" );
03605             add_reseed_len = unhexify( add_reseed, "39597519872d49fbd186704241ba1dc10b1f84f9296fb61d597dbd655a18f997" );
03606             add2_len = unhexify( add2, "3091c9fe96109b41da63aa5fa00d716b5fa20e96d4f3e0f9c97666a706fa56f1" );
03607         
03608             test_offset = 0;
03609             fct_chk( ctr_drbg_init_entropy_len( &ctx, entropy_func, entropy, add_init, add_init_len, 32 ) == 0 );
03610         
03611             fct_chk( ctr_drbg_random_with_add( &ctx, buf, 16, add1, add1_len ) == 0 );
03612             fct_chk( ctr_drbg_reseed( &ctx, add_reseed, add_reseed_len ) == 0 );
03613             fct_chk( ctr_drbg_random_with_add( &ctx, buf, 16, add2, add2_len ) == 0 );
03614             hexify( output_str, buf, 16 );
03615             fct_chk( strcmp( (char *) output_str, "1fb57058b3ba8751df5a99f018798983" ) == 0 );
03616         }
03617         FCT_TEST_END();
03618 
03619 
03620         FCT_TEST_BGN(ctr_drbg_nist_validation_aes_256_use_dffalse256128256256_4)
03621         {
03622             unsigned char entropy[512];
03623             unsigned char add_init[512];
03624             unsigned char add1[512];
03625             unsigned char add_reseed[512];
03626             unsigned char add2[512];
03627             ctr_drbg_context ctx;
03628             unsigned char buf[512];
03629             unsigned char output_str[512];
03630             int add_init_len, add1_len, add_reseed_len, add2_len;
03631         
03632             memset( output_str, 0, 512 );
03633         
03634             unhexify( entropy, "192054dddac02157a35eb7f75ae8ebdb43d6b969e33942fb16ff06cd6d8a602506c41e4e743b8230e8239b71b31b2d5e3614e3a65d79e91d5b9fc9d2a66f8553" );
03635             add_init_len = unhexify( add_init, "f0b79e292d0e393e78b6d6117e06d2e725823fe35bde1146502967a78d99d6bca564f0e2f324272f968be5baab4aeb29" );
03636             add1_len = unhexify( add1, "b12241e90d80f129004287c5b9911a70f7159794e6f9c1023b3b68da9237e8b7" );
03637             add_reseed_len = unhexify( add_reseed, "59e9c3c0f90e91f22c35a3be0c65f16157c569c7e3c78a545d9840f648c60069" );
03638             add2_len = unhexify( add2, "089a59af69f47ddb4191bd27720bb4c29216f738c48c0e14d2b8afd68de63c17" );
03639         
03640             test_offset = 0;
03641             fct_chk( ctr_drbg_init_entropy_len( &ctx, entropy_func, entropy, add_init, add_init_len, 32 ) == 0 );
03642         
03643             fct_chk( ctr_drbg_random_with_add( &ctx, buf, 16, add1, add1_len ) == 0 );
03644             fct_chk( ctr_drbg_reseed( &ctx, add_reseed, add_reseed_len ) == 0 );
03645             fct_chk( ctr_drbg_random_with_add( &ctx, buf, 16, add2, add2_len ) == 0 );
03646             hexify( output_str, buf, 16 );
03647             fct_chk( strcmp( (char *) output_str, "15287156e544617529e7eede4aa9c70e" ) == 0 );
03648         }
03649         FCT_TEST_END();
03650 
03651 
03652         FCT_TEST_BGN(ctr_drbg_nist_validation_aes_256_use_dffalse256128256256_5)
03653         {
03654             unsigned char entropy[512];
03655             unsigned char add_init[512];
03656             unsigned char add1[512];
03657             unsigned char add_reseed[512];
03658             unsigned char add2[512];
03659             ctr_drbg_context ctx;
03660             unsigned char buf[512];
03661             unsigned char output_str[512];
03662             int add_init_len, add1_len, add_reseed_len, add2_len;
03663         
03664             memset( output_str, 0, 512 );
03665         
03666             unhexify( entropy, "ef081af1f62400a3d193969d689a40234998afb646d99a7c4b9cbbf47e650cda93a90e754a16fffa25fc2a2edab09720b4520c47309ec4f6d9f76f0162af6cae" );
03667             add_init_len = unhexify( add_init, "e3f33843aecb35d01001ff92ab9a0f1a5431ba9de3e4f3247cda8c62acc86f7066448f639d8ba8b5249337f8c353bbbd" );
03668             add1_len = unhexify( add1, "e7cc55b72862544a8661b5034e15587b1e5a45eb5dc744f5fa1db9b267f1c3ff" );
03669             add_reseed_len = unhexify( add_reseed, "882d30c888eb8e344b1d17057074606fe232ceb42eb71055264ede7bb638f2a2" );
03670             add2_len = unhexify( add2, "9ce65e95c1e735fe950e52c324e7551403d0ef70ad865bd31fef1e22b129fdd6" );
03671         
03672             test_offset = 0;
03673             fct_chk( ctr_drbg_init_entropy_len( &ctx, entropy_func, entropy, add_init, add_init_len, 32 ) == 0 );
03674         
03675             fct_chk( ctr_drbg_random_with_add( &ctx, buf, 16, add1, add1_len ) == 0 );
03676             fct_chk( ctr_drbg_reseed( &ctx, add_reseed, add_reseed_len ) == 0 );
03677             fct_chk( ctr_drbg_random_with_add( &ctx, buf, 16, add2, add2_len ) == 0 );
03678             hexify( output_str, buf, 16 );
03679             fct_chk( strcmp( (char *) output_str, "205e3a53367c4a5183be74bb875fa717" ) == 0 );
03680         }
03681         FCT_TEST_END();
03682 
03683 
03684         FCT_TEST_BGN(ctr_drbg_nist_validation_aes_256_use_dffalse256128256256_6)
03685         {
03686             unsigned char entropy[512];
03687             unsigned char add_init[512];
03688             unsigned char add1[512];
03689             unsigned char add_reseed[512];
03690             unsigned char add2[512];
03691             ctr_drbg_context ctx;
03692             unsigned char buf[512];
03693             unsigned char output_str[512];
03694             int add_init_len, add1_len, add_reseed_len, add2_len;
03695         
03696             memset( output_str, 0, 512 );
03697         
03698             unhexify( entropy, "fae3d554d12a14e29de1b622922f27559559ca1518c9f800375a37a212e8b9a653cc3700223e9404d5bf781d15fccf638050a1394592caba001cfc65d61ef90b" );
03699             add_init_len = unhexify( add_init, "f30a18d597d8591a22dee908de95c5af74884b025f39b4f6707d28447d9d0a3114a57bc2d9eed8e621ec75e8ce389a16" );
03700             add1_len = unhexify( add1, "54240edd89016ed27e3bb3977a206836f5ef1fba0f000af95337d79caca9cf71" );
03701             add_reseed_len = unhexify( add_reseed, "250611e51852d933ff1a177b509c05e3228cb9f46dfb7b26848a68aad2ce4779" );
03702             add2_len = unhexify( add2, "f8b602d89fa1a0bfb31d0bd49246b458200a1adb28b64a68f7c197f335d69706" );
03703         
03704             test_offset = 0;
03705             fct_chk( ctr_drbg_init_entropy_len( &ctx, entropy_func, entropy, add_init, add_init_len, 32 ) == 0 );
03706         
03707             fct_chk( ctr_drbg_random_with_add( &ctx, buf, 16, add1, add1_len ) == 0 );
03708             fct_chk( ctr_drbg_reseed( &ctx, add_reseed, add_reseed_len ) == 0 );
03709             fct_chk( ctr_drbg_random_with_add( &ctx, buf, 16, add2, add2_len ) == 0 );
03710             hexify( output_str, buf, 16 );
03711             fct_chk( strcmp( (char *) output_str, "7b63bfb325bafe7d9ef342cd14ea40a4" ) == 0 );
03712         }
03713         FCT_TEST_END();
03714 
03715 
03716         FCT_TEST_BGN(ctr_drbg_nist_validation_aes_256_use_dffalse256128256256_7)
03717         {
03718             unsigned char entropy[512];
03719             unsigned char add_init[512];
03720             unsigned char add1[512];
03721             unsigned char add_reseed[512];
03722             unsigned char add2[512];
03723             ctr_drbg_context ctx;
03724             unsigned char buf[512];
03725             unsigned char output_str[512];
03726             int add_init_len, add1_len, add_reseed_len, add2_len;
03727         
03728             memset( output_str, 0, 512 );
03729         
03730             unhexify( entropy, "8e60115b4af9c8e5606223792539e9ba87e9ef46cd16fcc09046db1ef8d3c036241cae5d61141711818e9e861dbd833632069ebf5af1bd6d4e513f059ab1efd3" );
03731             add_init_len = unhexify( add_init, "c8dbc3d39beb612811c52e2b46ef76d2b7bd5d3a90ceddf9fb864fe6f44e36687d88158d61014e192f9a3cd474338e13" );
03732             add1_len = unhexify( add1, "9b56eba0838457f736fc5efa2cfbe698908340f07d4680e279d21dd530fdc8c8" );
03733             add_reseed_len = unhexify( add_reseed, "62c47ece469a7a409e4b2b76d1c793aaf11654e177cc8bf63faff3e6c5a5395c" );
03734             add2_len = unhexify( add2, "4251597013d0c949c53bbd945477b78aa91baa95f1ff757c3a039ccc4e1f4789" );
03735         
03736             test_offset = 0;
03737             fct_chk( ctr_drbg_init_entropy_len( &ctx, entropy_func, entropy, add_init, add_init_len, 32 ) == 0 );
03738         
03739             fct_chk( ctr_drbg_random_with_add( &ctx, buf, 16, add1, add1_len ) == 0 );
03740             fct_chk( ctr_drbg_reseed( &ctx, add_reseed, add_reseed_len ) == 0 );
03741             fct_chk( ctr_drbg_random_with_add( &ctx, buf, 16, add2, add2_len ) == 0 );
03742             hexify( output_str, buf, 16 );
03743             fct_chk( strcmp( (char *) output_str, "af2f37160940f0cc27d144a043ddf79b" ) == 0 );
03744         }
03745         FCT_TEST_END();
03746 
03747 
03748         FCT_TEST_BGN(ctr_drbg_nist_validation_aes_256_use_dffalse256128256256_8)
03749         {
03750             unsigned char entropy[512];
03751             unsigned char add_init[512];
03752             unsigned char add1[512];
03753             unsigned char add_reseed[512];
03754             unsigned char add2[512];
03755             ctr_drbg_context ctx;
03756             unsigned char buf[512];
03757             unsigned char output_str[512];
03758             int add_init_len, add1_len, add_reseed_len, add2_len;
03759         
03760             memset( output_str, 0, 512 );
03761         
03762             unhexify( entropy, "95da91f4185b254322ef0fc852473a9b9e4c274b242ded8a4eae6f1e2badde0664cf57f2128aa3dc83e436f7e80928a01d93bf25011eedf0190d0bf3619cd555" );
03763             add_init_len = unhexify( add_init, "a37f9ed6c4e8f74ff16046b0678ef7bd24fcdca247b771ea1ce1fd48e3f5d2067e38aaf64ec59f1f49d96fa85e60ef03" );
03764             add1_len = unhexify( add1, "b4a22f5598f79d34f0b9600763c081b0200ba489da7028ad0283828545c6d594" );
03765             add_reseed_len = unhexify( add_reseed, "fa3edc0962b20a9d9e1d0afcad907c8097c21d7a65c0e47c63d65cea94bf43bd" );
03766             add2_len = unhexify( add2, "49ba791a227e9e391e04225ad67f43f64754daac0b0bb4c6db77320943231ec3" );
03767         
03768             test_offset = 0;
03769             fct_chk( ctr_drbg_init_entropy_len( &ctx, entropy_func, entropy, add_init, add_init_len, 32 ) == 0 );
03770         
03771             fct_chk( ctr_drbg_random_with_add( &ctx, buf, 16, add1, add1_len ) == 0 );
03772             fct_chk( ctr_drbg_reseed( &ctx, add_reseed, add_reseed_len ) == 0 );
03773             fct_chk( ctr_drbg_random_with_add( &ctx, buf, 16, add2, add2_len ) == 0 );
03774             hexify( output_str, buf, 16 );
03775             fct_chk( strcmp( (char *) output_str, "32f313ded225289793c14a71d1d32c9f" ) == 0 );
03776         }
03777         FCT_TEST_END();
03778 
03779 
03780         FCT_TEST_BGN(ctr_drbg_nist_validation_aes_256_use_dffalse256128256256_9)
03781         {
03782             unsigned char entropy[512];
03783             unsigned char add_init[512];
03784             unsigned char add1[512];
03785             unsigned char add_reseed[512];
03786             unsigned char add2[512];
03787             ctr_drbg_context ctx;
03788             unsigned char buf[512];
03789             unsigned char output_str[512];
03790             int add_init_len, add1_len, add_reseed_len, add2_len;
03791         
03792             memset( output_str, 0, 512 );
03793         
03794             unhexify( entropy, "f22dd3517350176e35e1b7ecc8c00bea4747f0ac17bda1b1ddf8cdf7be53ff8c326268366e89cf3b023a9646177a0dcca902f0c98bf3840c9cbdf5c0494bee3c" );
03795             add_init_len = unhexify( add_init, "87f85b9c19eba1d953b6613cf555c21bc74428d9a8fee15e6cd717e240506f3e80860423973a66c61820d4ce1c6bb77d" );
03796             add1_len = unhexify( add1, "611caa00f93d4456fd2abb90de4dbcd934afbf1a56c2c4633b704c998f649960" );
03797             add_reseed_len = unhexify( add_reseed, "cba68367dc2fc92250e23e2b1a547fb3231b2beaab5e5a2ee39c5c74c9bab5f5" );
03798             add2_len = unhexify( add2, "f4895c9653b44a96152b893b7c94db80057fb67824d61c5c4186b9d8f16d3d98" );
03799         
03800             test_offset = 0;
03801             fct_chk( ctr_drbg_init_entropy_len( &ctx, entropy_func, entropy, add_init, add_init_len, 32 ) == 0 );
03802         
03803             fct_chk( ctr_drbg_random_with_add( &ctx, buf, 16, add1, add1_len ) == 0 );
03804             fct_chk( ctr_drbg_reseed( &ctx, add_reseed, add_reseed_len ) == 0 );
03805             fct_chk( ctr_drbg_random_with_add( &ctx, buf, 16, add2, add2_len ) == 0 );
03806             hexify( output_str, buf, 16 );
03807             fct_chk( strcmp( (char *) output_str, "a05de6531a1aa1b2ba3faea8ad6ac209" ) == 0 );
03808         }
03809         FCT_TEST_END();
03810 
03811 
03812         FCT_TEST_BGN(ctr_drbg_nist_validation_aes_256_use_dffalse256128256256_10)
03813         {
03814             unsigned char entropy[512];
03815             unsigned char add_init[512];
03816             unsigned char add1[512];
03817             unsigned char add_reseed[512];
03818             unsigned char add2[512];
03819             ctr_drbg_context ctx;
03820             unsigned char buf[512];
03821             unsigned char output_str[512];
03822             int add_init_len, add1_len, add_reseed_len, add2_len;
03823         
03824             memset( output_str, 0, 512 );
03825         
03826             unhexify( entropy, "bba34e6f4ee27e5d4e885e59f8bbb0dc7353a8912e66637d7515a66e5398d9a8cbd328fed32f71bdd34c73cdf97e0d211be6dabfb0144e1011fd136cf01ea4e4" );
03827             add_init_len = unhexify( add_init, "9670deb707caabc888a3b0df7270942934732e02be728a4bedb5fc9ca4d675b2f3b47c7132c364ce6292cef7c19b60c7" );
03828             add1_len = unhexify( add1, "9f55da36babd6ea42082f5f5d4330f023440bb864f8ad5498a29cf89757eaeab" );
03829             add_reseed_len = unhexify( add_reseed, "8013a309058c91c80f4d966f98bce1d4291003ad547e915777a3fce8ae2eaf77" );
03830             add2_len = unhexify( add2, "c83106272d44e832e94c7096c9c11f6342e12ec06d5db336424af73d12451406" );
03831         
03832             test_offset = 0;
03833             fct_chk( ctr_drbg_init_entropy_len( &ctx, entropy_func, entropy, add_init, add_init_len, 32 ) == 0 );
03834         
03835             fct_chk( ctr_drbg_random_with_add( &ctx, buf, 16, add1, add1_len ) == 0 );
03836             fct_chk( ctr_drbg_reseed( &ctx, add_reseed, add_reseed_len ) == 0 );
03837             fct_chk( ctr_drbg_random_with_add( &ctx, buf, 16, add2, add2_len ) == 0 );
03838             hexify( output_str, buf, 16 );
03839             fct_chk( strcmp( (char *) output_str, "bc8d4d00609662c1163dca930901821d" ) == 0 );
03840         }
03841         FCT_TEST_END();
03842 
03843 
03844         FCT_TEST_BGN(ctr_drbg_nist_validation_aes_256_use_dffalse256128256256_11)
03845         {
03846             unsigned char entropy[512];
03847             unsigned char add_init[512];
03848             unsigned char add1[512];
03849             unsigned char add_reseed[512];
03850             unsigned char add2[512];
03851             ctr_drbg_context ctx;
03852             unsigned char buf[512];
03853             unsigned char output_str[512];
03854             int add_init_len, add1_len, add_reseed_len, add2_len;
03855         
03856             memset( output_str, 0, 512 );
03857         
03858             unhexify( entropy, "ed0e524ed2990ef348dbb15b3f964b12ad3109978d6952ae193b21e94510a47406926620798e71a0ffcbdd2e54ec45509d784a8bfc9d59cb733f9f11fc474b5e" );
03859             add_init_len = unhexify( add_init, "6d984c8ab923a7e118447fd53ad287b8f01d1e6112cff12bfb338ecd3ed16bafdd634677c600bdd68f852a946f45c3d9" );
03860             add1_len = unhexify( add1, "0a3a32260d04dd7a82fb0873ecae7db5e5a4b6a51b09f4bf8a989e1afacbda3b" );
03861             add_reseed_len = unhexify( add_reseed, "3cbcabb83aab5a3e54836bbf12d3a7862a18e2dffeeb8bdd5770936d61fd839a" );
03862             add2_len = unhexify( add2, "f63b30a3efc0273eba03bf3cf90b1e4ac20b00e53a317dbf77b0fe70960e7c60" );
03863         
03864             test_offset = 0;
03865             fct_chk( ctr_drbg_init_entropy_len( &ctx, entropy_func, entropy, add_init, add_init_len, 32 ) == 0 );
03866         
03867             fct_chk( ctr_drbg_random_with_add( &ctx, buf, 16, add1, add1_len ) == 0 );
03868             fct_chk( ctr_drbg_reseed( &ctx, add_reseed, add_reseed_len ) == 0 );
03869             fct_chk( ctr_drbg_random_with_add( &ctx, buf, 16, add2, add2_len ) == 0 );
03870             hexify( output_str, buf, 16 );
03871             fct_chk( strcmp( (char *) output_str, "ab9af144e8fad6a978a636ad84e0469e" ) == 0 );
03872         }
03873         FCT_TEST_END();
03874 
03875 
03876         FCT_TEST_BGN(ctr_drbg_nist_validation_aes_256_use_dffalse256128256256_12)
03877         {
03878             unsigned char entropy[512];
03879             unsigned char add_init[512];
03880             unsigned char add1[512];
03881             unsigned char add_reseed[512];
03882             unsigned char add2[512];
03883             ctr_drbg_context ctx;
03884             unsigned char buf[512];
03885             unsigned char output_str[512];
03886             int add_init_len, add1_len, add_reseed_len, add2_len;
03887         
03888             memset( output_str, 0, 512 );
03889         
03890             unhexify( entropy, "2882d4a30b22659b87ad2d71db1d7cf093ffca80079a4ef21660de9223940969afec70b0384a54b1de9bcca6b43fb182e58d8dfcad82b0df99a8929201476ae9" );
03891             add_init_len = unhexify( add_init, "2c59520d6f8ce946dcc5222f4fc80ba83f38df9dce2861412eebb1614245331626e7fb93eedbad33a12e94c276deff0a" );
03892             add1_len = unhexify( add1, "d3c17a2d9c5da051b2d1825120814eaee07dfca65ab4df01195c8b1fcea0ed41" );
03893             add_reseed_len = unhexify( add_reseed, "dcc39555b87f31973ae085f83eaf497441d22ab6d87b69e47296b0ab51733687" );
03894             add2_len = unhexify( add2, "9a8a1b4ccf8230e3d3a1be79e60ae06c393fe6b1ca245281825317468ca114c7" );
03895         
03896             test_offset = 0;
03897             fct_chk( ctr_drbg_init_entropy_len( &ctx, entropy_func, entropy, add_init, add_init_len, 32 ) == 0 );
03898         
03899             fct_chk( ctr_drbg_random_with_add( &ctx, buf, 16, add1, add1_len ) == 0 );
03900             fct_chk( ctr_drbg_reseed( &ctx, add_reseed, add_reseed_len ) == 0 );
03901             fct_chk( ctr_drbg_random_with_add( &ctx, buf, 16, add2, add2_len ) == 0 );
03902             hexify( output_str, buf, 16 );
03903             fct_chk( strcmp( (char *) output_str, "fba523a09c587ecad4e7e7fd81e5ca39" ) == 0 );
03904         }
03905         FCT_TEST_END();
03906 
03907 
03908         FCT_TEST_BGN(ctr_drbg_nist_validation_aes_256_use_dffalse256128256256_13)
03909         {
03910             unsigned char entropy[512];
03911             unsigned char add_init[512];
03912             unsigned char add1[512];
03913             unsigned char add_reseed[512];
03914             unsigned char add2[512];
03915             ctr_drbg_context ctx;
03916             unsigned char buf[512];
03917             unsigned char output_str[512];
03918             int add_init_len, add1_len, add_reseed_len, add2_len;
03919         
03920             memset( output_str, 0, 512 );
03921         
03922             unhexify( entropy, "8ae9a5903da32a38b7c6fed92dd0c6a035ca5104a3528d71a3eacc2f1681379724991a0053e8dac65e35f3deee0435e99f86364577c8ebdba321872973dc9790" );
03923             add_init_len = unhexify( add_init, "1c1207f50b645aaed5c16fe36f6aae83af4924e6b98a7e2a2533a584c1bac123f8b6f0e05109e0132950ae97b389001a" );
03924             add1_len = unhexify( add1, "568bfee681d7f9be23a175a3cbf441b513829a9cbdf0706c145fdcd7803ce099" );
03925             add_reseed_len = unhexify( add_reseed, "e32cb5fec72c068894aaeabfc1b8d5e0de0b5acdf287a82e130a46e846770dc2" );
03926             add2_len = unhexify( add2, "d4418c333687a1c15cac7d4021f7d8823a114bb98f92c8a6dccc59ff8ad51c1f" );
03927         
03928             test_offset = 0;
03929             fct_chk( ctr_drbg_init_entropy_len( &ctx, entropy_func, entropy, add_init, add_init_len, 32 ) == 0 );
03930         
03931             fct_chk( ctr_drbg_random_with_add( &ctx, buf, 16, add1, add1_len ) == 0 );
03932             fct_chk( ctr_drbg_reseed( &ctx, add_reseed, add_reseed_len ) == 0 );
03933             fct_chk( ctr_drbg_random_with_add( &ctx, buf, 16, add2, add2_len ) == 0 );
03934             hexify( output_str, buf, 16 );
03935             fct_chk( strcmp( (char *) output_str, "194e3018377cef71610794006b95def5" ) == 0 );
03936         }
03937         FCT_TEST_END();
03938 
03939 
03940         FCT_TEST_BGN(ctr_drbg_nist_validation_aes_256_use_dffalse256128256256_14)
03941         {
03942             unsigned char entropy[512];
03943             unsigned char add_init[512];
03944             unsigned char add1[512];
03945             unsigned char add_reseed[512];
03946             unsigned char add2[512];
03947             ctr_drbg_context ctx;
03948             unsigned char buf[512];
03949             unsigned char output_str[512];
03950             int add_init_len, add1_len, add_reseed_len, add2_len;
03951         
03952             memset( output_str, 0, 512 );
03953         
03954             unhexify( entropy, "98a0db985544c33990aee0f69655dba7198e6720ce56ff9d4662e26f0c6b4ee7ab599932c05295f6c5a4011085c5b2c861a5a8ae4f572ce614ff2dafc0fddb34" );
03955             add_init_len = unhexify( add_init, "28254014c5d6ebf9bd9e5f3946fc98e55fe351deee8fc70333e4f20f1f7719a522b3ea9a4424afe68208d1cc6c128c47" );
03956             add1_len = unhexify( add1, "64215cbe384f1f4cf548078ffd51f91eee9a8bae5aacdd19ca16bcaaf354f8ad" );
03957             add_reseed_len = unhexify( add_reseed, "2e21df638dabe24aebf62d97e25f701f781d12d0064f2f5a4a44d320c90b7260" );
03958             add2_len = unhexify( add2, "7f936274f74a466cbf69dbfe46db79f3c349377df683cb461f2da3b842ad438e" );
03959         
03960             test_offset = 0;
03961             fct_chk( ctr_drbg_init_entropy_len( &ctx, entropy_func, entropy, add_init, add_init_len, 32 ) == 0 );
03962         
03963             fct_chk( ctr_drbg_random_with_add( &ctx, buf, 16, add1, add1_len ) == 0 );
03964             fct_chk( ctr_drbg_reseed( &ctx, add_reseed, add_reseed_len ) == 0 );
03965             fct_chk( ctr_drbg_random_with_add( &ctx, buf, 16, add2, add2_len ) == 0 );
03966             hexify( output_str, buf, 16 );
03967             fct_chk( strcmp( (char *) output_str, "25c469cc8407b82f42e34f11db3d8462" ) == 0 );
03968         }
03969         FCT_TEST_END();
03970 
03971 
03972         FCT_TEST_BGN(ctr_drbg_nist_validation_aes_256_use_dffalse25612800_0)
03973         {
03974             unsigned char entropy[512];
03975             unsigned char add_init[512];
03976             unsigned char add1[512];
03977             unsigned char add_reseed[512];
03978             unsigned char add2[512];
03979             ctr_drbg_context ctx;
03980             unsigned char buf[512];
03981             unsigned char output_str[512];
03982             int add_init_len, add1_len, add_reseed_len, add2_len;
03983         
03984             memset( output_str, 0, 512 );
03985         
03986             unhexify( entropy, "fea104f90c5881df7ad1c863307bad22c98770ecd0d717513a2807682582e3e18e81d7935c8a7bacddd5176e7ca4911b9f8f5b1d9c349152fa215393eb006384" );
03987             add_init_len = unhexify( add_init, "e26c8a13dae5c2da81023f27ab10b878" );
03988             add1_len = unhexify( add1, "" );
03989             add_reseed_len = unhexify( add_reseed, "" );
03990             add2_len = unhexify( add2, "" );
03991         
03992             test_offset = 0;
03993             fct_chk( ctr_drbg_init_entropy_len( &ctx, entropy_func, entropy, add_init, add_init_len, 32 ) == 0 );
03994         
03995             fct_chk( ctr_drbg_random_with_add( &ctx, buf, 16, add1, add1_len ) == 0 );
03996             fct_chk( ctr_drbg_reseed( &ctx, add_reseed, add_reseed_len ) == 0 );
03997             fct_chk( ctr_drbg_random_with_add( &ctx, buf, 16, add2, add2_len ) == 0 );
03998             hexify( output_str, buf, 16 );
03999             fct_chk( strcmp( (char *) output_str, "fd87337c305a0a8ef8eef797601732c2" ) == 0 );
04000         }
04001         FCT_TEST_END();
04002 
04003 
04004         FCT_TEST_BGN(ctr_drbg_nist_validation_aes_256_use_dffalse25612800_1)
04005         {
04006             unsigned char entropy[512];
04007             unsigned char add_init[512];
04008             unsigned char add1[512];
04009             unsigned char add_reseed[512];
04010             unsigned char add2[512];
04011             ctr_drbg_context ctx;
04012             unsigned char buf[512];
04013             unsigned char output_str[512];
04014             int add_init_len, add1_len, add_reseed_len, add2_len;
04015         
04016             memset( output_str, 0, 512 );
04017         
04018             unhexify( entropy, "1d723cbc2ff2c115160e7240340adbf31c717696d0fdfecf3ec21150fca00cde477d37e2abbe32f399a505b74d82e502fbff94cecac87e87127d1397d3d76532" );
04019             add_init_len = unhexify( add_init, "8d7dda20a9807804bfc37bd7472d3b0c" );
04020             add1_len = unhexify( add1, "" );
04021             add_reseed_len = unhexify( add_reseed, "" );
04022             add2_len = unhexify( add2, "" );
04023         
04024             test_offset = 0;
04025             fct_chk( ctr_drbg_init_entropy_len( &ctx, entropy_func, entropy, add_init, add_init_len, 32 ) == 0 );
04026         
04027             fct_chk( ctr_drbg_random_with_add( &ctx, buf, 16, add1, add1_len ) == 0 );
04028             fct_chk( ctr_drbg_reseed( &ctx, add_reseed, add_reseed_len ) == 0 );
04029             fct_chk( ctr_drbg_random_with_add( &ctx, buf, 16, add2, add2_len ) == 0 );
04030             hexify( output_str, buf, 16 );
04031             fct_chk( strcmp( (char *) output_str, "7221761b913b1f50125abca6c3b2f229" ) == 0 );
04032         }
04033         FCT_TEST_END();
04034 
04035 
04036         FCT_TEST_BGN(ctr_drbg_nist_validation_aes_256_use_dffalse25612800_2)
04037         {
04038             unsigned char entropy[512];
04039             unsigned char add_init[512];
04040             unsigned char add1[512];
04041             unsigned char add_reseed[512];
04042             unsigned char add2[512];
04043             ctr_drbg_context ctx;
04044             unsigned char buf[512];
04045             unsigned char output_str[512];
04046             int add_init_len, add1_len, add_reseed_len, add2_len;
04047         
04048             memset( output_str, 0, 512 );
04049         
04050             unhexify( entropy, "0820fc21cecba6b2fe053a269a34e6a7637dedaf55ef46d266f672ca7cfd9cc21cd807e2b7f6a1c640b4f059952ae6da7282c5c32959fed39f734a5e88a408d2" );
04051             add_init_len = unhexify( add_init, "c02e3b6fd4fea7ec517a232f48aaa8cb" );
04052             add1_len = unhexify( add1, "" );
04053             add_reseed_len = unhexify( add_reseed, "" );
04054             add2_len = unhexify( add2, "" );
04055         
04056             test_offset = 0;
04057             fct_chk( ctr_drbg_init_entropy_len( &ctx, entropy_func, entropy, add_init, add_init_len, 32 ) == 0 );
04058         
04059             fct_chk( ctr_drbg_random_with_add( &ctx, buf, 16, add1, add1_len ) == 0 );
04060             fct_chk( ctr_drbg_reseed( &ctx, add_reseed, add_reseed_len ) == 0 );
04061             fct_chk( ctr_drbg_random_with_add( &ctx, buf, 16, add2, add2_len ) == 0 );
04062             hexify( output_str, buf, 16 );
04063             fct_chk( strcmp( (char *) output_str, "667d4dbefe938d6a662440a17965a334" ) == 0 );
04064         }
04065         FCT_TEST_END();
04066 
04067 
04068         FCT_TEST_BGN(ctr_drbg_nist_validation_aes_256_use_dffalse25612800_3)
04069         {
04070             unsigned char entropy[512];
04071             unsigned char add_init[512];
04072             unsigned char add1[512];
04073             unsigned char add_reseed[512];
04074             unsigned char add2[512];
04075             ctr_drbg_context ctx;
04076             unsigned char buf[512];
04077             unsigned char output_str[512];
04078             int add_init_len, add1_len, add_reseed_len, add2_len;
04079         
04080             memset( output_str, 0, 512 );
04081         
04082             unhexify( entropy, "ef0aae3f9c425253205215e5bf0ad70f141ad8cc72a332247cfe989601ca4fc52ba48b82db4d00fe1f279979b5aed1ae2ec2b02d2c921ee2d9cb89e3a900b97d" );
04083             add_init_len = unhexify( add_init, "9aee0326f9b16f88a4114e8d49b8e282" );
04084             add1_len = unhexify( add1, "" );
04085             add_reseed_len = unhexify( add_reseed, "" );
04086             add2_len = unhexify( add2, "" );
04087         
04088             test_offset = 0;
04089             fct_chk( ctr_drbg_init_entropy_len( &ctx, entropy_func, entropy, add_init, add_init_len, 32 ) == 0 );
04090         
04091             fct_chk( ctr_drbg_random_with_add( &ctx, buf, 16, add1, add1_len ) == 0 );
04092             fct_chk( ctr_drbg_reseed( &ctx, add_reseed, add_reseed_len ) == 0 );
04093             fct_chk( ctr_drbg_random_with_add( &ctx, buf, 16, add2, add2_len ) == 0 );
04094             hexify( output_str, buf, 16 );
04095             fct_chk( strcmp( (char *) output_str, "651ad783fe3def80a8456552e405b98d" ) == 0 );
04096         }
04097         FCT_TEST_END();
04098 
04099 
04100         FCT_TEST_BGN(ctr_drbg_nist_validation_aes_256_use_dffalse25612800_4)
04101         {
04102             unsigned char entropy[512];
04103             unsigned char add_init[512];
04104             unsigned char add1[512];
04105             unsigned char add_reseed[512];
04106             unsigned char add2[512];
04107             ctr_drbg_context ctx;
04108             unsigned char buf[512];
04109             unsigned char output_str[512];
04110             int add_init_len, add1_len, add_reseed_len, add2_len;
04111         
04112             memset( output_str, 0, 512 );
04113         
04114             unhexify( entropy, "a9262ed5b54880cc8ecd4119cce9afe3de8875d403f7ca6b8ed8c88559470b29e644fddd83e127c5f938bc8a425db169c33c5c2d0b0c5133c8f87bbc0b0a7d79" );
04115             add_init_len = unhexify( add_init, "1e7a4961d1cd2fd30f571b92a763c2c5" );
04116             add1_len = unhexify( add1, "" );
04117             add_reseed_len = unhexify( add_reseed, "" );
04118             add2_len = unhexify( add2, "" );
04119         
04120             test_offset = 0;
04121             fct_chk( ctr_drbg_init_entropy_len( &ctx, entropy_func, entropy, add_init, add_init_len, 32 ) == 0 );
04122         
04123             fct_chk( ctr_drbg_random_with_add( &ctx, buf, 16, add1, add1_len ) == 0 );
04124             fct_chk( ctr_drbg_reseed( &ctx, add_reseed, add_reseed_len ) == 0 );
04125             fct_chk( ctr_drbg_random_with_add( &ctx, buf, 16, add2, add2_len ) == 0 );
04126             hexify( output_str, buf, 16 );
04127             fct_chk( strcmp( (char *) output_str, "1124c509ca52693977cf461b0f0a0da9" ) == 0 );
04128         }
04129         FCT_TEST_END();
04130 
04131 
04132         FCT_TEST_BGN(ctr_drbg_nist_validation_aes_256_use_dffalse25612800_5)
04133         {
04134             unsigned char entropy[512];
04135             unsigned char add_init[512];
04136             unsigned char add1[512];
04137             unsigned char add_reseed[512];
04138             unsigned char add2[512];
04139             ctr_drbg_context ctx;
04140             unsigned char buf[512];
04141             unsigned char output_str[512];
04142             int add_init_len, add1_len, add_reseed_len, add2_len;
04143         
04144             memset( output_str, 0, 512 );
04145         
04146             unhexify( entropy, "554cf6fad1c376ad6148cd40b53105c16e2f5dd5fa564865b26faa8c318150bfb2294e711735df5eb86ff4b4e778531793bad42403d93a80d05c5421229a53da" );
04147             add_init_len = unhexify( add_init, "ae0b0d2e84f48c632f031356cdea60ac" );
04148             add1_len = unhexify( add1, "" );
04149             add_reseed_len = unhexify( add_reseed, "" );
04150             add2_len = unhexify( add2, "" );
04151         
04152             test_offset = 0;
04153             fct_chk( ctr_drbg_init_entropy_len( &ctx, entropy_func, entropy, add_init, add_init_len, 32 ) == 0 );
04154         
04155             fct_chk( ctr_drbg_random_with_add( &ctx, buf, 16, add1, add1_len ) == 0 );
04156             fct_chk( ctr_drbg_reseed( &ctx, add_reseed, add_reseed_len ) == 0 );
04157             fct_chk( ctr_drbg_random_with_add( &ctx, buf, 16, add2, add2_len ) == 0 );
04158             hexify( output_str, buf, 16 );
04159             fct_chk( strcmp( (char *) output_str, "1212e5d3070b1cdf52c0217866481c58" ) == 0 );
04160         }
04161         FCT_TEST_END();
04162 
04163 
04164         FCT_TEST_BGN(ctr_drbg_nist_validation_aes_256_use_dffalse25612800_6)
04165         {
04166             unsigned char entropy[512];
04167             unsigned char add_init[512];
04168             unsigned char add1[512];
04169             unsigned char add_reseed[512];
04170             unsigned char add2[512];
04171             ctr_drbg_context ctx;
04172             unsigned char buf[512];
04173             unsigned char output_str[512];
04174             int add_init_len, add1_len, add_reseed_len, add2_len;
04175         
04176             memset( output_str, 0, 512 );
04177         
04178             unhexify( entropy, "7cffe2bef0d42374f7263a386b67fba991e59cefd73590cbcde3a4dc635a5a328f1a8e5edd3ada75854f251ee9f2de6cd247f64c6ca4f6c983805aa0fe9d3106" );
04179             add_init_len = unhexify( add_init, "16b8c7495d43cd2ff5f65ad2ab48ecef" );
04180             add1_len = unhexify( add1, "" );
04181             add_reseed_len = unhexify( add_reseed, "" );
04182             add2_len = unhexify( add2, "" );
04183         
04184             test_offset = 0;
04185             fct_chk( ctr_drbg_init_entropy_len( &ctx, entropy_func, entropy, add_init, add_init_len, 32 ) == 0 );
04186         
04187             fct_chk( ctr_drbg_random_with_add( &ctx, buf, 16, add1, add1_len ) == 0 );
04188             fct_chk( ctr_drbg_reseed( &ctx, add_reseed, add_reseed_len ) == 0 );
04189             fct_chk( ctr_drbg_random_with_add( &ctx, buf, 16, add2, add2_len ) == 0 );
04190             hexify( output_str, buf, 16 );
04191             fct_chk( strcmp( (char *) output_str, "d3869a9c5004b8a6ae8d8f0f461b602b" ) == 0 );
04192         }
04193         FCT_TEST_END();
04194 
04195 
04196         FCT_TEST_BGN(ctr_drbg_nist_validation_aes_256_use_dffalse25612800_7)
04197         {
04198             unsigned char entropy[512];
04199             unsigned char add_init[512];
04200             unsigned char add1[512];
04201             unsigned char add_reseed[512];
04202             unsigned char add2[512];
04203             ctr_drbg_context ctx;
04204             unsigned char buf[512];
04205             unsigned char output_str[512];
04206             int add_init_len, add1_len, add_reseed_len, add2_len;
04207         
04208             memset( output_str, 0, 512 );
04209         
04210             unhexify( entropy, "59759bb91b3c4feb18c0f086269ec52e097b67698f4dfe91ebe8bef851caa35cadb3fd22d1309f13510e1252856c71394a8e210fdbf3c7aae7998865f98e8744" );
04211             add_init_len = unhexify( add_init, "a2d5eff6f73f98e5b04c01967dffa69b" );
04212             add1_len = unhexify( add1, "" );
04213             add_reseed_len = unhexify( add_reseed, "" );
04214             add2_len = unhexify( add2, "" );
04215         
04216             test_offset = 0;
04217             fct_chk( ctr_drbg_init_entropy_len( &ctx, entropy_func, entropy, add_init, add_init_len, 32 ) == 0 );
04218         
04219             fct_chk( ctr_drbg_random_with_add( &ctx, buf, 16, add1, add1_len ) == 0 );
04220             fct_chk( ctr_drbg_reseed( &ctx, add_reseed, add_reseed_len ) == 0 );
04221             fct_chk( ctr_drbg_random_with_add( &ctx, buf, 16, add2, add2_len ) == 0 );
04222             hexify( output_str, buf, 16 );
04223             fct_chk( strcmp( (char *) output_str, "a1f99bd9522342e963af2ec8eed25c08" ) == 0 );
04224         }
04225         FCT_TEST_END();
04226 
04227 
04228         FCT_TEST_BGN(ctr_drbg_nist_validation_aes_256_use_dffalse25612800_8)
04229         {
04230             unsigned char entropy[512];
04231             unsigned char add_init[512];
04232             unsigned char add1[512];
04233             unsigned char add_reseed[512];
04234             unsigned char add2[512];
04235             ctr_drbg_context ctx;
04236             unsigned char buf[512];
04237             unsigned char output_str[512];
04238             int add_init_len, add1_len, add_reseed_len, add2_len;
04239         
04240             memset( output_str, 0, 512 );
04241         
04242             unhexify( entropy, "0ec7c617f85bec74044111020c977be32ab8050b326ebc03715bbbffa5a34622f2264d4b5141b7883281c21ea91981155a64fb7b902e674e9a41a8a86c32052b" );
04243             add_init_len = unhexify( add_init, "ea1f47fe5e281136706419ea9b652967" );
04244             add1_len = unhexify( add1, "" );
04245             add_reseed_len = unhexify( add_reseed, "" );
04246             add2_len = unhexify( add2, "" );
04247         
04248             test_offset = 0;
04249             fct_chk( ctr_drbg_init_entropy_len( &ctx, entropy_func, entropy, add_init, add_init_len, 32 ) == 0 );
04250         
04251             fct_chk( ctr_drbg_random_with_add( &ctx, buf, 16, add1, add1_len ) == 0 );
04252             fct_chk( ctr_drbg_reseed( &ctx, add_reseed, add_reseed_len ) == 0 );
04253             fct_chk( ctr_drbg_random_with_add( &ctx, buf, 16, add2, add2_len ) == 0 );
04254             hexify( output_str, buf, 16 );
04255             fct_chk( strcmp( (char *) output_str, "daf75b8288fc66802b23af5fd04a9434" ) == 0 );
04256         }
04257         FCT_TEST_END();
04258 
04259 
04260         FCT_TEST_BGN(ctr_drbg_nist_validation_aes_256_use_dffalse25612800_9)
04261         {
04262             unsigned char entropy[512];
04263             unsigned char add_init[512];
04264             unsigned char add1[512];
04265             unsigned char add_reseed[512];
04266             unsigned char add2[512];
04267             ctr_drbg_context ctx;
04268             unsigned char buf[512];
04269             unsigned char output_str[512];
04270             int add_init_len, add1_len, add_reseed_len, add2_len;
04271         
04272             memset( output_str, 0, 512 );
04273         
04274             unhexify( entropy, "cd7ce90f0141e80f6bd6ff3d981d8a0a877d0ddae7c98f9091763b5946fc38b64c1ef698485007d53251ad278daf5d4ae94a725d617fc9a45a919a9e785a9849" );
04275             add_init_len = unhexify( add_init, "6f072c681a82c00dcd0d9dd5b7ffa2af" );
04276             add1_len = unhexify( add1, "" );
04277             add_reseed_len = unhexify( add_reseed, "" );
04278             add2_len = unhexify( add2, "" );
04279         
04280             test_offset = 0;
04281             fct_chk( ctr_drbg_init_entropy_len( &ctx, entropy_func, entropy, add_init, add_init_len, 32 ) == 0 );
04282         
04283             fct_chk( ctr_drbg_random_with_add( &ctx, buf, 16, add1, add1_len ) == 0 );
04284             fct_chk( ctr_drbg_reseed( &ctx, add_reseed, add_reseed_len ) == 0 );
04285             fct_chk( ctr_drbg_random_with_add( &ctx, buf, 16, add2, add2_len ) == 0 );
04286             hexify( output_str, buf, 16 );
04287             fct_chk( strcmp( (char *) output_str, "39c0144f28c5a490eff6221b62384602" ) == 0 );
04288         }
04289         FCT_TEST_END();
04290 
04291 
04292         FCT_TEST_BGN(ctr_drbg_nist_validation_aes_256_use_dffalse25612800_10)
04293         {
04294             unsigned char entropy[512];
04295             unsigned char add_init[512];
04296             unsigned char add1[512];
04297             unsigned char add_reseed[512];
04298             unsigned char add2[512];
04299             ctr_drbg_context ctx;
04300             unsigned char buf[512];
04301             unsigned char output_str[512];
04302             int add_init_len, add1_len, add_reseed_len, add2_len;
04303         
04304             memset( output_str, 0, 512 );
04305         
04306             unhexify( entropy, "854766e842eb165a31551f96008354bca1628a9520d29c3cc4f6a41068bf76d8054b75b7d69f5865266c310b5e9f0290af37c5d94535cb5dc9c854ea1cb36eb7" );
04307             add_init_len = unhexify( add_init, "9d730655366e2aa89ee09332bd0a5053" );
04308             add1_len = unhexify( add1, "" );
04309             add_reseed_len = unhexify( add_reseed, "" );
04310             add2_len = unhexify( add2, "" );
04311         
04312             test_offset = 0;
04313             fct_chk( ctr_drbg_init_entropy_len( &ctx, entropy_func, entropy, add_init, add_init_len, 32 ) == 0 );
04314         
04315             fct_chk( ctr_drbg_random_with_add( &ctx, buf, 16, add1, add1_len ) == 0 );
04316             fct_chk( ctr_drbg_reseed( &ctx, add_reseed, add_reseed_len ) == 0 );
04317             fct_chk( ctr_drbg_random_with_add( &ctx, buf, 16, add2, add2_len ) == 0 );
04318             hexify( output_str, buf, 16 );
04319             fct_chk( strcmp( (char *) output_str, "baa2a3ed6fdc049d0f158693db8c70ef" ) == 0 );
04320         }
04321         FCT_TEST_END();
04322 
04323 
04324         FCT_TEST_BGN(ctr_drbg_nist_validation_aes_256_use_dffalse25612800_11)
04325         {
04326             unsigned char entropy[512];
04327             unsigned char add_init[512];
04328             unsigned char add1[512];
04329             unsigned char add_reseed[512];
04330             unsigned char add2[512];
04331             ctr_drbg_context ctx;
04332             unsigned char buf[512];
04333             unsigned char output_str[512];
04334             int add_init_len, add1_len, add_reseed_len, add2_len;
04335         
04336             memset( output_str, 0, 512 );
04337         
04338             unhexify( entropy, "6abfab14cbf222d553d0e930a38941f6f271b48943ea6f69e796e30135bc9eb30204b77ab416ac066da0a649c8558e5a0eac62f54f2f6e66c207cab461c71510" );
04339             add_init_len = unhexify( add_init, "3363881611bfd5d16814360e83d8544f" );
04340             add1_len = unhexify( add1, "" );
04341             add_reseed_len = unhexify( add_reseed, "" );
04342             add2_len = unhexify( add2, "" );
04343         
04344             test_offset = 0;
04345             fct_chk( ctr_drbg_init_entropy_len( &ctx, entropy_func, entropy, add_init, add_init_len, 32 ) == 0 );
04346         
04347             fct_chk( ctr_drbg_random_with_add( &ctx, buf, 16, add1, add1_len ) == 0 );
04348             fct_chk( ctr_drbg_reseed( &ctx, add_reseed, add_reseed_len ) == 0 );
04349             fct_chk( ctr_drbg_random_with_add( &ctx, buf, 16, add2, add2_len ) == 0 );
04350             hexify( output_str, buf, 16 );
04351             fct_chk( strcmp( (char *) output_str, "5be410ce54288e881acd3e566964df78" ) == 0 );
04352         }
04353         FCT_TEST_END();
04354 
04355 
04356         FCT_TEST_BGN(ctr_drbg_nist_validation_aes_256_use_dffalse25612800_12)
04357         {
04358             unsigned char entropy[512];
04359             unsigned char add_init[512];
04360             unsigned char add1[512];
04361             unsigned char add_reseed[512];
04362             unsigned char add2[512];
04363             ctr_drbg_context ctx;
04364             unsigned char buf[512];
04365             unsigned char output_str[512];
04366             int add_init_len, add1_len, add_reseed_len, add2_len;
04367         
04368             memset( output_str, 0, 512 );
04369         
04370             unhexify( entropy, "0d2e446cad387a962ff2217c7cf4826dcabb997ab7f74f64aa18fbcb69151993f263925ae71f9dfdff122bb61802480f2803930efce01a3f37c97101893c140f" );
04371             add_init_len = unhexify( add_init, "14e589065423528ff84a1f89507ab519" );
04372             add1_len = unhexify( add1, "" );
04373             add_reseed_len = unhexify( add_reseed, "" );
04374             add2_len = unhexify( add2, "" );
04375         
04376             test_offset = 0;
04377             fct_chk( ctr_drbg_init_entropy_len( &ctx, entropy_func, entropy, add_init, add_init_len, 32 ) == 0 );
04378         
04379             fct_chk( ctr_drbg_random_with_add( &ctx, buf, 16, add1, add1_len ) == 0 );
04380             fct_chk( ctr_drbg_reseed( &ctx, add_reseed, add_reseed_len ) == 0 );
04381             fct_chk( ctr_drbg_random_with_add( &ctx, buf, 16, add2, add2_len ) == 0 );
04382             hexify( output_str, buf, 16 );
04383             fct_chk( strcmp( (char *) output_str, "fc2d3df6c9aae68fb01d8382fcd82104" ) == 0 );
04384         }
04385         FCT_TEST_END();
04386 
04387 
04388         FCT_TEST_BGN(ctr_drbg_nist_validation_aes_256_use_dffalse25612800_13)
04389         {
04390             unsigned char entropy[512];
04391             unsigned char add_init[512];
04392             unsigned char add1[512];
04393             unsigned char add_reseed[512];
04394             unsigned char add2[512];
04395             ctr_drbg_context ctx;
04396             unsigned char buf[512];
04397             unsigned char output_str[512];
04398             int add_init_len, add1_len, add_reseed_len, add2_len;
04399         
04400             memset( output_str, 0, 512 );
04401         
04402             unhexify( entropy, "aa04d9fc56349fdd31d868e9efc2938f9104c0291e55ac0aa0c24ec4609731b8e0ac04b42180bde1af6ad1b26faff8a6de60a8a4a828cd6f8758c54b6037a0ee" );
04403             add_init_len = unhexify( add_init, "974c5ae90347d839475f0f994f2bf01d" );
04404             add1_len = unhexify( add1, "" );
04405             add_reseed_len = unhexify( add_reseed, "" );
04406             add2_len = unhexify( add2, "" );
04407         
04408             test_offset = 0;
04409             fct_chk( ctr_drbg_init_entropy_len( &ctx, entropy_func, entropy, add_init, add_init_len, 32 ) == 0 );
04410         
04411             fct_chk( ctr_drbg_random_with_add( &ctx, buf, 16, add1, add1_len ) == 0 );
04412             fct_chk( ctr_drbg_reseed( &ctx, add_reseed, add_reseed_len ) == 0 );
04413             fct_chk( ctr_drbg_random_with_add( &ctx, buf, 16, add2, add2_len ) == 0 );
04414             hexify( output_str, buf, 16 );
04415             fct_chk( strcmp( (char *) output_str, "3caec482015003643d5a319a2af48fb4" ) == 0 );
04416         }
04417         FCT_TEST_END();
04418 
04419 
04420         FCT_TEST_BGN(ctr_drbg_nist_validation_aes_256_use_dffalse25612800_14)
04421         {
04422             unsigned char entropy[512];
04423             unsigned char add_init[512];
04424             unsigned char add1[512];
04425             unsigned char add_reseed[512];
04426             unsigned char add2[512];
04427             ctr_drbg_context ctx;
04428             unsigned char buf[512];
04429             unsigned char output_str[512];
04430             int add_init_len, add1_len, add_reseed_len, add2_len;
04431         
04432             memset( output_str, 0, 512 );
04433         
04434             unhexify( entropy, "203bba645fb5ccee3383cf402e04c713b7a6b6cca8b154e827520daac4ea3a0247bbdc3b2cd853e170587d22c70fb96c320ea71cb80c04826316c7317c797b8a" );
04435             add_init_len = unhexify( add_init, "b3a110587a16c1eafe51128a66816ecf" );
04436             add1_len = unhexify( add1, "" );
04437             add_reseed_len = unhexify( add_reseed, "" );
04438             add2_len = unhexify( add2, "" );
04439         
04440             test_offset = 0;
04441             fct_chk( ctr_drbg_init_entropy_len( &ctx, entropy_func, entropy, add_init, add_init_len, 32 ) == 0 );
04442         
04443             fct_chk( ctr_drbg_random_with_add( &ctx, buf, 16, add1, add1_len ) == 0 );
04444             fct_chk( ctr_drbg_reseed( &ctx, add_reseed, add_reseed_len ) == 0 );
04445             fct_chk( ctr_drbg_random_with_add( &ctx, buf, 16, add2, add2_len ) == 0 );
04446             hexify( output_str, buf, 16 );
04447             fct_chk( strcmp( (char *) output_str, "9af4f67a30a4346e0cfcf51c45fd2589" ) == 0 );
04448         }
04449         FCT_TEST_END();
04450 
04451 
04452         FCT_TEST_BGN(ctr_drbg_nist_validation_aes_256_use_dffalse2561280256_0)
04453         {
04454             unsigned char entropy[512];
04455             unsigned char add_init[512];
04456             unsigned char add1[512];
04457             unsigned char add_reseed[512];
04458             unsigned char add2[512];
04459             ctr_drbg_context ctx;
04460             unsigned char buf[512];
04461             unsigned char output_str[512];
04462             int add_init_len, add1_len, add_reseed_len, add2_len;
04463         
04464             memset( output_str, 0, 512 );
04465         
04466             unhexify( entropy, "951e712d057028158831ca8c74d4ae303c6e4641c344a1c80292260bdd9d8e2f5b97606370e95903e3124659de3e3f6e021cd9ccc86aa4a619c0e94b2a9aa3cc" );
04467             add_init_len = unhexify( add_init, "55546068cd524c51496c5fc9622b64c6" );
04468             add1_len = unhexify( add1, "2d6de8661c7a30a0ca6a20c13c4c04421ba200fbef4f6eb499c17aee1561faf1" );
04469             add_reseed_len = unhexify( add_reseed, "41797b2eeaccb8a002538d3480cb0b76060ee5ba9d7e4a2bb2b201154f61c975" );
04470             add2_len = unhexify( add2, "b744980bb0377e176b07f48e7994fffd7b0d8a539e1f02a5535d2f4051f054f3" );
04471         
04472             test_offset = 0;
04473             fct_chk( ctr_drbg_init_entropy_len( &ctx, entropy_func, entropy, add_init, add_init_len, 32 ) == 0 );
04474         
04475             fct_chk( ctr_drbg_random_with_add( &ctx, buf, 16, add1, add1_len ) == 0 );
04476             fct_chk( ctr_drbg_reseed( &ctx, add_reseed, add_reseed_len ) == 0 );
04477             fct_chk( ctr_drbg_random_with_add( &ctx, buf, 16, add2, add2_len ) == 0 );
04478             hexify( output_str, buf, 16 );
04479             fct_chk( strcmp( (char *) output_str, "65b9f7382ed578af03efa2008dbdd56f" ) == 0 );
04480         }
04481         FCT_TEST_END();
04482 
04483 
04484         FCT_TEST_BGN(ctr_drbg_nist_validation_aes_256_use_dffalse2561280256_1)
04485         {
04486             unsigned char entropy[512];
04487             unsigned char add_init[512];
04488             unsigned char add1[512];
04489             unsigned char add_reseed[512];
04490             unsigned char add2[512];
04491             ctr_drbg_context ctx;
04492             unsigned char buf[512];
04493             unsigned char output_str[512];
04494             int add_init_len, add1_len, add_reseed_len, add2_len;
04495         
04496             memset( output_str, 0, 512 );
04497         
04498             unhexify( entropy, "6e9b31755c1f45df7d685f86044ab3bc25433a3ff08ab5de7154e06b0867f4e3531ed2e2a15ab63c611fc2894240fdac1d3292d1b36da87caa2080d1c41bcf24" );
04499             add_init_len = unhexify( add_init, "a0c92565640a3315cac8da6d0458fb07" );
04500             add1_len = unhexify( add1, "c6c74690bdee26288d2f87a06435d664431206b23b24f426e847fb892d40d5d5" );
04501             add_reseed_len = unhexify( add_reseed, "4e7dc1adbc8bc16ba7b584c18a0d7e4383c470bff2f320af54ad5ade5f43265b" );
04502             add2_len = unhexify( add2, "c6fb8ee194a339726f5051b91925c6a214079a661ec78358e98fc4f41e8c4724" );
04503         
04504             test_offset = 0;
04505             fct_chk( ctr_drbg_init_entropy_len( &ctx, entropy_func, entropy, add_init, add_init_len, 32 ) == 0 );
04506         
04507             fct_chk( ctr_drbg_random_with_add( &ctx, buf, 16, add1, add1_len ) == 0 );
04508             fct_chk( ctr_drbg_reseed( &ctx, add_reseed, add_reseed_len ) == 0 );
04509             fct_chk( ctr_drbg_random_with_add( &ctx, buf, 16, add2, add2_len ) == 0 );
04510             hexify( output_str, buf, 16 );
04511             fct_chk( strcmp( (char *) output_str, "c3f849ee7d87291301e11b467fa2162f" ) == 0 );
04512         }
04513         FCT_TEST_END();
04514 
04515 
04516         FCT_TEST_BGN(ctr_drbg_nist_validation_aes_256_use_dffalse2561280256_2)
04517         {
04518             unsigned char entropy[512];
04519             unsigned char add_init[512];
04520             unsigned char add1[512];
04521             unsigned char add_reseed[512];
04522             unsigned char add2[512];
04523             ctr_drbg_context ctx;
04524             unsigned char buf[512];
04525             unsigned char output_str[512];
04526             int add_init_len, add1_len, add_reseed_len, add2_len;
04527         
04528             memset( output_str, 0, 512 );
04529         
04530             unhexify( entropy, "62c2c790cb56518ed2d8d65952bbd4ab85a56463495c940b94f403a93338bdc96129feea9335b1a3e0ada7cf4c207f4732013bc6a52db41407bf5d6fe9183b3c" );
04531             add_init_len = unhexify( add_init, "63e143bd6a87065a00eea930593f9b29" );
04532             add1_len = unhexify( add1, "7b4e9ff0c8f8c90f8b324c7189226d3adccd79df2d0c22b52fb31dbb5dfefba6" );
04533             add_reseed_len = unhexify( add_reseed, "49e1aecf2b96a366325dc1892c016a5535dd2480360a382e9cc78bf75b2bba37" );
04534             add2_len = unhexify( add2, "f4ce1d27e759f3ba4a56aaab713642b4c56810c9995fbfc04ce285429f95a8f4" );
04535         
04536             test_offset = 0;
04537             fct_chk( ctr_drbg_init_entropy_len( &ctx, entropy_func, entropy, add_init, add_init_len, 32 ) == 0 );
04538         
04539             fct_chk( ctr_drbg_random_with_add( &ctx, buf, 16, add1, add1_len ) == 0 );
04540             fct_chk( ctr_drbg_reseed( &ctx, add_reseed, add_reseed_len ) == 0 );
04541             fct_chk( ctr_drbg_random_with_add( &ctx, buf, 16, add2, add2_len ) == 0 );
04542             hexify( output_str, buf, 16 );
04543             fct_chk( strcmp( (char *) output_str, "513111abaae3069e599b56f7e5fb91d1" ) == 0 );
04544         }
04545         FCT_TEST_END();
04546 
04547 
04548         FCT_TEST_BGN(ctr_drbg_nist_validation_aes_256_use_dffalse2561280256_3)
04549         {
04550             unsigned char entropy[512];
04551             unsigned char add_init[512];
04552             unsigned char add1[512];
04553             unsigned char add_reseed[512];
04554             unsigned char add2[512];
04555             ctr_drbg_context ctx;
04556             unsigned char buf[512];
04557             unsigned char output_str[512];
04558             int add_init_len, add1_len, add_reseed_len, add2_len;
04559         
04560             memset( output_str, 0, 512 );
04561         
04562             unhexify( entropy, "2fab4a629e4b21f27488a0c9ed36fc8e75bee0c386346c6ec59a6f045975e29818440a6638eb3b9e952e19df82d6dc7b8b9c18530aef763d0709b3b55433ddc6" );
04563             add_init_len = unhexify( add_init, "98dc16e95f97b5b9d8287875774d9d19" );
04564             add1_len = unhexify( add1, "2e9d2f52a55df05fb8b9549947f8690c9ce410268d1d3aa7d69e63cbb28e4eb8" );
04565             add_reseed_len = unhexify( add_reseed, "57ecdad71d709dcdb1eba6cf36e0ecf04aaccd7527ca44c6f96768968027274f" );
04566             add2_len = unhexify( add2, "7b2da3d1ae252a71bccbb318e0eec95493a236f0dec97f2600de9f0743030529" );
04567         
04568             test_offset = 0;
04569             fct_chk( ctr_drbg_init_entropy_len( &ctx, entropy_func, entropy, add_init, add_init_len, 32 ) == 0 );
04570         
04571             fct_chk( ctr_drbg_random_with_add( &ctx, buf, 16, add1, add1_len ) == 0 );
04572             fct_chk( ctr_drbg_reseed( &ctx, add_reseed, add_reseed_len ) == 0 );
04573             fct_chk( ctr_drbg_random_with_add( &ctx, buf, 16, add2, add2_len ) == 0 );
04574             hexify( output_str, buf, 16 );
04575             fct_chk( strcmp( (char *) output_str, "841882e4d9346bea32b1216eebc06aac" ) == 0 );
04576         }
04577         FCT_TEST_END();
04578 
04579 
04580         FCT_TEST_BGN(ctr_drbg_nist_validation_aes_256_use_dffalse2561280256_4)
04581         {
04582             unsigned char entropy[512];
04583             unsigned char add_init[512];
04584             unsigned char add1[512];
04585             unsigned char add_reseed[512];
04586             unsigned char add2[512];
04587             ctr_drbg_context ctx;
04588             unsigned char buf[512];
04589             unsigned char output_str[512];
04590             int add_init_len, add1_len, add_reseed_len, add2_len;
04591         
04592             memset( output_str, 0, 512 );
04593         
04594             unhexify( entropy, "c00b28c78da4f9ce159741437fe7f90e4e23ecd01cd292f197202decbbc823d9ce46b8191c11e8f8d007d38e2ecd93b8bd9bbad5812aaf547ddf4c7a6738b777" );
04595             add_init_len = unhexify( add_init, "5dbac5c313527d4d0e5ca9b6f5596ed7" );
04596             add1_len = unhexify( add1, "460c54f4c3fe49d9b25b069ff6664517ed3b234890175a59cde5c3bc230c0a9e" );
04597             add_reseed_len = unhexify( add_reseed, "bf5187f1f55ae6711c2bc1884324490bf2d29d29e95cad7a1c295045eed5a310" );
04598             add2_len = unhexify( add2, "28fd8277dcb807741d4d5cb255a8d9a32ef56a880ccf2b3dcca54645bd6f1013" );
04599         
04600             test_offset = 0;
04601             fct_chk( ctr_drbg_init_entropy_len( &ctx, entropy_func, entropy, add_init, add_init_len, 32 ) == 0 );
04602         
04603             fct_chk( ctr_drbg_random_with_add( &ctx, buf, 16, add1, add1_len ) == 0 );
04604             fct_chk( ctr_drbg_reseed( &ctx, add_reseed, add_reseed_len ) == 0 );
04605             fct_chk( ctr_drbg_random_with_add( &ctx, buf, 16, add2, add2_len ) == 0 );
04606             hexify( output_str, buf, 16 );
04607             fct_chk( strcmp( (char *) output_str, "b488f5c13bb017b0d9de2092d577c76e" ) == 0 );
04608         }
04609         FCT_TEST_END();
04610 
04611 
04612         FCT_TEST_BGN(ctr_drbg_nist_validation_aes_256_use_dffalse2561280256_5)
04613         {
04614             unsigned char entropy[512];
04615             unsigned char add_init[512];
04616             unsigned char add1[512];
04617             unsigned char add_reseed[512];
04618             unsigned char add2[512];
04619             ctr_drbg_context ctx;
04620             unsigned char buf[512];
04621             unsigned char output_str[512];
04622             int add_init_len, add1_len, add_reseed_len, add2_len;
04623         
04624             memset( output_str, 0, 512 );
04625         
04626             unhexify( entropy, "4c1cc9ebe7a03cde31860637d8222faeefa9cbf789fab62e99a98d83084fef29eafcf7177d62d55435a1acb77e7a61ad86c47d1950b8683e167fe3ece3f8c9e8" );
04627             add_init_len = unhexify( add_init, "254d5f5044415c694a89249b0b6e1a2c" );
04628             add1_len = unhexify( add1, "71af584657160f0f0b81740ef93017a37c174bee5a02c8967f087fdbfd33bfde" );
04629             add_reseed_len = unhexify( add_reseed, "96e8522f6ed8e8a9772ffb19e9416a1c6293ad6d1ecd317972e2f6258d7d68dd" );
04630             add2_len = unhexify( add2, "3aaa5e4d6af79055742150e630c5e3a46288e216d6607793c021d6705349f96a" );
04631         
04632             test_offset = 0;
04633             fct_chk( ctr_drbg_init_entropy_len( &ctx, entropy_func, entropy, add_init, add_init_len, 32 ) == 0 );
04634         
04635             fct_chk( ctr_drbg_random_with_add( &ctx, buf, 16, add1, add1_len ) == 0 );
04636             fct_chk( ctr_drbg_reseed( &ctx, add_reseed, add_reseed_len ) == 0 );
04637             fct_chk( ctr_drbg_random_with_add( &ctx, buf, 16, add2, add2_len ) == 0 );
04638             hexify( output_str, buf, 16 );
04639             fct_chk( strcmp( (char *) output_str, "66629af4a0e90550b9bd3811243d6b86" ) == 0 );
04640         }
04641         FCT_TEST_END();
04642 
04643 
04644         FCT_TEST_BGN(ctr_drbg_nist_validation_aes_256_use_dffalse2561280256_6)
04645         {
04646             unsigned char entropy[512];
04647             unsigned char add_init[512];
04648             unsigned char add1[512];
04649             unsigned char add_reseed[512];
04650             unsigned char add2[512];
04651             ctr_drbg_context ctx;
04652             unsigned char buf[512];
04653             unsigned char output_str[512];
04654             int add_init_len, add1_len, add_reseed_len, add2_len;
04655         
04656             memset( output_str, 0, 512 );
04657         
04658             unhexify( entropy, "ff62d52aed55d8e966044f7f7c5013b4915197c73668e01b4487c3243bbf5f9248a4fdd6ef0f63b87fc8d1c5d514ff243319b2fbdfa474d5f83b935399655e15" );
04659             add_init_len = unhexify( add_init, "b46fceed0fcc29665815cc9459971913" );
04660             add1_len = unhexify( add1, "994d6b5393fbf0351f0bcfb48e1e763b377b732c73bf8e28dec720a2cadcb8a5" );
04661             add_reseed_len = unhexify( add_reseed, "118bb8c7a43b9c30afaf9ce4db3e6a60a3f9d01c30b9ab3572662955808b41e4" );
04662             add2_len = unhexify( add2, "bb47e443090afc32ee34873bd106bf867650adf5b5d90a2e7d0e58ed0ae83e8a" );
04663         
04664             test_offset = 0;
04665             fct_chk( ctr_drbg_init_entropy_len( &ctx, entropy_func, entropy, add_init, add_init_len, 32 ) == 0 );
04666         
04667             fct_chk( ctr_drbg_random_with_add( &ctx, buf, 16, add1, add1_len ) == 0 );
04668             fct_chk( ctr_drbg_reseed( &ctx, add_reseed, add_reseed_len ) == 0 );
04669             fct_chk( ctr_drbg_random_with_add( &ctx, buf, 16, add2, add2_len ) == 0 );
04670             hexify( output_str, buf, 16 );
04671             fct_chk( strcmp( (char *) output_str, "1865fee6024db510690725f16b938487" ) == 0 );
04672         }
04673         FCT_TEST_END();
04674 
04675 
04676         FCT_TEST_BGN(ctr_drbg_nist_validation_aes_256_use_dffalse2561280256_7)
04677         {
04678             unsigned char entropy[512];
04679             unsigned char add_init[512];
04680             unsigned char add1[512];
04681             unsigned char add_reseed[512];
04682             unsigned char add2[512];
04683             ctr_drbg_context ctx;
04684             unsigned char buf[512];
04685             unsigned char output_str[512];
04686             int add_init_len, add1_len, add_reseed_len, add2_len;
04687         
04688             memset( output_str, 0, 512 );
04689         
04690             unhexify( entropy, "bf1ba4166007b53fcaee41f9c54771c8a0b309a52ea7894a005783c1e3e43e2eb9871d7909a1c3567953aabdf75e38c8f5578c51a692d883755102a0c82c7c12" );
04691             add_init_len = unhexify( add_init, "e1a5dd32fc7cefb281d5d6ce3200f4ca" );
04692             add1_len = unhexify( add1, "32e9922bd780303828091a140274d04f879cd821f352bd18bcaa49ffef840010" );
04693             add_reseed_len = unhexify( add_reseed, "01830ddd2f0e323c90830beddedf1480e6c23b0d99c2201871f18cc308ab3139" );
04694             add2_len = unhexify( add2, "f36d792dbde7609b8bf4724d7d71362840b309c5f2961e2537c8b5979a569ae8" );
04695         
04696             test_offset = 0;
04697             fct_chk( ctr_drbg_init_entropy_len( &ctx, entropy_func, entropy, add_init, add_init_len, 32 ) == 0 );
04698         
04699             fct_chk( ctr_drbg_random_with_add( &ctx, buf, 16, add1, add1_len ) == 0 );
04700             fct_chk( ctr_drbg_reseed( &ctx, add_reseed, add_reseed_len ) == 0 );
04701             fct_chk( ctr_drbg_random_with_add( &ctx, buf, 16, add2, add2_len ) == 0 );
04702             hexify( output_str, buf, 16 );
04703             fct_chk( strcmp( (char *) output_str, "7080e8379a43c2e28e07d0c7ed9705a8" ) == 0 );
04704         }
04705         FCT_TEST_END();
04706 
04707 
04708         FCT_TEST_BGN(ctr_drbg_nist_validation_aes_256_use_dffalse2561280256_8)
04709         {
04710             unsigned char entropy[512];
04711             unsigned char add_init[512];
04712             unsigned char add1[512];
04713             unsigned char add_reseed[512];
04714             unsigned char add2[512];
04715             ctr_drbg_context ctx;
04716             unsigned char buf[512];
04717             unsigned char output_str[512];
04718             int add_init_len, add1_len, add_reseed_len, add2_len;
04719         
04720             memset( output_str, 0, 512 );
04721         
04722             unhexify( entropy, "6ac34c4ce22b644632283ab13e294df2093e939d32411340b046c26fcc449d0fd6d14132c7205df303dbb663190e6e86ad12e14e145b6603308241f38d94eb5d" );
04723             add_init_len = unhexify( add_init, "d1b7be857a422b425ae62c61e90a192a" );
04724             add1_len = unhexify( add1, "aacfe8553d5ffef6abc3fd8f94d796cae2079ff04f7ab1b41982003f02427c7a" );
04725             add_reseed_len = unhexify( add_reseed, "01d2d1bc29d6a6b52bb29bd6652be772096ca23c838c40730d5b4a4f8f735daa" );
04726             add2_len = unhexify( add2, "27af728ee07d3f5902f4e56453b6a9feb308ef14795eb5630b2651debdd36d5b" );
04727         
04728             test_offset = 0;
04729             fct_chk( ctr_drbg_init_entropy_len( &ctx, entropy_func, entropy, add_init, add_init_len, 32 ) == 0 );
04730         
04731             fct_chk( ctr_drbg_random_with_add( &ctx, buf, 16, add1, add1_len ) == 0 );
04732             fct_chk( ctr_drbg_reseed( &ctx, add_reseed, add_reseed_len ) == 0 );
04733             fct_chk( ctr_drbg_random_with_add( &ctx, buf, 16, add2, add2_len ) == 0 );
04734             hexify( output_str, buf, 16 );
04735             fct_chk( strcmp( (char *) output_str, "b03fbcd03fa1cc69db0a4e3492a52bad" ) == 0 );
04736         }
04737         FCT_TEST_END();
04738 
04739 
04740         FCT_TEST_BGN(ctr_drbg_nist_validation_aes_256_use_dffalse2561280256_9)
04741         {
04742             unsigned char entropy[512];
04743             unsigned char add_init[512];
04744             unsigned char add1[512];
04745             unsigned char add_reseed[512];
04746             unsigned char add2[512];
04747             ctr_drbg_context ctx;
04748             unsigned char buf[512];
04749             unsigned char output_str[512];
04750             int add_init_len, add1_len, add_reseed_len, add2_len;
04751         
04752             memset( output_str, 0, 512 );
04753         
04754             unhexify( entropy, "5684c3eb99314127078484959314d52b3bc50cb3615c0eef6b48850d98aee04c528b0693be13ed1bb4040e8e96cb13c316143f0815cd68d1bb7931a3d9b88a3d" );
04755             add_init_len = unhexify( add_init, "a2c49aa6f3f92e36266bf267af5877ed" );
04756             add1_len = unhexify( add1, "566522085426b76bdef152adefd73ef0f76eee4614bc5a4391629ec49e0acffb" );
04757             add_reseed_len = unhexify( add_reseed, "30ef9585148dd2270c41540a4235328de8952f28cf5472df463e88e837419e99" );
04758             add2_len = unhexify( add2, "adc46e0afcf69302f62c84c5c4bfcbb7132f8db118d1a84dc2b910753fe86a2d" );
04759         
04760             test_offset = 0;
04761             fct_chk( ctr_drbg_init_entropy_len( &ctx, entropy_func, entropy, add_init, add_init_len, 32 ) == 0 );
04762         
04763             fct_chk( ctr_drbg_random_with_add( &ctx, buf, 16, add1, add1_len ) == 0 );
04764             fct_chk( ctr_drbg_reseed( &ctx, add_reseed, add_reseed_len ) == 0 );
04765             fct_chk( ctr_drbg_random_with_add( &ctx, buf, 16, add2, add2_len ) == 0 );
04766             hexify( output_str, buf, 16 );
04767             fct_chk( strcmp( (char *) output_str, "4edc4383977ee91aaa2f5b9ac4257570" ) == 0 );
04768         }
04769         FCT_TEST_END();
04770 
04771 
04772         FCT_TEST_BGN(ctr_drbg_nist_validation_aes_256_use_dffalse2561280256_10)
04773         {
04774             unsigned char entropy[512];
04775             unsigned char add_init[512];
04776             unsigned char add1[512];
04777             unsigned char add_reseed[512];
04778             unsigned char add2[512];
04779             ctr_drbg_context ctx;
04780             unsigned char buf[512];
04781             unsigned char output_str[512];
04782             int add_init_len, add1_len, add_reseed_len, add2_len;
04783         
04784             memset( output_str, 0, 512 );
04785         
04786             unhexify( entropy, "ab7bca5595084bccdba80ade7ac3df2a0ce198fa49d29414c0249ec3d1c50d271ca74ba5c3521576a89a1964e6deded2d5ba7ff28a364a8f9235981bec1bedfa" );
04787             add_init_len = unhexify( add_init, "43852c53041a3a4f710435dbd3e4382b" );
04788             add1_len = unhexify( add1, "c5612a9540b64fc134074cb36f4c9ea62fff993938709b5d354a917e5265adee" );
04789             add_reseed_len = unhexify( add_reseed, "eee2258aba665aa6d3f5b8c2207f135276f597adb2a0fbfb16a20460e8cc3c68" );
04790             add2_len = unhexify( add2, "a6d6d126bed13dbcf2b327aa884b7260a9c388cb03751dbe9feb28a3fe351d62" );
04791         
04792             test_offset = 0;
04793             fct_chk( ctr_drbg_init_entropy_len( &ctx, entropy_func, entropy, add_init, add_init_len, 32 ) == 0 );
04794         
04795             fct_chk( ctr_drbg_random_with_add( &ctx, buf, 16, add1, add1_len ) == 0 );
04796             fct_chk( ctr_drbg_reseed( &ctx, add_reseed, add_reseed_len ) == 0 );
04797             fct_chk( ctr_drbg_random_with_add( &ctx, buf, 16, add2, add2_len ) == 0 );
04798             hexify( output_str, buf, 16 );
04799             fct_chk( strcmp( (char *) output_str, "e04c3de51a1ffe8cda89e881c396584b" ) == 0 );
04800         }
04801         FCT_TEST_END();
04802 
04803 
04804         FCT_TEST_BGN(ctr_drbg_nist_validation_aes_256_use_dffalse2561280256_11)
04805         {
04806             unsigned char entropy[512];
04807             unsigned char add_init[512];
04808             unsigned char add1[512];
04809             unsigned char add_reseed[512];
04810             unsigned char add2[512];
04811             ctr_drbg_context ctx;
04812             unsigned char buf[512];
04813             unsigned char output_str[512];
04814             int add_init_len, add1_len, add_reseed_len, add2_len;
04815         
04816             memset( output_str, 0, 512 );
04817         
04818             unhexify( entropy, "b3a4a3c4d3d53ffa41b85ce3b8f292b1cc8e5af7488286d4c581005f8c02c5545c09bb08d8470b8cffdf62731b1d4b75c036af7dc4f2f1fc7e9a496f3d235f2d" );
04819             add_init_len = unhexify( add_init, "52628551ce90c338ed94b655d4f05811" );
04820             add1_len = unhexify( add1, "f5f9d5b51075b12aa300afdc7b8ea3944fc8cf4d1e95625cc4e42fdfdcbeb169" );
04821             add_reseed_len = unhexify( add_reseed, "60bccbc7345f23733fe8f8eb9760975057238705d9cee33b3269f9bfedd72202" );
04822             add2_len = unhexify( add2, "c0fa3afd6e9decfbffa7ea6678d2481c5f55ec0a35172ff93214b997400e97c3" );
04823         
04824             test_offset = 0;
04825             fct_chk( ctr_drbg_init_entropy_len( &ctx, entropy_func, entropy, add_init, add_init_len, 32 ) == 0 );
04826         
04827             fct_chk( ctr_drbg_random_with_add( &ctx, buf, 16, add1, add1_len ) == 0 );
04828             fct_chk( ctr_drbg_reseed( &ctx, add_reseed, add_reseed_len ) == 0 );
04829             fct_chk( ctr_drbg_random_with_add( &ctx, buf, 16, add2, add2_len ) == 0 );
04830             hexify( output_str, buf, 16 );
04831             fct_chk( strcmp( (char *) output_str, "5a113906e1ef76b7b75fefbf20d78ef8" ) == 0 );
04832         }
04833         FCT_TEST_END();
04834 
04835 
04836         FCT_TEST_BGN(ctr_drbg_nist_validation_aes_256_use_dffalse2561280256_12)
04837         {
04838             unsigned char entropy[512];
04839             unsigned char add_init[512];
04840             unsigned char add1[512];
04841             unsigned char add_reseed[512];
04842             unsigned char add2[512];
04843             ctr_drbg_context ctx;
04844             unsigned char buf[512];
04845             unsigned char output_str[512];
04846             int add_init_len, add1_len, add_reseed_len, add2_len;
04847         
04848             memset( output_str, 0, 512 );
04849         
04850             unhexify( entropy, "1ab7c7d8fe8f505e1dd7ddb8e7cda962572f7004b2a14c7a7c5bcf24bd16616e2c42c50ae5db9981ccd7d0c79062ac572d3893486bd0ae1f99cbc1d28a9e4c1e" );
04851             add_init_len = unhexify( add_init, "0e4873c4cbcde280abc6711a66dbb81a" );
04852             add1_len = unhexify( add1, "e4b89e28663e853f8b380c8a4491b54121fe6927340a74342362c37d8d615b66" );
04853             add_reseed_len = unhexify( add_reseed, "619775878879eff9ee2189790ff6f187baed4ed1b156029b80e7a070a1072a09" );
04854             add2_len = unhexify( add2, "ba3d673e5e41bd1abbc7191cc4b9a945201b8fef0016e4774047ee2abf499e74" );
04855         
04856             test_offset = 0;
04857             fct_chk( ctr_drbg_init_entropy_len( &ctx, entropy_func, entropy, add_init, add_init_len, 32 ) == 0 );
04858         
04859             fct_chk( ctr_drbg_random_with_add( &ctx, buf, 16, add1, add1_len ) == 0 );
04860             fct_chk( ctr_drbg_reseed( &ctx, add_reseed, add_reseed_len ) == 0 );
04861             fct_chk( ctr_drbg_random_with_add( &ctx, buf, 16, add2, add2_len ) == 0 );
04862             hexify( output_str, buf, 16 );
04863             fct_chk( strcmp( (char *) output_str, "4758fd021c34a5cf6bea760ad09438a0" ) == 0 );
04864         }
04865         FCT_TEST_END();
04866 
04867 
04868         FCT_TEST_BGN(ctr_drbg_nist_validation_aes_256_use_dffalse2561280256_13)
04869         {
04870             unsigned char entropy[512];
04871             unsigned char add_init[512];
04872             unsigned char add1[512];
04873             unsigned char add_reseed[512];
04874             unsigned char add2[512];
04875             ctr_drbg_context ctx;
04876             unsigned char buf[512];
04877             unsigned char output_str[512];
04878             int add_init_len, add1_len, add_reseed_len, add2_len;
04879         
04880             memset( output_str, 0, 512 );
04881         
04882             unhexify( entropy, "748a5f5fde271c563a8f8d15520d6818f7ed0efb9b434adf2ff9471b391dd225b37868179ffa9a6e58df3b1b765b8945685a2f966d29648dd86a42078339650b" );
04883             add_init_len = unhexify( add_init, "0684e8ef93c3363ba535c4e573af1c24" );
04884             add1_len = unhexify( add1, "e90c82153d2280f1ddb55bd65e7752bf6717fbe08c49414f6c129bf608578db7" );
04885             add_reseed_len = unhexify( add_reseed, "c17e97c93cfabe0b925ca5d22615a06430a201b7595ad0d9967cc89a4777947d" );
04886             add2_len = unhexify( add2, "3d554c430c8928dcdb1f6d5e5a4306b309856a9b78c5f431c55d7ebd519443bb" );
04887         
04888             test_offset = 0;
04889             fct_chk( ctr_drbg_init_entropy_len( &ctx, entropy_func, entropy, add_init, add_init_len, 32 ) == 0 );
04890         
04891             fct_chk( ctr_drbg_random_with_add( &ctx, buf, 16, add1, add1_len ) == 0 );
04892             fct_chk( ctr_drbg_reseed( &ctx, add_reseed, add_reseed_len ) == 0 );
04893             fct_chk( ctr_drbg_random_with_add( &ctx, buf, 16, add2, add2_len ) == 0 );
04894             hexify( output_str, buf, 16 );
04895             fct_chk( strcmp( (char *) output_str, "d3da71af70e196483c951d95eb3f0135" ) == 0 );
04896         }
04897         FCT_TEST_END();
04898 
04899 
04900         FCT_TEST_BGN(ctr_drbg_nist_validation_aes_256_use_dffalse2561280256_14)
04901         {
04902             unsigned char entropy[512];
04903             unsigned char add_init[512];
04904             unsigned char add1[512];
04905             unsigned char add_reseed[512];
04906             unsigned char add2[512];
04907             ctr_drbg_context ctx;
04908             unsigned char buf[512];
04909             unsigned char output_str[512];
04910             int add_init_len, add1_len, add_reseed_len, add2_len;
04911         
04912             memset( output_str, 0, 512 );
04913         
04914             unhexify( entropy, "e2366eec626bfd9cb932bcaa0569de6a7a37cf1dfde1f25d00d1a0c89fe25fea592cbd2af7c8202521fa48e15f7cc7e97e431b222b516a3ad2bb7b55b7fcf7f4" );
04915             add_init_len = unhexify( add_init, "89b885ddb12abc4f7422334f27c00439" );
04916             add1_len = unhexify( add1, "c77ee92bd17939efe9bee48af66589aee1d9fe4cd6c8ae26b74b3799e35342a6" );
04917             add_reseed_len = unhexify( add_reseed, "23e80d36ca72ecc38551e7e0a4f9502bed0e160f382d802f48fb2714ec6e3315" );
04918             add2_len = unhexify( add2, "6b83f7458dc813ce0b963b231c424e8bced599d002c0ef91a9c20dcc3f172ea5" );
04919         
04920             test_offset = 0;
04921             fct_chk( ctr_drbg_init_entropy_len( &ctx, entropy_func, entropy, add_init, add_init_len, 32 ) == 0 );
04922         
04923             fct_chk( ctr_drbg_random_with_add( &ctx, buf, 16, add1, add1_len ) == 0 );
04924             fct_chk( ctr_drbg_reseed( &ctx, add_reseed, add_reseed_len ) == 0 );
04925             fct_chk( ctr_drbg_random_with_add( &ctx, buf, 16, add2, add2_len ) == 0 );
04926             hexify( output_str, buf, 16 );
04927             fct_chk( strcmp( (char *) output_str, "81d13a6b79f05137e233e3c3a1091360" ) == 0 );
04928         }
04929         FCT_TEST_END();
04930 
04931 
04932         FCT_TEST_BGN(ctr_drbg_nist_validation_aes_256_use_dffalse2561282560_0)
04933         {
04934             unsigned char entropy[512];
04935             unsigned char add_init[512];
04936             unsigned char add1[512];
04937             unsigned char add_reseed[512];
04938             unsigned char add2[512];
04939             ctr_drbg_context ctx;
04940             unsigned char buf[512];
04941             unsigned char output_str[512];
04942             int add_init_len, add1_len, add_reseed_len, add2_len;
04943         
04944             memset( output_str, 0, 512 );
04945         
04946             unhexify( entropy, "77de4e5db3b308c38c814228583dfd1eb415771f4ae30f9cc2d35b48075286a4e8c2c6f441d1aac496d0d4be395d078519e31cb77d06d6f7fd4c033bc40fd659" );
04947             add_init_len = unhexify( add_init, "ff568be02a46343113f06949a16cc7d9da315aef82f5681f0459650e5e180e65d1d77b00e5ce3e3f9eb6c18efff4db36" );
04948             add1_len = unhexify( add1, "" );
04949             add_reseed_len = unhexify( add_reseed, "" );
04950             add2_len = unhexify( add2, "" );
04951         
04952             test_offset = 0;
04953             fct_chk( ctr_drbg_init_entropy_len( &ctx, entropy_func, entropy, add_init, add_init_len, 32 ) == 0 );
04954         
04955             fct_chk( ctr_drbg_random_with_add( &ctx, buf, 16, add1, add1_len ) == 0 );
04956             fct_chk( ctr_drbg_reseed( &ctx, add_reseed, add_reseed_len ) == 0 );
04957             fct_chk( ctr_drbg_random_with_add( &ctx, buf, 16, add2, add2_len ) == 0 );
04958             hexify( output_str, buf, 16 );
04959             fct_chk( strcmp( (char *) output_str, "448ac707ba934c909335425de62944d6" ) == 0 );
04960         }
04961         FCT_TEST_END();
04962 
04963 
04964         FCT_TEST_BGN(ctr_drbg_nist_validation_aes_256_use_dffalse2561282560_1)
04965         {
04966             unsigned char entropy[512];
04967             unsigned char add_init[512];
04968             unsigned char add1[512];
04969             unsigned char add_reseed[512];
04970             unsigned char add2[512];
04971             ctr_drbg_context ctx;
04972             unsigned char buf[512];
04973             unsigned char output_str[512];
04974             int add_init_len, add1_len, add_reseed_len, add2_len;
04975         
04976             memset( output_str, 0, 512 );
04977         
04978             unhexify( entropy, "667d3ed9f41a154ea33b55182b8bee4d7d46eff8e890c7036cf7c2665d44c28f9e3a8cff166dabfaf262933d337e729e0b6a60a51d00ba18f877bdc9d0cc659e" );
04979             add_init_len = unhexify( add_init, "6f092b85eb9f96427642f69467911172cba6df86e0db08d04e824cde6fb91d9b9af2cea53f42d53c45ee3e69a2327172" );
04980             add1_len = unhexify( add1, "" );
04981             add_reseed_len = unhexify( add_reseed, "" );
04982             add2_len = unhexify( add2, "" );
04983         
04984             test_offset = 0;
04985             fct_chk( ctr_drbg_init_entropy_len( &ctx, entropy_func, entropy, add_init, add_init_len, 32 ) == 0 );
04986         
04987             fct_chk( ctr_drbg_random_with_add( &ctx, buf, 16, add1, add1_len ) == 0 );
04988             fct_chk( ctr_drbg_reseed( &ctx, add_reseed, add_reseed_len ) == 0 );
04989             fct_chk( ctr_drbg_random_with_add( &ctx, buf, 16, add2, add2_len ) == 0 );
04990             hexify( output_str, buf, 16 );
04991             fct_chk( strcmp( (char *) output_str, "16a200f683ab862947e061cddaac5597" ) == 0 );
04992         }
04993         FCT_TEST_END();
04994 
04995 
04996         FCT_TEST_BGN(ctr_drbg_nist_validation_aes_256_use_dffalse2561282560_2)
04997         {
04998             unsigned char entropy[512];
04999             unsigned char add_init[512];
05000             unsigned char add1[512];
05001             unsigned char add_reseed[512];
05002             unsigned char add2[512];
05003             ctr_drbg_context ctx;
05004             unsigned char buf[512];
05005             unsigned char output_str[512];
05006             int add_init_len, add1_len, add_reseed_len, add2_len;
05007         
05008             memset( output_str, 0, 512 );
05009         
05010             unhexify( entropy, "80e56f9893beb9f22b2b03caa8f1861d5b31b37f636f2ccbc7e4040ad3073aa20f2f3c6bfefc041df8e57e7100794c42732b6d4b63d8bb51329ca99671d53c7c" );
05011             add_init_len = unhexify( add_init, "26e635a6a2b6402b968c1eea13c6a980a0ee9b8497abc14fccdc5bf8439008861f74de2c200505185bf5907d3adc9de2" );
05012             add1_len = unhexify( add1, "" );
05013             add_reseed_len = unhexify( add_reseed, "" );
05014             add2_len = unhexify( add2, "" );
05015         
05016             test_offset = 0;
05017             fct_chk( ctr_drbg_init_entropy_len( &ctx, entropy_func, entropy, add_init, add_init_len, 32 ) == 0 );
05018         
05019             fct_chk( ctr_drbg_random_with_add( &ctx, buf, 16, add1, add1_len ) == 0 );
05020             fct_chk( ctr_drbg_reseed( &ctx, add_reseed, add_reseed_len ) == 0 );
05021             fct_chk( ctr_drbg_random_with_add( &ctx, buf, 16, add2, add2_len ) == 0 );
05022             hexify( output_str, buf, 16 );
05023             fct_chk( strcmp( (char *) output_str, "807586c977febcf2ad28fcd45e1a1deb" ) == 0 );
05024         }
05025         FCT_TEST_END();
05026 
05027 
05028         FCT_TEST_BGN(ctr_drbg_nist_validation_aes_256_use_dffalse2561282560_3)
05029         {
05030             unsigned char entropy[512];
05031             unsigned char add_init[512];
05032             unsigned char add1[512];
05033             unsigned char add_reseed[512];
05034             unsigned char add2[512];
05035             ctr_drbg_context ctx;
05036             unsigned char buf[512];
05037             unsigned char output_str[512];
05038             int add_init_len, add1_len, add_reseed_len, add2_len;
05039         
05040             memset( output_str, 0, 512 );
05041         
05042             unhexify( entropy, "c963e17ef46b7b2c68756019704ec7435ec093c423600b3f2f99dd8989f8539a11b1b0598e93e84d50b65e816e794421ab546b202e4b224a8494538dda85da82" );
05043             add_init_len = unhexify( add_init, "b239c485d319ce964d69bd3dbc5b7ab9cc72ac9134a25e641bcd3c8b6f89e7e08ef2d0a45cf67667a4e2e634b32d73ff" );
05044             add1_len = unhexify( add1, "" );
05045             add_reseed_len = unhexify( add_reseed, "" );
05046             add2_len = unhexify( add2, "" );
05047         
05048             test_offset = 0;
05049             fct_chk( ctr_drbg_init_entropy_len( &ctx, entropy_func, entropy, add_init, add_init_len, 32 ) == 0 );
05050         
05051             fct_chk( ctr_drbg_random_with_add( &ctx, buf, 16, add1, add1_len ) == 0 );
05052             fct_chk( ctr_drbg_reseed( &ctx, add_reseed, add_reseed_len ) == 0 );
05053             fct_chk( ctr_drbg_random_with_add( &ctx, buf, 16, add2, add2_len ) == 0 );
05054             hexify( output_str, buf, 16 );
05055             fct_chk( strcmp( (char *) output_str, "2a3218b4d59f99bd3825631a6eefb09c" ) == 0 );
05056         }
05057         FCT_TEST_END();
05058 
05059 
05060         FCT_TEST_BGN(ctr_drbg_nist_validation_aes_256_use_dffalse2561282560_4)
05061         {
05062             unsigned char entropy[512];
05063             unsigned char add_init[512];
05064             unsigned char add1[512];
05065             unsigned char add_reseed[512];
05066             unsigned char add2[512];
05067             ctr_drbg_context ctx;
05068             unsigned char buf[512];
05069             unsigned char output_str[512];
05070             int add_init_len, add1_len, add_reseed_len, add2_len;
05071         
05072             memset( output_str, 0, 512 );
05073         
05074             unhexify( entropy, "71a440b70a2b5ce41b85de27d987fa2a0628d7990dd7cd1460fddc5410ce6e9bb0ae4f90231f45bc71188fd94e4170389a8bbe4a7e781c95c9a97ad78ba7d07b" );
05075             add_init_len = unhexify( add_init, "0239545a23735b803ae7cb7766194917d6cce164f7ec4f65c6ccd5ec1db5297722d4b7466589da4d39f4585856bc1d7e" );
05076             add1_len = unhexify( add1, "" );
05077             add_reseed_len = unhexify( add_reseed, "" );
05078             add2_len = unhexify( add2, "" );
05079         
05080             test_offset = 0;
05081             fct_chk( ctr_drbg_init_entropy_len( &ctx, entropy_func, entropy, add_init, add_init_len, 32 ) == 0 );
05082         
05083             fct_chk( ctr_drbg_random_with_add( &ctx, buf, 16, add1, add1_len ) == 0 );
05084             fct_chk( ctr_drbg_reseed( &ctx, add_reseed, add_reseed_len ) == 0 );
05085             fct_chk( ctr_drbg_random_with_add( &ctx, buf, 16, add2, add2_len ) == 0 );
05086             hexify( output_str, buf, 16 );
05087             fct_chk( strcmp( (char *) output_str, "9dafaa8b727c4829dda10a831e67419d" ) == 0 );
05088         }
05089         FCT_TEST_END();
05090 
05091 
05092         FCT_TEST_BGN(ctr_drbg_nist_validation_aes_256_use_dffalse2561282560_5)
05093         {
05094             unsigned char entropy[512];
05095             unsigned char add_init[512];
05096             unsigned char add1[512];
05097             unsigned char add_reseed[512];
05098             unsigned char add2[512];
05099             ctr_drbg_context ctx;
05100             unsigned char buf[512];
05101             unsigned char output_str[512];
05102             int add_init_len, add1_len, add_reseed_len, add2_len;
05103         
05104             memset( output_str, 0, 512 );
05105         
05106             unhexify( entropy, "d8908cfc1ea8518c1442e46731f30fdad85399894db262b8f4fdc0dbcbf11b60b60b25d3108f4b169fcbef621a14c635525fa3af8ccef6b91f808479509967f4" );
05107             add_init_len = unhexify( add_init, "237e8916eadd65e3422fe59ab257b7e6957fe24f760b499fbd052241879e8294b01d2169ec2b98f52660d9f5170dee22" );
05108             add1_len = unhexify( add1, "" );
05109             add_reseed_len = unhexify( add_reseed, "" );
05110             add2_len = unhexify( add2, "" );
05111         
05112             test_offset = 0;
05113             fct_chk( ctr_drbg_init_entropy_len( &ctx, entropy_func, entropy, add_init, add_init_len, 32 ) == 0 );
05114         
05115             fct_chk( ctr_drbg_random_with_add( &ctx, buf, 16, add1, add1_len ) == 0 );
05116             fct_chk( ctr_drbg_reseed( &ctx, add_reseed, add_reseed_len ) == 0 );
05117             fct_chk( ctr_drbg_random_with_add( &ctx, buf, 16, add2, add2_len ) == 0 );
05118             hexify( output_str, buf, 16 );
05119             fct_chk( strcmp( (char *) output_str, "593c39c56bb9e476550299ee8d85d2fc" ) == 0 );
05120         }
05121         FCT_TEST_END();
05122 
05123 
05124         FCT_TEST_BGN(ctr_drbg_nist_validation_aes_256_use_dffalse2561282560_6)
05125         {
05126             unsigned char entropy[512];
05127             unsigned char add_init[512];
05128             unsigned char add1[512];
05129             unsigned char add_reseed[512];
05130             unsigned char add2[512];
05131             ctr_drbg_context ctx;
05132             unsigned char buf[512];
05133             unsigned char output_str[512];
05134             int add_init_len, add1_len, add_reseed_len, add2_len;
05135         
05136             memset( output_str, 0, 512 );
05137         
05138             unhexify( entropy, "6767c3eb6ba1b19412c32bfe44e4d0317beba10f3abea328cda7b7c14109b72046c8691c1c7b28487037d381f77a3bbc8464a51b87de68bdc50ec9c658f915ab" );
05139             add_init_len = unhexify( add_init, "28b6639b415c79012c749dc2a0d18433ec36eda55815f0841241453fa11b9d572b7c29208e01dbb0be91e1075f305d7f" );
05140             add1_len = unhexify( add1, "" );
05141             add_reseed_len = unhexify( add_reseed, "" );
05142             add2_len = unhexify( add2, "" );
05143         
05144             test_offset = 0;
05145             fct_chk( ctr_drbg_init_entropy_len( &ctx, entropy_func, entropy, add_init, add_init_len, 32 ) == 0 );
05146         
05147             fct_chk( ctr_drbg_random_with_add( &ctx, buf, 16, add1, add1_len ) == 0 );
05148             fct_chk( ctr_drbg_reseed( &ctx, add_reseed, add_reseed_len ) == 0 );
05149             fct_chk( ctr_drbg_random_with_add( &ctx, buf, 16, add2, add2_len ) == 0 );
05150             hexify( output_str, buf, 16 );
05151             fct_chk( strcmp( (char *) output_str, "e390806219fa727e74a90011b4835ed6" ) == 0 );
05152         }
05153         FCT_TEST_END();
05154 
05155 
05156         FCT_TEST_BGN(ctr_drbg_nist_validation_aes_256_use_dffalse2561282560_7)
05157         {
05158             unsigned char entropy[512];
05159             unsigned char add_init[512];
05160             unsigned char add1[512];
05161             unsigned char add_reseed[512];
05162             unsigned char add2[512];
05163             ctr_drbg_context ctx;
05164             unsigned char buf[512];
05165             unsigned char output_str[512];
05166             int add_init_len, add1_len, add_reseed_len, add2_len;
05167         
05168             memset( output_str, 0, 512 );
05169         
05170             unhexify( entropy, "510b0dc06e84ceb901c7195c2f00ad7a04bdd75e0ab52b3d2cd47ddfcd89248dd58e3f1aa8c1ffe306f493905f65369eaed2a5b337dff8ac81c4c1e8903a6ad5" );
05171             add_init_len = unhexify( add_init, "ce735a8549fc3f9dfc7b96bf0d48936a711439ac7271d715a278718aca9e2fe3c801030bc74b048ac1e40852345e87cc" );
05172             add1_len = unhexify( add1, "" );
05173             add_reseed_len = unhexify( add_reseed, "" );
05174             add2_len = unhexify( add2, "" );
05175         
05176             test_offset = 0;
05177             fct_chk( ctr_drbg_init_entropy_len( &ctx, entropy_func, entropy, add_init, add_init_len, 32 ) == 0 );
05178         
05179             fct_chk( ctr_drbg_random_with_add( &ctx, buf, 16, add1, add1_len ) == 0 );
05180             fct_chk( ctr_drbg_reseed( &ctx, add_reseed, add_reseed_len ) == 0 );
05181             fct_chk( ctr_drbg_random_with_add( &ctx, buf, 16, add2, add2_len ) == 0 );
05182             hexify( output_str, buf, 16 );
05183             fct_chk( strcmp( (char *) output_str, "ba871ba5843083b553a57cf8defa39d7" ) == 0 );
05184         }
05185         FCT_TEST_END();
05186 
05187 
05188         FCT_TEST_BGN(ctr_drbg_nist_validation_aes_256_use_dffalse2561282560_8)
05189         {
05190             unsigned char entropy[512];
05191             unsigned char add_init[512];
05192             unsigned char add1[512];
05193             unsigned char add_reseed[512];
05194             unsigned char add2[512];
05195             ctr_drbg_context ctx;
05196             unsigned char buf[512];
05197             unsigned char output_str[512];
05198             int add_init_len, add1_len, add_reseed_len, add2_len;
05199         
05200             memset( output_str, 0, 512 );
05201         
05202             unhexify( entropy, "97511ae52590a0b64b75c37e10b89671880d2d6e8f90780ac27263dbc0e32d0824be5e80a88cf8fc3d4c607eb873c0322d09b9ca3498c4015c53ca6fee890093" );
05203             add_init_len = unhexify( add_init, "841ea92fa42c06769c5c52fe152d07837b8ff0048392caa5dd045054353d363b25439eb5885e96771dded4005f2baf42" );
05204             add1_len = unhexify( add1, "" );
05205             add_reseed_len = unhexify( add_reseed, "" );
05206             add2_len = unhexify( add2, "" );
05207         
05208             test_offset = 0;
05209             fct_chk( ctr_drbg_init_entropy_len( &ctx, entropy_func, entropy, add_init, add_init_len, 32 ) == 0 );
05210         
05211             fct_chk( ctr_drbg_random_with_add( &ctx, buf, 16, add1, add1_len ) == 0 );
05212             fct_chk( ctr_drbg_reseed( &ctx, add_reseed, add_reseed_len ) == 0 );
05213             fct_chk( ctr_drbg_random_with_add( &ctx, buf, 16, add2, add2_len ) == 0 );
05214             hexify( output_str, buf, 16 );
05215             fct_chk( strcmp( (char *) output_str, "a8fb31362bd997adf4d9116e23dbaf10" ) == 0 );
05216         }
05217         FCT_TEST_END();
05218 
05219 
05220         FCT_TEST_BGN(ctr_drbg_nist_validation_aes_256_use_dffalse2561282560_9)
05221         {
05222             unsigned char entropy[512];
05223             unsigned char add_init[512];
05224             unsigned char add1[512];
05225             unsigned char add_reseed[512];
05226             unsigned char add2[512];
05227             ctr_drbg_context ctx;
05228             unsigned char buf[512];
05229             unsigned char output_str[512];
05230             int add_init_len, add1_len, add_reseed_len, add2_len;
05231         
05232             memset( output_str, 0, 512 );
05233         
05234             unhexify( entropy, "bafc0ba64669c9a36514bde6169034101f29e2a0a4b9a55c0aae7dff0c5aca2371b523e26dc44bf75493bdaa023d1555294178288b70f1ae72150d9f7265b4e6" );
05235             add_init_len = unhexify( add_init, "55cd76fa5f004b97bb8e14170f79f52715d18c60f142b06d16e8e06c274798190a79c8b325163989d86323c03dbe0d68" );
05236             add1_len = unhexify( add1, "" );
05237             add_reseed_len = unhexify( add_reseed, "" );
05238             add2_len = unhexify( add2, "" );
05239         
05240             test_offset = 0;
05241             fct_chk( ctr_drbg_init_entropy_len( &ctx, entropy_func, entropy, add_init, add_init_len, 32 ) == 0 );
05242         
05243             fct_chk( ctr_drbg_random_with_add( &ctx, buf, 16, add1, add1_len ) == 0 );
05244             fct_chk( ctr_drbg_reseed( &ctx, add_reseed, add_reseed_len ) == 0 );
05245             fct_chk( ctr_drbg_random_with_add( &ctx, buf, 16, add2, add2_len ) == 0 );
05246             hexify( output_str, buf, 16 );
05247             fct_chk( strcmp( (char *) output_str, "fa16dbdaf01b3c202426adabf61fa64a" ) == 0 );
05248         }
05249         FCT_TEST_END();
05250 
05251 
05252         FCT_TEST_BGN(ctr_drbg_nist_validation_aes_256_use_dffalse2561282560_10)
05253         {
05254             unsigned char entropy[512];
05255             unsigned char add_init[512];
05256             unsigned char add1[512];
05257             unsigned char add_reseed[512];
05258             unsigned char add2[512];
05259             ctr_drbg_context ctx;
05260             unsigned char buf[512];
05261             unsigned char output_str[512];
05262             int add_init_len, add1_len, add_reseed_len, add2_len;
05263         
05264             memset( output_str, 0, 512 );
05265         
05266             unhexify( entropy, "92194e2c700fa724489683d0b6ddcf72c89b9c3f3ff584e802ae426be4908b1ade093bcf9baf7738b988dc0fde1739498a97c9610da853a7c83981c6a7b68096" );
05267             add_init_len = unhexify( add_init, "ff3f3098fa3d2b23b38ed982e7afb61d46b4848c878b9280f8e5ed6bd81176e76f0a2a85071a411829cf84421c22f23e" );
05268             add1_len = unhexify( add1, "" );
05269             add_reseed_len = unhexify( add_reseed, "" );
05270             add2_len = unhexify( add2, "" );
05271         
05272             test_offset = 0;
05273             fct_chk( ctr_drbg_init_entropy_len( &ctx, entropy_func, entropy, add_init, add_init_len, 32 ) == 0 );
05274         
05275             fct_chk( ctr_drbg_random_with_add( &ctx, buf, 16, add1, add1_len ) == 0 );
05276             fct_chk( ctr_drbg_reseed( &ctx, add_reseed, add_reseed_len ) == 0 );
05277             fct_chk( ctr_drbg_random_with_add( &ctx, buf, 16, add2, add2_len ) == 0 );
05278             hexify( output_str, buf, 16 );
05279             fct_chk( strcmp( (char *) output_str, "f85490426dc243ba09f9719bff73545a" ) == 0 );
05280         }
05281         FCT_TEST_END();
05282 
05283 
05284         FCT_TEST_BGN(ctr_drbg_nist_validation_aes_256_use_dffalse2561282560_11)
05285         {
05286             unsigned char entropy[512];
05287             unsigned char add_init[512];
05288             unsigned char add1[512];
05289             unsigned char add_reseed[512];
05290             unsigned char add2[512];
05291             ctr_drbg_context ctx;
05292             unsigned char buf[512];
05293             unsigned char output_str[512];
05294             int add_init_len, add1_len, add_reseed_len, add2_len;
05295         
05296             memset( output_str, 0, 512 );
05297         
05298             unhexify( entropy, "7c3806a32ccf3252ac27a92a07209cd7000b160faa70b9024420b903587d1d77f002d3abe28b563d32ccc502b88f83bc5996f3dbbf0f57835839eadd94563b9d" );
05299             add_init_len = unhexify( add_init, "7242c1020a63770cccf6f8100970990232a9d11d61c9b0d38fe5e7a568a86252a66481212e5d53c868561298dd5bdeec" );
05300             add1_len = unhexify( add1, "" );
05301             add_reseed_len = unhexify( add_reseed, "" );
05302             add2_len = unhexify( add2, "" );
05303         
05304             test_offset = 0;
05305             fct_chk( ctr_drbg_init_entropy_len( &ctx, entropy_func, entropy, add_init, add_init_len, 32 ) == 0 );
05306         
05307             fct_chk( ctr_drbg_random_with_add( &ctx, buf, 16, add1, add1_len ) == 0 );
05308             fct_chk( ctr_drbg_reseed( &ctx, add_reseed, add_reseed_len ) == 0 );
05309             fct_chk( ctr_drbg_random_with_add( &ctx, buf, 16, add2, add2_len ) == 0 );
05310             hexify( output_str, buf, 16 );
05311             fct_chk( strcmp( (char *) output_str, "2232181f08c1569efaad1a82bcb5f3ba" ) == 0 );
05312         }
05313         FCT_TEST_END();
05314 
05315 
05316         FCT_TEST_BGN(ctr_drbg_nist_validation_aes_256_use_dffalse2561282560_12)
05317         {
05318             unsigned char entropy[512];
05319             unsigned char add_init[512];
05320             unsigned char add1[512];
05321             unsigned char add_reseed[512];
05322             unsigned char add2[512];
05323             ctr_drbg_context ctx;
05324             unsigned char buf[512];
05325             unsigned char output_str[512];
05326             int add_init_len, add1_len, add_reseed_len, add2_len;
05327         
05328             memset( output_str, 0, 512 );
05329         
05330             unhexify( entropy, "fdae5f1ea253108fcb255d215a3ce1dc1d101acf89de4423b75a74619e95f3feaa35b5e0bec430b0ad9567df818989c36c77742129af335c90ceb6dd79c7d2c4" );
05331             add_init_len = unhexify( add_init, "a2e445290fed8187df6d2a57e68385bb62d700cb8f140410766b53e69e6a0f2939bbfa7ce091525c9051f064e383a2e1" );
05332             add1_len = unhexify( add1, "" );
05333             add_reseed_len = unhexify( add_reseed, "" );
05334             add2_len = unhexify( add2, "" );
05335         
05336             test_offset = 0;
05337             fct_chk( ctr_drbg_init_entropy_len( &ctx, entropy_func, entropy, add_init, add_init_len, 32 ) == 0 );
05338         
05339             fct_chk( ctr_drbg_random_with_add( &ctx, buf, 16, add1, add1_len ) == 0 );
05340             fct_chk( ctr_drbg_reseed( &ctx, add_reseed, add_reseed_len ) == 0 );
05341             fct_chk( ctr_drbg_random_with_add( &ctx, buf, 16, add2, add2_len ) == 0 );
05342             hexify( output_str, buf, 16 );
05343             fct_chk( strcmp( (char *) output_str, "3841e2d795b17cb9a2081d6016a1a71d" ) == 0 );
05344         }
05345         FCT_TEST_END();
05346 
05347 
05348         FCT_TEST_BGN(ctr_drbg_nist_validation_aes_256_use_dffalse2561282560_13)
05349         {
05350             unsigned char entropy[512];
05351             unsigned char add_init[512];
05352             unsigned char add1[512];
05353             unsigned char add_reseed[512];
05354             unsigned char add2[512];
05355             ctr_drbg_context ctx;
05356             unsigned char buf[512];
05357             unsigned char output_str[512];
05358             int add_init_len, add1_len, add_reseed_len, add2_len;
05359         
05360             memset( output_str, 0, 512 );
05361         
05362             unhexify( entropy, "77bef884a91126564b3214029ac6842d86e4c1fa283e33d6828d428377416f66947e39a4a6708e10bfdae8337a6f302420a6649fc109d0f094c18c1e9361375a" );
05363             add_init_len = unhexify( add_init, "bc885454e385d911336dda9b7a609a6a7079a4a5a860fcd704161c34658bd98685bb03418b7f24f2ed9475eb8ceb232e" );
05364             add1_len = unhexify( add1, "" );
05365             add_reseed_len = unhexify( add_reseed, "" );
05366             add2_len = unhexify( add2, "" );
05367         
05368             test_offset = 0;
05369             fct_chk( ctr_drbg_init_entropy_len( &ctx, entropy_func, entropy, add_init, add_init_len, 32 ) == 0 );
05370         
05371             fct_chk( ctr_drbg_random_with_add( &ctx, buf, 16, add1, add1_len ) == 0 );
05372             fct_chk( ctr_drbg_reseed( &ctx, add_reseed, add_reseed_len ) == 0 );
05373             fct_chk( ctr_drbg_random_with_add( &ctx, buf, 16, add2, add2_len ) == 0 );
05374             hexify( output_str, buf, 16 );
05375             fct_chk( strcmp( (char *) output_str, "ea20780ed280d8109f811a6a398c3e76" ) == 0 );
05376         }
05377         FCT_TEST_END();
05378 
05379 
05380         FCT_TEST_BGN(ctr_drbg_nist_validation_aes_256_use_dffalse2561282560_14)
05381         {
05382             unsigned char entropy[512];
05383             unsigned char add_init[512];
05384             unsigned char add1[512];
05385             unsigned char add_reseed[512];
05386             unsigned char add2[512];
05387             ctr_drbg_context ctx;
05388             unsigned char buf[512];
05389             unsigned char output_str[512];
05390             int add_init_len, add1_len, add_reseed_len, add2_len;
05391         
05392             memset( output_str, 0, 512 );
05393         
05394             unhexify( entropy, "56940a6fc4823c9e42e8ffed63fc3cf46d0a2b305c236a511b0b5ec7005ecd8989bf2006ebe52ed55845f7cc25d3d0086cece95f0bff6fa7e17ddf474704abfe" );
05395             add_init_len = unhexify( add_init, "c1825cf00cdc2da93adb3e7a33c1f3a76c49166887883744ea2683ddca23f31900f25c434364c992a6d913f753a9c42a" );
05396             add1_len = unhexify( add1, "" );
05397             add_reseed_len = unhexify( add_reseed, "" );
05398             add2_len = unhexify( add2, "" );
05399         
05400             test_offset = 0;
05401             fct_chk( ctr_drbg_init_entropy_len( &ctx, entropy_func, entropy, add_init, add_init_len, 32 ) == 0 );
05402         
05403             fct_chk( ctr_drbg_random_with_add( &ctx, buf, 16, add1, add1_len ) == 0 );
05404             fct_chk( ctr_drbg_reseed( &ctx, add_reseed, add_reseed_len ) == 0 );
05405             fct_chk( ctr_drbg_random_with_add( &ctx, buf, 16, add2, add2_len ) == 0 );
05406             hexify( output_str, buf, 16 );
05407             fct_chk( strcmp( (char *) output_str, "b037c7f0f85f4d7eaeeb17f4c8643a74" ) == 0 );
05408         }
05409         FCT_TEST_END();
05410 
05411 
05412         FCT_TEST_BGN(ctr_drbg_nist_validation_aes_256_use_dffalse256128256256_0)
05413         {
05414             unsigned char entropy[512];
05415             unsigned char add_init[512];
05416             unsigned char add1[512];
05417             unsigned char add_reseed[512];
05418             unsigned char add2[512];
05419             ctr_drbg_context ctx;
05420             unsigned char buf[512];
05421             unsigned char output_str[512];
05422             int add_init_len, add1_len, add_reseed_len, add2_len;
05423         
05424             memset( output_str, 0, 512 );
05425         
05426             unhexify( entropy, "5d85c56d0d20ee39958a90f301d2f8bb136fa34d09b41a0c9375114a0df9c1dcdb2a62c4be398d9eaf2440949b806f0e5a977da608eeb652a41711d1e9b72655" );
05427             add_init_len = unhexify( add_init, "19b83c0deea6463a3912d21ffc8d8041a5b30640352abc9652770cfca99dc53c9c09942ddd67b91f4da50a8615462ce4" );
05428             add1_len = unhexify( add1, "9c1db928b95c84cb674060a6d2f6b7a6a5d43e9ee967e9f821bf309ca5f8821f" );
05429             add_reseed_len = unhexify( add_reseed, "a3111cb57365c617df0b0bb3a1aada49ca789bc75903eeb21e42a7d3d0dd0825" );
05430             add2_len = unhexify( add2, "ce7f557c70676987d13aca60bc4585147efeed97be139871a1b29caa1e180af9" );
05431         
05432             test_offset = 0;
05433             fct_chk( ctr_drbg_init_entropy_len( &ctx, entropy_func, entropy, add_init, add_init_len, 32 ) == 0 );
05434         
05435             fct_chk( ctr_drbg_random_with_add( &ctx, buf, 16, add1, add1_len ) == 0 );
05436             fct_chk( ctr_drbg_reseed( &ctx, add_reseed, add_reseed_len ) == 0 );
05437             fct_chk( ctr_drbg_random_with_add( &ctx, buf, 16, add2, add2_len ) == 0 );
05438             hexify( output_str, buf, 16 );
05439             fct_chk( strcmp( (char *) output_str, "4a49430277d64446e2fa75763eb79ec6" ) == 0 );
05440         }
05441         FCT_TEST_END();
05442 
05443 
05444         FCT_TEST_BGN(ctr_drbg_nist_validation_aes_256_use_dffalse256128256256_1)
05445         {
05446             unsigned char entropy[512];
05447             unsigned char add_init[512];
05448             unsigned char add1[512];
05449             unsigned char add_reseed[512];
05450             unsigned char add2[512];
05451             ctr_drbg_context ctx;
05452             unsigned char buf[512];
05453             unsigned char output_str[512];
05454             int add_init_len, add1_len, add_reseed_len, add2_len;
05455         
05456             memset( output_str, 0, 512 );
05457         
05458             unhexify( entropy, "2975a099f7e6530e5576534c25171f39131d6bffb99259f7f2bbf7d77de9fb1e829052b54a9631a733113021692eba1097438347c6de82307a0c2bb308edf065" );
05459             add_init_len = unhexify( add_init, "239f21be6cda23e8660c8a5e04c79f6dad6f363ac6dcffd9228699ae43fbce5ac3c51645500cb3eae68f0b604dc4472c" );
05460             add1_len = unhexify( add1, "d451a54584e6d1d634217379e7e60e67303e19dd4ba63b097899c7349a5a7433" );
05461             add_reseed_len = unhexify( add_reseed, "a33dc24c6a656eb26275415581d568b7c2424a9c5fb9e2944ca35ecbf641f713" );
05462             add2_len = unhexify( add2, "8dfccc62379af46844df136122b72a878d9d61b40ccaa029b09e6b9f0b4d0192" );
05463         
05464             test_offset = 0;
05465             fct_chk( ctr_drbg_init_entropy_len( &ctx, entropy_func, entropy, add_init, add_init_len, 32 ) == 0 );
05466         
05467             fct_chk( ctr_drbg_random_with_add( &ctx, buf, 16, add1, add1_len ) == 0 );
05468             fct_chk( ctr_drbg_reseed( &ctx, add_reseed, add_reseed_len ) == 0 );
05469             fct_chk( ctr_drbg_random_with_add( &ctx, buf, 16, add2, add2_len ) == 0 );
05470             hexify( output_str, buf, 16 );
05471             fct_chk( strcmp( (char *) output_str, "005e91760d89ecb64b5fc3b0e222fca3" ) == 0 );
05472         }
05473         FCT_TEST_END();
05474 
05475 
05476         FCT_TEST_BGN(ctr_drbg_nist_validation_aes_256_use_dffalse256128256256_2)
05477         {
05478             unsigned char entropy[512];
05479             unsigned char add_init[512];
05480             unsigned char add1[512];
05481             unsigned char add_reseed[512];
05482             unsigned char add2[512];
05483             ctr_drbg_context ctx;
05484             unsigned char buf[512];
05485             unsigned char output_str[512];
05486             int add_init_len, add1_len, add_reseed_len, add2_len;
05487         
05488             memset( output_str, 0, 512 );
05489         
05490             unhexify( entropy, "37c94d11ed0e93b8199d43d6eb242165dddd12fe39c0bea4cdef6bcfeb5d17bb866f080a9daef128f685fb3bc59c945927fb0aa3e17068515c3c92fbdf04a228" );
05491             add_init_len = unhexify( add_init, "e326abbe1db3ead3738d2ca4d9f1d62080cd23ff3396f43a0af992bed2420cec6661dfaac83c3c4d83347ac840f7dc14" );
05492             add1_len = unhexify( add1, "1ff41405dbb3b12b8ddc973069edc2d2801af0e0dc9bde2cdd35c5b2d4091509" );
05493             add_reseed_len = unhexify( add_reseed, "138b6d2eabef4b32174afb0156ad1df570cf6e5f6ebde5d19cc30daffd9ca4f2" );
05494             add2_len = unhexify( add2, "f27cf7422808c54c58fcdde1cece92f5342c7a10ac43ab3b2e53362b2272e3ad" );
05495         
05496             test_offset = 0;
05497             fct_chk( ctr_drbg_init_entropy_len( &ctx, entropy_func, entropy, add_init, add_init_len, 32 ) == 0 );
05498         
05499             fct_chk( ctr_drbg_random_with_add( &ctx, buf, 16, add1, add1_len ) == 0 );
05500             fct_chk( ctr_drbg_reseed( &ctx, add_reseed, add_reseed_len ) == 0 );
05501             fct_chk( ctr_drbg_random_with_add( &ctx, buf, 16, add2, add2_len ) == 0 );
05502             hexify( output_str, buf, 16 );
05503             fct_chk( strcmp( (char *) output_str, "506d6fae6fff9f222e65ac86df61a832" ) == 0 );
05504         }
05505         FCT_TEST_END();
05506 
05507 
05508         FCT_TEST_BGN(ctr_drbg_nist_validation_aes_256_use_dffalse256128256256_3)
05509         {
05510             unsigned char entropy[512];
05511             unsigned char add_init[512];
05512             unsigned char add1[512];
05513             unsigned char add_reseed[512];
05514             unsigned char add2[512];
05515             ctr_drbg_context ctx;
05516             unsigned char buf[512];
05517             unsigned char output_str[512];
05518             int add_init_len, add1_len, add_reseed_len, add2_len;
05519         
05520             memset( output_str, 0, 512 );
05521         
05522             unhexify( entropy, "514ec8c02439290853434e75e3d0bd159eacd5ac13b8f202cfd5c36cdc0fe99b53a1b7a1619e94eb661ac825a48ea5ef8bb9120dd6efc351e39eb7cc5223f637" );
05523             add_init_len = unhexify( add_init, "cb0229d2bb72d910b0169e8f93318905aef8dd93ed91a2f8388545db32db3f2489e7988b50de64c49a9f7feb5abe8630" );
05524             add1_len = unhexify( add1, "a6ed69c9216c551793107f1bdaa04944f6d76fe4474f64bb08b0ebc10a18f337" );
05525             add_reseed_len = unhexify( add_reseed, "e0bc1cc56fdfeef686e0c7ec359e2e8bd48d76c8643c40d12325328170bbf702" );
05526             add2_len = unhexify( add2, "87c5b23aa3c100ff9e368fc47534ff8fa2f9e2bfd3599519ee6f60164485cf6d" );
05527         
05528             test_offset = 0;
05529             fct_chk( ctr_drbg_init_entropy_len( &ctx, entropy_func, entropy, add_init, add_init_len, 32 ) == 0 );
05530         
05531             fct_chk( ctr_drbg_random_with_add( &ctx, buf, 16, add1, add1_len ) == 0 );
05532             fct_chk( ctr_drbg_reseed( &ctx, add_reseed, add_reseed_len ) == 0 );
05533             fct_chk( ctr_drbg_random_with_add( &ctx, buf, 16, add2, add2_len ) == 0 );
05534             hexify( output_str, buf, 16 );
05535             fct_chk( strcmp( (char *) output_str, "bd419968f636e374268ccdd62403f79c" ) == 0 );
05536         }
05537         FCT_TEST_END();
05538 
05539 
05540         FCT_TEST_BGN(ctr_drbg_nist_validation_aes_256_use_dffalse256128256256_4)
05541         {
05542             unsigned char entropy[512];
05543             unsigned char add_init[512];
05544             unsigned char add1[512];
05545             unsigned char add_reseed[512];
05546             unsigned char add2[512];
05547             ctr_drbg_context ctx;
05548             unsigned char buf[512];
05549             unsigned char output_str[512];
05550             int add_init_len, add1_len, add_reseed_len, add2_len;
05551         
05552             memset( output_str, 0, 512 );
05553         
05554             unhexify( entropy, "9facd9f4587819acb358e4936d9f44b67ddf82616e79a44ffd6a2510f652f6b9cebc1424b5c642362b19f63c615f49686df66a8f80ddffb56ce0c0d8540150fb" );
05555             add_init_len = unhexify( add_init, "bdd156ef3c4e09b77fe8781c446eac55b562e4ee1b7d15515a966882d4c7fadb0fc7b37554ba03908838db40499ded5b" );
05556             add1_len = unhexify( add1, "35ea316fe302786f626e3831530622b62eb33a3608d4af3384ecfcbd198f3f05" );
05557             add_reseed_len = unhexify( add_reseed, "8d4fae22290b6ef8618ded1c3412e85fab7b8d17fb9cbd09dbc87f97279cc72d" );
05558             add2_len = unhexify( add2, "2f54928372e4ce447201427a3ae05769ae1c54b2e83bdc86d380a90b07f2890c" );
05559         
05560             test_offset = 0;
05561             fct_chk( ctr_drbg_init_entropy_len( &ctx, entropy_func, entropy, add_init, add_init_len, 32 ) == 0 );
05562         
05563             fct_chk( ctr_drbg_random_with_add( &ctx, buf, 16, add1, add1_len ) == 0 );
05564             fct_chk( ctr_drbg_reseed( &ctx, add_reseed, add_reseed_len ) == 0 );
05565             fct_chk( ctr_drbg_random_with_add( &ctx, buf, 16, add2, add2_len ) == 0 );
05566             hexify( output_str, buf, 16 );
05567             fct_chk( strcmp( (char *) output_str, "8045e8da88b1bc126785c8a771db5354" ) == 0 );
05568         }
05569         FCT_TEST_END();
05570 
05571 
05572         FCT_TEST_BGN(ctr_drbg_nist_validation_aes_256_use_dffalse256128256256_5)
05573         {
05574             unsigned char entropy[512];
05575             unsigned char add_init[512];
05576             unsigned char add1[512];
05577             unsigned char add_reseed[512];
05578             unsigned char add2[512];
05579             ctr_drbg_context ctx;
05580             unsigned char buf[512];
05581             unsigned char output_str[512];
05582             int add_init_len, add1_len, add_reseed_len, add2_len;
05583         
05584             memset( output_str, 0, 512 );
05585         
05586             unhexify( entropy, "36895f574e9e9d08e6c885d305eb4764c1e5689d1f99c2462b3ebdf659e8ce43818dfc886ec797843bfee361b554cd5f969b0c7b0381b53f4afc1bcadbf7eb1c" );
05587             add_init_len = unhexify( add_init, "154876298a1b63334624b367da984eb31d7260abe79ced41de35ba68a716233a5df0937b90f89dde7fd55a9693c9031f" );
05588             add1_len = unhexify( add1, "c3a46105c50a167a5b0391053f3814a06c90cea2c1fa9329d97fdbc62887ff6d" );
05589             add_reseed_len = unhexify( add_reseed, "54c7d66c65dbddb4665981bff0f503de37d724362aeb67abce6a870fd6a7398a" );
05590             add2_len = unhexify( add2, "58204ca953cbd46dd6c8870b358cba77c436870db49bcd3e2f92697bb580b460" );
05591         
05592             test_offset = 0;
05593             fct_chk( ctr_drbg_init_entropy_len( &ctx, entropy_func, entropy, add_init, add_init_len, 32 ) == 0 );
05594         
05595             fct_chk( ctr_drbg_random_with_add( &ctx, buf, 16, add1, add1_len ) == 0 );
05596             fct_chk( ctr_drbg_reseed( &ctx, add_reseed, add_reseed_len ) == 0 );
05597             fct_chk( ctr_drbg_random_with_add( &ctx, buf, 16, add2, add2_len ) == 0 );
05598             hexify( output_str, buf, 16 );
05599             fct_chk( strcmp( (char *) output_str, "cd903c0f11ea701214f91715cfec11a3" ) == 0 );
05600         }
05601         FCT_TEST_END();
05602 
05603 
05604         FCT_TEST_BGN(ctr_drbg_nist_validation_aes_256_use_dffalse256128256256_6)
05605         {
05606             unsigned char entropy[512];
05607             unsigned char add_init[512];
05608             unsigned char add1[512];
05609             unsigned char add_reseed[512];
05610             unsigned char add2[512];
05611             ctr_drbg_context ctx;
05612             unsigned char buf[512];
05613             unsigned char output_str[512];
05614             int add_init_len, add1_len, add_reseed_len, add2_len;
05615         
05616             memset( output_str, 0, 512 );
05617         
05618             unhexify( entropy, "1cd97b6e6e7f19401e409aea7b3ec33a8faefd71402b8f34a73c1cb1af215e0e87debe68bce590d41c1f90c6ad9db3d30b3901862e076d765ffdf58776e5fb7e" );
05619             add_init_len = unhexify( add_init, "94e273fde1e699f84aeef343eb0277c50d169bb5496575301021a2be50df6a555d1422ea88e0e4d905158e93fd8d0089" );
05620             add1_len = unhexify( add1, "6ee75e9f9aee6ac93e20f742f20427e5eb9b4ad2ed06fbba8c7b7870a96941ac" );
05621             add_reseed_len = unhexify( add_reseed, "0ba60399893ede284372bc4e0a37702a23b16aa8e5fe70ea95429af87ff291aa" );
05622             add2_len = unhexify( add2, "94bd2b51c32d29cd14e2123221e45ec0cf1f38766fb6bb0716856d0138f6fa39" );
05623         
05624             test_offset = 0;
05625             fct_chk( ctr_drbg_init_entropy_len( &ctx, entropy_func, entropy, add_init, add_init_len, 32 ) == 0 );
05626         
05627             fct_chk( ctr_drbg_random_with_add( &ctx, buf, 16, add1, add1_len ) == 0 );
05628             fct_chk( ctr_drbg_reseed( &ctx, add_reseed, add_reseed_len ) == 0 );
05629             fct_chk( ctr_drbg_random_with_add( &ctx, buf, 16, add2, add2_len ) == 0 );
05630             hexify( output_str, buf, 16 );
05631             fct_chk( strcmp( (char *) output_str, "831793686abd406f7b385cd59e497b18" ) == 0 );
05632         }
05633         FCT_TEST_END();
05634 
05635 
05636         FCT_TEST_BGN(ctr_drbg_nist_validation_aes_256_use_dffalse256128256256_7)
05637         {
05638             unsigned char entropy[512];
05639             unsigned char add_init[512];
05640             unsigned char add1[512];
05641             unsigned char add_reseed[512];
05642             unsigned char add2[512];
05643             ctr_drbg_context ctx;
05644             unsigned char buf[512];
05645             unsigned char output_str[512];
05646             int add_init_len, add1_len, add_reseed_len, add2_len;
05647         
05648             memset( output_str, 0, 512 );
05649         
05650             unhexify( entropy, "de6d2a3b6ad9af07058d3b1d1976cf61d49566b965eb4e9b74a4cad8e286e7a40b254b860e2e209a8cb4cff3a8e615b84f5ae7505957a758e266a4c3e915d251" );
05651             add_init_len = unhexify( add_init, "5a699113ebf98bff9cb780ce29747a61ba2d7581a5716065d018c89348d7c2ed3f5bba32442cd192c1e37b77b98f5791" );
05652             add1_len = unhexify( add1, "ed18c16a61ba5ecc0755f94c286390a6d46e6e26439dadd36c83ebdee42b4b4c" );
05653             add_reseed_len = unhexify( add_reseed, "7c4550d058b85580be2053fd9d933c87041c5c3f62a5b6b303259dafc90d9041" );
05654             add2_len = unhexify( add2, "ebebfcb9b4b3595e516939ca0688422bbdfc4b9f67b0d6619757cb315b7d7908" );
05655         
05656             test_offset = 0;
05657             fct_chk( ctr_drbg_init_entropy_len( &ctx, entropy_func, entropy, add_init, add_init_len, 32 ) == 0 );
05658         
05659             fct_chk( ctr_drbg_random_with_add( &ctx, buf, 16, add1, add1_len ) == 0 );
05660             fct_chk( ctr_drbg_reseed( &ctx, add_reseed, add_reseed_len ) == 0 );
05661             fct_chk( ctr_drbg_random_with_add( &ctx, buf, 16, add2, add2_len ) == 0 );
05662             hexify( output_str, buf, 16 );
05663             fct_chk( strcmp( (char *) output_str, "1a5a496aa2268483444b3740c9cc4104" ) == 0 );
05664         }
05665         FCT_TEST_END();
05666 
05667 
05668         FCT_TEST_BGN(ctr_drbg_nist_validation_aes_256_use_dffalse256128256256_8)
05669         {
05670             unsigned char entropy[512];
05671             unsigned char add_init[512];
05672             unsigned char add1[512];
05673             unsigned char add_reseed[512];
05674             unsigned char add2[512];
05675             ctr_drbg_context ctx;
05676             unsigned char buf[512];
05677             unsigned char output_str[512];
05678             int add_init_len, add1_len, add_reseed_len, add2_len;
05679         
05680             memset( output_str, 0, 512 );
05681         
05682             unhexify( entropy, "4765399ccbbf3d33433bb992ee29e4381f28d800b05431f1c5b3e949c5db72c582bfe8ba08db1575b866816cabbe5e1d31d8a870ceed49fb75676c97020d1f22" );
05683             add_init_len = unhexify( add_init, "42450f2689b87a3dd940f3b9e3b32d4654c725a24ddd2c22f006694321dacf1980b50f7ac0401626453ec836039bfdc9" );
05684             add1_len = unhexify( add1, "6ee5a7613c25ecec263a2fd2288948b2df9a05d50040c4031b0653878fdb067f" );
05685             add_reseed_len = unhexify( add_reseed, "68a1038481be7412d6a7c8474d4b2a2535c9b55ea301ee800d5a846127d345cb" );
05686             add2_len = unhexify( add2, "7a1915cf78e6da2dc7840cba40390d668d07571608b77857d2224c4531c17bb8" );
05687         
05688             test_offset = 0;
05689             fct_chk( ctr_drbg_init_entropy_len( &ctx, entropy_func, entropy, add_init, add_init_len, 32 ) == 0 );
05690         
05691             fct_chk( ctr_drbg_random_with_add( &ctx, buf, 16, add1, add1_len ) == 0 );
05692             fct_chk( ctr_drbg_reseed( &ctx, add_reseed, add_reseed_len ) == 0 );
05693             fct_chk( ctr_drbg_random_with_add( &ctx, buf, 16, add2, add2_len ) == 0 );
05694             hexify( output_str, buf, 16 );
05695             fct_chk( strcmp( (char *) output_str, "80a6c622e64495f9a391f5a8a9c76818" ) == 0 );
05696         }
05697         FCT_TEST_END();
05698 
05699 
05700         FCT_TEST_BGN(ctr_drbg_nist_validation_aes_256_use_dffalse256128256256_9)
05701         {
05702             unsigned char entropy[512];
05703             unsigned char add_init[512];
05704             unsigned char add1[512];
05705             unsigned char add_reseed[512];
05706             unsigned char add2[512];
05707             ctr_drbg_context ctx;
05708             unsigned char buf[512];
05709             unsigned char output_str[512];
05710             int add_init_len, add1_len, add_reseed_len, add2_len;
05711         
05712             memset( output_str, 0, 512 );
05713         
05714             unhexify( entropy, "d2f92706ca3fb9ced8183c74704440d7eedee1542c2e812f65afc83f4b62dadf1c51fa68f8d5f457a893211c8afc82c93e6a1e15822eff0d4ada6efd25d271a0" );
05715             add_init_len = unhexify( add_init, "873869e194201b822b140bdd7797dd1ed408f2190b759c068b7019e6707f60751e101d3465c4ec57dbf9d1ea7597fa44" );
05716             add1_len = unhexify( add1, "8d0393d2a1ae8930ea88773adfa47b49060f0bf2d3def2acc57786bfbd1e2d6f" );
05717             add_reseed_len = unhexify( add_reseed, "5bcf5ff4fbd9eaabf8bf82ec7c59b043fd64b0025ad1ab2b384e399b9e13147a" );
05718             add2_len = unhexify( add2, "6e2d05e286c90502a3abf2ee72ab7ffb520ce5facfb27e095787a09a412abec3" );
05719         
05720             test_offset = 0;
05721             fct_chk( ctr_drbg_init_entropy_len( &ctx, entropy_func, entropy, add_init, add_init_len, 32 ) == 0 );
05722         
05723             fct_chk( ctr_drbg_random_with_add( &ctx, buf, 16, add1, add1_len ) == 0 );
05724             fct_chk( ctr_drbg_reseed( &ctx, add_reseed, add_reseed_len ) == 0 );
05725             fct_chk( ctr_drbg_random_with_add( &ctx, buf, 16, add2, add2_len ) == 0 );
05726             hexify( output_str, buf, 16 );
05727             fct_chk( strcmp( (char *) output_str, "e1ceda71b8feb4b0d14d35bbb57a79a2" ) == 0 );
05728         }
05729         FCT_TEST_END();
05730 
05731 
05732         FCT_TEST_BGN(ctr_drbg_nist_validation_aes_256_use_dffalse256128256256_10)
05733         {
05734             unsigned char entropy[512];
05735             unsigned char add_init[512];
05736             unsigned char add1[512];
05737             unsigned char add_reseed[512];
05738             unsigned char add2[512];
05739             ctr_drbg_context ctx;
05740             unsigned char buf[512];
05741             unsigned char output_str[512];
05742             int add_init_len, add1_len, add_reseed_len, add2_len;
05743         
05744             memset( output_str, 0, 512 );
05745         
05746             unhexify( entropy, "34bc292809674352ffb60786dca59ec799188aa401b366a48cdeddf37c12ee4c666f8fb3a0d53df4cd7191166d50ff01d992f94cd92da7a385ffe5795b197ced" );
05747             add_init_len = unhexify( add_init, "1fecb5fe87c2a208b4f193e9c3ff810954c554150d544baea1685fb4774320315d5cb651be493ef120ef6966e3e7518c" );
05748             add1_len = unhexify( add1, "38249fed34a907768eac49267c2c613a65154eec5b73b541d7d7b314b5080061" );
05749             add_reseed_len = unhexify( add_reseed, "115be9cb914b50480fffe078d8170870b56129a0a74271dee063f8b2049e1be3" );
05750             add2_len = unhexify( add2, "69fa6faf7223f5bb1b55f35a544f78181579b1745990053357916fe507e51db6" );
05751         
05752             test_offset = 0;
05753             fct_chk( ctr_drbg_init_entropy_len( &ctx, entropy_func, entropy, add_init, add_init_len, 32 ) == 0 );
05754         
05755             fct_chk( ctr_drbg_random_with_add( &ctx, buf, 16, add1, add1_len ) == 0 );
05756             fct_chk( ctr_drbg_reseed( &ctx, add_reseed, add_reseed_len ) == 0 );
05757             fct_chk( ctr_drbg_random_with_add( &ctx, buf, 16, add2, add2_len ) == 0 );
05758             hexify( output_str, buf, 16 );
05759             fct_chk( strcmp( (char *) output_str, "60cc92d3ba3ff0715f5627182334ed1b" ) == 0 );
05760         }
05761         FCT_TEST_END();
05762 
05763 
05764         FCT_TEST_BGN(ctr_drbg_nist_validation_aes_256_use_dffalse256128256256_11)
05765         {
05766             unsigned char entropy[512];
05767             unsigned char add_init[512];
05768             unsigned char add1[512];
05769             unsigned char add_reseed[512];
05770             unsigned char add2[512];
05771             ctr_drbg_context ctx;
05772             unsigned char buf[512];
05773             unsigned char output_str[512];
05774             int add_init_len, add1_len, add_reseed_len, add2_len;
05775         
05776             memset( output_str, 0, 512 );
05777         
05778             unhexify( entropy, "4aa6917a5c9f370590d70536fdd89c916fec5e5bcbade8c6a6cfcf5b232c98a6b3e6b79a2dfb0778fbc3f1da7b06044d7b0fa2c04ffc3b71324aca1ee19f936b" );
05779             add_init_len = unhexify( add_init, "4d283eb5ecd85a1613c975e24832770643613c9a5aee0d8649bc0d68c89cf1ea6ec3a1a22eefd9e212d602c338d64c6e" );
05780             add1_len = unhexify( add1, "05a7092a684ba7a7fbd33533f9be58a4140a3855d4c5f44a31d665a0720c1739" );
05781             add_reseed_len = unhexify( add_reseed, "557ef1bedc890d1543de6cfeb25642782683d77a46bc8aa0836b07157599c7c3" );
05782             add2_len = unhexify( add2, "e87e45073ff8e36c38b128cd2275a160e431787b5e81f6c2fd7a37909eb72ea5" );
05783         
05784             test_offset = 0;
05785             fct_chk( ctr_drbg_init_entropy_len( &ctx, entropy_func, entropy, add_init, add_init_len, 32 ) == 0 );
05786         
05787             fct_chk( ctr_drbg_random_with_add( &ctx, buf, 16, add1, add1_len ) == 0 );
05788             fct_chk( ctr_drbg_reseed( &ctx, add_reseed, add_reseed_len ) == 0 );
05789             fct_chk( ctr_drbg_random_with_add( &ctx, buf, 16, add2, add2_len ) == 0 );
05790             hexify( output_str, buf, 16 );
05791             fct_chk( strcmp( (char *) output_str, "31ecfb1bcf3253ba5f71b185a66c7cff" ) == 0 );
05792         }
05793         FCT_TEST_END();
05794 
05795 
05796         FCT_TEST_BGN(ctr_drbg_nist_validation_aes_256_use_dffalse256128256256_12)
05797         {
05798             unsigned char entropy[512];
05799             unsigned char add_init[512];
05800             unsigned char add1[512];
05801             unsigned char add_reseed[512];
05802             unsigned char add2[512];
05803             ctr_drbg_context ctx;
05804             unsigned char buf[512];
05805             unsigned char output_str[512];
05806             int add_init_len, add1_len, add_reseed_len, add2_len;
05807         
05808             memset( output_str, 0, 512 );
05809         
05810             unhexify( entropy, "22f8ad57a2dfa8010e2865ad6263823652917b84dfea61f639efdb0fdbb35c6341ca7721095d69686212dffe78410c0d0db94f04756d52e7d76165d5a1d516d9" );
05811             add_init_len = unhexify( add_init, "a6f488104a6c03e354d5d1805c62dcd3016322d218747fa83f9199e20f6ab1cfbc2b889536bda1187f59b7294d557ff2" );
05812             add1_len = unhexify( add1, "fb9951d563f7aa88db545874b1a3049c5f79774d486e7a28aed1ed75f59224a5" );
05813             add_reseed_len = unhexify( add_reseed, "b1ea7c6b53e79e4e947e63086dee32dcc17bc4f27fba6142f8215ec081cdd5c9" );
05814             add2_len = unhexify( add2, "0d12cc0a39bfbf87194e4070f6b54caaabbe48fa192b96cfed2a794d95fa299d" );
05815         
05816             test_offset = 0;
05817             fct_chk( ctr_drbg_init_entropy_len( &ctx, entropy_func, entropy, add_init, add_init_len, 32 ) == 0 );
05818         
05819             fct_chk( ctr_drbg_random_with_add( &ctx, buf, 16, add1, add1_len ) == 0 );
05820             fct_chk( ctr_drbg_reseed( &ctx, add_reseed, add_reseed_len ) == 0 );
05821             fct_chk( ctr_drbg_random_with_add( &ctx, buf, 16, add2, add2_len ) == 0 );
05822             hexify( output_str, buf, 16 );
05823             fct_chk( strcmp( (char *) output_str, "62a1c5678e6e8fc738d375e2ca48751f" ) == 0 );
05824         }
05825         FCT_TEST_END();
05826 
05827 
05828         FCT_TEST_BGN(ctr_drbg_nist_validation_aes_256_use_dffalse256128256256_13)
05829         {
05830             unsigned char entropy[512];
05831             unsigned char add_init[512];
05832             unsigned char add1[512];
05833             unsigned char add_reseed[512];
05834             unsigned char add2[512];
05835             ctr_drbg_context ctx;
05836             unsigned char buf[512];
05837             unsigned char output_str[512];
05838             int add_init_len, add1_len, add_reseed_len, add2_len;
05839         
05840             memset( output_str, 0, 512 );
05841         
05842             unhexify( entropy, "d8be0ec1119ff959c32c9cf29914e3f7bf2b01bdbf806c2d9ba119ae2a2cfb565871762b02ee7bf68f1d280532fd7ae7368517f6f751739b228d23df2f207f35" );
05843             add_init_len = unhexify( add_init, "9d67e017e0abdd7c079bc0354f33dab696ad64146802f06d6cefd9cdefbf55b197f5899e5efaa269cc0432c87648ce18" );
05844             add1_len = unhexify( add1, "74a5e24477e8759bedfbaa196f398777108392efb8c64c65c0c9ecd6cd3b5f04" );
05845             add_reseed_len = unhexify( add_reseed, "70cbc6cfe1d6ab4bc30d66fa162d5d4b3029e4b1b9d759f3eae17fb508e91a46" );
05846             add2_len = unhexify( add2, "d3c538e042f0eb796b4af9b4e65cd850425c72e2c896fcea741c17172faf27d9" );
05847         
05848             test_offset = 0;
05849             fct_chk( ctr_drbg_init_entropy_len( &ctx, entropy_func, entropy, add_init, add_init_len, 32 ) == 0 );
05850         
05851             fct_chk( ctr_drbg_random_with_add( &ctx, buf, 16, add1, add1_len ) == 0 );
05852             fct_chk( ctr_drbg_reseed( &ctx, add_reseed, add_reseed_len ) == 0 );
05853             fct_chk( ctr_drbg_random_with_add( &ctx, buf, 16, add2, add2_len ) == 0 );
05854             hexify( output_str, buf, 16 );
05855             fct_chk( strcmp( (char *) output_str, "559a5e04b75cec250aac2433176a725e" ) == 0 );
05856         }
05857         FCT_TEST_END();
05858 
05859 
05860         FCT_TEST_BGN(ctr_drbg_nist_validation_aes_256_use_dffalse256128256256_14)
05861         {
05862             unsigned char entropy[512];
05863             unsigned char add_init[512];
05864             unsigned char add1[512];
05865             unsigned char add_reseed[512];
05866             unsigned char add2[512];
05867             ctr_drbg_context ctx;
05868             unsigned char buf[512];
05869             unsigned char output_str[512];
05870             int add_init_len, add1_len, add_reseed_len, add2_len;
05871         
05872             memset( output_str, 0, 512 );
05873         
05874             unhexify( entropy, "9ded87d289412dfda8935e5b08ec66b68abd1bae1fc5363e4341f58db954f1f9bc4b681c0d930ba080f85f8fd04c173cb2b77723ce67692efa7ade48b82b6926" );
05875             add_init_len = unhexify( add_init, "10914608a6d373a26c53ab83014283b678d73dfea65b4a3540af17f2fafa3b3cf698925b423edb9f946b906f43110795" );
05876             add1_len = unhexify( add1, "225159b4c679094f277516b2335b1e8b7d0a7ea33fd56822906d481fe412586d" );
05877             add_reseed_len = unhexify( add_reseed, "4967cd401cd466aba0be5f55615ca0d9fb8adbde5cb4e6ae3a0159fcd6c36bf0" );
05878             add2_len = unhexify( add2, "fec14f325b8b458ddf3e7f2e10938f4c2d04c8d9885bb5b9277bdc229c70b354" );
05879         
05880             test_offset = 0;
05881             fct_chk( ctr_drbg_init_entropy_len( &ctx, entropy_func, entropy, add_init, add_init_len, 32 ) == 0 );
05882         
05883             fct_chk( ctr_drbg_random_with_add( &ctx, buf, 16, add1, add1_len ) == 0 );
05884             fct_chk( ctr_drbg_reseed( &ctx, add_reseed, add_reseed_len ) == 0 );
05885             fct_chk( ctr_drbg_random_with_add( &ctx, buf, 16, add2, add2_len ) == 0 );
05886             hexify( output_str, buf, 16 );
05887             fct_chk( strcmp( (char *) output_str, "1cd5c0bdeb87c79235bead416c565d32" ) == 0 );
05888         }
05889         FCT_TEST_END();
05890 
05891 
05892         FCT_TEST_BGN(ctr_drbg_nist_validation_aes_256_use_dffalse25612800_0)
05893         {
05894             unsigned char entropy[512];
05895             unsigned char add_init[512];
05896             unsigned char add1[512];
05897             unsigned char add_reseed[512];
05898             unsigned char add2[512];
05899             ctr_drbg_context ctx;
05900             unsigned char buf[512];
05901             unsigned char output_str[512];
05902             int add_init_len, add1_len, add_reseed_len, add2_len;
05903         
05904             memset( output_str, 0, 512 );
05905         
05906             unhexify( entropy, "2462ad760ddbca4e013688bf61381f190c7b2de57cbeeec81d6ab7b6f067b75adc3545887f8d2aa5d9b9dfcbfa425d610faa9c247eb5d71145f302918e908ae5" );
05907             add_init_len = unhexify( add_init, "b023f6a6f73d4749b36eb54867994432" );
05908             add1_len = unhexify( add1, "" );
05909             add_reseed_len = unhexify( add_reseed, "" );
05910             add2_len = unhexify( add2, "" );
05911         
05912             test_offset = 0;
05913             fct_chk( ctr_drbg_init_entropy_len( &ctx, entropy_func, entropy, add_init, add_init_len, 32 ) == 0 );
05914         
05915             fct_chk( ctr_drbg_random_with_add( &ctx, buf, 16, add1, add1_len ) == 0 );
05916             fct_chk( ctr_drbg_reseed( &ctx, add_reseed, add_reseed_len ) == 0 );
05917             fct_chk( ctr_drbg_random_with_add( &ctx, buf, 16, add2, add2_len ) == 0 );
05918             hexify( output_str, buf, 16 );
05919             fct_chk( strcmp( (char *) output_str, "c0620c68515a4618e572db6e4c14473d" ) == 0 );
05920         }
05921         FCT_TEST_END();
05922 
05923 
05924         FCT_TEST_BGN(ctr_drbg_nist_validation_aes_256_use_dffalse25612800_1)
05925         {
05926             unsigned char entropy[512];
05927             unsigned char add_init[512];
05928             unsigned char add1[512];
05929             unsigned char add_reseed[512];
05930             unsigned char add2[512];
05931             ctr_drbg_context ctx;
05932             unsigned char buf[512];
05933             unsigned char output_str[512];
05934             int add_init_len, add1_len, add_reseed_len, add2_len;
05935         
05936             memset( output_str, 0, 512 );
05937         
05938             unhexify( entropy, "56b2e11d5c2d87d2c9c90c285e0041beb4594a6efdd577580095612e50cf47c0b76208337e1e18453082d725629667d86226ab22944bbfb40c38b7986e489adb" );
05939             add_init_len = unhexify( add_init, "7e0fcd953c1c8bb8d03d7a0e918fb59d" );
05940             add1_len = unhexify( add1, "" );
05941             add_reseed_len = unhexify( add_reseed, "" );
05942             add2_len = unhexify( add2, "" );
05943         
05944             test_offset = 0;
05945             fct_chk( ctr_drbg_init_entropy_len( &ctx, entropy_func, entropy, add_init, add_init_len, 32 ) == 0 );
05946         
05947             fct_chk( ctr_drbg_random_with_add( &ctx, buf, 16, add1, add1_len ) == 0 );
05948             fct_chk( ctr_drbg_reseed( &ctx, add_reseed, add_reseed_len ) == 0 );
05949             fct_chk( ctr_drbg_random_with_add( &ctx, buf, 16, add2, add2_len ) == 0 );
05950             hexify( output_str, buf, 16 );
05951             fct_chk( strcmp( (char *) output_str, "7194eee0d333fa5282dc44db964ecf5b" ) == 0 );
05952         }
05953         FCT_TEST_END();
05954 
05955 
05956         FCT_TEST_BGN(ctr_drbg_nist_validation_aes_256_use_dffalse25612800_2)
05957         {
05958             unsigned char entropy[512];
05959             unsigned char add_init[512];
05960             unsigned char add1[512];
05961             unsigned char add_reseed[512];
05962             unsigned char add2[512];
05963             ctr_drbg_context ctx;
05964             unsigned char buf[512];
05965             unsigned char output_str[512];
05966             int add_init_len, add1_len, add_reseed_len, add2_len;
05967         
05968             memset( output_str, 0, 512 );
05969         
05970             unhexify( entropy, "28e592fd9db72b40ae4888078aedde260f6de4f0472a7601258e694d7bb6af6810ff4eabdffb332932765fa1d66650fb78cc2be484c0ba803eb9a2502020e865" );
05971             add_init_len = unhexify( add_init, "0130217d4a3945402ed99d7b8504fe4b" );
05972             add1_len = unhexify( add1, "" );
05973             add_reseed_len = unhexify( add_reseed, "" );
05974             add2_len = unhexify( add2, "" );
05975         
05976             test_offset = 0;
05977             fct_chk( ctr_drbg_init_entropy_len( &ctx, entropy_func, entropy, add_init, add_init_len, 32 ) == 0 );
05978         
05979             fct_chk( ctr_drbg_random_with_add( &ctx, buf, 16, add1, add1_len ) == 0 );
05980             fct_chk( ctr_drbg_reseed( &ctx, add_reseed, add_reseed_len ) == 0 );
05981             fct_chk( ctr_drbg_random_with_add( &ctx, buf, 16, add2, add2_len ) == 0 );
05982             hexify( output_str, buf, 16 );
05983             fct_chk( strcmp( (char *) output_str, "4652f0545385fdbe02d05aec21668608" ) == 0 );
05984         }
05985         FCT_TEST_END();
05986 
05987 
05988         FCT_TEST_BGN(ctr_drbg_nist_validation_aes_256_use_dffalse25612800_3)
05989         {
05990             unsigned char entropy[512];
05991             unsigned char add_init[512];
05992             unsigned char add1[512];
05993             unsigned char add_reseed[512];
05994             unsigned char add2[512];
05995             ctr_drbg_context ctx;
05996             unsigned char buf[512];
05997             unsigned char output_str[512];
05998             int add_init_len, add1_len, add_reseed_len, add2_len;
05999         
06000             memset( output_str, 0, 512 );
06001         
06002             unhexify( entropy, "c561ab6acfbfb98879982ac7add92b80471e0154b77ccc9fd98e7c2013c411e8075948e97ab4db7505797a99d456e54e6585042efeff7e3970e399ea0d27537c" );
06003             add_init_len = unhexify( add_init, "07854447e33521d2d997d90c0887f42d" );
06004             add1_len = unhexify( add1, "" );
06005             add_reseed_len = unhexify( add_reseed, "" );
06006             add2_len = unhexify( add2, "" );
06007         
06008             test_offset = 0;
06009             fct_chk( ctr_drbg_init_entropy_len( &ctx, entropy_func, entropy, add_init, add_init_len, 32 ) == 0 );
06010         
06011             fct_chk( ctr_drbg_random_with_add( &ctx, buf, 16, add1, add1_len ) == 0 );
06012             fct_chk( ctr_drbg_reseed( &ctx, add_reseed, add_reseed_len ) == 0 );
06013             fct_chk( ctr_drbg_random_with_add( &ctx, buf, 16, add2, add2_len ) == 0 );
06014             hexify( output_str, buf, 16 );
06015             fct_chk( strcmp( (char *) output_str, "1a14a810c11b4f0af23c6467c47bbde0" ) == 0 );
06016         }
06017         FCT_TEST_END();
06018 
06019 
06020         FCT_TEST_BGN(ctr_drbg_nist_validation_aes_256_use_dffalse25612800_4)
06021         {
06022             unsigned char entropy[512];
06023             unsigned char add_init[512];
06024             unsigned char add1[512];
06025             unsigned char add_reseed[512];
06026             unsigned char add2[512];
06027             ctr_drbg_context ctx;
06028             unsigned char buf[512];
06029             unsigned char output_str[512];
06030             int add_init_len, add1_len, add_reseed_len, add2_len;
06031         
06032             memset( output_str, 0, 512 );
06033         
06034             unhexify( entropy, "747c7e9aace6d4f840c7b5261e0af796c516477421d52850a7072a0ab2c768fcc80c9ba8d18b228e77a7f6131c788a76515fe31aef4ed67376568231a4700fac" );
06035             add_init_len = unhexify( add_init, "68a8ec01581d6066391f3e5977465026" );
06036             add1_len = unhexify( add1, "" );
06037             add_reseed_len = unhexify( add_reseed, "" );
06038             add2_len = unhexify( add2, "" );
06039         
06040             test_offset = 0;
06041             fct_chk( ctr_drbg_init_entropy_len( &ctx, entropy_func, entropy, add_init, add_init_len, 32 ) == 0 );
06042         
06043             fct_chk( ctr_drbg_random_with_add( &ctx, buf, 16, add1, add1_len ) == 0 );
06044             fct_chk( ctr_drbg_reseed( &ctx, add_reseed, add_reseed_len ) == 0 );
06045             fct_chk( ctr_drbg_random_with_add( &ctx, buf, 16, add2, add2_len ) == 0 );
06046             hexify( output_str, buf, 16 );
06047             fct_chk( strcmp( (char *) output_str, "a5723c43743442fae3637bb553891aeb" ) == 0 );
06048         }
06049         FCT_TEST_END();
06050 
06051 
06052         FCT_TEST_BGN(ctr_drbg_nist_validation_aes_256_use_dffalse25612800_5)
06053         {
06054             unsigned char entropy[512];
06055             unsigned char add_init[512];
06056             unsigned char add1[512];
06057             unsigned char add_reseed[512];
06058             unsigned char add2[512];
06059             ctr_drbg_context ctx;
06060             unsigned char buf[512];
06061             unsigned char output_str[512];
06062             int add_init_len, add1_len, add_reseed_len, add2_len;
06063         
06064             memset( output_str, 0, 512 );
06065         
06066             unhexify( entropy, "9f7d839310846bd452827a185539c0eb0f106acc7bc4de80d3521a970b23483d57826b1484d329a2d1c2ecfeaf8eeffbaa6e1a305e3f1e47b96ad48a711ad1aa" );
06067             add_init_len = unhexify( add_init, "1459038c60b70bae7af0da6cfab707a2" );
06068             add1_len = unhexify( add1, "" );
06069             add_reseed_len = unhexify( add_reseed, "" );
06070             add2_len = unhexify( add2, "" );
06071         
06072             test_offset = 0;
06073             fct_chk( ctr_drbg_init_entropy_len( &ctx, entropy_func, entropy, add_init, add_init_len, 32 ) == 0 );
06074         
06075             fct_chk( ctr_drbg_random_with_add( &ctx, buf, 16, add1, add1_len ) == 0 );
06076             fct_chk( ctr_drbg_reseed( &ctx, add_reseed, add_reseed_len ) == 0 );
06077             fct_chk( ctr_drbg_random_with_add( &ctx, buf, 16, add2, add2_len ) == 0 );
06078             hexify( output_str, buf, 16 );
06079             fct_chk( strcmp( (char *) output_str, "5fcd6bf108fe68b85f61f85c0556f5c0" ) == 0 );
06080         }
06081         FCT_TEST_END();
06082 
06083 
06084         FCT_TEST_BGN(ctr_drbg_nist_validation_aes_256_use_dffalse25612800_6)
06085         {
06086             unsigned char entropy[512];
06087             unsigned char add_init[512];
06088             unsigned char add1[512];
06089             unsigned char add_reseed[512];
06090             unsigned char add2[512];
06091             ctr_drbg_context ctx;
06092             unsigned char buf[512];
06093             unsigned char output_str[512];
06094             int add_init_len, add1_len, add_reseed_len, add2_len;
06095         
06096             memset( output_str, 0, 512 );
06097         
06098             unhexify( entropy, "f1ce08587ac0338b4d0b8e075b42b6501e77758b30087de028a8622fb7abd7f65e3b4f802d1a472dedb9c1a6dc9263c65918d8b7fafd0ae7e9c39e2e8684af3f" );
06099             add_init_len = unhexify( add_init, "a3357db173df98da4dd02ee24ce5c303" );
06100             add1_len = unhexify( add1, "" );
06101             add_reseed_len = unhexify( add_reseed, "" );
06102             add2_len = unhexify( add2, "" );
06103         
06104             test_offset = 0;
06105             fct_chk( ctr_drbg_init_entropy_len( &ctx, entropy_func, entropy, add_init, add_init_len, 32 ) == 0 );
06106         
06107             fct_chk( ctr_drbg_random_with_add( &ctx, buf, 16, add1, add1_len ) == 0 );
06108             fct_chk( ctr_drbg_reseed( &ctx, add_reseed, add_reseed_len ) == 0 );
06109             fct_chk( ctr_drbg_random_with_add( &ctx, buf, 16, add2, add2_len ) == 0 );
06110             hexify( output_str, buf, 16 );
06111             fct_chk( strcmp( (char *) output_str, "8a5fa11d8e78fbf1ca4e4ca3e1ae82b8" ) == 0 );
06112         }
06113         FCT_TEST_END();
06114 
06115 
06116         FCT_TEST_BGN(ctr_drbg_nist_validation_aes_256_use_dffalse25612800_7)
06117         {
06118             unsigned char entropy[512];
06119             unsigned char add_init[512];
06120             unsigned char add1[512];
06121             unsigned char add_reseed[512];
06122             unsigned char add2[512];
06123             ctr_drbg_context ctx;
06124             unsigned char buf[512];
06125             unsigned char output_str[512];
06126             int add_init_len, add1_len, add_reseed_len, add2_len;
06127         
06128             memset( output_str, 0, 512 );
06129         
06130             unhexify( entropy, "bf1d715b3f56c433827c9cb429bee5ca61c80a8d9b2fd4498e1c86ce703637f8f7f34056ab0039e0baa63320df0ec61de60354f2ece06356d9be3c6d1cdcc4cf" );
06131             add_init_len = unhexify( add_init, "212f4c80c7e9287c8d25e3b965f91a3c" );
06132             add1_len = unhexify( add1, "" );
06133             add_reseed_len = unhexify( add_reseed, "" );
06134             add2_len = unhexify( add2, "" );
06135         
06136             test_offset = 0;
06137             fct_chk( ctr_drbg_init_entropy_len( &ctx, entropy_func, entropy, add_init, add_init_len, 32 ) == 0 );
06138         
06139             fct_chk( ctr_drbg_random_with_add( &ctx, buf, 16, add1, add1_len ) == 0 );
06140             fct_chk( ctr_drbg_reseed( &ctx, add_reseed, add_reseed_len ) == 0 );
06141             fct_chk( ctr_drbg_random_with_add( &ctx, buf, 16, add2, add2_len ) == 0 );
06142             hexify( output_str, buf, 16 );
06143             fct_chk( strcmp( (char *) output_str, "04ac2f969e828f375b03ee16317e8572" ) == 0 );
06144         }
06145         FCT_TEST_END();
06146 
06147 
06148         FCT_TEST_BGN(ctr_drbg_nist_validation_aes_256_use_dffalse25612800_8)
06149         {
06150             unsigned char entropy[512];
06151             unsigned char add_init[512];
06152             unsigned char add1[512];
06153             unsigned char add_reseed[512];
06154             unsigned char add2[512];
06155             ctr_drbg_context ctx;
06156             unsigned char buf[512];
06157             unsigned char output_str[512];
06158             int add_init_len, add1_len, add_reseed_len, add2_len;
06159         
06160             memset( output_str, 0, 512 );
06161         
06162             unhexify( entropy, "ae4316424fa765179404188eb8839ce84ad8db92cb12f39089a93a2dbdc371e2fdbef1ad080eb354eecdda3a10ea66ef647aa095afa1786c01bd1c9f70d8da4f" );
06163             add_init_len = unhexify( add_init, "46e85752e0af82fc63932950120e4b5d" );
06164             add1_len = unhexify( add1, "" );
06165             add_reseed_len = unhexify( add_reseed, "" );
06166             add2_len = unhexify( add2, "" );
06167         
06168             test_offset = 0;
06169             fct_chk( ctr_drbg_init_entropy_len( &ctx, entropy_func, entropy, add_init, add_init_len, 32 ) == 0 );
06170         
06171             fct_chk( ctr_drbg_random_with_add( &ctx, buf, 16, add1, add1_len ) == 0 );
06172             fct_chk( ctr_drbg_reseed( &ctx, add_reseed, add_reseed_len ) == 0 );
06173             fct_chk( ctr_drbg_random_with_add( &ctx, buf, 16, add2, add2_len ) == 0 );
06174             hexify( output_str, buf, 16 );
06175             fct_chk( strcmp( (char *) output_str, "de576284d8ad36b31bd4f8f3da633e36" ) == 0 );
06176         }
06177         FCT_TEST_END();
06178 
06179 
06180         FCT_TEST_BGN(ctr_drbg_nist_validation_aes_256_use_dffalse25612800_9)
06181         {
06182             unsigned char entropy[512];
06183             unsigned char add_init[512];
06184             unsigned char add1[512];
06185             unsigned char add_reseed[512];
06186             unsigned char add2[512];
06187             ctr_drbg_context ctx;
06188             unsigned char buf[512];
06189             unsigned char output_str[512];
06190             int add_init_len, add1_len, add_reseed_len, add2_len;
06191         
06192             memset( output_str, 0, 512 );
06193         
06194             unhexify( entropy, "b964a24bf98264327c0b9e2e1c99ed1b35f534be801c996f318bc2074ed2500ba8488c4feb442b507c3220523c0041c9543133379365e65e092850a5e3f96cc9" );
06195             add_init_len = unhexify( add_init, "ec2459b1dd7f50df63e14e40aa4a4e66" );
06196             add1_len = unhexify( add1, "" );
06197             add_reseed_len = unhexify( add_reseed, "" );
06198             add2_len = unhexify( add2, "" );
06199         
06200             test_offset = 0;
06201             fct_chk( ctr_drbg_init_entropy_len( &ctx, entropy_func, entropy, add_init, add_init_len, 32 ) == 0 );
06202         
06203             fct_chk( ctr_drbg_random_with_add( &ctx, buf, 16, add1, add1_len ) == 0 );
06204             fct_chk( ctr_drbg_reseed( &ctx, add_reseed, add_reseed_len ) == 0 );
06205             fct_chk( ctr_drbg_random_with_add( &ctx, buf, 16, add2, add2_len ) == 0 );
06206             hexify( output_str, buf, 16 );
06207             fct_chk( strcmp( (char *) output_str, "4d466e2f388aae40d1b31ce1f8ddc5e8" ) == 0 );
06208         }
06209         FCT_TEST_END();
06210 
06211 
06212         FCT_TEST_BGN(ctr_drbg_nist_validation_aes_256_use_dffalse25612800_10)
06213         {
06214             unsigned char entropy[512];
06215             unsigned char add_init[512];
06216             unsigned char add1[512];
06217             unsigned char add_reseed[512];
06218             unsigned char add2[512];
06219             ctr_drbg_context ctx;
06220             unsigned char buf[512];
06221             unsigned char output_str[512];
06222             int add_init_len, add1_len, add_reseed_len, add2_len;
06223         
06224             memset( output_str, 0, 512 );
06225         
06226             unhexify( entropy, "d5b3277cf8badf6be86af27dd36f23ffc580847c5fcb56c4d8a42339336f185c38ffb86f4d8aa7646c1aaed6c2b0c7ae7e4d435f481d62bb01e632f6bbb2abf9" );
06227             add_init_len = unhexify( add_init, "acf480d54f4c66d611519b72f2c0dca6" );
06228             add1_len = unhexify( add1, "" );
06229             add_reseed_len = unhexify( add_reseed, "" );
06230             add2_len = unhexify( add2, "" );
06231         
06232             test_offset = 0;
06233             fct_chk( ctr_drbg_init_entropy_len( &ctx, entropy_func, entropy, add_init, add_init_len, 32 ) == 0 );
06234         
06235             fct_chk( ctr_drbg_random_with_add( &ctx, buf, 16, add1, add1_len ) == 0 );
06236             fct_chk( ctr_drbg_reseed( &ctx, add_reseed, add_reseed_len ) == 0 );
06237             fct_chk( ctr_drbg_random_with_add( &ctx, buf, 16, add2, add2_len ) == 0 );
06238             hexify( output_str, buf, 16 );
06239             fct_chk( strcmp( (char *) output_str, "746aaa5423ef77ea6b1eda47410262dd" ) == 0 );
06240         }
06241         FCT_TEST_END();
06242 
06243 
06244         FCT_TEST_BGN(ctr_drbg_nist_validation_aes_256_use_dffalse25612800_11)
06245         {
06246             unsigned char entropy[512];
06247             unsigned char add_init[512];
06248             unsigned char add1[512];
06249             unsigned char add_reseed[512];
06250             unsigned char add2[512];
06251             ctr_drbg_context ctx;
06252             unsigned char buf[512];
06253             unsigned char output_str[512];
06254             int add_init_len, add1_len, add_reseed_len, add2_len;
06255         
06256             memset( output_str, 0, 512 );
06257         
06258             unhexify( entropy, "94aad8c772201435543efd9013c9f5f022038db6864e9ed4141ea75beb236844da6e6a17109262bc80f528427b37d9da6df03c7dd25be233774384a7f53197ea" );
06259             add_init_len = unhexify( add_init, "edb80fddc595b234e3c5c03b2be3d721" );
06260             add1_len = unhexify( add1, "" );
06261             add_reseed_len = unhexify( add_reseed, "" );
06262             add2_len = unhexify( add2, "" );
06263         
06264             test_offset = 0;
06265             fct_chk( ctr_drbg_init_entropy_len( &ctx, entropy_func, entropy, add_init, add_init_len, 32 ) == 0 );
06266         
06267             fct_chk( ctr_drbg_random_with_add( &ctx, buf, 16, add1, add1_len ) == 0 );
06268             fct_chk( ctr_drbg_reseed( &ctx, add_reseed, add_reseed_len ) == 0 );
06269             fct_chk( ctr_drbg_random_with_add( &ctx, buf, 16, add2, add2_len ) == 0 );
06270             hexify( output_str, buf, 16 );
06271             fct_chk( strcmp( (char *) output_str, "511927f10f800445b705ea3cfe6ec823" ) == 0 );
06272         }
06273         FCT_TEST_END();
06274 
06275 
06276         FCT_TEST_BGN(ctr_drbg_nist_validation_aes_256_use_dffalse25612800_12)
06277         {
06278             unsigned char entropy[512];
06279             unsigned char add_init[512];
06280             unsigned char add1[512];
06281             unsigned char add_reseed[512];
06282             unsigned char add2[512];
06283             ctr_drbg_context ctx;
06284             unsigned char buf[512];
06285             unsigned char output_str[512];
06286             int add_init_len, add1_len, add_reseed_len, add2_len;
06287         
06288             memset( output_str, 0, 512 );
06289         
06290             unhexify( entropy, "967050c11050a6d99a5da428d1f0fc8068b29ba4c66965addbfd31b745cb07d2439d268ab32a5fa2b1934bf277ff586506a941768468905ed980537d8baa1d07" );
06291             add_init_len = unhexify( add_init, "c7790c9888b0e731ca6ccd60c32bb98a" );
06292             add1_len = unhexify( add1, "" );
06293             add_reseed_len = unhexify( add_reseed, "" );
06294             add2_len = unhexify( add2, "" );
06295         
06296             test_offset = 0;
06297             fct_chk( ctr_drbg_init_entropy_len( &ctx, entropy_func, entropy, add_init, add_init_len, 32 ) == 0 );
06298         
06299             fct_chk( ctr_drbg_random_with_add( &ctx, buf, 16, add1, add1_len ) == 0 );
06300             fct_chk( ctr_drbg_reseed( &ctx, add_reseed, add_reseed_len ) == 0 );
06301             fct_chk( ctr_drbg_random_with_add( &ctx, buf, 16, add2, add2_len ) == 0 );
06302             hexify( output_str, buf, 16 );
06303             fct_chk( strcmp( (char *) output_str, "978493f0cece6f94d21863a519e06dbe" ) == 0 );
06304         }
06305         FCT_TEST_END();
06306 
06307 
06308         FCT_TEST_BGN(ctr_drbg_nist_validation_aes_256_use_dffalse25612800_13)
06309         {
06310             unsigned char entropy[512];
06311             unsigned char add_init[512];
06312             unsigned char add1[512];
06313             unsigned char add_reseed[512];
06314             unsigned char add2[512];
06315             ctr_drbg_context ctx;
06316             unsigned char buf[512];
06317             unsigned char output_str[512];
06318             int add_init_len, add1_len, add_reseed_len, add2_len;
06319         
06320             memset( output_str, 0, 512 );
06321         
06322             unhexify( entropy, "be3120e8515a98701b4b2fb0667de2bad3f32bcbf10fb9b820956f9aa7ffa1bbbafb70002a9c7fdd1cf7e76a735261798dc60a1163919d58e39ef0c38b54b27b" );
06323             add_init_len = unhexify( add_init, "58c75625771df61c48a82590eeed3378" );
06324             add1_len = unhexify( add1, "" );
06325             add_reseed_len = unhexify( add_reseed, "" );
06326             add2_len = unhexify( add2, "" );
06327         
06328             test_offset = 0;
06329             fct_chk( ctr_drbg_init_entropy_len( &ctx, entropy_func, entropy, add_init, add_init_len, 32 ) == 0 );
06330         
06331             fct_chk( ctr_drbg_random_with_add( &ctx, buf, 16, add1, add1_len ) == 0 );
06332             fct_chk( ctr_drbg_reseed( &ctx, add_reseed, add_reseed_len ) == 0 );
06333             fct_chk( ctr_drbg_random_with_add( &ctx, buf, 16, add2, add2_len ) == 0 );
06334             hexify( output_str, buf, 16 );
06335             fct_chk( strcmp( (char *) output_str, "90f5c486e7efe932258610e744506487" ) == 0 );
06336         }
06337         FCT_TEST_END();
06338 
06339 
06340         FCT_TEST_BGN(ctr_drbg_nist_validation_aes_256_use_dffalse25612800_14)
06341         {
06342             unsigned char entropy[512];
06343             unsigned char add_init[512];
06344             unsigned char add1[512];
06345             unsigned char add_reseed[512];
06346             unsigned char add2[512];
06347             ctr_drbg_context ctx;
06348             unsigned char buf[512];
06349             unsigned char output_str[512];
06350             int add_init_len, add1_len, add_reseed_len, add2_len;
06351         
06352             memset( output_str, 0, 512 );
06353         
06354             unhexify( entropy, "855c0e3a7567730b11e197c136e5c22b1dc7271d4dbe04bcdfd2fc0ef806b3c05b4264ee6c60d526506622ebf6130738dba4bf35c13ce33db19487312ee691fe" );
06355             add_init_len = unhexify( add_init, "d3f64c11aa21bb2d12278847547fb11b" );
06356             add1_len = unhexify( add1, "" );
06357             add_reseed_len = unhexify( add_reseed, "" );
06358             add2_len = unhexify( add2, "" );
06359         
06360             test_offset = 0;
06361             fct_chk( ctr_drbg_init_entropy_len( &ctx, entropy_func, entropy, add_init, add_init_len, 32 ) == 0 );
06362         
06363             fct_chk( ctr_drbg_random_with_add( &ctx, buf, 16, add1, add1_len ) == 0 );
06364             fct_chk( ctr_drbg_reseed( &ctx, add_reseed, add_reseed_len ) == 0 );
06365             fct_chk( ctr_drbg_random_with_add( &ctx, buf, 16, add2, add2_len ) == 0 );
06366             hexify( output_str, buf, 16 );
06367             fct_chk( strcmp( (char *) output_str, "33ed7089ebae738c6a7e6e2390d573e4" ) == 0 );
06368         }
06369         FCT_TEST_END();
06370 
06371 
06372         FCT_TEST_BGN(ctr_drbg_nist_validation_aes_256_use_dffalse2561280256_0)
06373         {
06374             unsigned char entropy[512];
06375             unsigned char add_init[512];
06376             unsigned char add1[512];
06377             unsigned char add_reseed[512];
06378             unsigned char add2[512];
06379             ctr_drbg_context ctx;
06380             unsigned char buf[512];
06381             unsigned char output_str[512];
06382             int add_init_len, add1_len, add_reseed_len, add2_len;
06383         
06384             memset( output_str, 0, 512 );
06385         
06386             unhexify( entropy, "2e5beadd89b663b3903d3a63c3ab5605bfb1a0045a42430e0220243c51a69f7ff7678c2f8edb7bb4a29b646f3edfaca2463f9defd342da87d22b1b8fdb012fd5" );
06387             add_init_len = unhexify( add_init, "132ad1c40afb066620f004f08409c59e" );
06388             add1_len = unhexify( add1, "150deb841d1a4d90e66e85b036d9f5a7efca726b907ae3e8f05e1d1338cdfd32" );
06389             add_reseed_len = unhexify( add_reseed, "fb199beeeaf3939be2a5f9e6ba22f97cdd2c7576e81eccc686facbdf8bb4f2aa" );
06390             add2_len = unhexify( add2, "4293341721f57e4548ce8c003531d38622446c8825904e1b868dcddc626c5164" );
06391         
06392             test_offset = 0;
06393             fct_chk( ctr_drbg_init_entropy_len( &ctx, entropy_func, entropy, add_init, add_init_len, 32 ) == 0 );
06394         
06395             fct_chk( ctr_drbg_random_with_add( &ctx, buf, 16, add1, add1_len ) == 0 );
06396             fct_chk( ctr_drbg_reseed( &ctx, add_reseed, add_reseed_len ) == 0 );
06397             fct_chk( ctr_drbg_random_with_add( &ctx, buf, 16, add2, add2_len ) == 0 );
06398             hexify( output_str, buf, 16 );
06399             fct_chk( strcmp( (char *) output_str, "66d8f3bfb78186b57136ec2c1602e1ef" ) == 0 );
06400         }
06401         FCT_TEST_END();
06402 
06403 
06404         FCT_TEST_BGN(ctr_drbg_nist_validation_aes_256_use_dffalse2561280256_1)
06405         {
06406             unsigned char entropy[512];
06407             unsigned char add_init[512];
06408             unsigned char add1[512];
06409             unsigned char add_reseed[512];
06410             unsigned char add2[512];
06411             ctr_drbg_context ctx;
06412             unsigned char buf[512];
06413             unsigned char output_str[512];
06414             int add_init_len, add1_len, add_reseed_len, add2_len;
06415         
06416             memset( output_str, 0, 512 );
06417         
06418             unhexify( entropy, "1d33b1b257a3ae1210fa2099307916a73dd92270769697ea2d7901f56865e3cae1be94b5024d0da3880bce06f0b31231c5a889f8ba3d92a20844b61009db672d" );
06419             add_init_len = unhexify( add_init, "1c1502ca97c109399a72a77c8d6cc22b" );
06420             add1_len = unhexify( add1, "23eede46eff4a04b08dcc2133e4537b332351f8469630f11b0c8853fb762a4bc" );
06421             add_reseed_len = unhexify( add_reseed, "6fd9f9da108e68aea9d1cecd81c49bcd0e7bedb348890f2248cb31c4277369f7" );
06422             add2_len = unhexify( add2, "76bcc11bd952123f78dd2ba60dd932d49203e418bb832d60b45c083e1e129834" );
06423         
06424             test_offset = 0;
06425             fct_chk( ctr_drbg_init_entropy_len( &ctx, entropy_func, entropy, add_init, add_init_len, 32 ) == 0 );
06426         
06427             fct_chk( ctr_drbg_random_with_add( &ctx, buf, 16, add1, add1_len ) == 0 );
06428             fct_chk( ctr_drbg_reseed( &ctx, add_reseed, add_reseed_len ) == 0 );
06429             fct_chk( ctr_drbg_random_with_add( &ctx, buf, 16, add2, add2_len ) == 0 );
06430             hexify( output_str, buf, 16 );
06431             fct_chk( strcmp( (char *) output_str, "a1eee46001616f2bf87729895da0d0d1" ) == 0 );
06432         }
06433         FCT_TEST_END();
06434 
06435 
06436         FCT_TEST_BGN(ctr_drbg_nist_validation_aes_256_use_dffalse2561280256_2)
06437         {
06438             unsigned char entropy[512];
06439             unsigned char add_init[512];
06440             unsigned char add1[512];
06441             unsigned char add_reseed[512];
06442             unsigned char add2[512];
06443             ctr_drbg_context ctx;
06444             unsigned char buf[512];
06445             unsigned char output_str[512];
06446             int add_init_len, add1_len, add_reseed_len, add2_len;
06447         
06448             memset( output_str, 0, 512 );
06449         
06450             unhexify( entropy, "5e8cc0fdadc170ed0f5e12f79a6b9e585f9d7c2926c163686a6a724495d88fabcec940d752545cae63f1792dcb966a7325f61997ba8883559ad6f6f8fc09898a" );
06451             add_init_len = unhexify( add_init, "c79c0a1db75e83af258cdf9ead81264d" );
06452             add1_len = unhexify( add1, "a2cf6c1c9e4489f504e17f385f08aa82775aa2b0a84abd0b7ee3c6b393d7fd50" );
06453             add_reseed_len = unhexify( add_reseed, "c7529b874e07d4b876196786d510cc038c9e1ab93c461df2474eba484ae6876f" );
06454             add2_len = unhexify( add2, "63c6e7f3548529386c9f47c5aece52ce8454da5db9a807a1b960f7730a61582b" );
06455         
06456             test_offset = 0;
06457             fct_chk( ctr_drbg_init_entropy_len( &ctx, entropy_func, entropy, add_init, add_init_len, 32 ) == 0 );
06458         
06459             fct_chk( ctr_drbg_random_with_add( &ctx, buf, 16, add1, add1_len ) == 0 );
06460             fct_chk( ctr_drbg_reseed( &ctx, add_reseed, add_reseed_len ) == 0 );
06461             fct_chk( ctr_drbg_random_with_add( &ctx, buf, 16, add2, add2_len ) == 0 );
06462             hexify( output_str, buf, 16 );
06463             fct_chk( strcmp( (char *) output_str, "43b7931e0b3b3769ef8972d0026896a3" ) == 0 );
06464         }
06465         FCT_TEST_END();
06466 
06467 
06468         FCT_TEST_BGN(ctr_drbg_nist_validation_aes_256_use_dffalse2561280256_3)
06469         {
06470             unsigned char entropy[512];
06471             unsigned char add_init[512];
06472             unsigned char add1[512];
06473             unsigned char add_reseed[512];
06474             unsigned char add2[512];
06475             ctr_drbg_context ctx;
06476             unsigned char buf[512];
06477             unsigned char output_str[512];
06478             int add_init_len, add1_len, add_reseed_len, add2_len;
06479         
06480             memset( output_str, 0, 512 );
06481         
06482             unhexify( entropy, "c3dae1863d323cc78f43ccb3f632fde29130e6b23b843ff5a8d79fddc3c1f92b55cd3dcaf7848d40d189c0de7790bebb889e01be05980dcdf30d2b3333426c50" );
06483             add_init_len = unhexify( add_init, "b44d1dd914e88840bc65a94ee199b3ac" );
06484             add1_len = unhexify( add1, "41e2fce9b48642a1b9bd1695314adcdd38e1a8afe4891e633c5088c6753438a2" );
06485             add_reseed_len = unhexify( add_reseed, "1eb3f8bbacb0c6b901718bfd7eba29f6f87e1fe056ad442d6d38c1351a684e1f" );
06486             add2_len = unhexify( add2, "85570db773f3f5202967376f91a0a9c09c89cd4eddd58cdc6210335fd5e7acef" );
06487         
06488             test_offset = 0;
06489             fct_chk( ctr_drbg_init_entropy_len( &ctx, entropy_func, entropy, add_init, add_init_len, 32 ) == 0 );
06490         
06491             fct_chk( ctr_drbg_random_with_add( &ctx, buf, 16, add1, add1_len ) == 0 );
06492             fct_chk( ctr_drbg_reseed( &ctx, add_reseed, add_reseed_len ) == 0 );
06493             fct_chk( ctr_drbg_random_with_add( &ctx, buf, 16, add2, add2_len ) == 0 );
06494             hexify( output_str, buf, 16 );
06495             fct_chk( strcmp( (char *) output_str, "bd53036538d9ed904a49966b5428a2a8" ) == 0 );
06496         }
06497         FCT_TEST_END();
06498 
06499 
06500         FCT_TEST_BGN(ctr_drbg_nist_validation_aes_256_use_dffalse2561280256_4)
06501         {
06502             unsigned char entropy[512];
06503             unsigned char add_init[512];
06504             unsigned char add1[512];
06505             unsigned char add_reseed[512];
06506             unsigned char add2[512];
06507             ctr_drbg_context ctx;
06508             unsigned char buf[512];
06509             unsigned char output_str[512];
06510             int add_init_len, add1_len, add_reseed_len, add2_len;
06511         
06512             memset( output_str, 0, 512 );
06513         
06514             unhexify( entropy, "be67434ac4d77f0f50ec5bacc8112d1480bd9f20d6b4ea768d9b51bb69c1dffcd8c30e4412127644aaa6fc453e59fb633f6a5a8c2f69e40d1863e35d4d4c0227" );
06515             add_init_len = unhexify( add_init, "5ef97f7af7df5cc6fa94f8428ec7be5c" );
06516             add1_len = unhexify( add1, "a64195b1e56cf97fd81e99fa1833d191faf62f534c874def4b8bed0ae7195ac7" );
06517             add_reseed_len = unhexify( add_reseed, "353cd3a8d9cd92bce82cd8d1cc198baa9276db478b0cfe50249e30c3042ee9db" );
06518             add2_len = unhexify( add2, "393ab4726f088fdfeb4df752e1b2aec678e41fa60781bc5e914296227d6b3dfc" );
06519         
06520             test_offset = 0;
06521             fct_chk( ctr_drbg_init_entropy_len( &ctx, entropy_func, entropy, add_init, add_init_len, 32 ) == 0 );
06522         
06523             fct_chk( ctr_drbg_random_with_add( &ctx, buf, 16, add1, add1_len ) == 0 );
06524             fct_chk( ctr_drbg_reseed( &ctx, add_reseed, add_reseed_len ) == 0 );
06525             fct_chk( ctr_drbg_random_with_add( &ctx, buf, 16, add2, add2_len ) == 0 );
06526             hexify( output_str, buf, 16 );
06527             fct_chk( strcmp( (char *) output_str, "24bdc2cad5dccd2309425f11a24c8c39" ) == 0 );
06528         }
06529         FCT_TEST_END();
06530 
06531 
06532         FCT_TEST_BGN(ctr_drbg_nist_validation_aes_256_use_dffalse2561280256_5)
06533         {
06534             unsigned char entropy[512];
06535             unsigned char add_init[512];
06536             unsigned char add1[512];
06537             unsigned char add_reseed[512];
06538             unsigned char add2[512];
06539             ctr_drbg_context ctx;
06540             unsigned char buf[512];
06541             unsigned char output_str[512];
06542             int add_init_len, add1_len, add_reseed_len, add2_len;
06543         
06544             memset( output_str, 0, 512 );
06545         
06546             unhexify( entropy, "cc070df6aa3623f74afd85b59d1bef2b1fcd9c8093362512ff109ebfe992ed75bd58b5ae1561d702b69065eb3cc0bd328ab698d4c6ca274e96d673309b5df5df" );
06547             add_init_len = unhexify( add_init, "567130da4e7ecc4db0f035d7ecb11878" );
06548             add1_len = unhexify( add1, "42033054cefa1f20b3443f8ab7d9635ae8f047b833c8529245ba8b4aa07edba3" );
06549             add_reseed_len = unhexify( add_reseed, "72972fb947bff60df291888ddbfd91e698e0c1c26a346b95fc7c5dac596d0073" );
06550             add2_len = unhexify( add2, "af29b6a13602ba9c6b11f8dbdeb6cb52e211f9cd2fc96e63b61e3c1ec631d2ea" );
06551         
06552             test_offset = 0;
06553             fct_chk( ctr_drbg_init_entropy_len( &ctx, entropy_func, entropy, add_init, add_init_len, 32 ) == 0 );
06554         
06555             fct_chk( ctr_drbg_random_with_add( &ctx, buf, 16, add1, add1_len ) == 0 );
06556             fct_chk( ctr_drbg_reseed( &ctx, add_reseed, add_reseed_len ) == 0 );
06557             fct_chk( ctr_drbg_random_with_add( &ctx, buf, 16, add2, add2_len ) == 0 );
06558             hexify( output_str, buf, 16 );
06559             fct_chk( strcmp( (char *) output_str, "b0849f8317e043271a3fc5f2eaaaaba2" ) == 0 );
06560         }
06561         FCT_TEST_END();
06562 
06563 
06564         FCT_TEST_BGN(ctr_drbg_nist_validation_aes_256_use_dffalse2561280256_6)
06565         {
06566             unsigned char entropy[512];
06567             unsigned char add_init[512];
06568             unsigned char add1[512];
06569             unsigned char add_reseed[512];
06570             unsigned char add2[512];
06571             ctr_drbg_context ctx;
06572             unsigned char buf[512];
06573             unsigned char output_str[512];
06574             int add_init_len, add1_len, add_reseed_len, add2_len;
06575         
06576             memset( output_str, 0, 512 );
06577         
06578             unhexify( entropy, "c4bf7a39caf26dc3f61311f54ab3095493c626a988f5abee2826c67a4f4b4d6a02329c99a6bcb5e387fa160741c871acc2929c1cc07f2f0a7ce1619eb7da1ec4" );
06579             add_init_len = unhexify( add_init, "2c20ae36f1e74542ed8b0a177b8050aa" );
06580             add1_len = unhexify( add1, "97c148dd10c3dd72b1eaaafbe37a9310ed15b23872e9f2b62d1feb91ea81ffe3" );
06581             add_reseed_len = unhexify( add_reseed, "23df0c30c68bf2eeb55d273a596f1f54ed916271595b906e4f7793b7a52f2573" );
06582             add2_len = unhexify( add2, "22f120fa09215105116919aaf8eebcb69eccd5da42feb737018a05268bf08e46" );
06583         
06584             test_offset = 0;
06585             fct_chk( ctr_drbg_init_entropy_len( &ctx, entropy_func, entropy, add_init, add_init_len, 32 ) == 0 );
06586         
06587             fct_chk( ctr_drbg_random_with_add( &ctx, buf, 16, add1, add1_len ) == 0 );
06588             fct_chk( ctr_drbg_reseed( &ctx, add_reseed, add_reseed_len ) == 0 );
06589             fct_chk( ctr_drbg_random_with_add( &ctx, buf, 16, add2, add2_len ) == 0 );
06590             hexify( output_str, buf, 16 );
06591             fct_chk( strcmp( (char *) output_str, "b7c73b9ceea2e6ca0be6a3773cdd6886" ) == 0 );
06592         }
06593         FCT_TEST_END();
06594 
06595 
06596         FCT_TEST_BGN(ctr_drbg_nist_validation_aes_256_use_dffalse2561280256_7)
06597         {
06598             unsigned char entropy[512];
06599             unsigned char add_init[512];
06600             unsigned char add1[512];
06601             unsigned char add_reseed[512];
06602             unsigned char add2[512];
06603             ctr_drbg_context ctx;
06604             unsigned char buf[512];
06605             unsigned char output_str[512];
06606             int add_init_len, add1_len, add_reseed_len, add2_len;
06607         
06608             memset( output_str, 0, 512 );
06609         
06610             unhexify( entropy, "979b5aeafe555aeba152ed66e32e30e110df20ee1f227932a72acfb8218aec767941efaefa091c0128dad9b93b06b28fc76e01f275e8ce1c02f0eb567c914f89" );
06611             add_init_len = unhexify( add_init, "2076f9e116a2648e1e664b815b1b3674" );
06612             add1_len = unhexify( add1, "d12fb10b9fa6d2fd0f39cf76294cd44dcbfa80dca7c2f8537c75453d985ef551" );
06613             add_reseed_len = unhexify( add_reseed, "4228a99faf35547a58c1a4d842301dca374f1f13c6fd067b7c1b815863b73158" );
06614             add2_len = unhexify( add2, "a3a7d5f1e2dcf95a90715ec5fd32e7f88c38b0a452b6ccd1f107458db4f74fd6" );
06615         
06616             test_offset = 0;
06617             fct_chk( ctr_drbg_init_entropy_len( &ctx, entropy_func, entropy, add_init, add_init_len, 32 ) == 0 );
06618         
06619             fct_chk( ctr_drbg_random_with_add( &ctx, buf, 16, add1, add1_len ) == 0 );
06620             fct_chk( ctr_drbg_reseed( &ctx, add_reseed, add_reseed_len ) == 0 );
06621             fct_chk( ctr_drbg_random_with_add( &ctx, buf, 16, add2, add2_len ) == 0 );
06622             hexify( output_str, buf, 16 );
06623             fct_chk( strcmp( (char *) output_str, "8a63a5002a3636b241f0bec14fd9c2ac" ) == 0 );
06624         }
06625         FCT_TEST_END();
06626 
06627 
06628         FCT_TEST_BGN(ctr_drbg_nist_validation_aes_256_use_dffalse2561280256_8)
06629         {
06630             unsigned char entropy[512];
06631             unsigned char add_init[512];
06632             unsigned char add1[512];
06633             unsigned char add_reseed[512];
06634             unsigned char add2[512];
06635             ctr_drbg_context ctx;
06636             unsigned char buf[512];
06637             unsigned char output_str[512];
06638             int add_init_len, add1_len, add_reseed_len, add2_len;
06639         
06640             memset( output_str, 0, 512 );
06641         
06642             unhexify( entropy, "c810cb9db0f169dbc30fda85ccb6d4c40db68d429eeb3653070db7641fbbaba60ef0ff970eaf40887b7e154e2ecd5331de7004689ec604e69927da630a8dd7a7" );
06643             add_init_len = unhexify( add_init, "a71015cf06ddd0a6cd72fa014cf0aee6" );
06644             add1_len = unhexify( add1, "5f99f45d8770041703e5a14521c501904fd05ff3340835ac0c41b86442e4939c" );
06645             add_reseed_len = unhexify( add_reseed, "eb7efa6e46ab926ea04c87eb9ce454f5b10717bd9d85305f27d71bea1bc991b3" );
06646             add2_len = unhexify( add2, "cbc80c6171d098fc81023486d327efe2415a0f32e5fa6f6793ce1d0e98783258" );
06647         
06648             test_offset = 0;
06649             fct_chk( ctr_drbg_init_entropy_len( &ctx, entropy_func, entropy, add_init, add_init_len, 32 ) == 0 );
06650         
06651             fct_chk( ctr_drbg_random_with_add( &ctx, buf, 16, add1, add1_len ) == 0 );
06652             fct_chk( ctr_drbg_reseed( &ctx, add_reseed, add_reseed_len ) == 0 );
06653             fct_chk( ctr_drbg_random_with_add( &ctx, buf, 16, add2, add2_len ) == 0 );
06654             hexify( output_str, buf, 16 );
06655             fct_chk( strcmp( (char *) output_str, "a353f6b350404f3f7b4fb724f84a948a" ) == 0 );
06656         }
06657         FCT_TEST_END();
06658 
06659 
06660         FCT_TEST_BGN(ctr_drbg_nist_validation_aes_256_use_dffalse2561280256_9)
06661         {
06662             unsigned char entropy[512];
06663             unsigned char add_init[512];
06664             unsigned char add1[512];
06665             unsigned char add_reseed[512];
06666             unsigned char add2[512];
06667             ctr_drbg_context ctx;
06668             unsigned char buf[512];
06669             unsigned char output_str[512];
06670             int add_init_len, add1_len, add_reseed_len, add2_len;
06671         
06672             memset( output_str, 0, 512 );
06673         
06674             unhexify( entropy, "831fc8d63592b6ce358c08aeac39d67c3e48b4c2617735b6fe5e9fa44d7aee9d60f2fcf549db239d5bed9c608c94e8f8c23b32901442ac53442127377bdcf205" );
06675             add_init_len = unhexify( add_init, "395931837614c322d8488ec6a2c4c919" );
06676             add1_len = unhexify( add1, "eb261c737c0a17c8cb1ae055c143f701b74c96c852e4a76ca3ea045e7efdf5ee" );
06677             add_reseed_len = unhexify( add_reseed, "153276007b3843a897efbf022bd1bcabcf655c7eb8acef9baac710b339ecfd99" );
06678             add2_len = unhexify( add2, "a8a5cb17a2945e5b41ff370cc88ac498389b89b6cd82bb3bbde81c212f7c17d4" );
06679         
06680             test_offset = 0;
06681             fct_chk( ctr_drbg_init_entropy_len( &ctx, entropy_func, entropy, add_init, add_init_len, 32 ) == 0 );
06682         
06683             fct_chk( ctr_drbg_random_with_add( &ctx, buf, 16, add1, add1_len ) == 0 );
06684             fct_chk( ctr_drbg_reseed( &ctx, add_reseed, add_reseed_len ) == 0 );
06685             fct_chk( ctr_drbg_random_with_add( &ctx, buf, 16, add2, add2_len ) == 0 );
06686             hexify( output_str, buf, 16 );
06687             fct_chk( strcmp( (char *) output_str, "537fc2b73183d2c0c106886937a6609c" ) == 0 );
06688         }
06689         FCT_TEST_END();
06690 
06691 
06692         FCT_TEST_BGN(ctr_drbg_nist_validation_aes_256_use_dffalse2561280256_10)
06693         {
06694             unsigned char entropy[512];
06695             unsigned char add_init[512];
06696             unsigned char add1[512];
06697             unsigned char add_reseed[512];
06698             unsigned char add2[512];
06699             ctr_drbg_context ctx;
06700             unsigned char buf[512];
06701             unsigned char output_str[512];
06702             int add_init_len, add1_len, add_reseed_len, add2_len;
06703         
06704             memset( output_str, 0, 512 );
06705         
06706             unhexify( entropy, "68c5cf31f7959ffaa83af9dd55a75ec001befbf835e42a789ac42d39d96128eb6d9b3f07ced15e57e39760390c065fb4425c19ef7184635c18e5ed28256937e1" );
06707             add_init_len = unhexify( add_init, "9a1983859dd6c4cb602970d705952b2b" );
06708             add1_len = unhexify( add1, "e06497a181a5362980579c91d263f630ad4794519a64261ede8b36cf0ac5e713" );
06709             add_reseed_len = unhexify( add_reseed, "714e4fc52aea763e23a1f5b18949ab8fd949f1768560559bccb49d78d51dfab5" );
06710             add2_len = unhexify( add2, "6b6b7f65fd472ad428df2bbb86b85067d0a6f89d9233eea92f5189a9163d0419" );
06711         
06712             test_offset = 0;
06713             fct_chk( ctr_drbg_init_entropy_len( &ctx, entropy_func, entropy, add_init, add_init_len, 32 ) == 0 );
06714         
06715             fct_chk( ctr_drbg_random_with_add( &ctx, buf, 16, add1, add1_len ) == 0 );
06716             fct_chk( ctr_drbg_reseed( &ctx, add_reseed, add_reseed_len ) == 0 );
06717             fct_chk( ctr_drbg_random_with_add( &ctx, buf, 16, add2, add2_len ) == 0 );
06718             hexify( output_str, buf, 16 );
06719             fct_chk( strcmp( (char *) output_str, "e32af8a81c59dc44540ed8845b447fdb" ) == 0 );
06720         }
06721         FCT_TEST_END();
06722 
06723 
06724         FCT_TEST_BGN(ctr_drbg_nist_validation_aes_256_use_dffalse2561280256_11)
06725         {
06726             unsigned char entropy[512];
06727             unsigned char add_init[512];
06728             unsigned char add1[512];
06729             unsigned char add_reseed[512];
06730             unsigned char add2[512];
06731             ctr_drbg_context ctx;
06732             unsigned char buf[512];
06733             unsigned char output_str[512];
06734             int add_init_len, add1_len, add_reseed_len, add2_len;
06735         
06736             memset( output_str, 0, 512 );
06737         
06738             unhexify( entropy, "6193f0e7b33ce19fde922aec9c93f1271ebcdd296d9c8c77029b59afa2064e3159088e07e91c14a4a3dc23b6005dd8ef1425d7d2ae8282a5b30b7498b6754234" );
06739             add_init_len = unhexify( add_init, "230576e9518fb9a6a8391a84919b0d97" );
06740             add1_len = unhexify( add1, "ffaca30a256d18836a0d49bbaad599a28fc7821d71aa91b97158a492d84a6280" );
06741             add_reseed_len = unhexify( add_reseed, "a3da13852d0717afed7c58c52530d2ae047b645a5e7aa8cfabc11478444151ac" );
06742             add2_len = unhexify( add2, "e15fdaeea31c95555fc509d2a266abf78d86ca11aa2f87ce1041142eb9f82bae" );
06743         
06744             test_offset = 0;
06745             fct_chk( ctr_drbg_init_entropy_len( &ctx, entropy_func, entropy, add_init, add_init_len, 32 ) == 0 );
06746         
06747             fct_chk( ctr_drbg_random_with_add( &ctx, buf, 16, add1, add1_len ) == 0 );
06748             fct_chk( ctr_drbg_reseed( &ctx, add_reseed, add_reseed_len ) == 0 );
06749             fct_chk( ctr_drbg_random_with_add( &ctx, buf, 16, add2, add2_len ) == 0 );
06750             hexify( output_str, buf, 16 );
06751             fct_chk( strcmp( (char *) output_str, "7906f8da1e140345c191dbc2de5ead1b" ) == 0 );
06752         }
06753         FCT_TEST_END();
06754 
06755 
06756         FCT_TEST_BGN(ctr_drbg_nist_validation_aes_256_use_dffalse2561280256_12)
06757         {
06758             unsigned char entropy[512];
06759             unsigned char add_init[512];
06760             unsigned char add1[512];
06761             unsigned char add_reseed[512];
06762             unsigned char add2[512];
06763             ctr_drbg_context ctx;
06764             unsigned char buf[512];
06765             unsigned char output_str[512];
06766             int add_init_len, add1_len, add_reseed_len, add2_len;
06767         
06768             memset( output_str, 0, 512 );
06769         
06770             unhexify( entropy, "cfbe8b1464b00bb9e0d18b04d2040ed9bd822741188812b98a440fbc66ff018ddf6c0ea20c62d01b8237bc7c3da9e3f9fb874fca79a360b4f0f967d8d02083ba" );
06771             add_init_len = unhexify( add_init, "e08a3a33adb4399a9be72fead224155f" );
06772             add1_len = unhexify( add1, "56f975849197e2eae5a2e6fb445a93c1fadf57280ac27e27c7cbea2cb00c10cc" );
06773             add_reseed_len = unhexify( add_reseed, "0a6d9e2d6e181addab0ea1ee89c65ce557e10fb8e8d43a24cdd27033d3fff507" );
06774             add2_len = unhexify( add2, "823e9400a9f563cc1fa5daf10f4ff1ab8affa18d8371f9cd0e067fcddce8caed" );
06775         
06776             test_offset = 0;
06777             fct_chk( ctr_drbg_init_entropy_len( &ctx, entropy_func, entropy, add_init, add_init_len, 32 ) == 0 );
06778         
06779             fct_chk( ctr_drbg_random_with_add( &ctx, buf, 16, add1, add1_len ) == 0 );
06780             fct_chk( ctr_drbg_reseed( &ctx, add_reseed, add_reseed_len ) == 0 );
06781             fct_chk( ctr_drbg_random_with_add( &ctx, buf, 16, add2, add2_len ) == 0 );
06782             hexify( output_str, buf, 16 );
06783             fct_chk( strcmp( (char *) output_str, "5ded298f98cffb2e7f5ea97bd50c7e3e" ) == 0 );
06784         }
06785         FCT_TEST_END();
06786 
06787 
06788         FCT_TEST_BGN(ctr_drbg_nist_validation_aes_256_use_dffalse2561280256_13)
06789         {
06790             unsigned char entropy[512];
06791             unsigned char add_init[512];
06792             unsigned char add1[512];
06793             unsigned char add_reseed[512];
06794             unsigned char add2[512];
06795             ctr_drbg_context ctx;
06796             unsigned char buf[512];
06797             unsigned char output_str[512];
06798             int add_init_len, add1_len, add_reseed_len, add2_len;
06799         
06800             memset( output_str, 0, 512 );
06801         
06802             unhexify( entropy, "f53343a5a455132df3d1b03db39e44d933855b375d7422ad0d07dfdfb352af28946eb29980793456ec8634bf113e75783246bbd05aa8a7cb5886d372fa012f58" );
06803             add_init_len = unhexify( add_init, "11c13b917d9f94fd7a008566d8598e89" );
06804             add1_len = unhexify( add1, "ff1d8d33083023ffbe28f153bddfa9d9f3c221da16f8f20967d2508fa7752b55" );
06805             add_reseed_len = unhexify( add_reseed, "66a98c7d778d798617e1d31d4bdfabf8d381d38b82125838ddf43fb7f5b27dc6" );
06806             add2_len = unhexify( add2, "407c72d7c890c00b249be00a53ae722e5d8033c84b1e1a6a69d4b278ba5db9eb" );
06807         
06808             test_offset = 0;
06809             fct_chk( ctr_drbg_init_entropy_len( &ctx, entropy_func, entropy, add_init, add_init_len, 32 ) == 0 );
06810         
06811             fct_chk( ctr_drbg_random_with_add( &ctx, buf, 16, add1, add1_len ) == 0 );
06812             fct_chk( ctr_drbg_reseed( &ctx, add_reseed, add_reseed_len ) == 0 );
06813             fct_chk( ctr_drbg_random_with_add( &ctx, buf, 16, add2, add2_len ) == 0 );
06814             hexify( output_str, buf, 16 );
06815             fct_chk( strcmp( (char *) output_str, "67ab88156f20d03b3a1bc363daefc0c6" ) == 0 );
06816         }
06817         FCT_TEST_END();
06818 
06819 
06820         FCT_TEST_BGN(ctr_drbg_nist_validation_aes_256_use_dffalse2561280256_14)
06821         {
06822             unsigned char entropy[512];
06823             unsigned char add_init[512];
06824             unsigned char add1[512];
06825             unsigned char add_reseed[512];
06826             unsigned char add2[512];
06827             ctr_drbg_context ctx;
06828             unsigned char buf[512];
06829             unsigned char output_str[512];
06830             int add_init_len, add1_len, add_reseed_len, add2_len;
06831         
06832             memset( output_str, 0, 512 );
06833         
06834             unhexify( entropy, "3d7e2987860cbcba14a12594e1a394ee754c9a7a65cecc990bc79b5e86e672e12f8c144d843e1abca46b4759a11b3d29f4e219077a8696efadee618f254cb80a" );
06835             add_init_len = unhexify( add_init, "7b95343a4ac0f8c8b2645c33757a3146" );
06836             add1_len = unhexify( add1, "16297534a79c4ae7493178226b29e42a6f1e0066aeaee8b5af65bcefa2ee3ebb" );
06837             add_reseed_len = unhexify( add_reseed, "b429ee986f16fb35fe2c47c03c0918870b4560f4ec4678f9df471cbd7ca6a887" );
06838             add2_len = unhexify( add2, "2b14d612eb00c7fba0d8e23bf91df91daef6f8e279e0050d5497ddf0f3466c76" );
06839         
06840             test_offset = 0;
06841             fct_chk( ctr_drbg_init_entropy_len( &ctx, entropy_func, entropy, add_init, add_init_len, 32 ) == 0 );
06842         
06843             fct_chk( ctr_drbg_random_with_add( &ctx, buf, 16, add1, add1_len ) == 0 );
06844             fct_chk( ctr_drbg_reseed( &ctx, add_reseed, add_reseed_len ) == 0 );
06845             fct_chk( ctr_drbg_random_with_add( &ctx, buf, 16, add2, add2_len ) == 0 );
06846             hexify( output_str, buf, 16 );
06847             fct_chk( strcmp( (char *) output_str, "8f72c17405163090fe0bd795b65811c6" ) == 0 );
06848         }
06849         FCT_TEST_END();
06850 
06851 
06852         FCT_TEST_BGN(ctr_drbg_nist_validation_aes_256_use_dffalse2561282560_0)
06853         {
06854             unsigned char entropy[512];
06855             unsigned char add_init[512];
06856             unsigned char add1[512];
06857             unsigned char add_reseed[512];
06858             unsigned char add2[512];
06859             ctr_drbg_context ctx;
06860             unsigned char buf[512];
06861             unsigned char output_str[512];
06862             int add_init_len, add1_len, add_reseed_len, add2_len;
06863         
06864             memset( output_str, 0, 512 );
06865         
06866             unhexify( entropy, "80bdf18288cb8adb6e3dacb09c553af2e7317c194d37f433eec27e324a0bad752899bda91fd41e5a08acdfd76007aecabc19c95a8bcede310f7320ce97aaad0e" );
06867             add_init_len = unhexify( add_init, "327290da2e9a19c840de8d33e425efaa5aa7a7afa4e5a812065965478d640f78520cf3c670b098943fec1914d4c8c411" );
06868             add1_len = unhexify( add1, "" );
06869             add_reseed_len = unhexify( add_reseed, "" );
06870             add2_len = unhexify( add2, "" );
06871         
06872             test_offset = 0;
06873             fct_chk( ctr_drbg_init_entropy_len( &ctx, entropy_func, entropy, add_init, add_init_len, 32 ) == 0 );
06874         
06875             fct_chk( ctr_drbg_random_with_add( &ctx, buf, 16, add1, add1_len ) == 0 );
06876             fct_chk( ctr_drbg_reseed( &ctx, add_reseed, add_reseed_len ) == 0 );
06877             fct_chk( ctr_drbg_random_with_add( &ctx, buf, 16, add2, add2_len ) == 0 );
06878             hexify( output_str, buf, 16 );
06879             fct_chk( strcmp( (char *) output_str, "c26222662ed3a649a1745dee5df4eef0" ) == 0 );
06880         }
06881         FCT_TEST_END();
06882 
06883 
06884         FCT_TEST_BGN(ctr_drbg_nist_validation_aes_256_use_dffalse2561282560_1)
06885         {
06886             unsigned char entropy[512];
06887             unsigned char add_init[512];
06888             unsigned char add1[512];
06889             unsigned char add_reseed[512];
06890             unsigned char add2[512];
06891             ctr_drbg_context ctx;
06892             unsigned char buf[512];
06893             unsigned char output_str[512];
06894             int add_init_len, add1_len, add_reseed_len, add2_len;
06895         
06896             memset( output_str, 0, 512 );
06897         
06898             unhexify( entropy, "ac71ff53140c1383eb379e5311e37637af933db494e5e689d065661e9095b8302e4174c392f324fac43695d9381e3cf4626a5347938ed9e21502cbd789cca363" );
06899             add_init_len = unhexify( add_init, "be14f473472db07a43b7f9a517735d7f7ede2aa70dbdb729bc4f578a0dce9d7fe9fd97939cd1ef731262417b5213bd7f" );
06900             add1_len = unhexify( add1, "" );
06901             add_reseed_len = unhexify( add_reseed, "" );
06902             add2_len = unhexify( add2, "" );
06903         
06904             test_offset = 0;
06905             fct_chk( ctr_drbg_init_entropy_len( &ctx, entropy_func, entropy, add_init, add_init_len, 32 ) == 0 );
06906         
06907             fct_chk( ctr_drbg_random_with_add( &ctx, buf, 16, add1, add1_len ) == 0 );
06908             fct_chk( ctr_drbg_reseed( &ctx, add_reseed, add_reseed_len ) == 0 );
06909             fct_chk( ctr_drbg_random_with_add( &ctx, buf, 16, add2, add2_len ) == 0 );
06910             hexify( output_str, buf, 16 );
06911             fct_chk( strcmp( (char *) output_str, "4bab95f9f05fc36a337b6f2582c2ce98" ) == 0 );
06912         }
06913         FCT_TEST_END();
06914 
06915 
06916         FCT_TEST_BGN(ctr_drbg_nist_validation_aes_256_use_dffalse2561282560_2)
06917         {
06918             unsigned char entropy[512];
06919             unsigned char add_init[512];
06920             unsigned char add1[512];
06921             unsigned char add_reseed[512];
06922             unsigned char add2[512];
06923             ctr_drbg_context ctx;
06924             unsigned char buf[512];
06925             unsigned char output_str[512];
06926             int add_init_len, add1_len, add_reseed_len, add2_len;
06927         
06928             memset( output_str, 0, 512 );
06929         
06930             unhexify( entropy, "bf9bf25a949d447274a8c72f1ae51399521f8aca39b1b37bb7b4d5cf3c67d55ef8dbacfb71aa9c5949416e2868b968883e517215bc20292894f8406ab39c1ea1" );
06931             add_init_len = unhexify( add_init, "88c31e24f4f859b668946ce73f8600621a70731440762b3c267ceab52a9d77a23d6f70ddba0e46a786697a906ccb18a3" );
06932             add1_len = unhexify( add1, "" );
06933             add_reseed_len = unhexify( add_reseed, "" );
06934             add2_len = unhexify( add2, "" );
06935         
06936             test_offset = 0;
06937             fct_chk( ctr_drbg_init_entropy_len( &ctx, entropy_func, entropy, add_init, add_init_len, 32 ) == 0 );
06938         
06939             fct_chk( ctr_drbg_random_with_add( &ctx, buf, 16, add1, add1_len ) == 0 );
06940             fct_chk( ctr_drbg_reseed( &ctx, add_reseed, add_reseed_len ) == 0 );
06941             fct_chk( ctr_drbg_random_with_add( &ctx, buf, 16, add2, add2_len ) == 0 );
06942             hexify( output_str, buf, 16 );
06943             fct_chk( strcmp( (char *) output_str, "841aaa0b171d1526ef365b9201adbff3" ) == 0 );
06944         }
06945         FCT_TEST_END();
06946 
06947 
06948         FCT_TEST_BGN(ctr_drbg_nist_validation_aes_256_use_dffalse2561282560_3)
06949         {
06950             unsigned char entropy[512];
06951             unsigned char add_init[512];
06952             unsigned char add1[512];
06953             unsigned char add_reseed[512];
06954             unsigned char add2[512];
06955             ctr_drbg_context ctx;
06956             unsigned char buf[512];
06957             unsigned char output_str[512];
06958             int add_init_len, add1_len, add_reseed_len, add2_len;
06959         
06960             memset( output_str, 0, 512 );
06961         
06962             unhexify( entropy, "686f4f9ee74c3402845fbad9353d7dfeff727584d892eb64bd84b764110cbe4ac8581e7e23acb95caf12979983e8947c570264aec292f1c7b756f7184007dcba" );
06963             add_init_len = unhexify( add_init, "8545a0de5ea028c8e5976d5b58fa50079b20ba716f0856cc1af7b98537c895f0266b956542d2b8ca661aef5da1f7f8c5" );
06964             add1_len = unhexify( add1, "" );
06965             add_reseed_len = unhexify( add_reseed, "" );
06966             add2_len = unhexify( add2, "" );
06967         
06968             test_offset = 0;
06969             fct_chk( ctr_drbg_init_entropy_len( &ctx, entropy_func, entropy, add_init, add_init_len, 32 ) == 0 );
06970         
06971             fct_chk( ctr_drbg_random_with_add( &ctx, buf, 16, add1, add1_len ) == 0 );
06972             fct_chk( ctr_drbg_reseed( &ctx, add_reseed, add_reseed_len ) == 0 );
06973             fct_chk( ctr_drbg_random_with_add( &ctx, buf, 16, add2, add2_len ) == 0 );
06974             hexify( output_str, buf, 16 );
06975             fct_chk( strcmp( (char *) output_str, "f6d6ae6449b2984df8bcb69584fb16f3" ) == 0 );
06976         }
06977         FCT_TEST_END();
06978 
06979 
06980         FCT_TEST_BGN(ctr_drbg_nist_validation_aes_256_use_dffalse2561282560_4)
06981         {
06982             unsigned char entropy[512];
06983             unsigned char add_init[512];
06984             unsigned char add1[512];
06985             unsigned char add_reseed[512];
06986             unsigned char add2[512];
06987             ctr_drbg_context ctx;
06988             unsigned char buf[512];
06989             unsigned char output_str[512];
06990             int add_init_len, add1_len, add_reseed_len, add2_len;
06991         
06992             memset( output_str, 0, 512 );
06993         
06994             unhexify( entropy, "5d1b8fa0ca2ee127d1bd41423c17b9a8c736715cc2906818e9216dfd81b7637b66c89b772b55ae707c6effa2d9ce7425df26f966646ab613d5599143cf51e5e8" );
06995             add_init_len = unhexify( add_init, "d6cd4b4fb9105374605deac7bb49ad792eb225daa560f2a86f66269bf9afc2ea01b6ee6f0eb4926d2f09329df6e90d79" );
06996             add1_len = unhexify( add1, "" );
06997             add_reseed_len = unhexify( add_reseed, "" );
06998             add2_len = unhexify( add2, "" );
06999         
07000             test_offset = 0;
07001             fct_chk( ctr_drbg_init_entropy_len( &ctx, entropy_func, entropy, add_init, add_init_len, 32 ) == 0 );
07002         
07003             fct_chk( ctr_drbg_random_with_add( &ctx, buf, 16, add1, add1_len ) == 0 );
07004             fct_chk( ctr_drbg_reseed( &ctx, add_reseed, add_reseed_len ) == 0 );
07005             fct_chk( ctr_drbg_random_with_add( &ctx, buf, 16, add2, add2_len ) == 0 );
07006             hexify( output_str, buf, 16 );
07007             fct_chk( strcmp( (char *) output_str, "c36ab451116d733eb4377de3511db5ce" ) == 0 );
07008         }
07009         FCT_TEST_END();
07010 
07011 
07012         FCT_TEST_BGN(ctr_drbg_nist_validation_aes_256_use_dffalse2561282560_5)
07013         {
07014             unsigned char entropy[512];
07015             unsigned char add_init[512];
07016             unsigned char add1[512];
07017             unsigned char add_reseed[512];
07018             unsigned char add2[512];
07019             ctr_drbg_context ctx;
07020             unsigned char buf[512];
07021             unsigned char output_str[512];
07022             int add_init_len, add1_len, add_reseed_len, add2_len;
07023         
07024             memset( output_str, 0, 512 );
07025         
07026             unhexify( entropy, "2026cf7c1b1fe9645ab8759958ac04fb1d8938b9913c3b7f22da81e398b2c00b1921e1d4edb5d21c4531515cb0f9644fe8068685b9fca813176e6780796e8ded" );
07027             add_init_len = unhexify( add_init, "e73ebae0d0834fdff1829ac3d9722fe9f1bc65b5f652fae5f7615af116440e3d5709b5cddd6065d568c246820de46b09" );
07028             add1_len = unhexify( add1, "" );
07029             add_reseed_len = unhexify( add_reseed, "" );
07030             add2_len = unhexify( add2, "" );
07031         
07032             test_offset = 0;
07033             fct_chk( ctr_drbg_init_entropy_len( &ctx, entropy_func, entropy, add_init, add_init_len, 32 ) == 0 );
07034         
07035             fct_chk( ctr_drbg_random_with_add( &ctx, buf, 16, add1, add1_len ) == 0 );
07036             fct_chk( ctr_drbg_reseed( &ctx, add_reseed, add_reseed_len ) == 0 );
07037             fct_chk( ctr_drbg_random_with_add( &ctx, buf, 16, add2, add2_len ) == 0 );
07038             hexify( output_str, buf, 16 );
07039             fct_chk( strcmp( (char *) output_str, "98d1dce30593de8a8d5b4d956f6c684b" ) == 0 );
07040         }
07041         FCT_TEST_END();
07042 
07043 
07044         FCT_TEST_BGN(ctr_drbg_nist_validation_aes_256_use_dffalse2561282560_6)
07045         {
07046             unsigned char entropy[512];
07047             unsigned char add_init[512];
07048             unsigned char add1[512];
07049             unsigned char add_reseed[512];
07050             unsigned char add2[512];
07051             ctr_drbg_context ctx;
07052             unsigned char buf[512];
07053             unsigned char output_str[512];
07054             int add_init_len, add1_len, add_reseed_len, add2_len;
07055         
07056             memset( output_str, 0, 512 );
07057         
07058             unhexify( entropy, "1d0dd1a87d59c69f28e118e1083d65f1ee0df31f6308a92dcc47503ec4d20a018d9821c6a7d64385724f0e941231426e028efe6d75e53ff8edf095ef1baf2656" );
07059             add_init_len = unhexify( add_init, "a53c1813c06b609eff9ddc77204b085ca985f22170b8ecfcbbf45ea11c45c24fcf25bc33150f9f97ce48244d5beb685c" );
07060             add1_len = unhexify( add1, "" );
07061             add_reseed_len = unhexify( add_reseed, "" );
07062             add2_len = unhexify( add2, "" );
07063         
07064             test_offset = 0;
07065             fct_chk( ctr_drbg_init_entropy_len( &ctx, entropy_func, entropy, add_init, add_init_len, 32 ) == 0 );
07066         
07067             fct_chk( ctr_drbg_random_with_add( &ctx, buf, 16, add1, add1_len ) == 0 );
07068             fct_chk( ctr_drbg_reseed( &ctx, add_reseed, add_reseed_len ) == 0 );
07069             fct_chk( ctr_drbg_random_with_add( &ctx, buf, 16, add2, add2_len ) == 0 );
07070             hexify( output_str, buf, 16 );
07071             fct_chk( strcmp( (char *) output_str, "035cec3a24ba7c44e5c19436c2689a75" ) == 0 );
07072         }
07073         FCT_TEST_END();
07074 
07075 
07076         FCT_TEST_BGN(ctr_drbg_nist_validation_aes_256_use_dffalse2561282560_7)
07077         {
07078             unsigned char entropy[512];
07079             unsigned char add_init[512];
07080             unsigned char add1[512];
07081             unsigned char add_reseed[512];
07082             unsigned char add2[512];
07083             ctr_drbg_context ctx;
07084             unsigned char buf[512];
07085             unsigned char output_str[512];
07086             int add_init_len, add1_len, add_reseed_len, add2_len;
07087         
07088             memset( output_str, 0, 512 );
07089         
07090             unhexify( entropy, "aa82a5ea33439d0c16a1cc13cbae53b169f4d369bcbdae81a9a38129c65ae0ea4f720576c012f8d7eb1c0202003c39d28453a22e502b4949cf5ba23a727721bf" );
07091             add_init_len = unhexify( add_init, "16d5b8290693a5c40c5a526dd6d653ac54cabb5608d77bb2cb7d6270b96c2fe2de076716ae8cf0a5c781edbde861dc70" );
07092             add1_len = unhexify( add1, "" );
07093             add_reseed_len = unhexify( add_reseed, "" );
07094             add2_len = unhexify( add2, "" );
07095         
07096             test_offset = 0;
07097             fct_chk( ctr_drbg_init_entropy_len( &ctx, entropy_func, entropy, add_init, add_init_len, 32 ) == 0 );
07098         
07099             fct_chk( ctr_drbg_random_with_add( &ctx, buf, 16, add1, add1_len ) == 0 );
07100             fct_chk( ctr_drbg_reseed( &ctx, add_reseed, add_reseed_len ) == 0 );
07101             fct_chk( ctr_drbg_random_with_add( &ctx, buf, 16, add2, add2_len ) == 0 );
07102             hexify( output_str, buf, 16 );
07103             fct_chk( strcmp( (char *) output_str, "de4ed9d163d11e9b52470d078df4c869" ) == 0 );
07104         }
07105         FCT_TEST_END();
07106 
07107 
07108         FCT_TEST_BGN(ctr_drbg_nist_validation_aes_256_use_dffalse2561282560_8)
07109         {
07110             unsigned char entropy[512];
07111             unsigned char add_init[512];
07112             unsigned char add1[512];
07113             unsigned char add_reseed[512];
07114             unsigned char add2[512];
07115             ctr_drbg_context ctx;
07116             unsigned char buf[512];
07117             unsigned char output_str[512];
07118             int add_init_len, add1_len, add_reseed_len, add2_len;
07119         
07120             memset( output_str, 0, 512 );
07121         
07122             unhexify( entropy, "3da9e9518eb1f1b6268e4597f158844ff672ddb414f7ec23fa66d6c86b90a732a7b3016a3387ec3dbed34eb479413d017932ebf9f2a2fea0b35d2bf4e06718f9" );
07123             add_init_len = unhexify( add_init, "68bfabdbb821cb978527ff18ce37c96c79ad751756551f36b6991981285a68854ec7f72f548c3395ad3ee40410064d4b" );
07124             add1_len = unhexify( add1, "" );
07125             add_reseed_len = unhexify( add_reseed, "" );
07126             add2_len = unhexify( add2, "" );
07127         
07128             test_offset = 0;
07129             fct_chk( ctr_drbg_init_entropy_len( &ctx, entropy_func, entropy, add_init, add_init_len, 32 ) == 0 );
07130         
07131             fct_chk( ctr_drbg_random_with_add( &ctx, buf, 16, add1, add1_len ) == 0 );
07132             fct_chk( ctr_drbg_reseed( &ctx, add_reseed, add_reseed_len ) == 0 );
07133             fct_chk( ctr_drbg_random_with_add( &ctx, buf, 16, add2, add2_len ) == 0 );
07134             hexify( output_str, buf, 16 );
07135             fct_chk( strcmp( (char *) output_str, "ec4e3e2b6b8763deb17b8611d1fe7953" ) == 0 );
07136         }
07137         FCT_TEST_END();
07138 
07139 
07140         FCT_TEST_BGN(ctr_drbg_nist_validation_aes_256_use_dffalse2561282560_9)
07141         {
07142             unsigned char entropy[512];
07143             unsigned char add_init[512];
07144             unsigned char add1[512];
07145             unsigned char add_reseed[512];
07146             unsigned char add2[512];
07147             ctr_drbg_context ctx;
07148             unsigned char buf[512];
07149             unsigned char output_str[512];
07150             int add_init_len, add1_len, add_reseed_len, add2_len;
07151         
07152             memset( output_str, 0, 512 );
07153         
07154             unhexify( entropy, "72ebeda7342770d03bc0e531754f946ca5cca684c41f9d089fe9147fad93b6154919c5cb2e6d162fbfde7b9ff0aa590a17993ca6c80bd59eee4134fc2ce944d8" );
07155             add_init_len = unhexify( add_init, "171a74ab694a7d7c2baa3ccf103ad94f11094e07a955ae9ac3bad370f1448753e99b63cc23d1878ab66f94136ec2ecac" );
07156             add1_len = unhexify( add1, "" );
07157             add_reseed_len = unhexify( add_reseed, "" );
07158             add2_len = unhexify( add2, "" );
07159         
07160             test_offset = 0;
07161             fct_chk( ctr_drbg_init_entropy_len( &ctx, entropy_func, entropy, add_init, add_init_len, 32 ) == 0 );
07162         
07163             fct_chk( ctr_drbg_random_with_add( &ctx, buf, 16, add1, add1_len ) == 0 );
07164             fct_chk( ctr_drbg_reseed( &ctx, add_reseed, add_reseed_len ) == 0 );
07165             fct_chk( ctr_drbg_random_with_add( &ctx, buf, 16, add2, add2_len ) == 0 );
07166             hexify( output_str, buf, 16 );
07167             fct_chk( strcmp( (char *) output_str, "582ab4f105c3e1fed9593f58fc335fc3" ) == 0 );
07168         }
07169         FCT_TEST_END();
07170 
07171 
07172         FCT_TEST_BGN(ctr_drbg_nist_validation_aes_256_use_dffalse2561282560_10)
07173         {
07174             unsigned char entropy[512];
07175             unsigned char add_init[512];
07176             unsigned char add1[512];
07177             unsigned char add_reseed[512];
07178             unsigned char add2[512];
07179             ctr_drbg_context ctx;
07180             unsigned char buf[512];
07181             unsigned char output_str[512];
07182             int add_init_len, add1_len, add_reseed_len, add2_len;
07183         
07184             memset( output_str, 0, 512 );
07185         
07186             unhexify( entropy, "8e27f0dbeae4613bcf0011105f824ed2ecb150a83a0994f8f6607833755216e016fb175e51d42370afe27b11c18477886b530c95bc31bd1c0f8fe00f61fc15a0" );
07187             add_init_len = unhexify( add_init, "caed30015b34064762591eba9a59f440566a6621832f650572362229e8a38cd0f5d6d322afd8444132056690d6fa5540" );
07188             add1_len = unhexify( add1, "" );
07189             add_reseed_len = unhexify( add_reseed, "" );
07190             add2_len = unhexify( add2, "" );
07191         
07192             test_offset = 0;
07193             fct_chk( ctr_drbg_init_entropy_len( &ctx, entropy_func, entropy, add_init, add_init_len, 32 ) == 0 );
07194         
07195             fct_chk( ctr_drbg_random_with_add( &ctx, buf, 16, add1, add1_len ) == 0 );
07196             fct_chk( ctr_drbg_reseed( &ctx, add_reseed, add_reseed_len ) == 0 );
07197             fct_chk( ctr_drbg_random_with_add( &ctx, buf, 16, add2, add2_len ) == 0 );
07198             hexify( output_str, buf, 16 );
07199             fct_chk( strcmp( (char *) output_str, "d42787e97147d457f1590c742443ad92" ) == 0 );
07200         }
07201         FCT_TEST_END();
07202 
07203 
07204         FCT_TEST_BGN(ctr_drbg_nist_validation_aes_256_use_dffalse2561282560_11)
07205         {
07206             unsigned char entropy[512];
07207             unsigned char add_init[512];
07208             unsigned char add1[512];
07209             unsigned char add_reseed[512];
07210             unsigned char add2[512];
07211             ctr_drbg_context ctx;
07212             unsigned char buf[512];
07213             unsigned char output_str[512];
07214             int add_init_len, add1_len, add_reseed_len, add2_len;
07215         
07216             memset( output_str, 0, 512 );
07217         
07218             unhexify( entropy, "38a8b685e6bbab67824f4cc72995043ea2854f067f2afaec762c9e78ff9d585a25bc63c8d0d075d06d43f3f694733982d26cbe0648b2d0cf8053918b912c303a" );
07219             add_init_len = unhexify( add_init, "c58d62f8145622cd86cfbda66bc26d2ce4c5610cd9cd1c326b99b60355a6fe751783c07f2cc21ba68f1f20ca70f0ad31" );
07220             add1_len = unhexify( add1, "" );
07221             add_reseed_len = unhexify( add_reseed, "" );
07222             add2_len = unhexify( add2, "" );
07223         
07224             test_offset = 0;
07225             fct_chk( ctr_drbg_init_entropy_len( &ctx, entropy_func, entropy, add_init, add_init_len, 32 ) == 0 );
07226         
07227             fct_chk( ctr_drbg_random_with_add( &ctx, buf, 16, add1, add1_len ) == 0 );
07228             fct_chk( ctr_drbg_reseed( &ctx, add_reseed, add_reseed_len ) == 0 );
07229             fct_chk( ctr_drbg_random_with_add( &ctx, buf, 16, add2, add2_len ) == 0 );
07230             hexify( output_str, buf, 16 );
07231             fct_chk( strcmp( (char *) output_str, "84001709f15a2fd167c161b5d376d86d" ) == 0 );
07232         }
07233         FCT_TEST_END();
07234 
07235 
07236         FCT_TEST_BGN(ctr_drbg_nist_validation_aes_256_use_dffalse2561282560_12)
07237         {
07238             unsigned char entropy[512];
07239             unsigned char add_init[512];
07240             unsigned char add1[512];
07241             unsigned char add_reseed[512];
07242             unsigned char add2[512];
07243             ctr_drbg_context ctx;
07244             unsigned char buf[512];
07245             unsigned char output_str[512];
07246             int add_init_len, add1_len, add_reseed_len, add2_len;
07247         
07248             memset( output_str, 0, 512 );
07249         
07250             unhexify( entropy, "f188a1ba21b1791ebf8a08d8ba555e49423d9178a561bcc1672539c3a7ba1d856eae9922c4d96c181ed045d6f1d15e855690cdae451edac60f1ca2021f1fec57" );
07251             add_init_len = unhexify( add_init, "dc9719050d5257152d8a7d60d3ef1fc5b8cb1700bafc7de863c019f244779c464b6214f21a2f6d0aa3ca282007615ce5" );
07252             add1_len = unhexify( add1, "" );
07253             add_reseed_len = unhexify( add_reseed, "" );
07254             add2_len = unhexify( add2, "" );
07255         
07256             test_offset = 0;
07257             fct_chk( ctr_drbg_init_entropy_len( &ctx, entropy_func, entropy, add_init, add_init_len, 32 ) == 0 );
07258         
07259             fct_chk( ctr_drbg_random_with_add( &ctx, buf, 16, add1, add1_len ) == 0 );
07260             fct_chk( ctr_drbg_reseed( &ctx, add_reseed, add_reseed_len ) == 0 );
07261             fct_chk( ctr_drbg_random_with_add( &ctx, buf, 16, add2, add2_len ) == 0 );
07262             hexify( output_str, buf, 16 );
07263             fct_chk( strcmp( (char *) output_str, "7540fed313c96261cac255bf83b5ae99" ) == 0 );
07264         }
07265         FCT_TEST_END();
07266 
07267 
07268         FCT_TEST_BGN(ctr_drbg_nist_validation_aes_256_use_dffalse2561282560_13)
07269         {
07270             unsigned char entropy[512];
07271             unsigned char add_init[512];
07272             unsigned char add1[512];
07273             unsigned char add_reseed[512];
07274             unsigned char add2[512];
07275             ctr_drbg_context ctx;
07276             unsigned char buf[512];
07277             unsigned char output_str[512];
07278             int add_init_len, add1_len, add_reseed_len, add2_len;
07279         
07280             memset( output_str, 0, 512 );
07281         
07282             unhexify( entropy, "0ddd0f4a43a7b54d9abb0928a2242c378db7a95a0b206baa642afe5cd55108f412f1d727fd591bca2c76355aa62aa8638cfa1916739bc66e02b9459ccd0881ba" );
07283             add_init_len = unhexify( add_init, "ff057781af4a4a1eefeb26ab38f82a2efb6f065de290ebf225bd693dfb1f97455b49143bdb430324c9d945c48824f6cc" );
07284             add1_len = unhexify( add1, "" );
07285             add_reseed_len = unhexify( add_reseed, "" );
07286             add2_len = unhexify( add2, "" );
07287         
07288             test_offset = 0;
07289             fct_chk( ctr_drbg_init_entropy_len( &ctx, entropy_func, entropy, add_init, add_init_len, 32 ) == 0 );
07290         
07291             fct_chk( ctr_drbg_random_with_add( &ctx, buf, 16, add1, add1_len ) == 0 );
07292             fct_chk( ctr_drbg_reseed( &ctx, add_reseed, add_reseed_len ) == 0 );
07293             fct_chk( ctr_drbg_random_with_add( &ctx, buf, 16, add2, add2_len ) == 0 );
07294             hexify( output_str, buf, 16 );
07295             fct_chk( strcmp( (char *) output_str, "8b6e74a94fcac0d2f212d3594213fbb6" ) == 0 );
07296         }
07297         FCT_TEST_END();
07298 
07299 
07300         FCT_TEST_BGN(ctr_drbg_nist_validation_aes_256_use_dffalse2561282560_14)
07301         {
07302             unsigned char entropy[512];
07303             unsigned char add_init[512];
07304             unsigned char add1[512];
07305             unsigned char add_reseed[512];
07306             unsigned char add2[512];
07307             ctr_drbg_context ctx;
07308             unsigned char buf[512];
07309             unsigned char output_str[512];
07310             int add_init_len, add1_len, add_reseed_len, add2_len;
07311         
07312             memset( output_str, 0, 512 );
07313         
07314             unhexify( entropy, "128566fe6c5b5595742190519445c25db85ee0ce29371f4cab213400d479d2bfe27655155be0fa237173abb214f0226a2f1770802dd69485adb25e6d837485e1" );
07315             add_init_len = unhexify( add_init, "ef027327e47fc5875c01cb17d798fdc2b27a5c78000727842f8a516f4e8dd34afc167ae145b1e763bebdca51e2f461a7" );
07316             add1_len = unhexify( add1, "" );
07317             add_reseed_len = unhexify( add_reseed, "" );
07318             add2_len = unhexify( add2, "" );
07319         
07320             test_offset = 0;
07321             fct_chk( ctr_drbg_init_entropy_len( &ctx, entropy_func, entropy, add_init, add_init_len, 32 ) == 0 );
07322         
07323             fct_chk( ctr_drbg_random_with_add( &ctx, buf, 16, add1, add1_len ) == 0 );
07324             fct_chk( ctr_drbg_reseed( &ctx, add_reseed, add_reseed_len ) == 0 );
07325             fct_chk( ctr_drbg_random_with_add( &ctx, buf, 16, add2, add2_len ) == 0 );
07326             hexify( output_str, buf, 16 );
07327             fct_chk( strcmp( (char *) output_str, "76cd1553b2b73d4ef6043a09fb90d679" ) == 0 );
07328         }
07329         FCT_TEST_END();
07330 
07331 
07332         FCT_TEST_BGN(ctr_drbg_nist_validation_aes_256_use_dffalse256128256256_0)
07333         {
07334             unsigned char entropy[512];
07335             unsigned char add_init[512];
07336             unsigned char add1[512];
07337             unsigned char add_reseed[512];
07338             unsigned char add2[512];
07339             ctr_drbg_context ctx;
07340             unsigned char buf[512];
07341             unsigned char output_str[512];
07342             int add_init_len, add1_len, add_reseed_len, add2_len;
07343         
07344             memset( output_str, 0, 512 );
07345         
07346             unhexify( entropy, "23677c04a2d6ab446b7b3c582a8071654d27859441b10799f08b788378b926ca4306e7cb5c0f9f104c607fbf0c379be49426e53bf5637225b551f0cc694d6593" );
07347             add_init_len = unhexify( add_init, "8e1a59210f876d017109cb90c7d5dd669b375d971266b7320ba8db9bd79b373bcc895974460e08eadd07a00ce7bdade9" );
07348             add1_len = unhexify( add1, "19e914ffbc6d872be010d66b17874010ec8b036a3d60d7f7dda5accc6962a542" );
07349             add_reseed_len = unhexify( add_reseed, "bd7a0c09e780e0ad783fd708355b8df77b4454c3d606fb8de053bffa5ecf9021" );
07350             add2_len = unhexify( add2, "d284dc2caf6d214f8909efc9a75297bccfc04353c2788a96f8b752749c7fec0c" );
07351         
07352             test_offset = 0;
07353             fct_chk( ctr_drbg_init_entropy_len( &ctx, entropy_func, entropy, add_init, add_init_len, 32 ) == 0 );
07354         
07355             fct_chk( ctr_drbg_random_with_add( &ctx, buf, 16, add1, add1_len ) == 0 );
07356             fct_chk( ctr_drbg_reseed( &ctx, add_reseed, add_reseed_len ) == 0 );
07357             fct_chk( ctr_drbg_random_with_add( &ctx, buf, 16, add2, add2_len ) == 0 );
07358             hexify( output_str, buf, 16 );
07359             fct_chk( strcmp( (char *) output_str, "129d256e7db6269e5a0a160d2278f305" ) == 0 );
07360         }
07361         FCT_TEST_END();
07362 
07363 
07364         FCT_TEST_BGN(ctr_drbg_nist_validation_aes_256_use_dffalse256128256256_1)
07365         {
07366             unsigned char entropy[512];
07367             unsigned char add_init[512];
07368             unsigned char add1[512];
07369             unsigned char add_reseed[512];
07370             unsigned char add2[512];
07371             ctr_drbg_context ctx;
07372             unsigned char buf[512];
07373             unsigned char output_str[512];
07374             int add_init_len, add1_len, add_reseed_len, add2_len;
07375         
07376             memset( output_str, 0, 512 );
07377         
07378             unhexify( entropy, "ec47b029643f85ea19388b6e9de6ab22705b060ae10cee71262027d0bdff5efd7393af619bc6658612fabc78439a0bd5a01255563a96013fa130dd06fd0f5442" );
07379             add_init_len = unhexify( add_init, "00674e633670c9971be7af789d37d5a4ef567b3ca4766722cd8f67e09d21cbbfa08d43ea1aa259999c6a307ae6347d62" );
07380             add1_len = unhexify( add1, "5b92bce3f87645126daa4704fd7df98b880aa07743a57399b985ad1a00b1f2fc" );
07381             add_reseed_len = unhexify( add_reseed, "8199de1338c688234c77262ef35423f4695b277726c76d8b5f426399c14d83b5" );
07382             add2_len = unhexify( add2, "eb95f5a4d8400cec2d4e0f548b6e92636b5e284fb6b61766a1f35bb9cdc5df0a" );
07383         
07384             test_offset = 0;
07385             fct_chk( ctr_drbg_init_entropy_len( &ctx, entropy_func, entropy, add_init, add_init_len, 32 ) == 0 );
07386         
07387             fct_chk( ctr_drbg_random_with_add( &ctx, buf, 16, add1, add1_len ) == 0 );
07388             fct_chk( ctr_drbg_reseed( &ctx, add_reseed, add_reseed_len ) == 0 );
07389             fct_chk( ctr_drbg_random_with_add( &ctx, buf, 16, add2, add2_len ) == 0 );
07390             hexify( output_str, buf, 16 );
07391             fct_chk( strcmp( (char *) output_str, "9fbe95817578eb272aa9da2f509c2a06" ) == 0 );
07392         }
07393         FCT_TEST_END();
07394 
07395 
07396         FCT_TEST_BGN(ctr_drbg_nist_validation_aes_256_use_dffalse256128256256_2)
07397         {
07398             unsigned char entropy[512];
07399             unsigned char add_init[512];
07400             unsigned char add1[512];
07401             unsigned char add_reseed[512];
07402             unsigned char add2[512];
07403             ctr_drbg_context ctx;
07404             unsigned char buf[512];
07405             unsigned char output_str[512];
07406             int add_init_len, add1_len, add_reseed_len, add2_len;
07407         
07408             memset( output_str, 0, 512 );
07409         
07410             unhexify( entropy, "a9bebd13711c0c22c94b3252654854515a9dc015fe69e688fbac9676b3d77ab67e19b020cd2427ac789ca17f656e499be3ba3ab2075ff95247c6355157eebc79" );
07411             add_init_len = unhexify( add_init, "2553423c3cb0fae8ca54af56f496e9935d5af4738898f77f789a9bee867dfbc6010c4e5bc68da2b922cdd84eea68e1da" );
07412             add1_len = unhexify( add1, "e74e45fa28697a06dab08545fde0cc26e7eca31c40aa68ee41c4de402fdcc961" );
07413             add_reseed_len = unhexify( add_reseed, "5aa8abf7062079929d6a131cd3844a5fb6514c07061e25cad67677d867297685" );
07414             add2_len = unhexify( add2, "84819109b2e09b46ba3f5464c34b28ce25a186f0e0fd83fe5fa0ab026c01292a" );
07415         
07416             test_offset = 0;
07417             fct_chk( ctr_drbg_init_entropy_len( &ctx, entropy_func, entropy, add_init, add_init_len, 32 ) == 0 );
07418         
07419             fct_chk( ctr_drbg_random_with_add( &ctx, buf, 16, add1, add1_len ) == 0 );
07420             fct_chk( ctr_drbg_reseed( &ctx, add_reseed, add_reseed_len ) == 0 );
07421             fct_chk( ctr_drbg_random_with_add( &ctx, buf, 16, add2, add2_len ) == 0 );
07422             hexify( output_str, buf, 16 );
07423             fct_chk( strcmp( (char *) output_str, "3846f3406e49040c48b5cfc9cbc75d1a" ) == 0 );
07424         }
07425         FCT_TEST_END();
07426 
07427 
07428         FCT_TEST_BGN(ctr_drbg_nist_validation_aes_256_use_dffalse256128256256_3)
07429         {
07430             unsigned char entropy[512];
07431             unsigned char add_init[512];
07432             unsigned char add1[512];
07433             unsigned char add_reseed[512];
07434             unsigned char add2[512];
07435             ctr_drbg_context ctx;
07436             unsigned char buf[512];
07437             unsigned char output_str[512];
07438             int add_init_len, add1_len, add_reseed_len, add2_len;
07439         
07440             memset( output_str, 0, 512 );
07441         
07442             unhexify( entropy, "a691b8bf6a407c93a36d18aeced4c75f76d8397d4ecbcd4e8f820cb393186897f05c1ef668b027fc78ba6da9bd554cc31a467d47b5e534b5340c7799383ec05c" );
07443             add_init_len = unhexify( add_init, "856f1371454bb9aa06be897dcda9b295817c6eeb865a9acb3a89d145bfe29ce5e1b3b12b714571afdfaca7951cd47e33" );
07444             add1_len = unhexify( add1, "2c81d1e94b33164a177d0183d182fe7d23ef4f88444246464e58bdd0de38d82c" );
07445             add_reseed_len = unhexify( add_reseed, "1b5dae81c96771bea091521c0973c5af76a03e3624160e2511e57ff43a1d32a9" );
07446             add2_len = unhexify( add2, "bf5878e2bd139f8f058f3d834acd771514da6d4c5b9ef84466e5a4e0e4b2eaaf" );
07447         
07448             test_offset = 0;
07449             fct_chk( ctr_drbg_init_entropy_len( &ctx, entropy_func, entropy, add_init, add_init_len, 32 ) == 0 );
07450         
07451             fct_chk( ctr_drbg_random_with_add( &ctx, buf, 16, add1, add1_len ) == 0 );
07452             fct_chk( ctr_drbg_reseed( &ctx, add_reseed, add_reseed_len ) == 0 );
07453             fct_chk( ctr_drbg_random_with_add( &ctx, buf, 16, add2, add2_len ) == 0 );
07454             hexify( output_str, buf, 16 );
07455             fct_chk( strcmp( (char *) output_str, "6a5ea73aad476ce201e173d4d5a7ffcc" ) == 0 );
07456         }
07457         FCT_TEST_END();
07458 
07459 
07460         FCT_TEST_BGN(ctr_drbg_nist_validation_aes_256_use_dffalse256128256256_4)
07461         {
07462             unsigned char entropy[512];
07463             unsigned char add_init[512];
07464             unsigned char add1[512];
07465             unsigned char add_reseed[512];
07466             unsigned char add2[512];
07467             ctr_drbg_context ctx;
07468             unsigned char buf[512];
07469             unsigned char output_str[512];
07470             int add_init_len, add1_len, add_reseed_len, add2_len;
07471         
07472             memset( output_str, 0, 512 );
07473         
07474             unhexify( entropy, "1ab9ada5eeebc3fc8e53f358b643476fcfd4dd9f092f21d2bc1c4bb1ffd01a0c5b207aaa09ff76a9cab0aa6ce62b6a65b2650ab448b8bb2e8696a7aa4b6f4e8d" );
07475             add_init_len = unhexify( add_init, "0436075cf8cf62ce623c2301ebd45203c98282611cfa5a12dd7c04525ffa7eb343a607af2f57feb7ce3af97e0abc2285" );
07476             add1_len = unhexify( add1, "62f07d1f49e40f7f472985947ac4d8ef2d58216d918f7942b9c70f43daff8972" );
07477             add_reseed_len = unhexify( add_reseed, "37ae758141fbc890ee7e1d0854426b2984fb1c094677e6a61546e9315bab0898" );
07478             add2_len = unhexify( add2, "353d1dd0c8d8656bc418a6a3ace138ecd62819d4e21b8bd87694ea683ec0cc37" );
07479         
07480             test_offset = 0;
07481             fct_chk( ctr_drbg_init_entropy_len( &ctx, entropy_func, entropy, add_init, add_init_len, 32 ) == 0 );
07482         
07483             fct_chk( ctr_drbg_random_with_add( &ctx, buf, 16, add1, add1_len ) == 0 );
07484             fct_chk( ctr_drbg_reseed( &ctx, add_reseed, add_reseed_len ) == 0 );
07485             fct_chk( ctr_drbg_random_with_add( &ctx, buf, 16, add2, add2_len ) == 0 );
07486             hexify( output_str, buf, 16 );
07487             fct_chk( strcmp( (char *) output_str, "bfee6bb4afc228da981bfe7f0d17578b" ) == 0 );
07488         }
07489         FCT_TEST_END();
07490 
07491 
07492         FCT_TEST_BGN(ctr_drbg_nist_validation_aes_256_use_dffalse256128256256_5)
07493         {
07494             unsigned char entropy[512];
07495             unsigned char add_init[512];
07496             unsigned char add1[512];
07497             unsigned char add_reseed[512];
07498             unsigned char add2[512];
07499             ctr_drbg_context ctx;
07500             unsigned char buf[512];
07501             unsigned char output_str[512];
07502             int add_init_len, add1_len, add_reseed_len, add2_len;
07503         
07504             memset( output_str, 0, 512 );
07505         
07506             unhexify( entropy, "c36004075f5fd078137ea08de6cb15f71aeb9eca21c891cfdf7a8c0d21790c94ffa93be5fa06beb5e82d9fbf173ef9b29c18511fee2455dbbe61d6b01baf024a" );
07507             add_init_len = unhexify( add_init, "d004a0893bf326d50ee52e04cb3e64409f204f4e9af780d5dd092d04162d088385b1f243000914c62cba3dadf9827c81" );
07508             add1_len = unhexify( add1, "7d313ada131650c7a506d2c194444ed202d568544caa75bbc60e57a0b74c9a10" );
07509             add_reseed_len = unhexify( add_reseed, "791d60238677ff53150cf7074061eac68335c0a7cec7de43ea63a5df0f312cd8" );
07510             add2_len = unhexify( add2, "6754366be264deb9e94f39e92ac2894bd93c1d7e1198d39e6eddccb0ea486f4d" );
07511         
07512             test_offset = 0;
07513             fct_chk( ctr_drbg_init_entropy_len( &ctx, entropy_func, entropy, add_init, add_init_len, 32 ) == 0 );
07514         
07515             fct_chk( ctr_drbg_random_with_add( &ctx, buf, 16, add1, add1_len ) == 0 );
07516             fct_chk( ctr_drbg_reseed( &ctx, add_reseed, add_reseed_len ) == 0 );
07517             fct_chk( ctr_drbg_random_with_add( &ctx, buf, 16, add2, add2_len ) == 0 );
07518             hexify( output_str, buf, 16 );
07519             fct_chk( strcmp( (char *) output_str, "1c29795f03e3c771603293473e347ab4" ) == 0 );
07520         }
07521         FCT_TEST_END();
07522 
07523 
07524         FCT_TEST_BGN(ctr_drbg_nist_validation_aes_256_use_dffalse256128256256_6)
07525         {
07526             unsigned char entropy[512];
07527             unsigned char add_init[512];
07528             unsigned char add1[512];
07529             unsigned char add_reseed[512];
07530             unsigned char add2[512];
07531             ctr_drbg_context ctx;
07532             unsigned char buf[512];
07533             unsigned char output_str[512];
07534             int add_init_len, add1_len, add_reseed_len, add2_len;
07535         
07536             memset( output_str, 0, 512 );
07537         
07538             unhexify( entropy, "c4d68b76dc0e785823be2da9d339dc900132f12721e8a63ebe92e36d740c5a5e5564c367bff4a52bc70b1c60c86f0bcb7c1d99c414956a259963207184f01246" );
07539             add_init_len = unhexify( add_init, "9a8c79b48ada409183f7260aa1415c9ee4e0b662e0fb81b5c56f85d76ed75efac5751dd4de7e7f8b53a36ee0dce2bc9e" );
07540             add1_len = unhexify( add1, "04c7060f36569a5d9578c718627fc2695e8d783c0c8aefca2744da6664e67c8c" );
07541             add_reseed_len = unhexify( add_reseed, "1d4b7d587421dea4f7f3e77fcf997607ecfeb6e665a9a184138eb5736b16f516" );
07542             add2_len = unhexify( add2, "8cb8daf9cda230d8d39b829b968aaa5f5d3e3106d8b693227ab1b6201b78a7b8" );
07543         
07544             test_offset = 0;
07545             fct_chk( ctr_drbg_init_entropy_len( &ctx, entropy_func, entropy, add_init, add_init_len, 32 ) == 0 );
07546         
07547             fct_chk( ctr_drbg_random_with_add( &ctx, buf, 16, add1, add1_len ) == 0 );
07548             fct_chk( ctr_drbg_reseed( &ctx, add_reseed, add_reseed_len ) == 0 );
07549             fct_chk( ctr_drbg_random_with_add( &ctx, buf, 16, add2, add2_len ) == 0 );
07550             hexify( output_str, buf, 16 );
07551             fct_chk( strcmp( (char *) output_str, "faa146098526546927a43fa4a5073e46" ) == 0 );
07552         }
07553         FCT_TEST_END();
07554 
07555 
07556         FCT_TEST_BGN(ctr_drbg_nist_validation_aes_256_use_dffalse256128256256_7)
07557         {
07558             unsigned char entropy[512];
07559             unsigned char add_init[512];
07560             unsigned char add1[512];
07561             unsigned char add_reseed[512];
07562             unsigned char add2[512];
07563             ctr_drbg_context ctx;
07564             unsigned char buf[512];
07565             unsigned char output_str[512];
07566             int add_init_len, add1_len, add_reseed_len, add2_len;
07567         
07568             memset( output_str, 0, 512 );
07569         
07570             unhexify( entropy, "ea7a046fa1760866bcb37fecf9ade7bcea4444662ea782d6f2820b22a96bab97b4c5adcb0a50ced885121b6b85a5074444b1555d9655f4f6ded31fe15281b30e" );
07571             add_init_len = unhexify( add_init, "a0736a5a8b0a394625d8985b05e3a9f277c7ba03b253c0e783359a8c4c086121cb46ea469c7756d5f099f5ee8ed16243" );
07572             add1_len = unhexify( add1, "47f3655dd05c42454fad68e330aabca49f27c76ba05ef07b6d77fba41153c0ab" );
07573             add_reseed_len = unhexify( add_reseed, "a5d07da3e399cc51d136096599fcbd9779e839b1fd86f21d7d1e23acd91f9fa7" );
07574             add2_len = unhexify( add2, "150b028b64a988fc1ffdfc9e66b4c8dfe4fcd8538ee976c89923638ebad33802" );
07575         
07576             test_offset = 0;
07577             fct_chk( ctr_drbg_init_entropy_len( &ctx, entropy_func, entropy, add_init, add_init_len, 32 ) == 0 );
07578         
07579             fct_chk( ctr_drbg_random_with_add( &ctx, buf, 16, add1, add1_len ) == 0 );
07580             fct_chk( ctr_drbg_reseed( &ctx, add_reseed, add_reseed_len ) == 0 );
07581             fct_chk( ctr_drbg_random_with_add( &ctx, buf, 16, add2, add2_len ) == 0 );
07582             hexify( output_str, buf, 16 );
07583             fct_chk( strcmp( (char *) output_str, "6ffdc685169b174ad0dd84cdeed050a7" ) == 0 );
07584         }
07585         FCT_TEST_END();
07586 
07587 
07588         FCT_TEST_BGN(ctr_drbg_nist_validation_aes_256_use_dffalse256128256256_8)
07589         {
07590             unsigned char entropy[512];
07591             unsigned char add_init[512];
07592             unsigned char add1[512];
07593             unsigned char add_reseed[512];
07594             unsigned char add2[512];
07595             ctr_drbg_context ctx;
07596             unsigned char buf[512];
07597             unsigned char output_str[512];
07598             int add_init_len, add1_len, add_reseed_len, add2_len;
07599         
07600             memset( output_str, 0, 512 );
07601         
07602             unhexify( entropy, "da5f9b2db13d0555846c00da96115036bb75ace66d56fc582d6cd0171e3e23335c5c2b8691e58af8899ed0204316479f849ca6f47309cae571ccb42d3d35c166" );
07603             add_init_len = unhexify( add_init, "d445a3d9332c8577715c1e93f119521bd31a464db08cdbd73d50080d62d5a48fba4cef2dd097ec749973037e33e8d6fa" );
07604             add1_len = unhexify( add1, "79346394f795f05c5a5199423649b8b5345355ef11eb4239db1c767c68afa70a" );
07605             add_reseed_len = unhexify( add_reseed, "c22810de9987b228c19680eb044da22a08032148a6015f358849d6d608a214b9" );
07606             add2_len = unhexify( add2, "7747d68ca8bcb43931f1edce4f8c9727dd56c1d1d2600ad1fb767eb4fbc7b2d6" );
07607         
07608             test_offset = 0;
07609             fct_chk( ctr_drbg_init_entropy_len( &ctx, entropy_func, entropy, add_init, add_init_len, 32 ) == 0 );
07610         
07611             fct_chk( ctr_drbg_random_with_add( &ctx, buf, 16, add1, add1_len ) == 0 );
07612             fct_chk( ctr_drbg_reseed( &ctx, add_reseed, add_reseed_len ) == 0 );
07613             fct_chk( ctr_drbg_random_with_add( &ctx, buf, 16, add2, add2_len ) == 0 );
07614             hexify( output_str, buf, 16 );
07615             fct_chk( strcmp( (char *) output_str, "f5c40babbec97cb60ba65200e82d7a68" ) == 0 );
07616         }
07617         FCT_TEST_END();
07618 
07619 
07620         FCT_TEST_BGN(ctr_drbg_nist_validation_aes_256_use_dffalse256128256256_9)
07621         {
07622             unsigned char entropy[512];
07623             unsigned char add_init[512];
07624             unsigned char add1[512];
07625             unsigned char add_reseed[512];
07626             unsigned char add2[512];
07627             ctr_drbg_context ctx;
07628             unsigned char buf[512];
07629             unsigned char output_str[512];
07630             int add_init_len, add1_len, add_reseed_len, add2_len;
07631         
07632             memset( output_str, 0, 512 );
07633         
07634             unhexify( entropy, "d663d2cfcddf40ff61377c3811266d927a5dfc7b73cf549e673e5a15f4056ad1f9733c8ed875ff77928284dc1cdb33accc47971d3626615a45b9a16d9baf426e" );
07635             add_init_len = unhexify( add_init, "2728be06796e2a77c60a401752cd36e4a051724aa3276a146b4b351017eee79c8257398c612fc1129c0e74ecef455cd3" );
07636             add1_len = unhexify( add1, "62349efbac4a4747d0e92727c67a6bc7f8404cf746002e7d3eeffb9a9be0bbdc" );
07637             add_reseed_len = unhexify( add_reseed, "381c0cffbdfa61a6af3f11ccd0e543208b584c3f520130e33617564ec7a48cf7" );
07638             add2_len = unhexify( add2, "6974043362f834fd793de07ceebd051599163d50489441005afc9db09a9ab44f" );
07639         
07640             test_offset = 0;
07641             fct_chk( ctr_drbg_init_entropy_len( &ctx, entropy_func, entropy, add_init, add_init_len, 32 ) == 0 );
07642         
07643             fct_chk( ctr_drbg_random_with_add( &ctx, buf, 16, add1, add1_len ) == 0 );
07644             fct_chk( ctr_drbg_reseed( &ctx, add_reseed, add_reseed_len ) == 0 );
07645             fct_chk( ctr_drbg_random_with_add( &ctx, buf, 16, add2, add2_len ) == 0 );
07646             hexify( output_str, buf, 16 );
07647             fct_chk( strcmp( (char *) output_str, "df7894746c599e02d985b195ca3b4863" ) == 0 );
07648         }
07649         FCT_TEST_END();
07650 
07651 
07652         FCT_TEST_BGN(ctr_drbg_nist_validation_aes_256_use_dffalse256128256256_10)
07653         {
07654             unsigned char entropy[512];
07655             unsigned char add_init[512];
07656             unsigned char add1[512];
07657             unsigned char add_reseed[512];
07658             unsigned char add2[512];
07659             ctr_drbg_context ctx;
07660             unsigned char buf[512];
07661             unsigned char output_str[512];
07662             int add_init_len, add1_len, add_reseed_len, add2_len;
07663         
07664             memset( output_str, 0, 512 );
07665         
07666             unhexify( entropy, "bf03a6b3e8e23ff53369b971217dc3d3f4c1211329c94847347b3aa77dc7a3e0670381573527844a1ade786f18631944558defffb9a00900ca55f97ec726126b" );
07667             add_init_len = unhexify( add_init, "2b65b56de410ee82e55bd2bf80e6cee356a37c3a3aa7042df45fa750a74e097b071fc18d6eed96523dd4fbb677b8c729" );
07668             add1_len = unhexify( add1, "59255e5cd2221316c945bd614471df76d5b2f394b8829de82e5c30bc178565e2" );
07669             add_reseed_len = unhexify( add_reseed, "5739bc14f0f2ef9d3393928aee67b0908adaf587650928916d8ae78b0077a3b3" );
07670             add2_len = unhexify( add2, "6b236cf0ee0dba0c92b26c60235d3868715a80c0efbc0c898b6f0b1ace8146e9" );
07671         
07672             test_offset = 0;
07673             fct_chk( ctr_drbg_init_entropy_len( &ctx, entropy_func, entropy, add_init, add_init_len, 32 ) == 0 );
07674         
07675             fct_chk( ctr_drbg_random_with_add( &ctx, buf, 16, add1, add1_len ) == 0 );
07676             fct_chk( ctr_drbg_reseed( &ctx, add_reseed, add_reseed_len ) == 0 );
07677             fct_chk( ctr_drbg_random_with_add( &ctx, buf, 16, add2, add2_len ) == 0 );
07678             hexify( output_str, buf, 16 );
07679             fct_chk( strcmp( (char *) output_str, "8374b571d7f2d94ce2bdadeb9d815397" ) == 0 );
07680         }
07681         FCT_TEST_END();
07682 
07683 
07684         FCT_TEST_BGN(ctr_drbg_nist_validation_aes_256_use_dffalse256128256256_11)
07685         {
07686             unsigned char entropy[512];
07687             unsigned char add_init[512];
07688             unsigned char add1[512];
07689             unsigned char add_reseed[512];
07690             unsigned char add2[512];
07691             ctr_drbg_context ctx;
07692             unsigned char buf[512];
07693             unsigned char output_str[512];
07694             int add_init_len, add1_len, add_reseed_len, add2_len;
07695         
07696             memset( output_str, 0, 512 );
07697         
07698             unhexify( entropy, "19705743eaaaa0e8890a0faa2e0df37c820d556c7a45f04d76276f9f9ce2e7c133258ae6d1ba9cdf7745d01745763d18dcd1af2c9e9b0bed2806e60f0f9b636c" );
07699             add_init_len = unhexify( add_init, "8756ee2c5e381c7c1dc530748b76a6274ef6583090e555d85210e2356feb2974a8f15119a04e9b481cd3bc557a197b8e" );
07700             add1_len = unhexify( add1, "2b4a92b682e9a557466af97b735e2ffdbac3bfc31fd5be2cd212cfbd4b8d690a" );
07701             add_reseed_len = unhexify( add_reseed, "e86504f10317bbeab346f3b9e4b310cbe9fbd81a42054f358eacd08cccab6eff" );
07702             add2_len = unhexify( add2, "19ffad856a6675268cc464ca6fdb8afd0912143e552668528d1484c9a54592cf" );
07703         
07704             test_offset = 0;
07705             fct_chk( ctr_drbg_init_entropy_len( &ctx, entropy_func, entropy, add_init, add_init_len, 32 ) == 0 );
07706         
07707             fct_chk( ctr_drbg_random_with_add( &ctx, buf, 16, add1, add1_len ) == 0 );
07708             fct_chk( ctr_drbg_reseed( &ctx, add_reseed, add_reseed_len ) == 0 );
07709             fct_chk( ctr_drbg_random_with_add( &ctx, buf, 16, add2, add2_len ) == 0 );
07710             hexify( output_str, buf, 16 );
07711             fct_chk( strcmp( (char *) output_str, "f347fd58aff2999530e258be77591701" ) == 0 );
07712         }
07713         FCT_TEST_END();
07714 
07715 
07716         FCT_TEST_BGN(ctr_drbg_nist_validation_aes_256_use_dffalse256128256256_12)
07717         {
07718             unsigned char entropy[512];
07719             unsigned char add_init[512];
07720             unsigned char add1[512];
07721             unsigned char add_reseed[512];
07722             unsigned char add2[512];
07723             ctr_drbg_context ctx;
07724             unsigned char buf[512];
07725             unsigned char output_str[512];
07726             int add_init_len, add1_len, add_reseed_len, add2_len;
07727         
07728             memset( output_str, 0, 512 );
07729         
07730             unhexify( entropy, "f9939592ab2b31d92ac72673da013a588ea17bbf02cfd6e79d79f8296601633d04ceb005110f266e6100040ef33194858def8b535314c73caa0e48fc4d2f6e2d" );
07731             add_init_len = unhexify( add_init, "f58be57e5035d5c455b17a41ccf7542ffd77f5c009e0a737118ed6c4188f78fcbdbe946bf82e1fa50fd81691de82dcf3" );
07732             add1_len = unhexify( add1, "bb1cb21a316d4b88093cbfc7917d614dca97090cdc8bb340d864547cb3e1fef6" );
07733             add_reseed_len = unhexify( add_reseed, "7e42d5439d81680c8edf5c571d548699730cfada33b650a4d510172a42b298bb" );
07734             add2_len = unhexify( add2, "e9e3cf180f72ba2c1a45d0a94b822943612143e0b642398796b0428ae1af6cf5" );
07735         
07736             test_offset = 0;
07737             fct_chk( ctr_drbg_init_entropy_len( &ctx, entropy_func, entropy, add_init, add_init_len, 32 ) == 0 );
07738         
07739             fct_chk( ctr_drbg_random_with_add( &ctx, buf, 16, add1, add1_len ) == 0 );
07740             fct_chk( ctr_drbg_reseed( &ctx, add_reseed, add_reseed_len ) == 0 );
07741             fct_chk( ctr_drbg_random_with_add( &ctx, buf, 16, add2, add2_len ) == 0 );
07742             hexify( output_str, buf, 16 );
07743             fct_chk( strcmp( (char *) output_str, "d0c83a4bf3517648b441d411ddcb808c" ) == 0 );
07744         }
07745         FCT_TEST_END();
07746 
07747 
07748         FCT_TEST_BGN(ctr_drbg_nist_validation_aes_256_use_dffalse256128256256_13)
07749         {
07750             unsigned char entropy[512];
07751             unsigned char add_init[512];
07752             unsigned char add1[512];
07753             unsigned char add_reseed[512];
07754             unsigned char add2[512];
07755             ctr_drbg_context ctx;
07756             unsigned char buf[512];
07757             unsigned char output_str[512];
07758             int add_init_len, add1_len, add_reseed_len, add2_len;
07759         
07760             memset( output_str, 0, 512 );
07761         
07762             unhexify( entropy, "b8d6be3036eeb5657fb10766354d4be897bd27973b3530270ccc02a08169a2e437b30a3635eb6ccb310f319257f58d8aa030c8aab616418e0914a46131306a0c" );
07763             add_init_len = unhexify( add_init, "898064243e44ff67151736ce8bb6f1c759cab4aaca9b87543a1ac984ef955cd5db76c1aa56aff83f1f6799f18fe531cc" );
07764             add1_len = unhexify( add1, "37572428df5826e6ae5ce95db4ef63f41e908f685204a7b64edb9f473c41e45c" );
07765             add_reseed_len = unhexify( add_reseed, "28beda0e0e346b447d32208c6b4c42dcd567acfe1e483fb4a95ea82cb8ce55a5" );
07766             add2_len = unhexify( add2, "7a0fffa541d723e16340eeb960b1b9c9aae912477e0ebfac03f8f1a3a8bdc531" );
07767         
07768             test_offset = 0;
07769             fct_chk( ctr_drbg_init_entropy_len( &ctx, entropy_func, entropy, add_init, add_init_len, 32 ) == 0 );
07770         
07771             fct_chk( ctr_drbg_random_with_add( &ctx, buf, 16, add1, add1_len ) == 0 );
07772             fct_chk( ctr_drbg_reseed( &ctx, add_reseed, add_reseed_len ) == 0 );
07773             fct_chk( ctr_drbg_random_with_add( &ctx, buf, 16, add2, add2_len ) == 0 );
07774             hexify( output_str, buf, 16 );
07775             fct_chk( strcmp( (char *) output_str, "611c9f6fc5193dbe3db96cbcd276168a" ) == 0 );
07776         }
07777         FCT_TEST_END();
07778 
07779 
07780         FCT_TEST_BGN(ctr_drbg_nist_validation_aes_256_use_dffalse256128256256_14)
07781         {
07782             unsigned char entropy[512];
07783             unsigned char add_init[512];
07784             unsigned char add1[512];
07785             unsigned char add_reseed[512];
07786             unsigned char add2[512];
07787             ctr_drbg_context ctx;
07788             unsigned char buf[512];
07789             unsigned char output_str[512];
07790             int add_init_len, add1_len, add_reseed_len, add2_len;
07791         
07792             memset( output_str, 0, 512 );
07793         
07794             unhexify( entropy, "5c9954fd0143e62c3bf2d5734052e3c9370f7b9d75c70f58fe33b12e3997ee2c8db84f8467affd7cfd9a9e7ec60da6f31bf9bf32aedf644e4934bd1fc916bc8d" );
07795             add_init_len = unhexify( add_init, "50de72903b9d99764123ffaa0c721e14ad1ab5c46a34c040f25324ba1d937b8ef10467161fcf2978c2a680ac5570c6d2" );
07796             add1_len = unhexify( add1, "d5dc4c9fc7171fcbfdaead558a565ffd55d245a58b22ad1666ee05131e33f49e" );
07797             add_reseed_len = unhexify( add_reseed, "ea3114e92e6a19f53b207a0a54cd363a6d053fed0a827f92556f0a8580f7a342" );
07798             add2_len = unhexify( add2, "53686f069b455af4692888d11fac15cf7b4bd38e198de4e62b7098f875198a75" );
07799         
07800             test_offset = 0;
07801             fct_chk( ctr_drbg_init_entropy_len( &ctx, entropy_func, entropy, add_init, add_init_len, 32 ) == 0 );
07802         
07803             fct_chk( ctr_drbg_random_with_add( &ctx, buf, 16, add1, add1_len ) == 0 );
07804             fct_chk( ctr_drbg_reseed( &ctx, add_reseed, add_reseed_len ) == 0 );
07805             fct_chk( ctr_drbg_random_with_add( &ctx, buf, 16, add2, add2_len ) == 0 );
07806             hexify( output_str, buf, 16 );
07807             fct_chk( strcmp( (char *) output_str, "9fb0df053e0345e5640aa97fedef50a6" ) == 0 );
07808         }
07809         FCT_TEST_END();
07810 
07811     }
07812     FCT_SUITE_END();
07813 
07814 #endif /* POLARSSL_CTR_DRBG_C */
07815 
07816 }
07817 FCT_END();
07818