diff options
| author | jhurst <jhurst@cinecert.com> | 2009-10-08 15:58:16 +0000 |
|---|---|---|
| committer | jhurst <> | 2009-10-08 15:58:16 +0000 |
| commit | 19bd80c074e1dec35404fd85607a2a68c791b2d9 (patch) | |
| tree | b0ca75276663bca2a7beb64bf3bf5ceac01abeea /src | |
| parent | 99ff2799c6926419c049d7d307b7f558505283ab (diff) | |
FIPS 186-2 fixes
Diffstat (limited to 'src')
| -rwxr-xr-x | src/AS_DCP_AES.cpp | 3 | ||||
| -rwxr-xr-x | src/KM_prng.cpp | 56 | ||||
| -rw-r--r-- | src/KM_tai.h | 1 | ||||
| -rwxr-xr-x | src/KM_util.cpp | 37 | ||||
| -rwxr-xr-x | src/KM_util.h | 3 | ||||
| -rwxr-xr-x | src/fips-186-rng-test.cpp | 41 | ||||
| -rwxr-xr-x | src/fips-186-test-harness.pl | 318 |
7 files changed, 405 insertions, 54 deletions
diff --git a/src/AS_DCP_AES.cpp b/src/AS_DCP_AES.cpp index fbb1990..6c81cad 100755 --- a/src/AS_DCP_AES.cpp +++ b/src/AS_DCP_AES.cpp @@ -281,6 +281,9 @@ public: { byte_t rng_buf[SHA_DIGEST_LENGTH*2]; Kumu::Gen_FIPS_186_Value(key, KeyLen, rng_buf, SHA_DIGEST_LENGTH*2); + + // rng_buf contains two rounds, x0 and x1 (each 160 bits). + // Use x1 per SMPTE 430-6-2006 Sec. 7.10 memcpy(m_key, rng_buf+SHA_DIGEST_LENGTH, KeyLen); Reset(); } diff --git a/src/KM_prng.cpp b/src/KM_prng.cpp index 1ae5679..031cb35 100755 --- a/src/KM_prng.cpp +++ b/src/KM_prng.cpp @@ -199,28 +199,36 @@ void Kumu::Gen_FIPS_186_Value(const byte_t* key, ui32_t key_size, byte_t* out_buf, ui32_t out_buf_len) { byte_t sha_buf[SHA_DIGEST_LENGTH]; - const ui32_t key_buf_len = 64; - byte_t key_buf[key_buf_len]; - SHA_CTX SHA; + ui32_t const xkey_len = 64; // 512/8 + byte_t xkey[xkey_len]; BN_CTX* ctx1 = BN_CTX_new(); // used by BN_* functions assert(ctx1); + if ( key_size > xkey_len ) + DefaultLogSink().Warn("Key too large for FIPS 186 seed, truncating to 64 bytes.\n"); + // init key - memset(key_buf, 0, key_buf_len); - memcpy(key_buf, key, xmin<ui32_t>(key_buf_len, key_size)); + memset(xkey, 0, xkey_len); + memcpy(xkey, key, xmin<ui32_t>(key_size, xkey_len)); + + if ( key_size < SHA_DIGEST_LENGTH ) + key_size = SHA_DIGEST_LENGTH; // pad short key ( b < 160 ) - // create the 2^160 constant - BIGNUM c_2powb, c_2, c_160; - BN_init(&c_2powb); BN_init(&c_2); BN_init(&c_160); + // create the 2^b constant + BIGNUM c_2powb, c_2, c_b; + BN_init(&c_2powb); BN_init(&c_2); BN_init(&c_b); BN_set_word(&c_2, 2); - BN_set_word(&c_160, 160); - BN_exp(&c_2powb, &c_2, &c_160, ctx1); + BN_set_word(&c_b, key_size * 8); + BN_exp(&c_2powb, &c_2, &c_b, ctx1); for (;;) { + SHA_CTX SHA; + // step c -- x = G(t,xkey) - SHA1_Init(&SHA); - SHA1_Update(&SHA, key_buf, key_buf_len); + SHA1_Init(&SHA); // set t + SHA1_Update(&SHA, xkey, xkey_len); + ui32_t* buf_p = (ui32_t*)sha_buf; *buf_p++ = KM_i32_BE(SHA.h0); *buf_p++ = KM_i32_BE(SHA.h1); @@ -235,20 +243,20 @@ Kumu::Gen_FIPS_186_Value(const byte_t* key, ui32_t key_size, byte_t* out_buf, ui out_buf_len -= SHA_DIGEST_LENGTH; out_buf += SHA_DIGEST_LENGTH; - // step d ... - BIGNUM xkey1, xkey_buf, x0; - BN_init(&xkey1); BN_init(&xkey_buf); BN_init(&x0); + // step d -- XKEY = (1 + XKEY + x) mod 2^b + BIGNUM bn_tmp, bn_xkey, bn_x_n; + BN_init(&bn_tmp); BN_init(&bn_xkey); BN_init(&bn_x_n); - BN_bin2bn(key_buf, SHA_DIGEST_LENGTH, &xkey1); - BN_bin2bn(sha_buf, SHA_DIGEST_LENGTH, &x0); - BN_add_word(&xkey1, 1); // xkey += 1 - BN_add(&xkey_buf, &xkey1, &x0); // xkey += x - BN_mod(&xkey1, &xkey_buf, &c_2powb, ctx1); // xkey = xkey mod (2^160) + BN_bin2bn(xkey, key_size, &bn_xkey); + BN_bin2bn(sha_buf, SHA_DIGEST_LENGTH, &bn_x_n); + BN_add_word(&bn_xkey, 1); // xkey += 1 + BN_add(&bn_tmp, &bn_xkey, &bn_x_n); // xkey += x + BN_mod(&bn_xkey, &bn_tmp, &c_2powb, ctx1); // xkey = xkey mod (2^b) - ui32_t bn_buf_len = BN_num_bytes(&xkey1); - assert(bn_buf_len < SHA_DIGEST_LENGTH+1); - memset(key_buf, 0, key_buf_len); - BN_bn2bin(&xkey1, key_buf); + memset(xkey, 0, xkey_len); + ui32_t bn_buf_len = BN_num_bytes(&bn_xkey); + ui32_t idx = ( bn_buf_len < key_size ) ? key_size - bn_buf_len : 0; + BN_bn2bin(&bn_xkey, &xkey[idx]); } BN_CTX_free(ctx1); diff --git a/src/KM_tai.h b/src/KM_tai.h index 09c85d2..ee3b666 100644 --- a/src/KM_tai.h +++ b/src/KM_tai.h @@ -64,6 +64,7 @@ namespace Kumu struct tai { ui64_t x; + inline void add_seconds(i32_t s) { x += s * 1; } inline void add_minutes(i32_t m) { x += m * 60; } inline void add_hours(i32_t h) { x += h * 3600; } inline void add_days(i32_t d) { x += d * 86400; } diff --git a/src/KM_util.cpp b/src/KM_util.cpp index 7fcd6e3..b155362 100755 --- a/src/KM_util.cpp +++ b/src/KM_util.cpp @@ -774,6 +774,26 @@ Kumu::Timestamp::AddMinutes(i32_t minutes) } } +// +void +Kumu::Timestamp::AddSeconds(i32_t seconds) +{ + SYSTEMTIME current_st; + FILETIME current_ft; + ULARGE_INTEGER current_ul; + + if ( minutes != 0 ) + { + TIMESTAMP_TO_SYSTIME(*this, ¤t_st); + SystemTimeToFileTime(¤t_st, ¤t_ft); + memcpy(¤t_ul, ¤t_ft, sizeof(current_ul)); + current_ul.QuadPart += ( seconds_to_ns100(1) * (i64_t)seconds ); + memcpy(¤t_ft, ¤t_ul, sizeof(current_ft)); + FileTimeToSystemTime(¤t_ft, ¤t_st); + SYSTIME_TO_TIMESTAMP(¤t_st, *this); + } +} + #else // KM_WIN32 #include <time.h> @@ -889,6 +909,23 @@ Kumu::Timestamp::AddMinutes(i32_t minutes) } } +// +void +Kumu::Timestamp::AddSeconds(i32_t seconds) +{ + Kumu::TAI::caltime ct; + Kumu::TAI::tai t; + + if ( seconds != 0 ) + { + TIMESTAMP_TO_CALTIME(*this, &ct) + t = ct; + t.add_seconds(seconds); + ct = t; + CALTIME_TO_TIMESTAMP(&ct, *this) + } +} + #endif // KM_WIN32 diff --git a/src/KM_util.h b/src/KM_util.h index 9ba6dc5..0f2af46 100755 --- a/src/KM_util.h +++ b/src/KM_util.h @@ -402,11 +402,12 @@ namespace Kumu // decode and set value from string formatted by EncodeString bool DecodeString(const char* datestr); - // Add the given number of days, hours, or minutes to the timestamp value. + // Add the given number of days, hours, minutes, or seconds to the timestamp value. // Values less than zero will cause the timestamp to decrease void AddDays(i32_t); void AddHours(i32_t); void AddMinutes(i32_t); + void AddSeconds(i32_t); // Read and write the timestamp value as a byte string having // the following format: diff --git a/src/fips-186-rng-test.cpp b/src/fips-186-rng-test.cpp index b0a677b..08a1665 100755 --- a/src/fips-186-rng-test.cpp +++ b/src/fips-186-rng-test.cpp @@ -39,47 +39,52 @@ using namespace Kumu; int main(int argc, const char** argv) { - if ( argc != 3 ) + if ( argc != 5 ) { - fprintf(stderr, "USAGE: fips-186-test <XKey-hex> <X-hex>\n"); + fprintf(stderr, "USAGE: fips-186-test <rounds> <b> <XKey-hex> <X-hex>\n"); return 2; } - byte_t XKey_buf[SHA_DIGEST_LENGTH]; - byte_t X_test_buf[SHA_DIGEST_LENGTH*2]; - byte_t X_buf[SHA_DIGEST_LENGTH*2]; + ui32_t const X_buf_len = 1024; + byte_t XKey_buf[X_buf_len]; + byte_t X_test_buf[X_buf_len]; ui32_t char_count; - if ( hex2bin(argv[1], XKey_buf, SHA_DIGEST_LENGTH, &char_count) != 0 ) + char* end = 0; + ui32_t rounds = strtol(argv[1], &end, 10); + ui32_t B = strtol(argv[2], &end, 10) / 8; + + if ( hex2bin(argv[3], XKey_buf, X_buf_len, &char_count) != 0 ) { fprintf(stderr, "Error parsing <XKey-hex> value\n"); return 3; } - if ( char_count != SHA_DIGEST_LENGTH ) + if ( char_count != B ) { - fprintf(stderr, "Incorrect length for <XKey-hex> value (expecting 40 hexadecimal characters)\n"); + fprintf(stderr, "Incorrect length for <XKey-hex> value (expecting %d decoded bytes)\n", B); return 3; } - if ( hex2bin(argv[2], X_test_buf, SHA_DIGEST_LENGTH*2, &char_count) != 0 ) + if ( hex2bin(argv[4], X_test_buf, X_buf_len, &char_count) != 0 ) { - fprintf(stderr, "Error parsing <XKey-hex> value\n"); + fprintf(stderr, "Error parsing <X-hex> value\n"); return 3; } - if ( char_count != (SHA_DIGEST_LENGTH * 2) ) - { - fprintf(stderr, "Incorrect length for <X-hex> value (expecting 80 hexadecimal characters)\n"); - return 3; - } + ui32_t const meg = 1024*1024; + ui32_t out_size = char_count; + byte_t X_buf[meg]; + ui32_t fill_size = rounds * 20; + assert(fill_size < meg); + Gen_FIPS_186_Value(XKey_buf, B, X_buf, fill_size); - Gen_FIPS_186_Value(XKey_buf, SHA_DIGEST_LENGTH, X_buf, SHA_DIGEST_LENGTH*2); + byte_t* test_key = &X_buf[fill_size - out_size]; - if ( memcmp(X_buf, X_test_buf, SHA_DIGEST_LENGTH*2) != 0 ) + if ( memcmp(test_key, X_test_buf, char_count) != 0 ) { fprintf(stderr, "Test vector value does not match:\n"); - hexdump(X_buf, SHA_DIGEST_LENGTH*2); + hexdump(test_key, char_count); return 4; } diff --git a/src/fips-186-test-harness.pl b/src/fips-186-test-harness.pl index 517cce1..6226159 100755 --- a/src/fips-186-test-harness.pl +++ b/src/fips-186-test-harness.pl @@ -38,19 +38,36 @@ my $rng_prog = $ARGV[0]; die "Expecting RNG program name as argument" unless ( -x $rng_prog ); my $test_count = 0; +my $rounds = 2; +my $i = 0; while ( my $line = <DATA> ) { - if ( $line =~ /^XKey = (\w{40})/ ) { - my $XKey = $1; - my $XSeed = <DATA>; - my $Xval = <DATA>; - die if ( $Xval !~ /^X = (\w{80})/ ); - $Xval = $1; - system("$rng_prog $XKey $Xval"); - die "Test vector failure at test $test_count: $XKey $ Xval\n" if ( $? != 0 ); - print STDERR '.'; - $test_count++; - } + if ( $line =~ /^<MCT>/ ) { + $rounds = 10000; + next; + } + +# next if ($rounds == 2); + + if ( $line =~ /^b = (\d+)/ ) { + my $vlen = $1; + + my $XKey = <DATA>; + die if ( $XKey !~ /^XKey = (\w+)/ ); + $XKey = $1; + + my $XSeed = <DATA>; + + my $Xval = <DATA>; + die if ( $Xval !~ /^X = (\w+)/ ); + $Xval = $1; + + system("$rng_prog $rounds $vlen $XKey $Xval"); + my $ret = $?; + die "\nTest vector failure at test $test_count: r=$rounds b=$vlen k=$XKey v=$Xval ($ret)\n" if ( $ret != 0 ); + print STDERR '.'; + $test_count++; + } } print STDERR "\nfound $test_count test cases\n" @@ -1020,3 +1037,282 @@ XKey = ffffffffffffffffffffffffffffffffffffffff XSeed = 0000000000000000000000000000000000000000 X = ce8dd97eb53de8b8997d71af15eed31ffc822deb269cb566a0a9645811a3d9c977c5d8fbe8ddf6bb +# CAVS 5.0 +# "FIPS 186 - General Purpose" information for "rngtestvalues" +# Generators selected: Xorg Xchange +# G-Functions selected: SHA-1 DES +# Generated on Wed Feb 08 15:20:53 2006 + +<MCT> +[Xorg - SHA1] + +COUNT = 0 +b = 160 +XKey = 1c670cfd3b421f21fdb0f3885a204eb659ca9740 +XSeed = 0000000000000000000000000000000000000000 +X = e5121116d1a99e62902ffd279261500e0e16b0f3 + +COUNT = 1 +b = 168 +XKey = d87f639afea75ba44bbc6bd0fb5ac84a12c2c6ed95 +XSeed = 000000000000000000000000000000000000000000 +X = 09328f082e48135784d39f9f0ec67911ef708788 + +COUNT = 2 +b = 176 +XKey = f0ecfa38f93823dcf6c918432d1d72731f02d74cbafa +XSeed = 00000000000000000000000000000000000000000000 +X = 1675536299b8a05236cc460944e691e952adbb80 + +COUNT = 3 +b = 184 +XKey = 574508895ccfdcf4a1ad8284ad94eb3321f5d1a4a6244b +XSeed = 0000000000000000000000000000000000000000000000 +X = f90c11ae695df29ae707a187a2eeeea92dcbd84b + +COUNT = 4 +b = 192 +XKey = 6e9d90254b9534d3ae680c9ab38d434114a58715fd00758b +XSeed = 000000000000000000000000000000000000000000000000 +X = d562e8d50a86de701d6fb076a378282bae721849 + +COUNT = 5 +b = 200 +XKey = 3477f6949b5278183169e9decf0010e683be87afe3b1b357a1 +XSeed = 00000000000000000000000000000000000000000000000000 +X = d954bc9c0537484f8ec13f4dde1905e3441dbac0 + +COUNT = 6 +b = 208 +XKey = 533acb38c61100b152c326c7b4ea027df73b07c94309ca3cf60a +XSeed = 0000000000000000000000000000000000000000000000000000 +X = 14b266d8c1fd4871104dd4f91c6d6d15c8e76c37 + +COUNT = 7 +b = 216 +XKey = 21392b55c4e3af82523cdf81eaf1868055bd3e3ea18236c30b9833 +XSeed = 000000000000000000000000000000000000000000000000000000 +X = 7318576beb22084349f749d7ca615f1333f6bff4 + +COUNT = 8 +b = 224 +XKey = b33ba749e3057b7a8aa61f3c78771655710157323bc1fecef62842d5 +XSeed = 00000000000000000000000000000000000000000000000000000000 +X = a24fa133c2e5ae5a2378af37e6097e1b5f503dd0 + +COUNT = 9 +b = 232 +XKey = 2c685c7482c85777d9de02ee550fc2f5aa0e0f76319f27043ba10407a5 +XSeed = 0000000000000000000000000000000000000000000000000000000000 +X = fceae60fcdda5782a43916d23c133d4aa59588f9 + +COUNT = 10 +b = 240 +XKey = aaa6e9a6525a0dbebf306a487f168bb31411ac5b3d761e5b775deda2c253 +XSeed = 000000000000000000000000000000000000000000000000000000000000 +X = c87d4f6f1dfff1c7c0517a3ba478ea3db40c915d + +COUNT = 11 +b = 248 +XKey = 5061d23eb06b7844fcad7e0b55d6abd6455775cca2bc0cf1b53d9a559c90c9 +XSeed = 00000000000000000000000000000000000000000000000000000000000000 +X = 96116ca45240c44249b8265d736572a3555d4bd8 + +COUNT = 12 +b = 256 +XKey = b436c1e06d76015c85d145cfb2f513f2dbffa7682b3ea09f6539f8f777f33926 +XSeed = 0000000000000000000000000000000000000000000000000000000000000000 +X = 8123d23bdb6379a8383a25fda023af25ec0dd8d0 + +COUNT = 13 +b = 264 +XKey = b6fb9e128dc5985f3a49ab84ee0336f8954318a9b681bbef9bf052beb3555e2134 +XSeed = 000000000000000000000000000000000000000000000000000000000000000000 +X = dcbd4dc592d2eadff08c532614ae28c030e9b60c + +COUNT = 14 +b = 272 +XKey = fe9e57d121e2bd431c41f1f757d2bd5b141c98daa47e795fdbcfed15c14168728a8b +XSeed = 00000000000000000000000000000000000000000000000000000000000000000000 +X = 1945ac66fd792852da50b72e33bac69ed3ce9bbd + +COUNT = 15 +b = 280 +XKey = 635debc0f6a35bea4b6de3db176b06600370d9840375feb1e3e1d6172308f35104f1cc +XSeed = 0000000000000000000000000000000000000000000000000000000000000000000000 +X = 72b363e7676288180c41d42a0934714c745bdbb0 + +COUNT = 16 +b = 288 +XKey = 66682eeb3ba396a7654d5e3e1230376d9c8d710f00bb13e493112a92f00661e93597d26b +XSeed = 000000000000000000000000000000000000000000000000000000000000000000000000 +X = 1d7d5a287a2198fc2ed407838521c6be1d7cd11d + +COUNT = 17 +b = 296 +XKey = 575289a193c212b874e690bf22d807b568c63a66b9eaccf871bca5c05e66975a7f7841f80b +XSeed = 00000000000000000000000000000000000000000000000000000000000000000000000000 +X = 5c9f11ba4939c6ce67bdc0c35aaa418151b0b9d0 + +COUNT = 18 +b = 304 +XKey = 6df2a963884ec9a615e398d010cc91026060845b01c0de2362ac2b490c9bd910850a3f057414 +XSeed = 0000000000000000000000000000000000000000000000000000000000000000000000000000 +X = 6a244d9944384feb512d4e080d308096ddfe8066 + +COUNT = 19 +b = 312 +XKey = 2c4b6df63cb790996f0c032657e608a76b2af9d9ff30df77732841bbaab63a23bde0ce71f12a7e +XSeed = 000000000000000000000000000000000000000000000000000000000000000000000000000000 +X = f2c6c8fe88d73a1940d0de419ffebc5b2070c5c7 + +COUNT = 20 +b = 320 +XKey = dfb6bfe8d24fd6395c811928a7953aee1a2de5d6e484f69fd9f7e9227ec591355f130dcea933f96c +XSeed = 00000000000000000000000000000000000000000000000000000000000000000000000000000000 +X = 54c4809627894c7be99d752be77a41a71e1177bc + +COUNT = 21 +b = 328 +XKey = 5ae22f47f7301856ada0553c6191977adfb39b64791df5d4f19a0d1f9a446748b95527743139d49e60 +XSeed = 0000000000000000000000000000000000000000000000000000000000000000000000000000000000 +X = 44ed62cc4a46740532b1178c75919e55598a3094 + +COUNT = 22 +b = 336 +XKey = ee2ef8ae409bc544bda6637166568b93721db4d7a9b194ac0e17e378c000628922591c4e3a1eebc7576f +XSeed = 000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +X = 98e18826178499f6b5e9f7dbbc7fbb5ea8ece400 + +COUNT = 23 +b = 344 +XKey = d071c39a5d2e9a2aaf716f1ad84c16ba74411d3597615dcd04b6cf68a0dfa14c26fa89271bc75a520509d5 +XSeed = 00000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +X = 5f8264026559da35e0bea1fdab8bc967079b1fd9 + +COUNT = 24 +b = 352 +XKey = 369b80c1a1c6fb9d69a01c727cece3547371544418631d4a252079c44f1d54fd831fb00170ae47b045c67212 +XSeed = 0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +X = 148e0ecee150cb59b1ee70586e0f493b74dda65d + +COUNT = 25 +b = 360 +XKey = d0a014bda380b171255b36e40f20a69821957dae52eff01229a077f36b708976f6cfa6abed699bc015fc02747f +XSeed = 000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +X = 1a67a8bcdffd0e07606288fb0bb0726b36b259bf + +COUNT = 26 +b = 368 +XKey = aae6ae0f2eb856f812733764e7ec1cfc7d49e92e61703738a5c03f83dffef933749285fc17f3c9378c605c35b2d1 +XSeed = 00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +X = 10b3ebf6cd54131ce1e902829a0ab251f193eb24 + +COUNT = 27 +b = 376 +XKey = f36b395eb02579985875f6183210e452b91c20bd58e4172772d1e44ba596b8a550aa7f8552fbc06315e1c572cc50fd +XSeed = 0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +X = 110bb9281f2e1ffac8252473be9f1ef2629513f0 + +COUNT = 28 +b = 384 +XKey = 7af1449287ffbf7428814dd6217aee8695d7f463760a121e40f6b642e70b98720db293f279ebb56ac53492e656aedd20 +XSeed = 000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +X = 08ea8feab6b529788d904bdbd43b9db583c95b3c + +COUNT = 29 +b = 392 +XKey = 94a62f890e754bda69b6d2a71a9c7cda337b99902d80f76ee4a00638e3ce3a9fe271b15b8d15167a8760c5f8af482f8fa2 +XSeed = 00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +X = c65ba4525e3bb1f083ac1bd971d952d8fb4ea820 + +COUNT = 30 +b = 400 +XKey = 417891bdbf562d87c93ca9c53aac522161c793e8a762bcbe725b0391492dc9cb38c31ecc768a869745cafdcb1a363ad6fec2 +XSeed = 0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +X = 09ffcbaca867d86fb5a90e44ad5d60b96b52e090 + +COUNT = 31 +b = 408 +XKey = 999a1eeca775bdbe61f3772f6cfc28ff95f13745ac35100e95ecd4479c024edd096f2a22f4ba61735bbcf81872a7ea6b3a4763 +XSeed = 000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +X = f2fef1651d92847c0facc14799153aac54289afc + +COUNT = 32 +b = 416 +XKey = 41f80eca8e883ceb6a772453131c922d542749c2a93248a4a4994c2c8f8c96275362eecd9930e8f32e9b6681acea5e255760de49 +XSeed = 00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +X = e750fd8a3815189e7b1ffba65760c6896773195f + +COUNT = 33 +b = 424 +XKey = 7eae482dcfa5e02acf05e105db48283f440640439a24ca3b2a482228c58f3f32c383db3c4847d4bcc615d3cac3eb2b77dd80045f0b +XSeed = 0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +X = 26e00f1ea68d5bde0c820837c18f564347507dc9 + +COUNT = 34 +b = 432 +XKey = d8143b6190d098d8c0b9af5c175344b602e6d086732e6b96e054ef688e1d5b110f62754a0ac0b4c53a905cbdb919ebd17f05b4122512 +XSeed = 000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +X = 60ac25c92a8c7da14edfebde25a97646474c9009 + +COUNT = 35 +b = 440 +XKey = 6f54f8051f7c172493f282be71942d4a65285560bca1b61b2f9effc1fc3483a63ced314d7010c6d15d2341831aaf97d56743a97740bb73 +XSeed = 00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +X = 1130c281c88ecad60736ac5bf6c9db4fc2e8334a + +COUNT = 36 +b = 448 +XKey = ca82c17fc3ac423e00c8b7c6f48bd0976d9e60c973f460fe735c37959d5239208a1b6d18221193d0bd3b65a888201e832bdd397ba8767bd3 +XSeed = 0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +X = 8da6754cadeb3f9121239381de1ff40061abe07e + +COUNT = 37 +b = 456 +XKey = 058f0d2e2a8b17581ab00d8b7ed2fef2e21dfaa60b120fd28acc771591880f2706640bc0d667e8b58cc2a3642255295316750e14c1ed816ce5 +XSeed = 000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +X = 5fd13163fb1fe4417fe96d7fb13ef2577f5868b2 + +COUNT = 38 +b = 464 +XKey = a8806c3e36700c4b8b45555dc9679bcb036fa3924fe85a3d1d57c708c77a3f4469ced8fdf25320db7b930e46d8e138cd6ddf47c94343a83d5cda +XSeed = 00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +X = 5704c42642beaa28896816eb196d2cf6b3de61f6 + +COUNT = 39 +b = 472 +XKey = 1a02d007f03b34ed427631283eb614db4d521f555136e7e42b4cfbee8134c63dbe3bb79b5a8b9f9f5b9f5ac61cfab1c54d197f1e3ba613f251eed6 +XSeed = 0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +X = f6f672ba423d82f4e86d1c7a41b4547972e859de + +COUNT = 40 +b = 480 +XKey = 28c1adb2742ac3b9c15d22f737ac5ffd34d0e5d79ee6ea3677b7a2cfb13cb2fe4462e7af7f0a287e9b54a91d961d62f63fc6c0128d379a3a3424665c +XSeed = 000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +X = 4596045105a7e36296b9ad7353723ba306353004 + +COUNT = 41 +b = 488 +XKey = 195adc728e0ec4f0b210b57658b448860e219231ad9d56812e0b7815bfb1b50b163f9223060d922050a5ac72bb81fc136716b9af5e1167076ce04e9731 +XSeed = 00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +X = 3e573f2a097c3568c9cf52f20eb141e63f9f776e + +COUNT = 42 +b = 496 +XKey = 866db552cf4745908fdf35d4c0967428d56039b1f223df315c61f2d12f178a1e4fe5d751a06efed37a022300577bc72ccf6455e3c761f775e5caaeb2479a +XSeed = 0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +X = 0077207b39f67aa80cb2ea90818440d4e5ccc414 + +COUNT = 43 +b = 504 +XKey = 641846ce2ba4396a391651179231d553c9061c6619bd4545b29228b6511e8bb513d89a168bdb916d12eabc2b5eb1a109574d7caa250feb7b8e7debdf7f9a03 +XSeed = 000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +X = 2166c4e99be5dc0cdc747c7c6d27105a8e115ba5 + +COUNT = 44 +b = 512 +XKey = 5cbb6d193c13bd62f5658ed4304774c6b1faf5b3dce432487840cabab415fb5d67640a739ca6e5414e760869708a9d7331e7e7ad7d55e035c711215406c3030d +XSeed = 00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +X = a2322c754fe789af3afae00b9fbbbd613076ea9f + |
