Branch data Line data Source code
1 : : /* crypto/sha/sha256t.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 : :
13 : : #if defined(OPENSSL_NO_SHA) || defined(OPENSSL_NO_SHA256)
14 : : int main(int argc, char *argv[])
15 : : {
16 : : printf("No SHA256 support\n");
17 : : return(0);
18 : : }
19 : : #else
20 : :
21 : : unsigned char app_b1[SHA256_DIGEST_LENGTH] = {
22 : : 0xba,0x78,0x16,0xbf,0x8f,0x01,0xcf,0xea,
23 : : 0x41,0x41,0x40,0xde,0x5d,0xae,0x22,0x23,
24 : : 0xb0,0x03,0x61,0xa3,0x96,0x17,0x7a,0x9c,
25 : : 0xb4,0x10,0xff,0x61,0xf2,0x00,0x15,0xad };
26 : :
27 : : unsigned char app_b2[SHA256_DIGEST_LENGTH] = {
28 : : 0x24,0x8d,0x6a,0x61,0xd2,0x06,0x38,0xb8,
29 : : 0xe5,0xc0,0x26,0x93,0x0c,0x3e,0x60,0x39,
30 : : 0xa3,0x3c,0xe4,0x59,0x64,0xff,0x21,0x67,
31 : : 0xf6,0xec,0xed,0xd4,0x19,0xdb,0x06,0xc1 };
32 : :
33 : : unsigned char app_b3[SHA256_DIGEST_LENGTH] = {
34 : : 0xcd,0xc7,0x6e,0x5c,0x99,0x14,0xfb,0x92,
35 : : 0x81,0xa1,0xc7,0xe2,0x84,0xd7,0x3e,0x67,
36 : : 0xf1,0x80,0x9a,0x48,0xa4,0x97,0x20,0x0e,
37 : : 0x04,0x6d,0x39,0xcc,0xc7,0x11,0x2c,0xd0 };
38 : :
39 : : unsigned char addenum_1[SHA224_DIGEST_LENGTH] = {
40 : : 0x23,0x09,0x7d,0x22,0x34,0x05,0xd8,0x22,
41 : : 0x86,0x42,0xa4,0x77,0xbd,0xa2,0x55,0xb3,
42 : : 0x2a,0xad,0xbc,0xe4,0xbd,0xa0,0xb3,0xf7,
43 : : 0xe3,0x6c,0x9d,0xa7 };
44 : :
45 : : unsigned char addenum_2[SHA224_DIGEST_LENGTH] = {
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 : :
51 : : unsigned char addenum_3[SHA224_DIGEST_LENGTH] = {
52 : : 0x20,0x79,0x46,0x55,0x98,0x0c,0x91,0xd8,
53 : : 0xbb,0xb4,0xc1,0xea,0x97,0x61,0x8a,0x4b,
54 : : 0xf0,0x3f,0x42,0x58,0x19,0x48,0xb2,0xee,
55 : : 0x4e,0xe7,0xad,0x67 };
56 : :
57 : 1 : int main (int argc,char **argv)
58 : : { unsigned char md[SHA256_DIGEST_LENGTH];
59 : : int i;
60 : : EVP_MD_CTX evp;
61 : :
62 : 1 : fprintf(stdout,"Testing SHA-256 ");
63 : :
64 : 1 : EVP_Digest ("abc",3,md,NULL,EVP_sha256(),NULL);
65 [ - + ]: 1 : if (memcmp(md,app_b1,sizeof(app_b1)))
66 : 0 : { fflush(stdout);
67 : 0 : fprintf(stderr,"\nTEST 1 of 3 failed.\n");
68 : 0 : return 1;
69 : : }
70 : : else
71 : 1 : fprintf(stdout,"."); fflush(stdout);
72 : :
73 : 1 : EVP_Digest ("abcdbcde""cdefdefg""efghfghi""ghijhijk"
74 : : "ijkljklm""klmnlmno""mnopnopq",56,md,NULL,EVP_sha256(),NULL);
75 [ - + ]: 1 : if (memcmp(md,app_b2,sizeof(app_b2)))
76 : 0 : { fflush(stdout);
77 : 0 : fprintf(stderr,"\nTEST 2 of 3 failed.\n");
78 : 0 : return 1;
79 : : }
80 : : else
81 : 1 : fprintf(stdout,"."); fflush(stdout);
82 : :
83 : 1 : EVP_MD_CTX_init (&evp);
84 : 1 : EVP_DigestInit_ex (&evp,EVP_sha256(),NULL);
85 [ + + ]: 3474 : for (i=0;i<1000000;i+=288)
86 : 3473 : EVP_DigestUpdate (&evp, "aaaaaaaa""aaaaaaaa""aaaaaaaa""aaaaaaaa"
87 : : "aaaaaaaa""aaaaaaaa""aaaaaaaa""aaaaaaaa"
88 : : "aaaaaaaa""aaaaaaaa""aaaaaaaa""aaaaaaaa"
89 : : "aaaaaaaa""aaaaaaaa""aaaaaaaa""aaaaaaaa"
90 : : "aaaaaaaa""aaaaaaaa""aaaaaaaa""aaaaaaaa"
91 : : "aaaaaaaa""aaaaaaaa""aaaaaaaa""aaaaaaaa"
92 : : "aaaaaaaa""aaaaaaaa""aaaaaaaa""aaaaaaaa"
93 : : "aaaaaaaa""aaaaaaaa""aaaaaaaa""aaaaaaaa"
94 : : "aaaaaaaa""aaaaaaaa""aaaaaaaa""aaaaaaaa",
95 : 3473 : (1000000-i)<288?1000000-i:288);
96 : 1 : EVP_DigestFinal_ex (&evp,md,NULL);
97 : 1 : EVP_MD_CTX_cleanup (&evp);
98 : :
99 [ - + ]: 1 : if (memcmp(md,app_b3,sizeof(app_b3)))
100 : 0 : { fflush(stdout);
101 : 0 : fprintf(stderr,"\nTEST 3 of 3 failed.\n");
102 : 0 : return 1;
103 : : }
104 : : else
105 : 1 : fprintf(stdout,"."); fflush(stdout);
106 : :
107 : 1 : fprintf(stdout," passed.\n"); fflush(stdout);
108 : :
109 : 1 : fprintf(stdout,"Testing SHA-224 ");
110 : :
111 : 1 : EVP_Digest ("abc",3,md,NULL,EVP_sha224(),NULL);
112 [ - + ]: 1 : if (memcmp(md,addenum_1,sizeof(addenum_1)))
113 : 0 : { fflush(stdout);
114 : 0 : fprintf(stderr,"\nTEST 1 of 3 failed.\n");
115 : 0 : return 1;
116 : : }
117 : : else
118 : 1 : fprintf(stdout,"."); fflush(stdout);
119 : :
120 : 1 : EVP_Digest ("abcdbcde""cdefdefg""efghfghi""ghijhijk"
121 : : "ijkljklm""klmnlmno""mnopnopq",56,md,NULL,EVP_sha224(),NULL);
122 [ - + ]: 1 : if (memcmp(md,addenum_2,sizeof(addenum_2)))
123 : 0 : { fflush(stdout);
124 : 0 : fprintf(stderr,"\nTEST 2 of 3 failed.\n");
125 : 0 : return 1;
126 : : }
127 : : else
128 : 1 : fprintf(stdout,"."); fflush(stdout);
129 : :
130 : 1 : EVP_MD_CTX_init (&evp);
131 : 1 : EVP_DigestInit_ex (&evp,EVP_sha224(),NULL);
132 [ + + ]: 15626 : for (i=0;i<1000000;i+=64)
133 : 15625 : EVP_DigestUpdate (&evp, "aaaaaaaa""aaaaaaaa""aaaaaaaa""aaaaaaaa"
134 : : "aaaaaaaa""aaaaaaaa""aaaaaaaa""aaaaaaaa",
135 : 15625 : (1000000-i)<64?1000000-i:64);
136 : 1 : EVP_DigestFinal_ex (&evp,md,NULL);
137 : 1 : EVP_MD_CTX_cleanup (&evp);
138 : :
139 [ - + ]: 1 : if (memcmp(md,addenum_3,sizeof(addenum_3)))
140 : 0 : { fflush(stdout);
141 : 0 : fprintf(stderr,"\nTEST 3 of 3 failed.\n");
142 : 0 : return 1;
143 : : }
144 : : else
145 : 1 : fprintf(stdout,"."); fflush(stdout);
146 : :
147 : 1 : fprintf(stdout," passed.\n"); fflush(stdout);
148 : :
149 : 1 : return 0;
150 : : }
151 : : #endif
|