mirror of
https://github.com/openssl/openssl.git
synced 2024-11-27 05:21:51 +08:00
474e469bbd
Remove support for SHA0 and DSS0 (they were broken), and remove the ability to attempt to build without SHA (it didn't work). For simplicity, remove the option of not building various SHA algorithms; you could argue that SHA_224/256/384/512 should be kept, since they're like crypto algorithms, but I decided to go the other way. So these options are gone: GENUINE_DSA OPENSSL_NO_SHA0 OPENSSL_NO_SHA OPENSSL_NO_SHA1 OPENSSL_NO_SHA224 OPENSSL_NO_SHA256 OPENSSL_NO_SHA384 OPENSSL_NO_SHA512 Reviewed-by: Richard Levitte <levitte@openssl.org>
188 lines
6.5 KiB
C
188 lines
6.5 KiB
C
/* crypto/sha/sha512t.c */
|
|
/* ====================================================================
|
|
* Copyright (c) 2004 The OpenSSL Project. All rights reserved.
|
|
* ====================================================================
|
|
*/
|
|
#include <stdio.h>
|
|
#include <string.h>
|
|
#include <stdlib.h>
|
|
|
|
#include <openssl/sha.h>
|
|
#include <openssl/evp.h>
|
|
#include <openssl/crypto.h>
|
|
|
|
unsigned char app_c1[SHA512_DIGEST_LENGTH] = {
|
|
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
|
|
};
|
|
|
|
unsigned char app_c2[SHA512_DIGEST_LENGTH] = {
|
|
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
|
|
};
|
|
|
|
unsigned char app_c3[SHA512_DIGEST_LENGTH] = {
|
|
0xe7, 0x18, 0x48, 0x3d, 0x0c, 0xe7, 0x69, 0x64,
|
|
0x4e, 0x2e, 0x42, 0xc7, 0xbc, 0x15, 0xb4, 0x63,
|
|
0x8e, 0x1f, 0x98, 0xb1, 0x3b, 0x20, 0x44, 0x28,
|
|
0x56, 0x32, 0xa8, 0x03, 0xaf, 0xa9, 0x73, 0xeb,
|
|
0xde, 0x0f, 0xf2, 0x44, 0x87, 0x7e, 0xa6, 0x0a,
|
|
0x4c, 0xb0, 0x43, 0x2c, 0xe5, 0x77, 0xc3, 0x1b,
|
|
0xeb, 0x00, 0x9c, 0x5c, 0x2c, 0x49, 0xaa, 0x2e,
|
|
0x4e, 0xad, 0xb2, 0x17, 0xad, 0x8c, 0xc0, 0x9b
|
|
};
|
|
|
|
unsigned char app_d1[SHA384_DIGEST_LENGTH] = {
|
|
0xcb, 0x00, 0x75, 0x3f, 0x45, 0xa3, 0x5e, 0x8b,
|
|
0xb5, 0xa0, 0x3d, 0x69, 0x9a, 0xc6, 0x50, 0x07,
|
|
0x27, 0x2c, 0x32, 0xab, 0x0e, 0xde, 0xd1, 0x63,
|
|
0x1a, 0x8b, 0x60, 0x5a, 0x43, 0xff, 0x5b, 0xed,
|
|
0x80, 0x86, 0x07, 0x2b, 0xa1, 0xe7, 0xcc, 0x23,
|
|
0x58, 0xba, 0xec, 0xa1, 0x34, 0xc8, 0x25, 0xa7
|
|
};
|
|
|
|
unsigned char app_d2[SHA384_DIGEST_LENGTH] = {
|
|
0x09, 0x33, 0x0c, 0x33, 0xf7, 0x11, 0x47, 0xe8,
|
|
0x3d, 0x19, 0x2f, 0xc7, 0x82, 0xcd, 0x1b, 0x47,
|
|
0x53, 0x11, 0x1b, 0x17, 0x3b, 0x3b, 0x05, 0xd2,
|
|
0x2f, 0xa0, 0x80, 0x86, 0xe3, 0xb0, 0xf7, 0x12,
|
|
0xfc, 0xc7, 0xc7, 0x1a, 0x55, 0x7e, 0x2d, 0xb9,
|
|
0x66, 0xc3, 0xe9, 0xfa, 0x91, 0x74, 0x60, 0x39
|
|
};
|
|
|
|
unsigned char app_d3[SHA384_DIGEST_LENGTH] = {
|
|
0x9d, 0x0e, 0x18, 0x09, 0x71, 0x64, 0x74, 0xcb,
|
|
0x08, 0x6e, 0x83, 0x4e, 0x31, 0x0a, 0x4a, 0x1c,
|
|
0xed, 0x14, 0x9e, 0x9c, 0x00, 0xf2, 0x48, 0x52,
|
|
0x79, 0x72, 0xce, 0xc5, 0x70, 0x4c, 0x2a, 0x5b,
|
|
0x07, 0xb8, 0xb3, 0xdc, 0x38, 0xec, 0xc4, 0xeb,
|
|
0xae, 0x97, 0xdd, 0xd8, 0x7f, 0x3d, 0x89, 0x85
|
|
};
|
|
|
|
int main(int argc, char **argv)
|
|
{
|
|
unsigned char md[SHA512_DIGEST_LENGTH];
|
|
int i;
|
|
EVP_MD_CTX evp;
|
|
|
|
# ifdef OPENSSL_IA32_SSE2
|
|
/*
|
|
* Alternative to this is to call OpenSSL_add_all_algorithms... The below
|
|
* code is retained exclusively for debugging purposes.
|
|
*/
|
|
{
|
|
char *env;
|
|
|
|
if ((env = getenv("OPENSSL_ia32cap")))
|
|
OPENSSL_ia32cap = strtoul(env, NULL, 0);
|
|
}
|
|
# endif
|
|
|
|
fprintf(stdout, "Testing SHA-512 ");
|
|
|
|
EVP_Digest("abc", 3, md, NULL, EVP_sha512(), NULL);
|
|
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);
|
|
|
|
EVP_Digest("abcdefgh" "bcdefghi" "cdefghij" "defghijk"
|
|
"efghijkl" "fghijklm" "ghijklmn" "hijklmno"
|
|
"ijklmnop" "jklmnopq" "klmnopqr" "lmnopqrs"
|
|
"mnopqrst" "nopqrstu", 112, md, NULL, EVP_sha512(), NULL);
|
|
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_MD_CTX_init(&evp);
|
|
EVP_DigestInit_ex(&evp, EVP_sha512(), NULL);
|
|
for (i = 0; i < 1000000; i += 288)
|
|
EVP_DigestUpdate(&evp, "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",
|
|
(1000000 - i) < 288 ? 1000000 - i : 288);
|
|
EVP_DigestFinal_ex(&evp, md, NULL);
|
|
EVP_MD_CTX_cleanup(&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 ");
|
|
|
|
EVP_Digest("abc", 3, md, NULL, EVP_sha384(), NULL);
|
|
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);
|
|
|
|
EVP_Digest("abcdefgh" "bcdefghi" "cdefghij" "defghijk"
|
|
"efghijkl" "fghijklm" "ghijklmn" "hijklmno"
|
|
"ijklmnop" "jklmnopq" "klmnopqr" "lmnopqrs"
|
|
"mnopqrst" "nopqrstu", 112, md, NULL, EVP_sha384(), NULL);
|
|
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);
|
|
|
|
EVP_MD_CTX_init(&evp);
|
|
EVP_DigestInit_ex(&evp, EVP_sha384(), NULL);
|
|
for (i = 0; i < 1000000; i += 64)
|
|
EVP_DigestUpdate(&evp, "aaaaaaaa" "aaaaaaaa" "aaaaaaaa" "aaaaaaaa"
|
|
"aaaaaaaa" "aaaaaaaa" "aaaaaaaa" "aaaaaaaa",
|
|
(1000000 - i) < 64 ? 1000000 - i : 64);
|
|
EVP_DigestFinal_ex(&evp, md, NULL);
|
|
EVP_MD_CTX_cleanup(&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);
|
|
|
|
return 0;
|
|
}
|