YACA: Digest ASCII test vectors 16/75616/9
authorKrzysztof Jackiewicz <k.jackiewicz@samsung.com>
Mon, 20 Jun 2016 14:28:54 +0000 (16:28 +0200)
committerKrzysztof Jackiewicz <k.jackiewicz@samsung.com>
Thu, 23 Jun 2016 11:10:29 +0000 (13:10 +0200)
Change-Id: Id07a3b696f2295f39a42bf497f6aba050b0470ce

packaging/security-tests.spec
src/yaca/CMakeLists.txt
src/yaca/test-vectors/digest_ascii.txt [new file with mode: 0644]
src/yaca/yaca-test-digest.cpp

index 8907212..d9626c2 100644 (file)
@@ -96,6 +96,7 @@ echo "security-tests postinst done ..."
 /usr/lib/security-tests/cynara-tests/plugins/test-agent/*
 /usr/bin/security-tests-inner-test
 /usr/bin/libwebappenc-tests
+%{_prefix}/share/yaca-test
 
 %postun
 id -u security_test_user  1>/dev/null 2>&1 && userdel security_test_user
index f23396c..38d6651 100644 (file)
@@ -48,3 +48,5 @@ TARGET_LINK_LIBRARIES(${YACA_TEST}
 
 ## Install #####################################################################
 INSTALL(TARGETS ${YACA_TEST} DESTINATION bin)
+
+INSTALL(DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/test-vectors DESTINATION ${YACA_TEST_DIR})
\ No newline at end of file
diff --git a/src/yaca/test-vectors/digest_ascii.txt b/src/yaca/test-vectors/digest_ascii.txt
new file mode 100644 (file)
index 0000000..dc955e1
--- /dev/null
@@ -0,0 +1,160 @@
+############### MD5 ###############
+algo=MD5
+repeats=1
+input=
+output=d41d8cd98f00b204e9800998ecf8427e
+
+algo=MD5
+repeats=1
+input=a
+output=0cc175b9c0f1b6a831c399e269772661
+
+algo=MD5
+repeats=1
+input=abc
+output=900150983cd24fb0d6963f7d28e17f72
+
+algo=MD5
+repeats=1
+input=message digest
+output=f96b697d7cb7938d525a2f31aaf161d0
+
+algo=MD5
+repeats=1
+input=abcdefghijklmnopqrstuvwxyz
+output=c3fcd3d76192e4007dfb496cca67e13b
+
+algo=MD5
+repeats=1
+input=ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789
+output=d174ab98d277d9f5a5611c2c9f419d9f
+
+algo=MD5
+repeats=1
+input=12345678901234567890123456789012345678901234567890123456789012345678901234567890
+output=57edf4a22be3c955ac49da2e2107b67a
+
+############### SHA1 ###############
+algo=SHA1
+repeats=1
+input=
+output=da39a3ee5e6b4b0d3255bfef95601890afd80709
+
+algo=SHA1
+repeats=1
+input=abc
+output=a9993e364706816aba3e25717850c26c9cd0d89d
+
+algo=SHA1
+repeats=1
+input=abcdbcdecdefdefgefghfghighijhijkijkljklmklmnlmnomnopnopq
+output=84983e441c3bd26ebaae4aa1f95129e5e54670f1
+
+algo=SHA1
+repeats=1000000
+input=a
+output=34aa973cd4c4daa4f61eeb2bdbad27316534016f
+
+algo=SHA1
+repeats=10
+input=0123456701234567012345670123456701234567012345670123456701234567
+output=dea356a2cddd90c7a7ecedc5ebb563934f460452
+
+############### SHA224 ###############
+algo=SHA224
+repeats=1
+input=
+output=d14a028c2a3a2bc9476102bb288234c415a2b01f828ea62ac5b3e42f
+
+algo=SHA224
+repeats=1
+input=abc
+output=23097d223405d8228642a477bda255b32aadbce4bda0b3f7e36c9da7
+
+algo=SHA224
+repeats=1
+input=abcdbcdecdefdefgefghfghighijhijkijkljklmklmnlmnomnopnopq
+output=75388b16512776cc5dba5da1fd890150b0c6455cb4f58b1952522525
+
+algo=SHA224
+repeats=1000000
+input=a
+output=20794655980c91d8bbb4c1ea97618a4bf03f42581948b2ee4ee7ad67
+
+############### SHA256 ###############
+algo=SHA256
+repeats=1
+input=
+output=e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855
+
+algo=SHA256
+repeats=1
+input=abc
+output=ba7816bf8f01cfea414140de5dae2223b00361a396177a9cb410ff61f20015ad
+
+algo=SHA256
+repeats=1
+input=abcdbcdecdefdefgefghfghighijhijkijkljklmklmnlmnomnopnopq
+output=248d6a61d20638b8e5c026930c3e6039a33ce45964ff2167f6ecedd419db06c1
+
+algo=SHA256
+repeats=1000000
+input=a
+output=cdc76e5c9914fb9281a1c7e284d73e67f1809a48a497200e046d39ccc7112cd0
+
+algo=SHA256
+repeats=10
+input=0123456701234567012345670123456701234567012345670123456701234567
+output=594847328451bdfa85056225462cc1d867d877fb388df0ce35f25ab5562bfbb5
+
+############### SHA384 ###############
+algo=SHA384
+repeats=1
+input=
+output=38b060a751ac96384cd9327eb1b1e36a21fdb71114be07434c0cc7bf63f6e1da274edebfe76f65fbd51ad2f14898b95b
+
+algo=SHA384
+repeats=1
+input=abc
+output=cb00753f45a35e8bb5a03d699ac65007272c32ab0eded1631a8b605a43ff5bed8086072ba1e7cc2358baeca134c825a7
+
+algo=SHA384
+repeats=1
+input=abcdefghbcdefghicdefghijdefghijkefghijklfghijklmghijklmnhijklmnoijklmnopjklmnopqklmnopqrlmnopqrsmnopqrstnopqrstu
+output=09330c33f71147e83d192fc782cd1b4753111b173b3b05d22fa08086e3b0f712fcc7c71a557e2db966c3e9fa91746039
+
+algo=SHA384
+repeats=1000000
+input=a
+output=9d0e1809716474cb086e834e310a4a1ced149e9c00f248527972cec5704c2a5b07b8b3dc38ecc4ebae97ddd87f3d8985
+
+algo=SHA384
+repeats=10
+input=0123456701234567012345670123456701234567012345670123456701234567
+output=2fc64a4f500ddb6828f6a3430b8dd72a368eb7f3a8322a70bc84275b9c0b3ab00d27a5cc3c2d224aa6b61a0d79fb4596
+
+############### SHA512 ###############
+algo=SHA512
+repeats=1
+input=
+output=cf83e1357eefb8bdf1542850d66d8007d620e4050b5715dc83f4a921d36ce9ce47d0d13c5d85f2b0ff8318d2877eec2f63b931bd47417a81a538327af927da3e
+
+algo=SHA512
+repeats=1
+input=abc
+output=ddaf35a193617abacc417349ae20413112e6fa4e89a97ea20a9eeee64b55d39a2192992a274fc1a836ba3c23a3feebbd454d4423643ce80e2a9ac94fa54ca49f
+
+algo=SHA512
+repeats=1
+input=abcdefghbcdefghicdefghijdefghijkefghijklfghijklmghijklmnhijklmnoijklmnopjklmnopqklmnopqrlmnopqrsmnopqrstnopqrstu
+output=8e959b75dae313da8cf4f72814fc143f8f7779c6eb9f7fa17299aeadb6889018501d289e4900f7e4331b99dec4b5433ac7d329eeb6dd26545e96e55b874be909
+
+algo=SHA512
+repeats=1000000
+input=a
+output=e718483d0ce769644e2e42c7bc15b4638e1f98b13b2044285632a803afa973ebde0ff244877ea60a4cb0432ce577c31beb009c5c2c49aa2e4eadb217ad8cc09b
+
+algo=SHA512
+repeats=10
+input=0123456701234567012345670123456701234567012345670123456701234567
+output=89d05ba632c699c31231ded4ffc127d5a894dad412c0e024db872d1abd2ba8141a0f85072a9be1e2aa04cf33c765cb510813a39cd5a84c4acaa64d3f3fb7bae9
\ No newline at end of file
index 18afe4d..3856977 100644 (file)
@@ -26,6 +26,7 @@
 
 #include "dpl/test/test_runner.h"
 #include "yaca-test-common.h"
+#include "yaca-test-vector.h"
 
 #include <yaca_digest.h>
 
@@ -120,3 +121,50 @@ RUNNER_TEST(T2050_yaca_digest_get_output_length, YacaTest)
     digest_length_test(YACA_DIGEST_SHA384, 384);
     digest_length_test(YACA_DIGEST_SHA512, 512);
 }
+
+RUNNER_TEST(T2060_yaca_digest_test_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);
+
+        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");
+    }
+}