diff --git a/crypto/mdc2/mdc2dgst.c b/crypto/mdc2/mdc2dgst.c index 37d99f48a5ebcae9f5e16b52ab73e2ed3c24fae2..14233b9aba0837f5e562ed92ee4ab297b6b7db17 100644 --- a/crypto/mdc2/mdc2dgst.c +++ b/crypto/mdc2/mdc2dgst.c @@ -124,24 +124,3 @@ int MDC2_Final(unsigned char *md, MDC2_CTX *c) memcpy(&(md[MDC2_BLOCK]), (char *)c->hh, MDC2_BLOCK); return 1; } - -#undef TEST - -#ifdef TEST -main() -{ - unsigned char md[MDC2_DIGEST_LENGTH]; - int i; - MDC2_CTX c; - static char *text = "Now is the time for all "; - - MDC2_Init(&c); - MDC2_Update(&c, text, strlen(text)); - MDC2_Final(&(md[0]), &c); - - for (i = 0; i < MDC2_DIGEST_LENGTH; i++) - printf("%02X", md[i]); - printf("\n"); -} - -#endif diff --git a/test/build.info b/test/build.info index 4f89ce809189bb8867e9939f6ece89602999eb63..46403ea08b363b6e21c77108012d665233805af7 100644 --- a/test/build.info +++ b/test/build.info @@ -315,6 +315,9 @@ IF[{- !$disabled{tests} -}] # are needed, since all symbols are available anyway, regardless of what's # listed in util/*.num. PROGRAMS_NO_INST=asn1_internal_test modes_internal_test x509_internal_test + IF[{- !$disabled{mdc2} -}] + PROGRAMS_NO_INST=mdc2_internal_test + ENDIF IF[{- !$disabled{poly1305} -}] PROGRAMS_NO_INST=poly1305_internal_test ENDIF @@ -371,6 +374,10 @@ IF[{- !$disabled{tests} -}] ENDIF INCLUDE[x509_internal_test]=.. ../include DEPEND[x509_internal_test]=../libcrypto + + SOURCE[mdc2_internal_test]=mdc2_internal_test.c testutil.c + INCLUDE[mdc2_internal_test]=.. ../include + DEPEND[mdc2_internal_test]=../libcrypto ENDIF {- diff --git a/test/mdc2_internal_test.c b/test/mdc2_internal_test.c new file mode 100644 index 0000000000000000000000000000000000000000..7f6a95cf4aa43d887dcaab58a22d098fe495c4bf --- /dev/null +++ b/test/mdc2_internal_test.c @@ -0,0 +1,95 @@ +/* + * Copyright 2016 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the OpenSSL license (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +/* Internal tests for the mdc2 module */ + +#include +#include + +#include +#include "testutil.h" +#include "e_os.h" + +typedef struct { + const char *input; + const unsigned char expected[MDC2_DIGEST_LENGTH]; +} TESTDATA; + +typedef struct { + const char *case_name; + int num; + const TESTDATA *data; +} SIMPLE_FIXTURE; + +/********************************************************************** + * + * Test of mdc2 internal functions + * + ***/ + +static SIMPLE_FIXTURE setup_mdc2(const char *const test_case_name) +{ + SIMPLE_FIXTURE fixture; + fixture.case_name = test_case_name; + return fixture; +} + +static int execute_mdc2(SIMPLE_FIXTURE fixture) +{ + unsigned char md[MDC2_DIGEST_LENGTH]; + MDC2_CTX c; + + MDC2_Init(&c); + MDC2_Update(&c, (const unsigned char *)fixture.data->input, + strlen(fixture.data->input)); + MDC2_Final(&(md[0]), &c); + + if (memcmp(fixture.data->expected, md, MDC2_DIGEST_LENGTH)) { + fprintf(stderr, "mdc2 test %d: unexpected output\n", fixture.num); + return 0; + } + + return 1; +} + +static void teardown_mdc2(SIMPLE_FIXTURE fixture) +{ + ERR_print_errors_fp(stderr); +} + +/********************************************************************** + * + * Test driver + * + ***/ + +static TESTDATA tests[] = { + { + "Now is the time for all ", + { + 0x42, 0xE5, 0x0C, 0xD2, 0x24, 0xBA, 0xCE, 0xBA, + 0x76, 0x0B, 0xDD, 0x2B, 0xD4, 0x09, 0x28, 0x1A + } + } +}; + +static int drive_tests(int idx) +{ + SETUP_TEST_FIXTURE(SIMPLE_FIXTURE, setup_mdc2); + fixture.num = idx; + fixture.data = &tests[idx]; + EXECUTE_TEST(execute_mdc2, teardown_mdc2); +} + +int main(int argc, char **argv) +{ + ADD_ALL_TESTS(drive_tests, OSSL_NELEM(tests)); + + return run_tests(argv[0]); +}