Commit f46074c7 authored by Pauli's avatar Pauli Committed by Matt Caswell
Browse files

Update sha256t and sha512t to use the test infrastructure

parent eb16fc8f
Loading
Loading
Loading
Loading
+2 −2
Original line number Diff line number Diff line
@@ -103,11 +103,11 @@ IF[{- !$disabled{tests} -}]
  INCLUDE[sha1test]=../include
  DEPEND[sha1test]=../libcrypto

  SOURCE[sha256t]=sha256t.c
  SOURCE[sha256t]=sha256t.c testutil.c test_main.c
  INCLUDE[sha256t]=../include
  DEPEND[sha256t]=../libcrypto

  SOURCE[sha512t]=sha512t.c
  SOURCE[sha512t]=sha512t.c testutil.c test_main.c
  INCLUDE[sha512t]=../include
  DEPEND[sha512t]=../libcrypto

+104 −113
Original line number Diff line number Diff line
/*
 * Copyright 2004-2016 The OpenSSL Project Authors. All Rights Reserved.
 * Copyright 2004-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
@@ -7,13 +7,12 @@
 * https://www.openssl.org/source/license.html
 */

#include <stdio.h>
#include <string.h>
#include <stdlib.h>

#include <openssl/sha.h>
#include <openssl/evp.h>

#include "test_main.h"
#include "testutil.h"

