From: Krzysztof Jackiewicz Date: Tue, 21 Jun 2016 13:55:34 +0000 (+0200) Subject: YACA: Tests for digest simple API X-Git-Tag: security-manager_5.5_testing~75 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=b36c377304003d7a4c553ee726fa525a9f57b8dc;p=platform%2Fcore%2Ftest%2Fsecurity-tests.git YACA: Tests for digest simple API Change-Id: I83936cc9458dedc9c9c8626e441f5b0e18e94291 --- diff --git a/src/yaca/yaca-test-simple.cpp b/src/yaca/yaca-test-simple.cpp index 2a299328..83d6b73e 100644 --- a/src/yaca/yaca-test-simple.cpp +++ b/src/yaca/yaca-test-simple.cpp @@ -21,15 +21,124 @@ * @author Dariusz Michaluk (d.michaluk@samsumg.com) */ +#include + #include "dpl/test/test_runner.h" +#include "yaca-test-common.h" +#include "yaca-test-vector.h" -#include +namespace { + +void check_test_vector(yaca_digest_algorithm_e algo, + size_t repeats, + const Buffer& single_input, + const Buffer& expected) +{ + /* concatenate input if needed */ + Buffer input(single_input); + for (size_t i = 1; i < repeats; i++) + input.insert(input.end(), single_input.begin(), single_input.end()); + + char* digest; + size_t digest_len; + YACA_SUCCESS(yaca_simple_calculate_digest(algo, + input.data(), + input.size(), + &digest, + &digest_len)); + RUNNER_ASSERT_MSG(digest != NULL, "NULL digest calculated"); + + auto digest_ptr = wrap_ptr(digest); + + YACA_ASSERT_MSG(digest_len == expected.size(), + "Digest calculated for \"" << + truncate_str(std::string(input.data(), input.size()), 16) + << "\" with " << digest2str(algo) << " is " << + digest_len * 8 <<" bits long. Expected " << + expected.size() * 8 << " bits"); + + int ret = yaca_memcmp(digest_ptr.get(), expected.data(), digest_len); + 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(T7000_YACA_SIMPLE); -RUNNER_TEST(T7001_yaca_digest_calc) +RUNNER_TEST(T7010_yaca_simple_calculate_digest_invalid_param, YacaTest) +{ + char* digest; + size_t digest_len; + Buffer data = random_buffer(42); + + YACA_INVALID_PARAM(yaca_simple_calculate_digest(static_cast(-1), + data.data(), + data.size(), + &digest, + &digest_len)); + YACA_INVALID_PARAM(yaca_simple_calculate_digest(YACA_DIGEST_MD5, + nullptr, + data.size(), + &digest, + &digest_len)); + YACA_INVALID_PARAM(yaca_simple_calculate_digest(YACA_DIGEST_MD5, + data.data(), + 0, + &digest, + &digest_len)); + YACA_INVALID_PARAM(yaca_simple_calculate_digest(YACA_DIGEST_MD5, + data.data(), + data.size(), + nullptr, + &digest_len)); + YACA_INVALID_PARAM(yaca_simple_calculate_digest(YACA_DIGEST_MD5, + data.data(), + data.size(), + &digest, + nullptr)); +} + +RUNNER_TEST(T7020_yaca_simple_calculate_digest_ascii_vectors, YacaTest) +{ + auto tvv = loadTestVector("digest_ascii.txt"); + + for (const auto& tv : tvv) { + yaca_digest_algorithm_e algo; + size_t repeats; + std::string input; + Buffer expected; + + tv.get("algo", algo); + tv.get("repeats", repeats); + tv.get("input", input); + tv.get("output", expected); + + check_test_vector(algo, repeats, Buffer(input.begin(), input.end()), expected); + } +} + +RUNNER_TEST(T7030_yaca_simple_calculate_digest_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); + } } RUNNER_TEST(T7002_yaca_encrypt)