]> git.ipfire.org Git - thirdparty/openssl.git/blob - crypto/sha/sha512t.c
Run util/openssl-format-source -v -c .
[thirdparty/openssl.git] / crypto / sha / sha512t.c
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>
11 #include <openssl/evp.h>
12 #include <openssl/crypto.h>
13
14 #if defined(OPENSSL_NO_SHA) || defined(OPENSSL_NO_SHA512)
15 int main(int argc, char *argv[])
16 {
17 printf("No SHA512 support\n");
18 return (0);
19 }
20 #else
21
22 unsigned char app_c1[SHA512_DIGEST_LENGTH] = {
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 };
32
33 unsigned char app_c2[SHA512_DIGEST_LENGTH] = {
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 };
43
44 unsigned char app_c3[SHA512_DIGEST_LENGTH] = {
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 };
54
55 unsigned char app_d1[SHA384_DIGEST_LENGTH] = {
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 };
63
64 unsigned char app_d2[SHA384_DIGEST_LENGTH] = {
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 };
72
73 unsigned char app_d3[SHA384_DIGEST_LENGTH] = {
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
82 int 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);
98 }
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;
195 }
196 #endif