]> git.ipfire.org Git - thirdparty/openssl.git/blame - test/sha256t.c
Configure,test/recipes: "pin" glob to File::Glob::glob.
[thirdparty/openssl.git] / test / sha256t.c
CommitLineData
440e5d80
RS
1/*
2 * Copyright 2004-2016 The OpenSSL Project Authors. All Rights Reserved.
3 *
4 * Licensed under the OpenSSL license (the "License"). You may not use
5 * this file except in compliance with the License. You can obtain a copy
6 * in the file LICENSE in the source distribution or at
7 * https://www.openssl.org/source/license.html
c842261b 8 */
440e5d80 9
c842261b
AP
10#include <stdio.h>
11#include <string.h>
12#include <stdlib.h>
13
14#include <openssl/sha.h>
e39c2548 15#include <openssl/evp.h>
c842261b 16
df2ee0e2 17static const unsigned char app_b1[SHA256_DIGEST_LENGTH] = {
0f113f3e
MC
18 0xba, 0x78, 0x16, 0xbf, 0x8f, 0x01, 0xcf, 0xea,
19 0x41, 0x41, 0x40, 0xde, 0x5d, 0xae, 0x22, 0x23,
20 0xb0, 0x03, 0x61, 0xa3, 0x96, 0x17, 0x7a, 0x9c,
21 0xb4, 0x10, 0xff, 0x61, 0xf2, 0x00, 0x15, 0xad
22};
c842261b 23
df2ee0e2 24static const unsigned char app_b2[SHA256_DIGEST_LENGTH] = {
0f113f3e
MC
25 0x24, 0x8d, 0x6a, 0x61, 0xd2, 0x06, 0x38, 0xb8,
26 0xe5, 0xc0, 0x26, 0x93, 0x0c, 0x3e, 0x60, 0x39,
27 0xa3, 0x3c, 0xe4, 0x59, 0x64, 0xff, 0x21, 0x67,
28 0xf6, 0xec, 0xed, 0xd4, 0x19, 0xdb, 0x06, 0xc1
29};
c842261b 30
df2ee0e2 31static const unsigned char app_b3[SHA256_DIGEST_LENGTH] = {
0f113f3e
MC
32 0xcd, 0xc7, 0x6e, 0x5c, 0x99, 0x14, 0xfb, 0x92,
33 0x81, 0xa1, 0xc7, 0xe2, 0x84, 0xd7, 0x3e, 0x67,
34 0xf1, 0x80, 0x9a, 0x48, 0xa4, 0x97, 0x20, 0x0e,
35 0x04, 0x6d, 0x39, 0xcc, 0xc7, 0x11, 0x2c, 0xd0
36};
c842261b 37
df2ee0e2 38static const unsigned char addenum_1[SHA224_DIGEST_LENGTH] = {
0f113f3e
MC
39 0x23, 0x09, 0x7d, 0x22, 0x34, 0x05, 0xd8, 0x22,
40 0x86, 0x42, 0xa4, 0x77, 0xbd, 0xa2, 0x55, 0xb3,
41 0x2a, 0xad, 0xbc, 0xe4, 0xbd, 0xa0, 0xb3, 0xf7,
42 0xe3, 0x6c, 0x9d, 0xa7
43};
da8348e9 44
df2ee0e2 45static const unsigned char addenum_2[SHA224_DIGEST_LENGTH] = {
0f113f3e
MC
46 0x75, 0x38, 0x8b, 0x16, 0x51, 0x27, 0x76, 0xcc,
47 0x5d, 0xba, 0x5d, 0xa1, 0xfd, 0x89, 0x01, 0x50,
48 0xb0, 0xc6, 0x45, 0x5c, 0xb4, 0xf5, 0x8b, 0x19,
49 0x52, 0x52, 0x25, 0x25
50};
da8348e9 51
df2ee0e2 52static const unsigned char addenum_3[SHA224_DIGEST_LENGTH] = {
0f113f3e
MC
53 0x20, 0x79, 0x46, 0x55, 0x98, 0x0c, 0x91, 0xd8,
54 0xbb, 0xb4, 0xc1, 0xea, 0x97, 0x61, 0x8a, 0x4b,
55 0xf0, 0x3f, 0x42, 0x58, 0x19, 0x48, 0xb2, 0xee,
56 0x4e, 0xe7, 0xad, 0x67
57};
58
59int main(int argc, char **argv)
60{
61 unsigned char md[SHA256_DIGEST_LENGTH];
62 int i;
6e59a892 63 EVP_MD_CTX *evp;
0f113f3e
MC
64
65 fprintf(stdout, "Testing SHA-256 ");
66
67 EVP_Digest("abc", 3, md, NULL, EVP_sha256(), NULL);
68 if (memcmp(md, app_b1, sizeof(app_b1))) {
69 fflush(stdout);
70 fprintf(stderr, "\nTEST 1 of 3 failed.\n");
71 return 1;
72 } else
73 fprintf(stdout, ".");
74 fflush(stdout);
75
76 EVP_Digest("abcdbcde" "cdefdefg" "efghfghi" "ghijhijk"
77 "ijkljklm" "klmnlmno" "mnopnopq", 56, md, NULL, EVP_sha256(),
78 NULL);
79 if (memcmp(md, app_b2, sizeof(app_b2))) {
80 fflush(stdout);
81 fprintf(stderr, "\nTEST 2 of 3 failed.\n");
82 return 1;
83 } else
84 fprintf(stdout, ".");
85 fflush(stdout);
86
bfb0641f 87 evp = EVP_MD_CTX_new();
6e59a892
RL
88 if (evp == NULL) {
89 fflush(stdout);
90 fprintf(stderr, "\nTEST 3 of 3 failed. (malloc failure)\n");
91 return 1;
92 }
93 EVP_DigestInit_ex(evp, EVP_sha256(), NULL);
0f113f3e 94 for (i = 0; i < 1000000; i += 288)
6e59a892 95 EVP_DigestUpdate(evp, "aaaaaaaa" "aaaaaaaa" "aaaaaaaa" "aaaaaaaa"
0f113f3e
MC
96 "aaaaaaaa" "aaaaaaaa" "aaaaaaaa" "aaaaaaaa"
97 "aaaaaaaa" "aaaaaaaa" "aaaaaaaa" "aaaaaaaa"
98 "aaaaaaaa" "aaaaaaaa" "aaaaaaaa" "aaaaaaaa"
99 "aaaaaaaa" "aaaaaaaa" "aaaaaaaa" "aaaaaaaa"
100 "aaaaaaaa" "aaaaaaaa" "aaaaaaaa" "aaaaaaaa"
101 "aaaaaaaa" "aaaaaaaa" "aaaaaaaa" "aaaaaaaa"
102 "aaaaaaaa" "aaaaaaaa" "aaaaaaaa" "aaaaaaaa"
103 "aaaaaaaa" "aaaaaaaa" "aaaaaaaa" "aaaaaaaa",
104 (1000000 - i) < 288 ? 1000000 - i : 288);
6e59a892 105 EVP_DigestFinal_ex(evp, md, NULL);
0f113f3e
MC
106
107 if (memcmp(md, app_b3, sizeof(app_b3))) {
108 fflush(stdout);
109 fprintf(stderr, "\nTEST 3 of 3 failed.\n");
110 return 1;
111 } else
112 fprintf(stdout, ".");
113 fflush(stdout);
114
115 fprintf(stdout, " passed.\n");
116 fflush(stdout);
117
118 fprintf(stdout, "Testing SHA-224 ");
119
120 EVP_Digest("abc", 3, md, NULL, EVP_sha224(), NULL);
121 if (memcmp(md, addenum_1, sizeof(addenum_1))) {
122 fflush(stdout);
123 fprintf(stderr, "\nTEST 1 of 3 failed.\n");
124 return 1;
125 } else
126 fprintf(stdout, ".");
127 fflush(stdout);
128
129 EVP_Digest("abcdbcde" "cdefdefg" "efghfghi" "ghijhijk"
130 "ijkljklm" "klmnlmno" "mnopnopq", 56, md, NULL, EVP_sha224(),
131 NULL);
132 if (memcmp(md, addenum_2, sizeof(addenum_2))) {
133 fflush(stdout);
134 fprintf(stderr, "\nTEST 2 of 3 failed.\n");
135 return 1;
136 } else
137 fprintf(stdout, ".");
138 fflush(stdout);
139
bfb0641f 140 EVP_MD_CTX_reset(evp);
6e59a892 141 EVP_DigestInit_ex(evp, EVP_sha224(), NULL);
0f113f3e 142 for (i = 0; i < 1000000; i += 64)
6e59a892 143 EVP_DigestUpdate(evp, "aaaaaaaa" "aaaaaaaa" "aaaaaaaa" "aaaaaaaa"
0f113f3e
MC
144 "aaaaaaaa" "aaaaaaaa" "aaaaaaaa" "aaaaaaaa",
145 (1000000 - i) < 64 ? 1000000 - i : 64);
6e59a892 146 EVP_DigestFinal_ex(evp, md, NULL);
bfb0641f 147 EVP_MD_CTX_free(evp);
0f113f3e
MC
148
149 if (memcmp(md, addenum_3, sizeof(addenum_3))) {
150 fflush(stdout);
151 fprintf(stderr, "\nTEST 3 of 3 failed.\n");
152 return 1;
153 } else
154 fprintf(stdout, ".");
155 fflush(stdout);
156
157 fprintf(stdout, " passed.\n");
158 fflush(stdout);
159
160 return 0;
c842261b 161}