]> git.ipfire.org Git - thirdparty/openssl.git/blame - crypto/sha/sha512t.c
Run util/openssl-format-source -v -c .
[thirdparty/openssl.git] / crypto / sha / sha512t.c
CommitLineData
c842261b
AP
1/* crypto/sha/sha512t.c */
2/* ====================================================================
3 * Copyright (c) 2004 The OpenSSL Project. All rights reserved.
4 * ====================================================================
5 */
6#include <stdio.h>
7#include <string.h>
8#include <stdlib.h>
9
10#include <openssl/sha.h>
e39c2548 11#include <openssl/evp.h>
2b247cf8 12#include <openssl/crypto.h>
c842261b 13
31e4ad25
AP
14#if defined(OPENSSL_NO_SHA) || defined(OPENSSL_NO_SHA512)
15int main(int argc, char *argv[])
16{
17 printf("No SHA512 support\n");
40720ce3 18 return (0);
31e4ad25
AP
19}
20#else
21
c842261b 22unsigned char app_c1[SHA512_DIGEST_LENGTH] = {
40720ce3
MC
23 0xdd, 0xaf, 0x35, 0xa1, 0x93, 0x61, 0x7a, 0xba,
24 0xcc, 0x41, 0x73, 0x49, 0xae, 0x20, 0x41, 0x31,
25 0x12, 0xe6, 0xfa, 0x4e, 0x89, 0xa9, 0x7e, 0xa2,
26 0x0a, 0x9e, 0xee, 0xe6, 0x4b, 0x55, 0xd3, 0x9a,
27 0x21, 0x92, 0x99, 0x2a, 0x27, 0x4f, 0xc1, 0xa8,
28 0x36, 0xba, 0x3c, 0x23, 0xa3, 0xfe, 0xeb, 0xbd,
29 0x45, 0x4d, 0x44, 0x23, 0x64, 0x3c, 0xe8, 0x0e,
30 0x2a, 0x9a, 0xc9, 0x4f, 0xa5, 0x4c, 0xa4, 0x9f
31};
c842261b
AP
32
33unsigned char app_c2[SHA512_DIGEST_LENGTH] = {
40720ce3
MC
34 0x8e, 0x95, 0x9b, 0x75, 0xda, 0xe3, 0x13, 0xda,
35 0x8c, 0xf4, 0xf7, 0x28, 0x14, 0xfc, 0x14, 0x3f,
36 0x8f, 0x77, 0x79, 0xc6, 0xeb, 0x9f, 0x7f, 0xa1,
37 0x72, 0x99, 0xae, 0xad, 0xb6, 0x88, 0x90, 0x18,
38 0x50, 0x1d, 0x28, 0x9e, 0x49, 0x00, 0xf7, 0xe4,
39 0x33, 0x1b, 0x99, 0xde, 0xc4, 0xb5, 0x43, 0x3a,
40 0xc7, 0xd3, 0x29, 0xee, 0xb6, 0xdd, 0x26, 0x54,
41 0x5e, 0x96, 0xe5, 0x5b, 0x87, 0x4b, 0xe9, 0x09
42};
c842261b
AP
43
44unsigned char app_c3[SHA512_DIGEST_LENGTH] = {
40720ce3
MC
45 0xe7, 0x18, 0x48, 0x3d, 0x0c, 0xe7, 0x69, 0x64,
46 0x4e, 0x2e, 0x42, 0xc7, 0xbc, 0x15, 0xb4, 0x63,
47 0x8e, 0x1f, 0x98, 0xb1, 0x3b, 0x20, 0x44, 0x28,
48 0x56, 0x32, 0xa8, 0x03, 0xaf, 0xa9, 0x73, 0xeb,
49 0xde, 0x0f, 0xf2, 0x44, 0x87, 0x7e, 0xa6, 0x0a,
50 0x4c, 0xb0, 0x43, 0x2c, 0xe5, 0x77, 0xc3, 0x1b,
51 0xeb, 0x00, 0x9c, 0x5c, 0x2c, 0x49, 0xaa, 0x2e,
52 0x4e, 0xad, 0xb2, 0x17, 0xad, 0x8c, 0xc0, 0x9b
53};
c842261b
AP
54
55unsigned char app_d1[SHA384_DIGEST_LENGTH] = {
40720ce3
MC
56 0xcb, 0x00, 0x75, 0x3f, 0x45, 0xa3, 0x5e, 0x8b,
57 0xb5, 0xa0, 0x3d, 0x69, 0x9a, 0xc6, 0x50, 0x07,
58 0x27, 0x2c, 0x32, 0xab, 0x0e, 0xde, 0xd1, 0x63,
59 0x1a, 0x8b, 0x60, 0x5a, 0x43, 0xff, 0x5b, 0xed,
60 0x80, 0x86, 0x07, 0x2b, 0xa1, 0xe7, 0xcc, 0x23,
61 0x58, 0xba, 0xec, 0xa1, 0x34, 0xc8, 0x25, 0xa7
62};
c842261b
AP
63
64unsigned char app_d2[SHA384_DIGEST_LENGTH] = {
40720ce3
MC
65 0x09, 0x33, 0x0c, 0x33, 0xf7, 0x11, 0x47, 0xe8,
66 0x3d, 0x19, 0x2f, 0xc7, 0x82, 0xcd, 0x1b, 0x47,
67 0x53, 0x11, 0x1b, 0x17, 0x3b, 0x3b, 0x05, 0xd2,
68 0x2f, 0xa0, 0x80, 0x86, 0xe3, 0xb0, 0xf7, 0x12,
69 0xfc, 0xc7, 0xc7, 0x1a, 0x55, 0x7e, 0x2d, 0xb9,
70 0x66, 0xc3, 0xe9, 0xfa, 0x91, 0x74, 0x60, 0x39
71};
c842261b
AP
72
73unsigned char app_d3[SHA384_DIGEST_LENGTH] = {
40720ce3
MC
74 0x9d, 0x0e, 0x18, 0x09, 0x71, 0x64, 0x74, 0xcb,
75 0x08, 0x6e, 0x83, 0x4e, 0x31, 0x0a, 0x4a, 0x1c,
76 0xed, 0x14, 0x9e, 0x9c, 0x00, 0xf2, 0x48, 0x52,
77 0x79, 0x72, 0xce, 0xc5, 0x70, 0x4c, 0x2a, 0x5b,
78 0x07, 0xb8, 0xb3, 0xdc, 0x38, 0xec, 0xc4, 0xeb,
79 0xae, 0x97, 0xdd, 0xd8, 0x7f, 0x3d, 0x89, 0x85
80};
81
82int main(int argc, char **argv)
83{
84 unsigned char md[SHA512_DIGEST_LENGTH];
85 int i;
86 EVP_MD_CTX evp;
87
88# ifdef OPENSSL_IA32_SSE2
89 /*
90 * Alternative to this is to call OpenSSL_add_all_algorithms... The below
91 * code is retained exclusively for debugging purposes.
92 */
93 {
94 char *env;
95
96 if ((env = getenv("OPENSSL_ia32cap")))
97 OPENSSL_ia32cap = strtoul(env, NULL, 0);
c842261b 98 }
40720ce3
MC
99# endif
100
101 fprintf(stdout, "Testing SHA-512 ");
102
103 EVP_Digest("abc", 3, md, NULL, EVP_sha512(), NULL);
104 if (memcmp(md, app_c1, sizeof(app_c1))) {
105 fflush(stdout);
106 fprintf(stderr, "\nTEST 1 of 3 failed.\n");
107 return 1;
108 } else
109 fprintf(stdout, ".");
110 fflush(stdout);
111
112 EVP_Digest("abcdefgh" "bcdefghi" "cdefghij" "defghijk"
113 "efghijkl" "fghijklm" "ghijklmn" "hijklmno"
114 "ijklmnop" "jklmnopq" "klmnopqr" "lmnopqrs"
115 "mnopqrst" "nopqrstu", 112, md, NULL, EVP_sha512(), NULL);
116 if (memcmp(md, app_c2, sizeof(app_c2))) {
117 fflush(stdout);
118 fprintf(stderr, "\nTEST 2 of 3 failed.\n");
119 return 1;
120 } else
121 fprintf(stdout, ".");
122 fflush(stdout);
123
124 EVP_MD_CTX_init(&evp);
125 EVP_DigestInit_ex(&evp, EVP_sha512(), NULL);
126 for (i = 0; i < 1000000; i += 288)
127 EVP_DigestUpdate(&evp, "aaaaaaaa" "aaaaaaaa" "aaaaaaaa" "aaaaaaaa"
128 "aaaaaaaa" "aaaaaaaa" "aaaaaaaa" "aaaaaaaa"
129 "aaaaaaaa" "aaaaaaaa" "aaaaaaaa" "aaaaaaaa"
130 "aaaaaaaa" "aaaaaaaa" "aaaaaaaa" "aaaaaaaa"
131 "aaaaaaaa" "aaaaaaaa" "aaaaaaaa" "aaaaaaaa"
132 "aaaaaaaa" "aaaaaaaa" "aaaaaaaa" "aaaaaaaa"
133 "aaaaaaaa" "aaaaaaaa" "aaaaaaaa" "aaaaaaaa"
134 "aaaaaaaa" "aaaaaaaa" "aaaaaaaa" "aaaaaaaa"
135 "aaaaaaaa" "aaaaaaaa" "aaaaaaaa" "aaaaaaaa",
136 (1000000 - i) < 288 ? 1000000 - i : 288);
137 EVP_DigestFinal_ex(&evp, md, NULL);
138 EVP_MD_CTX_cleanup(&evp);
139
140 if (memcmp(md, app_c3, sizeof(app_c3))) {
141 fflush(stdout);
142 fprintf(stderr, "\nTEST 3 of 3 failed.\n");
143 return 1;
144 } else
145 fprintf(stdout, ".");
146 fflush(stdout);
147
148 fprintf(stdout, " passed.\n");
149 fflush(stdout);
150
151 fprintf(stdout, "Testing SHA-384 ");
152
153 EVP_Digest("abc", 3, md, NULL, EVP_sha384(), NULL);
154 if (memcmp(md, app_d1, sizeof(app_d1))) {
155 fflush(stdout);
156 fprintf(stderr, "\nTEST 1 of 3 failed.\n");
157 return 1;
158 } else
159 fprintf(stdout, ".");
160 fflush(stdout);
161
162 EVP_Digest("abcdefgh" "bcdefghi" "cdefghij" "defghijk"
163 "efghijkl" "fghijklm" "ghijklmn" "hijklmno"
164 "ijklmnop" "jklmnopq" "klmnopqr" "lmnopqrs"
165 "mnopqrst" "nopqrstu", 112, md, NULL, EVP_sha384(), NULL);
166 if (memcmp(md, app_d2, sizeof(app_d2))) {
167 fflush(stdout);
168 fprintf(stderr, "\nTEST 2 of 3 failed.\n");
169 return 1;
170 } else
171 fprintf(stdout, ".");
172 fflush(stdout);
173
174 EVP_MD_CTX_init(&evp);
175 EVP_DigestInit_ex(&evp, EVP_sha384(), NULL);
176 for (i = 0; i < 1000000; i += 64)
177 EVP_DigestUpdate(&evp, "aaaaaaaa" "aaaaaaaa" "aaaaaaaa" "aaaaaaaa"
178 "aaaaaaaa" "aaaaaaaa" "aaaaaaaa" "aaaaaaaa",
179 (1000000 - i) < 64 ? 1000000 - i : 64);
180 EVP_DigestFinal_ex(&evp, md, NULL);
181 EVP_MD_CTX_cleanup(&evp);
182
183 if (memcmp(md, app_d3, sizeof(app_d3))) {
184 fflush(stdout);
185 fprintf(stderr, "\nTEST 3 of 3 failed.\n");
186 return 1;
187 } else
188 fprintf(stdout, ".");
189 fflush(stdout);
190
191 fprintf(stdout, " passed.\n");
192 fflush(stdout);
193
194 return 0;
c842261b 195}
31e4ad25 196#endif