static const unsigned char app_b1[SHA256_DIGEST_LENGTH] = {
    0xba, 0x78, 0x16, 0xbf, 0x8f, 0x01, 0xcf, 0xea,
    0x41, 0x41, 0x40, 0xde, 0x5d, 0xae, 0x22, 0x23,
@@ -56,46 +55,32 @@ static const unsigned char addenum_3[SHA224_DIGEST_LENGTH] = {
    0x4e, 0xe7, 0xad, 0x67
};

int main(int argc, char **argv)
static int test_sha256_short(void)
{
    unsigned char md[SHA256_DIGEST_LENGTH];
    int i;
    EVP_MD_CTX *evp;

    fprintf(stdout, "Testing SHA-256 ");
    if (!TEST_true(EVP_Digest("abc", 3, md, NULL, EVP_sha256(), NULL)))
        return 0;
    return TEST_mem_eq(md, sizeof(md), app_b1, sizeof(app_b1));
}

    if (!EVP_Digest("abc", 3, md, NULL, EVP_sha256(), NULL))
        goto err;
    if (memcmp(md, app_b1, sizeof(app_b1))) {
        fflush(stdout);
        fprintf(stderr, "\nTEST 1 of 3 failed.\n");
        return 1;
    } else
        fprintf(stdout, ".");
    fflush(stdout);
static int test_sha256_long(void)
{
    unsigned char md[SHA256_DIGEST_LENGTH];

    if (!EVP_Digest("abcdbcde" "cdefdefg" "efghfghi" "ghijhijk"
    if (!TEST_true(EVP_Digest("abcdbcde" "cdefdefg" "efghfghi" "ghijhijk"
                              "ijkljklm" "klmnlmno" "mnopnopq", 56, md,
                     NULL, EVP_sha256(), NULL))
        goto err;
    if (memcmp(md, app_b2, sizeof(app_b2))) {
        fflush(stdout);
        fprintf(stderr, "\nTEST 2 of 3 failed.\n");
        return 1;
    } else
        fprintf(stdout, ".");
    fflush(stdout);

    evp = EVP_MD_CTX_new();
    if (evp == NULL) {
        fflush(stdout);
        fprintf(stderr, "\nTEST 3 of 3 failed. (malloc failure)\n");
        return 1;
                               NULL, EVP_sha256(), NULL)))
        return 0;
    return TEST_mem_eq(md, sizeof(md), app_b2, sizeof(app_b2));
}
    if (!EVP_DigestInit_ex(evp, EVP_sha256(), NULL))
        goto err;
    for (i = 0; i < 1000000; i += 288) {
        if (!EVP_DigestUpdate(evp, "aaaaaaaa" "aaaaaaaa" "aaaaaaaa" "aaaaaaaa"

static int test_sha256_multi(void)
{
    unsigned char md[SHA256_DIGEST_LENGTH];
    int i, testresult = 0;
    EVP_MD_CTX *evp;
    static const char *updstr = "aaaaaaaa" "aaaaaaaa" "aaaaaaaa" "aaaaaaaa"
                                "aaaaaaaa" "aaaaaaaa" "aaaaaaaa" "aaaaaaaa"
                                "aaaaaaaa" "aaaaaaaa" "aaaaaaaa" "aaaaaaaa"
                                "aaaaaaaa" "aaaaaaaa" "aaaaaaaa" "aaaaaaaa"
@@ -103,75 +88,81 @@ int main(int argc, char **argv)
                                "aaaaaaaa" "aaaaaaaa" "aaaaaaaa" "aaaaaaaa"
                                "aaaaaaaa" "aaaaaaaa" "aaaaaaaa" "aaaaaaaa"
                                "aaaaaaaa" "aaaaaaaa" "aaaaaaaa" "aaaaaaaa"
                              "aaaaaaaa" "aaaaaaaa" "aaaaaaaa" "aaaaaaaa",
                              (1000000 - i) < 288 ? 1000000 - i : 288))
            goto err;
                                "aaaaaaaa" "aaaaaaaa" "aaaaaaaa" "aaaaaaaa";

    evp = EVP_MD_CTX_new();
    if (!TEST_ptr(evp))
        return 0;
    if (!TEST_true(EVP_DigestInit_ex(evp, EVP_sha256(), NULL)))
        goto end;
    for (i = 0; i < 1000000; i += 288)
        if (!TEST_true(EVP_DigestUpdate(evp, updstr,
                                        (1000000 - i) < 288 ? 1000000 - i
                                                            : 288)))
            goto end;
    if (!TEST_true(EVP_DigestFinal_ex(evp, md, NULL))
        || !TEST_mem_eq(md, sizeof(md), app_b3, sizeof(app_b3)))
        goto end;

    testresult = 1;
 end:
    EVP_MD_CTX_free(evp);
    return testresult;
}
    if (!EVP_DigestFinal_ex(evp, md, NULL))
            goto err;

    if (memcmp(md, app_b3, sizeof(app_b3))) {
        fflush(stdout);
        fprintf(stderr, "\nTEST 3 of 3 failed.\n");
        return 1;
    } else
        fprintf(stdout, ".");
    fflush(stdout);

    fprintf(stdout, " passed.\n");
    fflush(stdout);

    fprintf(stdout, "Testing SHA-224 ");

    if (!EVP_Digest("abc", 3, md, NULL, EVP_sha224(), NULL))
        goto err;
    if (memcmp(md, addenum_1, sizeof(addenum_1))) {
        fflush(stdout);
        fprintf(stderr, "\nTEST 1 of 3 failed.\n");
        return 1;
    } else
        fprintf(stdout, ".");
    fflush(stdout);

    if (!EVP_Digest("abcdbcde" "cdefdefg" "efghfghi" "ghijhijk"
                    "ijkljklm" "klmnlmno" "mnopnopq", 56, md,
                    NULL, EVP_sha224(), NULL))
        goto err;
    if (memcmp(md, addenum_2, sizeof(addenum_2))) {
        fflush(stdout);
        fprintf(stderr, "\nTEST 2 of 3 failed.\n");
        return 1;
    } else
        fprintf(stdout, ".");
    fflush(stdout);

    EVP_MD_CTX_reset(evp);
    if (!EVP_DigestInit_ex(evp, EVP_sha224(), NULL))
        goto err;
    for (i = 0; i < 1000000; i += 64) {
        if (!EVP_DigestUpdate(evp, "aaaaaaaa" "aaaaaaaa" "aaaaaaaa" "aaaaaaaa"
                              "aaaaaaaa" "aaaaaaaa" "aaaaaaaa" "aaaaaaaa",
                              (1000000 - i) < 64 ? 1000000 - i : 64))
            goto err;

static int test_sha224_short(void)
{
    unsigned char md[SHA224_DIGEST_LENGTH];

    if (!TEST_true(EVP_Digest("abc", 3, md, NULL, EVP_sha224(), NULL)))
        return 0;
    return TEST_mem_eq(md, sizeof(md), addenum_1, sizeof(addenum_1));
}
    if (!EVP_DigestFinal_ex(evp, md, NULL))
            goto err;
    EVP_MD_CTX_free(evp);

    if (memcmp(md, addenum_3, sizeof(addenum_3))) {
        fflush(stdout);
        fprintf(stderr, "\nTEST 3 of 3 failed.\n");
        return 1;
    } else
        fprintf(stdout, ".");
    fflush(stdout);
static int test_sha224_long(void)
{
    unsigned char md[SHA224_DIGEST_LENGTH];

    fprintf(stdout, " passed.\n");
    fflush(stdout);
    if (!TEST_true(EVP_Digest("abcdbcde" "cdefdefg" "efghfghi" "ghijhijk"
                              "ijkljklm" "klmnlmno" "mnopnopq", 56, md,
                              NULL, EVP_sha224(), NULL)))
        return 0;
    return TEST_mem_eq(md, sizeof(md), addenum_2, sizeof(addenum_2));
}

static int test_sha224_multi(void)
{
    unsigned char md[SHA224_DIGEST_LENGTH];
    int i, testresult = 0;
    EVP_MD_CTX *evp;
    static const char *updstr = "aaaaaaaa" "aaaaaaaa" "aaaaaaaa" "aaaaaaaa"
                                "aaaaaaaa" "aaaaaaaa" "aaaaaaaa" "aaaaaaaa";

    evp = EVP_MD_CTX_new();
    if (!TEST_ptr(evp))
        return 0;
    if (!TEST_true(EVP_DigestInit_ex(evp, EVP_sha224(), NULL)))
        goto end;
    for (i = 0; i < 1000000; i += 64)
        if (!TEST_true(EVP_DigestUpdate(evp, updstr,
                                        (1000000 - i) < 64 ? 1000000 - i : 64)))
            goto end;
    if (!TEST_true(EVP_DigestFinal_ex(evp, md, NULL))
        || !TEST_mem_eq(md, sizeof(md), addenum_3, sizeof(addenum_3)))
        goto end;

    testresult = 1;
 end:
    EVP_MD_CTX_free(evp);
    return testresult;
}

 err:
    fprintf(stderr, "Fatal EVP error!\n");
    return 1;
void register_tests(void)
{
    ADD_TEST(test_sha256_short);
    ADD_TEST(test_sha256_long);
    ADD_TEST(test_sha256_multi);
    ADD_TEST(test_sha224_short);
    ADD_TEST(test_sha224_long);
    ADD_TEST(test_sha224_multi);
}
+108 −117
Original line number Diff line number Diff line
/*
 * Copyright 2004-2016 The OpenSSL Project Authors. All Rights Reserved.
 * Copyright 2004-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
@@ -7,13 +7,11 @@
 * https://www.openssl.org/source/license.html
 */

#include <stdio.h>
#include <string.h>
#include <stdlib.h>

#include <openssl/sha.h>
#include <openssl/evp.h>
#include <openssl/crypto.h>

#include "test_main.h"
#include "testutil.h"

static const unsigned char app_c1[SHA512_DIGEST_LENGTH] = {
    0xdd, 0xaf, 0x35, 0xa1, 0x93, 0x61, 0x7a, 0xba,
@@ -75,47 +73,34 @@ static const unsigned char app_d3[SHA384_DIGEST_LENGTH] = {
    0xae, 0x97, 0xdd, 0xd8, 0x7f, 0x3d, 0x89, 0x85
};

int main(int argc, char **argv)
static int test_sha512_short(void)
{
    unsigned char md[SHA512_DIGEST_LENGTH];
    int i;
    EVP_MD_CTX *evp;

    fprintf(stdout, "Testing SHA-512 ");
    if (!TEST_true(EVP_Digest("abc", 3, md, NULL, EVP_sha512(), NULL)))
        return 0;
    return TEST_mem_eq(md, sizeof(md), app_c1, sizeof(app_c1));
}

    if (!EVP_Digest("abc", 3, md, NULL, EVP_sha512(), NULL))
        goto err;
    if (memcmp(md, app_c1, sizeof(app_c1))) {
        fflush(stdout);
        fprintf(stderr, "\nTEST 1 of 3 failed.\n");
        return 1;
    } else
        fprintf(stdout, ".");
    fflush(stdout);
static int test_sha512_long(void)
{
    unsigned char md[SHA512_DIGEST_LENGTH];

    if (!EVP_Digest("abcdefgh" "bcdefghi" "cdefghij" "defghijk"
    if (!TEST_true(EVP_Digest("abcdefgh" "bcdefghi" "cdefghij" "defghijk"
                              "efghijkl" "fghijklm" "ghijklmn" "hijklmno"
                              "ijklmnop" "jklmnopq" "klmnopqr" "lmnopqrs"
                    "mnopqrst" "nopqrstu", 112, md, NULL, EVP_sha512(), NULL))
        goto err;
    if (memcmp(md, app_c2, sizeof(app_c2))) {
        fflush(stdout);
        fprintf(stderr, "\nTEST 2 of 3 failed.\n");
        return 1;
    } else
        fprintf(stdout, ".");
    fflush(stdout);

    evp = EVP_MD_CTX_new();
    if (evp == NULL) {
        fflush(stdout);
        fprintf(stderr, "\nTEST 3 of 3 failed. (malloc failure)\n");
        return 1;
                              "mnopqrst" "nopqrstu", 112, md, NULL,
                              EVP_sha512(), NULL)))
        return 0;
    return TEST_mem_eq(md, sizeof(md), app_c2, sizeof(app_c2));
}
    if (!EVP_DigestInit_ex(evp, EVP_sha512(), NULL))
        goto err;
    for (i = 0; i < 1000000; i += 288) {
        if (!EVP_DigestUpdate(evp, "aaaaaaaa" "aaaaaaaa" "aaaaaaaa" "aaaaaaaa"

static int test_sha512_multi(void)
{
    unsigned char md[SHA512_DIGEST_LENGTH];
    int i, testresult = 0;
    EVP_MD_CTX *evp;
    static const char *updstr = "aaaaaaaa" "aaaaaaaa" "aaaaaaaa" "aaaaaaaa"
                                "aaaaaaaa" "aaaaaaaa" "aaaaaaaa" "aaaaaaaa"
                                "aaaaaaaa" "aaaaaaaa" "aaaaaaaa" "aaaaaaaa"
                                "aaaaaaaa" "aaaaaaaa" "aaaaaaaa" "aaaaaaaa"
@@ -123,77 +108,83 @@ int main(int argc, char **argv)
                                "aaaaaaaa" "aaaaaaaa" "aaaaaaaa" "aaaaaaaa"
                                "aaaaaaaa" "aaaaaaaa" "aaaaaaaa" "aaaaaaaa"
                                "aaaaaaaa" "aaaaaaaa" "aaaaaaaa" "aaaaaaaa"
                              "aaaaaaaa" "aaaaaaaa" "aaaaaaaa" "aaaaaaaa",
                              (1000000 - i) < 288 ? 1000000 - i : 288))
            goto err;
                                "aaaaaaaa" "aaaaaaaa" "aaaaaaaa" "aaaaaaaa";

    evp = EVP_MD_CTX_new();
    if (!TEST_ptr(evp))
        return 0;
    if (!TEST_true(EVP_DigestInit_ex(evp, EVP_sha512(), NULL)))
        goto end;
    for (i = 0; i < 1000000; i += 288)
        if (!TEST_true(EVP_DigestUpdate(evp, updstr,
                                        (1000000 - i) < 288 ? 1000000 - i
                                                            : 288)))
            goto end;
    if (!TEST_true(EVP_DigestFinal_ex(evp, md, NULL))
        || !TEST_mem_eq(md, sizeof(md), app_c3, sizeof(app_c3)))
        goto end;

    testresult = 1;
 end:
    EVP_MD_CTX_free(evp);
    return testresult;
}
    if (!EVP_DigestFinal_ex(evp, md, NULL))
            goto err;
    EVP_MD_CTX_reset(evp);

    if (memcmp(md, app_c3, sizeof(app_c3))) {
        fflush(stdout);
        fprintf(stderr, "\nTEST 3 of 3 failed.\n");
        return 1;
    } else
        fprintf(stdout, ".");
    fflush(stdout);

    fprintf(stdout, " passed.\n");
    fflush(stdout);

    fprintf(stdout, "Testing SHA-384 ");

    if (!EVP_Digest("abc", 3, md, NULL, EVP_sha384(), NULL))
        goto err;
    if (memcmp(md, app_d1, sizeof(app_d1))) {
        fflush(stdout);
        fprintf(stderr, "\nTEST 1 of 3 failed.\n");
        return 1;
    } else
        fprintf(stdout, ".");
    fflush(stdout);

    if (!EVP_Digest("abcdefgh" "bcdefghi" "cdefghij" "defghijk"

static int test_sha384_short(void)
{
    unsigned char md[SHA384_DIGEST_LENGTH];

    if (!TEST_true(EVP_Digest("abc", 3, md, NULL, EVP_sha384(), NULL)))
        return 0;
    return TEST_mem_eq(md, sizeof(md), app_d1, sizeof(app_d1));
}

static int test_sha384_long(void)
{
    unsigned char md[SHA384_DIGEST_LENGTH];

    if (!TEST_true(EVP_Digest("abcdefgh" "bcdefghi" "cdefghij" "defghijk"
                              "efghijkl" "fghijklm" "ghijklmn" "hijklmno"
                              "ijklmnop" "jklmnopq" "klmnopqr" "lmnopqrs"
                    "mnopqrst" "nopqrstu", 112, md, NULL, EVP_sha384(), NULL))
        goto err;
    if (memcmp(md, app_d2, sizeof(app_d2))) {
        fflush(stdout);
        fprintf(stderr, "\nTEST 2 of 3 failed.\n");
        return 1;
    } else
        fprintf(stdout, ".");
    fflush(stdout);

    if (!EVP_DigestInit_ex(evp, EVP_sha384(), NULL))
        goto err;
    for (i = 0; i < 1000000; i += 64) {
        if (!EVP_DigestUpdate(evp, "aaaaaaaa" "aaaaaaaa" "aaaaaaaa" "aaaaaaaa"
                              "aaaaaaaa" "aaaaaaaa" "aaaaaaaa" "aaaaaaaa",
                              (1000000 - i) < 64 ? 1000000 - i : 64))
            goto err;
                              "mnopqrst" "nopqrstu", 112, md, NULL,
                              EVP_sha384(), NULL)))
        return 0;
    return TEST_mem_eq(md, sizeof(md), app_d2, sizeof(app_d2));
}
    if (!EVP_DigestFinal_ex(evp, md, NULL))
        goto err;
    EVP_MD_CTX_free(evp);

    if (memcmp(md, app_d3, sizeof(app_d3))) {
        fflush(stdout);
        fprintf(stderr, "\nTEST 3 of 3 failed.\n");
        return 1;
    } else
        fprintf(stdout, ".");
    fflush(stdout);

    fprintf(stdout, " passed.\n");
    fflush(stdout);
static int test_sha384_multi(void)
{
    unsigned char md[SHA384_DIGEST_LENGTH];
    int i, testresult = 0;
    EVP_MD_CTX *evp;
    static const char *updstr = "aaaaaaaa" "aaaaaaaa" "aaaaaaaa" "aaaaaaaa"
                                "aaaaaaaa" "aaaaaaaa" "aaaaaaaa" "aaaaaaaa";

    evp = EVP_MD_CTX_new();
    if (!TEST_ptr(evp))
        return 0;
    if (!TEST_true(EVP_DigestInit_ex(evp, EVP_sha384(), NULL)))
        goto end;
    for (i = 0; i < 1000000; i += 64)
        if (!TEST_true(EVP_DigestUpdate(evp, updstr,
                                        (1000000 - i) < 64 ? 1000000 - i : 64)))
            goto end;
    if (!TEST_true(EVP_DigestFinal_ex(evp, md, NULL))
        || !TEST_mem_eq(md, sizeof(md), app_d3, sizeof(app_d3)))
        goto end;

    testresult = 1;
 end:
    EVP_MD_CTX_free(evp);
    return testresult;
}

 err:
    fflush(stdout);
    fprintf(stderr, "\nFatal EVP error!\n");
    return 1;
void register_tests(void)
{
    ADD_TEST(test_sha512_short);
    ADD_TEST(test_sha512_long);
    ADD_TEST(test_sha512_multi);
    ADD_TEST(test_sha384_short);
    ADD_TEST(test_sha384_long);
    ADD_TEST(test_sha384_multi);
}