提交 f46074c7 编写于 作者: P Pauli 提交者: Matt Caswell

Update sha256t and sha512t to use the test infrastructure

Reviewed-by: NRich Salz <rsalz@openssl.org>
Reviewed-by: NMatt Caswell <matt@openssl.org>
(Merged from https://github.com/openssl/openssl/pull/3168)
上级 eb16fc8f
...@@ -103,11 +103,11 @@ IF[{- !$disabled{tests} -}] ...@@ -103,11 +103,11 @@ IF[{- !$disabled{tests} -}]
INCLUDE[sha1test]=../include INCLUDE[sha1test]=../include
DEPEND[sha1test]=../libcrypto DEPEND[sha1test]=../libcrypto
SOURCE[sha256t]=sha256t.c SOURCE[sha256t]=sha256t.c testutil.c test_main.c
INCLUDE[sha256t]=../include INCLUDE[sha256t]=../include
DEPEND[sha256t]=../libcrypto DEPEND[sha256t]=../libcrypto
SOURCE[sha512t]=sha512t.c SOURCE[sha512t]=sha512t.c testutil.c test_main.c
INCLUDE[sha512t]=../include INCLUDE[sha512t]=../include
DEPEND[sha512t]=../libcrypto DEPEND[sha512t]=../libcrypto
......
/* /*
* 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 * Licensed under the OpenSSL license (the "License"). You may not use
* this file except in compliance with the License. You can obtain a copy * this file except in compliance with the License. You can obtain a copy
...@@ -7,13 +7,12 @@ ...@@ -7,13 +7,12 @@
* https://www.openssl.org/source/license.html * https://www.openssl.org/source/license.html
*/ */
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <openssl/sha.h> #include <openssl/sha.h>
#include <openssl/evp.h> #include <openssl/evp.h>
#include "test_main.h"
#include "testutil.h"
static const unsigned char app_b1[SHA256_DIGEST_LENGTH] = { static const unsigned char app_b1[SHA256_DIGEST_LENGTH] = {
0xba, 0x78, 0x16, 0xbf, 0x8f, 0x01, 0xcf, 0xea, 0xba, 0x78, 0x16, 0xbf, 0x8f, 0x01, 0xcf, 0xea,
0x41, 0x41, 0x40, 0xde, 0x5d, 0xae, 0x22, 0x23, 0x41, 0x41, 0x40, 0xde, 0x5d, 0xae, 0x22, 0x23,
...@@ -56,122 +55,114 @@ static const unsigned char addenum_3[SHA224_DIGEST_LENGTH] = { ...@@ -56,122 +55,114 @@ static const unsigned char addenum_3[SHA224_DIGEST_LENGTH] = {
0x4e, 0xe7, 0xad, 0x67 0x4e, 0xe7, 0xad, 0x67
}; };
int main(int argc, char **argv) static int test_sha256_short(void)
{
unsigned char md[SHA256_DIGEST_LENGTH];
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));
}
static int test_sha256_long(void)
{ {
unsigned char md[SHA256_DIGEST_LENGTH]; unsigned char md[SHA256_DIGEST_LENGTH];
int i;
EVP_MD_CTX *evp;
fprintf(stdout, "Testing SHA-256 "); if (!TEST_true(EVP_Digest("abcdbcde" "cdefdefg" "efghfghi" "ghijhijk"
"ijkljklm" "klmnlmno" "mnopnopq", 56, md,
if (!EVP_Digest("abc", 3, md, NULL, EVP_sha256(), NULL)) NULL, EVP_sha256(), NULL)))
goto err; return 0;
if (memcmp(md, app_b1, sizeof(app_b1))) { return TEST_mem_eq(md, sizeof(md), app_b2, sizeof(app_b2));
fflush(stdout); }
fprintf(stderr, "\nTEST 1 of 3 failed.\n");
return 1; static int test_sha256_multi(void)
} else {
fprintf(stdout, "."); unsigned char md[SHA256_DIGEST_LENGTH];
fflush(stdout); int i, testresult = 0;
EVP_MD_CTX *evp;
if (!EVP_Digest("abcdbcde" "cdefdefg" "efghfghi" "ghijhijk" static const char *updstr = "aaaaaaaa" "aaaaaaaa" "aaaaaaaa" "aaaaaaaa"
"ijkljklm" "klmnlmno" "mnopnopq", 56, md, "aaaaaaaa" "aaaaaaaa" "aaaaaaaa" "aaaaaaaa"
NULL, EVP_sha256(), NULL)) "aaaaaaaa" "aaaaaaaa" "aaaaaaaa" "aaaaaaaa"
goto err; "aaaaaaaa" "aaaaaaaa" "aaaaaaaa" "aaaaaaaa"
if (memcmp(md, app_b2, sizeof(app_b2))) { "aaaaaaaa" "aaaaaaaa" "aaaaaaaa" "aaaaaaaa"
fflush(stdout); "aaaaaaaa" "aaaaaaaa" "aaaaaaaa" "aaaaaaaa"
fprintf(stderr, "\nTEST 2 of 3 failed.\n"); "aaaaaaaa" "aaaaaaaa" "aaaaaaaa" "aaaaaaaa"
return 1; "aaaaaaaa" "aaaaaaaa" "aaaaaaaa" "aaaaaaaa"
} else "aaaaaaaa" "aaaaaaaa" "aaaaaaaa" "aaaaaaaa";
fprintf(stdout, ".");
fflush(stdout);
evp = EVP_MD_CTX_new(); evp = EVP_MD_CTX_new();
if (evp == NULL) { if (!TEST_ptr(evp))
fflush(stdout); return 0;
fprintf(stderr, "\nTEST 3 of 3 failed. (malloc failure)\n"); if (!TEST_true(EVP_DigestInit_ex(evp, EVP_sha256(), NULL)))
return 1; goto end;
} for (i = 0; i < 1000000; i += 288)
if (!EVP_DigestInit_ex(evp, EVP_sha256(), NULL)) if (!TEST_true(EVP_DigestUpdate(evp, updstr,
goto err; (1000000 - i) < 288 ? 1000000 - i
for (i = 0; i < 1000000; i += 288) { : 288)))
if (!EVP_DigestUpdate(evp, "aaaaaaaa" "aaaaaaaa" "aaaaaaaa" "aaaaaaaa" goto end;
"aaaaaaaa" "aaaaaaaa" "aaaaaaaa" "aaaaaaaa" if (!TEST_true(EVP_DigestFinal_ex(evp, md, NULL))
"aaaaaaaa" "aaaaaaaa" "aaaaaaaa" "aaaaaaaa" || !TEST_mem_eq(md, sizeof(md), app_b3, sizeof(app_b3)))
"aaaaaaaa" "aaaaaaaa" "aaaaaaaa" "aaaaaaaa" goto end;
"aaaaaaaa" "aaaaaaaa" "aaaaaaaa" "aaaaaaaa"
"aaaaaaaa" "aaaaaaaa" "aaaaaaaa" "aaaaaaaa" testresult = 1;
"aaaaaaaa" "aaaaaaaa" "aaaaaaaa" "aaaaaaaa" end:
"aaaaaaaa" "aaaaaaaa" "aaaaaaaa" "aaaaaaaa"
"aaaaaaaa" "aaaaaaaa" "aaaaaaaa" "aaaaaaaa",
(1000000 - i) < 288 ? 1000000 - i : 288))
goto err;
}
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;
}
if (!EVP_DigestFinal_ex(evp, md, NULL))
goto err;
EVP_MD_CTX_free(evp); EVP_MD_CTX_free(evp);
return testresult;
}
if (memcmp(md, addenum_3, sizeof(addenum_3))) { static int test_sha224_short(void)
fflush(stdout); {
fprintf(stderr, "\nTEST 3 of 3 failed.\n"); unsigned char md[SHA224_DIGEST_LENGTH];
return 1;
} else
fprintf(stdout, ".");
fflush(stdout);
fprintf(stdout, " passed.\n"); if (!TEST_true(EVP_Digest("abc", 3, md, NULL, EVP_sha224(), NULL)))
fflush(stdout); return 0;
return TEST_mem_eq(md, sizeof(md), addenum_1, sizeof(addenum_1));
}
return 0; static int test_sha224_long(void)
{
unsigned char md[SHA224_DIGEST_LENGTH];
err: if (!TEST_true(EVP_Digest("abcdbcde" "cdefdefg" "efghfghi" "ghijhijk"
fprintf(stderr, "Fatal EVP error!\n"); "ijkljklm" "klmnlmno" "mnopnopq", 56, md,
return 1; 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;
}
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);
} }
/* /*
* 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 * Licensed under the OpenSSL license (the "License"). You may not use
* this file except in compliance with the License. You can obtain a copy * this file except in compliance with the License. You can obtain a copy
...@@ -7,13 +7,11 @@ ...@@ -7,13 +7,11 @@
* https://www.openssl.org/source/license.html * https://www.openssl.org/source/license.html
*/ */
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <openssl/sha.h> #include <openssl/sha.h>
#include <openssl/evp.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] = { static const unsigned char app_c1[SHA512_DIGEST_LENGTH] = {
0xdd, 0xaf, 0x35, 0xa1, 0x93, 0x61, 0x7a, 0xba, 0xdd, 0xaf, 0x35, 0xa1, 0x93, 0x61, 0x7a, 0xba,
...@@ -75,125 +73,118 @@ static const unsigned char app_d3[SHA384_DIGEST_LENGTH] = { ...@@ -75,125 +73,118 @@ static const unsigned char app_d3[SHA384_DIGEST_LENGTH] = {
0xae, 0x97, 0xdd, 0xd8, 0x7f, 0x3d, 0x89, 0x85 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]; 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;
if (!EVP_Digest("abc", 3, md, NULL, EVP_sha512(), NULL)) return TEST_mem_eq(md, sizeof(md), app_c1, sizeof(app_c1));
goto err; }
if (memcmp(md, app_c1, sizeof(app_c1))) {
fflush(stdout); static int test_sha512_long(void)
fprintf(stderr, "\nTEST 1 of 3 failed.\n"); {
return 1; unsigned char md[SHA512_DIGEST_LENGTH];
} else
fprintf(stdout, "."); if (!TEST_true(EVP_Digest("abcdefgh" "bcdefghi" "cdefghij" "defghijk"
fflush(stdout); "efghijkl" "fghijklm" "ghijklmn" "hijklmno"
"ijklmnop" "jklmnopq" "klmnopqr" "lmnopqrs"
if (!EVP_Digest("abcdefgh" "bcdefghi" "cdefghij" "defghijk" "mnopqrst" "nopqrstu", 112, md, NULL,
"efghijkl" "fghijklm" "ghijklmn" "hijklmno" EVP_sha512(), NULL)))
"ijklmnop" "jklmnopq" "klmnopqr" "lmnopqrs" return 0;
"mnopqrst" "nopqrstu", 112, md, NULL, EVP_sha512(), NULL)) return TEST_mem_eq(md, sizeof(md), app_c2, sizeof(app_c2));
goto err; }
if (memcmp(md, app_c2, sizeof(app_c2))) {
fflush(stdout); static int test_sha512_multi(void)
fprintf(stderr, "\nTEST 2 of 3 failed.\n"); {
return 1; unsigned char md[SHA512_DIGEST_LENGTH];
} else int i, testresult = 0;
fprintf(stdout, "."); EVP_MD_CTX *evp;
fflush(stdout); static const char *updstr = "aaaaaaaa" "aaaaaaaa" "aaaaaaaa" "aaaaaaaa"
"aaaaaaaa" "aaaaaaaa" "aaaaaaaa" "aaaaaaaa"
"aaaaaaaa" "aaaaaaaa" "aaaaaaaa" "aaaaaaaa"
"aaaaaaaa" "aaaaaaaa" "aaaaaaaa" "aaaaaaaa"
"aaaaaaaa" "aaaaaaaa" "aaaaaaaa" "aaaaaaaa"
"aaaaaaaa" "aaaaaaaa" "aaaaaaaa" "aaaaaaaa"
"aaaaaaaa" "aaaaaaaa" "aaaaaaaa" "aaaaaaaa"
"aaaaaaaa" "aaaaaaaa" "aaaaaaaa" "aaaaaaaa"
"aaaaaaaa" "aaaaaaaa" "aaaaaaaa" "aaaaaaaa";
evp = EVP_MD_CTX_new(); evp = EVP_MD_CTX_new();
if (evp == NULL) { if (!TEST_ptr(evp))
fflush(stdout); return 0;
fprintf(stderr, "\nTEST 3 of 3 failed. (malloc failure)\n"); if (!TEST_true(EVP_DigestInit_ex(evp, EVP_sha512(), NULL)))
return 1; goto end;
} for (i = 0; i < 1000000; i += 288)
if (!EVP_DigestInit_ex(evp, EVP_sha512(), NULL)) if (!TEST_true(EVP_DigestUpdate(evp, updstr,
goto err; (1000000 - i) < 288 ? 1000000 - i
for (i = 0; i < 1000000; i += 288) { : 288)))
if (!EVP_DigestUpdate(evp, "aaaaaaaa" "aaaaaaaa" "aaaaaaaa" "aaaaaaaa" goto end;
"aaaaaaaa" "aaaaaaaa" "aaaaaaaa" "aaaaaaaa" if (!TEST_true(EVP_DigestFinal_ex(evp, md, NULL))
"aaaaaaaa" "aaaaaaaa" "aaaaaaaa" "aaaaaaaa" || !TEST_mem_eq(md, sizeof(md), app_c3, sizeof(app_c3)))
"aaaaaaaa" "aaaaaaaa" "aaaaaaaa" "aaaaaaaa" goto end;
"aaaaaaaa" "aaaaaaaa" "aaaaaaaa" "aaaaaaaa"
"aaaaaaaa" "aaaaaaaa" "aaaaaaaa" "aaaaaaaa" testresult = 1;
"aaaaaaaa" "aaaaaaaa" "aaaaaaaa" "aaaaaaaa" end:
"aaaaaaaa" "aaaaaaaa" "aaaaaaaa" "aaaaaaaa"
"aaaaaaaa" "aaaaaaaa" "aaaaaaaa" "aaaaaaaa",
(1000000 - i) < 288 ? 1000000 - i : 288))
goto err;
}
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"
"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;
}
if (!EVP_DigestFinal_ex(evp, md, NULL))
goto err;
EVP_MD_CTX_free(evp); EVP_MD_CTX_free(evp);
return testresult;
}
if (memcmp(md, app_d3, sizeof(app_d3))) { static int test_sha384_short(void)
fflush(stdout); {
fprintf(stderr, "\nTEST 3 of 3 failed.\n"); unsigned char md[SHA384_DIGEST_LENGTH];
return 1;
} else
fprintf(stdout, ".");
fflush(stdout);
fprintf(stdout, " passed.\n"); if (!TEST_true(EVP_Digest("abc", 3, md, NULL, EVP_sha384(), NULL)))
fflush(stdout); return 0;
return TEST_mem_eq(md, sizeof(md), app_d1, sizeof(app_d1));
}
return 0; 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)))
return 0;
return TEST_mem_eq(md, sizeof(md), app_d2, sizeof(app_d2));
}
err: static int test_sha384_multi(void)
fflush(stdout); {
fprintf(stderr, "\nFatal EVP error!\n"); unsigned char md[SHA384_DIGEST_LENGTH];
return 1; 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;
}
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);
} }
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册