From e49429aa3f94b38de82d9da1471e8c2a25b95237 Mon Sep 17 00:00:00 2001 From: Pauli Date: Mon, 10 Apr 2017 08:20:10 +1000 Subject: [PATCH] Update sha1test to use the test infrastructure Reviewed-by: Rich Salz Reviewed-by: Matt Caswell (Merged from https://github.com/openssl/openssl/pull/3167) --- test/build.info | 2 +- test/sha1test.c | 121 +++++++++++++++++++++++------------------------- 2 files changed, 59 insertions(+), 64 deletions(-) diff --git a/test/build.info b/test/build.info index cc0820d1e4..5d418f8bde 100644 --- a/test/build.info +++ b/test/build.info @@ -99,7 +99,7 @@ IF[{- !$disabled{tests} -}] INCLUDE[destest]=../include DEPEND[destest]=../libcrypto - SOURCE[sha1test]=sha1test.c + SOURCE[sha1test]=sha1test.c testutil.c test_main.c INCLUDE[sha1test]=../include DEPEND[sha1test]=../libcrypto diff --git a/test/sha1test.c b/test/sha1test.c index 80ab122784..25c7f10568 100644 --- a/test/sha1test.c +++ b/test/sha1test.c @@ -1,5 +1,5 @@ /* - * Copyright 1995-2016 The OpenSSL Project Authors. All Rights Reserved. + * Copyright 1995-2017 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 @@ -9,9 +9,11 @@ #include #include -#include #include "../e_os.h" +#include "test_main.h" +#include "testutil.h" + #include #include @@ -31,81 +33,74 @@ static char *ret[] = { static char *bigret = "34aa973cd4c4daa4f61eeb2bdbad27316534016f"; -static char *pt(unsigned char *md); -int main(int argc, char *argv[]) +static char *pt(unsigned char *md) +{ + int i; + static char buf[80]; + + for (i = 0; i < SHA_DIGEST_LENGTH; i++) + sprintf(&(buf[i * 2]), "%02x", md[i]); + return buf; +} + +static int test_sha1(int i) { - unsigned int i; - int err = 0; - char **R; - static unsigned char buf[1000]; - char *p, *r; EVP_MD_CTX *c; unsigned char md[SHA_DIGEST_LENGTH]; + const size_t tlen = strlen(test[i]); + int testresult = 0; c = EVP_MD_CTX_new(); - R = ret; - for (i = 0; i < OSSL_NELEM(test); i++) { + if (!TEST_ptr(c)) + goto end; + # ifdef CHARSET_EBCDIC - ebcdic2ascii(test[i], test[i], strlen(test[i])); + ebcdic2ascii(test[i], test[i], tlen); # endif - if (!EVP_Digest(test[i], strlen(test[i]), md, NULL, EVP_sha1(), - NULL)) { - printf("EVP_Digest() error\n"); - err++; - goto err; - } - p = pt(md); - if (strcmp(p, (char *)*R) != 0) { - printf("error calculating SHA1 on '%s'\n", test[i]); - printf("got %s instead of %s\n", p, *R); - err++; - } else - printf("test %d ok\n", i + 1); - R++; - } + if (!TEST_true(EVP_Digest(test[i], tlen, md, NULL, EVP_sha1(), NULL)) + || !TEST_str_eq(pt(md), ret[i])) + goto end; + + testresult = 1; + end: + EVP_MD_CTX_free(c); + return testresult; +} + +static int test_sha1_big(void) +{ + static unsigned char buf[1000]; + EVP_MD_CTX *c; + unsigned char md[SHA_DIGEST_LENGTH]; + int i, testresult = 0; + + c = EVP_MD_CTX_new(); + if (!TEST_ptr(c)) + goto end; memset(buf, 'a', 1000); #ifdef CHARSET_EBCDIC ebcdic2ascii(buf, buf, 1000); #endif /* CHARSET_EBCDIC */ - if (!EVP_DigestInit_ex(c, EVP_sha1(), NULL)) { - printf("EVP_DigestInit_ex() error\n"); - err++; - goto err; - } - for (i = 0; i < 1000; i++) { - if (!EVP_DigestUpdate(c, buf, 1000)) { - printf("EVP_DigestUpdate() error\n"); - err++; - goto err; - } - } - if (!EVP_DigestFinal_ex(c, md, NULL)) { - printf("EVP_DigestFinal() error\n"); - err++; - goto err; - } - p = pt(md); - - r = bigret; - if (strcmp(p, r) != 0) { - printf("error calculating SHA1 on 'a' * 1000\n"); - printf("got %s instead of %s\n", p, r); - err++; - } else - printf("test 3 ok\n"); - err: + if (!TEST_true(EVP_DigestInit_ex(c, EVP_sha1(), NULL))) + goto end; + for (i = 0; i < 1000; i++) + if (!TEST_true(EVP_DigestUpdate(c, buf, 1000))) + goto end; + if (!TEST_true(EVP_DigestFinal_ex(c, md, NULL))) + goto end; + + if (!TEST_str_eq(pt(md), bigret)) + goto end; + + testresult = 1; + end: EVP_MD_CTX_free(c); - EXIT(err); - return (0); + return testresult; } -static char *pt(unsigned char *md) +void register_tests(void) { - int i; - static char buf[80]; - - for (i = 0; i < SHA_DIGEST_LENGTH; i++) - sprintf(&(buf[i * 2]), "%02x", md[i]); - return (buf); + ADD_ALL_TESTS(test_sha1, OSSL_NELEM(test)); + ADD_TEST(test_sha1_big); } -- 2.25.1