From: Krzysztof Jackiewicz Date: Mon, 20 Jun 2016 15:44:27 +0000 (+0200) Subject: YACA: Binary input message digest tests X-Git-Tag: security-manager_5.5_testing~77 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=9771dfb687c25fd16c3179ca9962af30f33492d8;p=platform%2Fcore%2Ftest%2Fsecurity-tests.git YACA: Binary input message digest tests Change-Id: I588fe4fbe707e3b7477272eb9f629e55694660bd --- diff --git a/src/yaca/test-vectors/digest_binary.txt b/src/yaca/test-vectors/digest_binary.txt new file mode 100644 index 00000000..8e4cd7b0 --- /dev/null +++ b/src/yaca/test-vectors/digest_binary.txt @@ -0,0 +1,74 @@ +############### SHA1 ############### +algo=SHA1 +repeats=1 +input=5e +output=5e6f80a34a9798cafc6a5db96cc57ba4c4db59c2 + +algo=SHA1 +repeats=1 +input=9a7dfdf1ecead06ed646aa55fe757146 +output=82abff6605dbe1c17def12a394fa22a82b544a35 + +algo=SHA1 +repeats=1 +input=f78f92141bcd170ae89b4fba15a1d59f3fd84d223c9251bdacbbae61d05ed115a06a7ce117b7beead24421ded9c32592bd57edeae39c39fa1fe8946a84d0cf1f7beead1713e2e0959897347f67c80b0400c209815d6b10a683836fd5562a56cab1a28e81b6576654631cf16566b86e3b33a108b05307c00aff14a768ed7350606a0f85e6a91d396f5b5cbe577f9b38807c7d523d6d792f6ebc24a4ecf2b3a427cdbbfb +output=cb0082c8f197d260991ba6a460e76e202bad27b3 + +############### SHA224 ############### +algo=SHA224 +repeats=1 +input=07 +output=00ecd5f138422b8ad74c9799fd826c531bad2fcabc7450bee2aa8c2a + +algo=SHA224 +repeats=1 +input=18804005dd4fbd1556299d6f9d93df62 +output=df90d78aa78821c99b40ba4c966921accd8ffb1e98ac388e56191db1 + +############### SHA256 ############### +algo=SHA256 +repeats=1 +input=19 +output=68aa2e2ee5dff96e3355e6c7ee373e3d6a4e17f75f9518d843709c0c9bc3e3d4 + +algo=SHA256 +repeats=1 +input=e3d72570dcdd787ce3887ab2cd684652 +output=175ee69b02ba9b58e2b0a5fd13819cea573f3940a94f825128cf4209beabb4e8 + +algo=SHA256 +repeats=1 +input=8326754e2277372f4fc12b20527afef04d8a056971b11ad57123a7c137760000d7bef6f3c1f7a9083aa39d810db310777dab8b1e7f02b84a26c773325f8b2374de7a4b5a58cb5c5cf35bcee6fb946e5bd694fa593a8beb3f9d6592ecedaa66ca82a29d0c51bcf9336230e5d784e4c0a43f8d79a30a165cbabe452b774b9c7109a97d138f129228966f6c0adc106aad5a9fdd30825769b2c671af6759df28eb393d54d6 +output=97dbca7df46d62c8a422c941dd7e835b8ad3361763f7e9b2d95f4f0da6e1ccbc + +############### SHA384 ############### +algo=SHA384 +repeats=1 +input=b9 +output=bc8089a19007c0b14195f4ecc74094fec64f01f90929282c2fb392881578208ad466828b1c6c283d2722cf0ad1ab6938 + +algo=SHA384 +repeats=1 +input=a41c497779c0375ff10a7f4e08591739 +output=c9a68443a005812256b8ec76b00516f0dbb74fab26d665913f194b6ffb0e91ea9967566b58109cbc675cc208e4c823f7 + +algo=SHA384 +repeats=1 +input=399669e28f6b9c6dbcbb6912ec10ffcf74790349b7dc8fbe4a8e7b3b5621db0f3e7dc87f823264bbe40d1811c9ea2061e1c84ad10a23fac1727e7202fc3f5042e6bf58cba8a2746e1f64f9b9ea352c711507053cf4e5339d52865f25cc22b5e87784a12fc961d66cb6e89573199a2ce6565cbdf13dca403832cfcb0e8b7211e83af32a11ac17929ff1c073a51cc027aaedeff85aad7c2b7c5a803e2404d96d2a77357bda1a6daeed17151cb9bc5125a422e941de0ca0fc5011c23ecffefdd09676711cf3db0a3440720e1615c1f22fbc3c721de521e1b99ba1bd5577408642147ed096 +output=4f440db1e6edd2899fa335f09515aa025ee177a79f4b4aaf38e42b5c4de660f5de8fb2a5b2fbd2a3cbffd20cff1288c0 + +############### SHA512 ############### +algo=SHA512 +repeats=1 +input=d0 +output=9992202938e882e73e20f6b69e68a0a7149090423d93c81bab3f21678d4aceeee50e4e8cafada4c85a54ea8306826c4ad6e74cece9631bfa8a549b4ab3fbba15 + +algo=SHA512 +repeats=1 +input=8d4e3c0e3889191491816e9d98bff0a0 +output=cb0b67a4b8712cd73c9aabc0b199e9269b20844afb75acbdd1c153c9828924c3ddedaafe669c5fdd0bc66f630f6773988213eb1b16f517ad0de4b2f0c95c90f8 + +algo=SHA512 +repeats=1 +input=a55f20c411aad132807a502d65824e31a2305432aa3d06d3e282a8d84e0de1de6974bf495469fc7f338f8054d58c26c49360c3e87af56523acf6d89d03e56ff2f868002bc3e431edc44df2f0223d4bb3b243586e1a7d924936694fcbbaf88d9519e4eb50a644f8e4f95eb0ea95bc4465c8821aacd2fe15ab4981164bbb6dc32f969087a145b0d9cc9c67c22b763299419cc4128be9a077b3ace634064e6d99283513dc06e7515d0d73132e9a0dc6d3b1f8b246f1a98a3fc72941b1e3bb2098e8bf16f268d64f0b0f4707fe1ea1a1791ba2f3c0c758e5f551863a96c949ad47d7fb40d2 +output=c665befb36da189d78822d10528cbf3b12b3eef726039909c1a16a270d48719377966b957a878e720584779a62825c18da26415e49a7176a894e7510fd1451f5 \ No newline at end of file diff --git a/src/yaca/yaca-test-digest.cpp b/src/yaca/yaca-test-digest.cpp index 3856977d..df1d42d0 100644 --- a/src/yaca/yaca-test-digest.cpp +++ b/src/yaca/yaca-test-digest.cpp @@ -47,6 +47,44 @@ void digest_length_test(yaca_digest_algorithm_e algo, size_t expected_bit_len) " bit digest. Expected " << expected_bit_len << " bits."); } +void check_test_vector(yaca_digest_algorithm_e algo, + size_t repeats, + const Buffer& input, + const Buffer& expected) +{ + auto ctx_ptr = digest_init(algo); + size_t out_len; + + out_len = get_output_length(ctx_ptr); + + if (input.size() > 0) { + for (size_t i = 0; i < repeats; i++) + YACA_SUCCESS(yaca_digest_update(ctx_ptr.get(), + input.data(), + input.size())); + } + + Buffer output(out_len); + YACA_SUCCESS(yaca_digest_finalize(ctx_ptr.get(), output.data(), &out_len)); + RUNNER_ASSERT_MSG(output.size() >= out_len, + "Length returned from yaca_digest_finalize() (" << out_len << + ") is greater than the one returned from yaca_context_get_output_length() (" + << output.size() << ")"); + output.resize(out_len); + + YACA_ASSERT_MSG(output.size() == expected.size(), + "Digest calculated for \"" << + truncate_str(std::string(input.data(), input.size()), 16) + << "\" with " << digest2str(algo) << " is " << output.size() * 8 + <<" bits long. Expected " << expected.size() * 8 << " bits"); + + int ret = yaca_memcmp(output.data(), expected.data(), output.size()); + YACA_ASSERT_MSG(YACA_ERROR_NONE == ret, + "Digest calculated for \"" << + truncate_str(std::string(input.data(), input.size()), 16) + << "\" with " << digest2str(algo) << " is different than expected"); +} + } // anonymous namespace RUNNER_TEST_GROUP_INIT(T2000_YACA_DIGEST); @@ -122,7 +160,7 @@ RUNNER_TEST(T2050_yaca_digest_get_output_length, YacaTest) digest_length_test(YACA_DIGEST_SHA512, 512); } -RUNNER_TEST(T2060_yaca_digest_test_vectors, YacaTest) +RUNNER_TEST(T2060_yaca_digest_test_ascii_vectors, YacaTest) { auto tvv = loadTestVector("digest_ascii.txt"); @@ -137,34 +175,25 @@ RUNNER_TEST(T2060_yaca_digest_test_vectors, YacaTest) tv.get("input", input); tv.get("output", expected); - auto ctx_ptr = digest_init(algo); - size_t out_len; - - out_len = get_output_length(ctx_ptr); - - if (input.size() > 0) { - for (size_t i = 0; i < repeats; i++) - YACA_SUCCESS(yaca_digest_update(ctx_ptr.get(), - input.c_str(), - input.size())); - } - - Buffer output(out_len); - YACA_SUCCESS(yaca_digest_finalize(ctx_ptr.get(), output.data(), &out_len)); - RUNNER_ASSERT_MSG(output.size() >= out_len, - "Length returned from yaca_digest_finalize() (" << out_len << - ") is greater than the one returned from yaca_context_get_output_length() (" - << output.size() << ")"); - output.resize(out_len); - - YACA_ASSERT_MSG(output.size() == expected.size(), - " Digest calculated for \"" << truncate_str(input, 16) << "\" with " - << digest2str(algo) << " is " << output.size() * 8 - <<" bits long. Expected " << expected.size() * 8 << " bits"); - - int ret = yaca_memcmp(output.data(), expected.data(), output.size()); - YACA_ASSERT_MSG(YACA_ERROR_NONE == ret, - "Digest calculated for \"" << truncate_str(input, 16) << "\" with " - << digest2str(algo) << " is different than expected"); + check_test_vector(algo, repeats, Buffer(input.begin(), input.end()), expected); + } +} + +RUNNER_TEST(T2070_yaca_digest_test_binary_vectors, YacaTest) +{ + auto tvv = loadTestVector("digest_binary.txt"); + + for (const auto& tv : tvv) { + yaca_digest_algorithm_e algo; + size_t repeats; + Buffer input; + Buffer expected; + + tv.get("algo", algo); + tv.get("repeats", repeats); + tv.get("input", input); + tv.get("output", expected); + + check_test_vector(algo, repeats, input, expected); } }