From 709e41fd10ca32eafe35a7d1a57fde440ef67f09 Mon Sep 17 00:00:00 2001 From: Steffen Jaeckel Date: Thu, 10 Oct 2019 18:50:58 +0200 Subject: [PATCH] add SHA256&SHA512 tests --- .gitignore | 2 ++ Makefile.am | 8 ++++++++ tests/test_sha256.c | 44 +++++++++++++++++++++++++++++++++++++++ tests/test_sha512.c | 50 +++++++++++++++++++++++++++++++++++++++++++++ 4 files changed, 104 insertions(+) create mode 100644 tests/test_sha256.c create mode 100644 tests/test_sha512.c diff --git a/.gitignore b/.gitignore index e8b9a93..048b48b 100644 --- a/.gitignore +++ b/.gitignore @@ -55,6 +55,8 @@ tests/test_resolver tests/test_sasl tests/test_scram tests/test_sha1 +tests/test_sha256 +tests/test_sha512 tests/test_snprintf tests/test_sock tests/test_stanza diff --git a/Makefile.am b/Makefile.am index aff4e5a..42c7968 100644 --- a/Makefile.am +++ b/Makefile.am @@ -140,6 +140,8 @@ examples_register_LDADD = $(STROPHE_LIBS) TESTS = \ tests/check_parser \ tests/test_sha1 \ + tests/test_sha256 \ + tests/test_sha512 \ tests/test_md5 \ tests/test_rand \ tests/test_scram \ @@ -195,6 +197,12 @@ tests_test_scram_CFLAGS = $(STROPHE_FLAGS) -I$(top_srcdir)/src tests_test_sha1_SOURCES = tests/test_sha1.c src/sha1.c tests_test_sha1_CFLAGS = -I$(top_srcdir)/src +tests_test_sha256_SOURCES = tests/test_sha256.c tests/test.c src/sha256.c +tests_test_sha256_CFLAGS = -I$(top_srcdir)/src + +tests_test_sha512_SOURCES = tests/test_sha512.c tests/test.c src/sha512.c +tests_test_sha512_CFLAGS = -I$(top_srcdir)/src + tests_test_md5_SOURCES = tests/test_md5.c tests/test.c src/md5.c tests_test_md5_CFLAGS = -I$(top_srcdir)/src diff --git a/tests/test_sha256.c b/tests/test_sha256.c new file mode 100644 index 0000000..4a484e9 --- /dev/null +++ b/tests/test_sha256.c @@ -0,0 +1,44 @@ +/* Tests for SHA-256 from LibTomCrypt */ +/* This file is in the public domain */ + +/* gcc -o test_sha256 -I./src tests/test_sha256.c tests/test.c src/sha256.c */ + +#include +#include +#include + +#include "sha256.h" +#include "test.h" + +int main(int argc, char **argv) +{ + static const struct { + const char *msg; + unsigned char hash[32]; + } tests[] = { + {"abc", + {0xba, 0x78, 0x16, 0xbf, 0x8f, 0x01, 0xcf, 0xea, 0x41, 0x41, 0x40, + 0xde, 0x5d, 0xae, 0x22, 0x23, 0xb0, 0x03, 0x61, 0xa3, 0x96, 0x17, + 0x7a, 0x9c, 0xb4, 0x10, 0xff, 0x61, 0xf2, 0x00, 0x15, 0xad}}, + {"abcdbcdecdefdefgefghfghighijhijkijkljklmklmnlmnomnopnopq", + {0x24, 0x8d, 0x6a, 0x61, 0xd2, 0x06, 0x38, 0xb8, 0xe5, 0xc0, 0x26, + 0x93, 0x0c, 0x3e, 0x60, 0x39, 0xa3, 0x3c, 0xe4, 0x59, 0x64, 0xff, + 0x21, 0x67, 0xf6, 0xec, 0xed, 0xd4, 0x19, 0xdb, 0x06, 0xc1}}, + }; + + int i; + unsigned char tmp[32]; + sha256_context md; + + for (i = 0; i < (int)(sizeof(tests) / sizeof(tests[0])); i++) { + sha256_init(&md); + sha256_process(&md, (unsigned char *)tests[i].msg, + (unsigned long)strlen(tests[i].msg)); + sha256_done(&md, tmp); + COMPARE_BUF(tmp, sizeof(tmp), tests[i].hash, sizeof(tests[i].hash)); + } + + /* success */ + fprintf(stdout, "ok\n"); + return (0); +} diff --git a/tests/test_sha512.c b/tests/test_sha512.c new file mode 100644 index 0000000..182ea6c --- /dev/null +++ b/tests/test_sha512.c @@ -0,0 +1,50 @@ +/* Tests for SHA-512 from LibTomCrypt */ +/* This file is in the public domain */ + +/* gcc -o test_sha512 -I./src tests/test_sha512.c tests/test.c src/sha512.c */ + +#include +#include +#include + +#include "sha512.h" +#include "test.h" + +int main(int argc, char **argv) +{ + static const struct { + const char *msg; + uint8_t hash[64]; + } tests[] = { + {"abc", + {0xdd, 0xaf, 0x35, 0xa1, 0x93, 0x61, 0x7a, 0xba, 0xcc, 0x41, 0x73, + 0x49, 0xae, 0x20, 0x41, 0x31, 0x12, 0xe6, 0xfa, 0x4e, 0x89, 0xa9, + 0x7e, 0xa2, 0x0a, 0x9e, 0xee, 0xe6, 0x4b, 0x55, 0xd3, 0x9a, 0x21, + 0x92, 0x99, 0x2a, 0x27, 0x4f, 0xc1, 0xa8, 0x36, 0xba, 0x3c, 0x23, + 0xa3, 0xfe, 0xeb, 0xbd, 0x45, 0x4d, 0x44, 0x23, 0x64, 0x3c, 0xe8, + 0x0e, 0x2a, 0x9a, 0xc9, 0x4f, 0xa5, 0x4c, 0xa4, 0x9f}}, + {"abcdefghbcdefghicdefghijdefghijkefghijklfghijklmghijklmnhijklmnoijklm" + "nopjklmnopqklmnopqrlmnopqrsmnopqrstnopqrstu", + {0x8e, 0x95, 0x9b, 0x75, 0xda, 0xe3, 0x13, 0xda, 0x8c, 0xf4, 0xf7, + 0x28, 0x14, 0xfc, 0x14, 0x3f, 0x8f, 0x77, 0x79, 0xc6, 0xeb, 0x9f, + 0x7f, 0xa1, 0x72, 0x99, 0xae, 0xad, 0xb6, 0x88, 0x90, 0x18, 0x50, + 0x1d, 0x28, 0x9e, 0x49, 0x00, 0xf7, 0xe4, 0x33, 0x1b, 0x99, 0xde, + 0xc4, 0xb5, 0x43, 0x3a, 0xc7, 0xd3, 0x29, 0xee, 0xb6, 0xdd, 0x26, + 0x54, 0x5e, 0x96, 0xe5, 0x5b, 0x87, 0x4b, 0xe9, 0x09}}, + }; + + size_t i; + uint8_t tmp[64]; + sha512_context md; + + for (i = 0; i < sizeof(tests) / sizeof(tests[0]); i++) { + sha512_init(&md); + sha512_process(&md, (uint8_t *)tests[i].msg, strlen(tests[i].msg)); + sha512_done(&md, tmp); + COMPARE_BUF(tmp, sizeof(tmp), tests[i].hash, sizeof(tests[i].hash)); + } + + /* success */ + fprintf(stdout, "ok\n"); + return (0); +}