@@ -45,71 +45,96 @@ typedef enum {
4545} hash_algorithm_type ;
4646
4747static unsigned char data [DATA_SIZE ];
48- static int deprecated_api = 0 ;
4948static int update_times = 1 ;
50- static int hash_algorithm = -1 ;
49+ static const EVP_MD * evp_md = NULL ;
50+ static int (* hash_func_deprecated )(void );
5151
52- int hash_deprecated ()
52+ int hash_sha1_deprecated ()
5353{
5454 int i ;
5555 SHA_CTX sha_ctx ;
56- SHA256_CTX sha256_ctx ;
57- SHA512_CTX sha512_ctx ;
5856 unsigned char md [EVP_MAX_MD_SIZE ];
5957
60- switch (hash_algorithm ) {
61- case SHA1_ALG :
62- if (!SHA1_Init (& sha_ctx ))
63- return 0 ;
64- for (i = 0 ; i < update_times ; i ++ )
65- if (!SHA1_Update (& sha_ctx , data , sizeof (data )))
66- return 0 ;
67- if (!SHA1_Final (md , & sha_ctx ))
68- return 0 ;
69- break ;
70- case SHA224_ALG :
71- if (!SHA224_Init (& sha256_ctx ))
72- return 0 ;
73- for (i = 0 ; i < update_times ; i ++ )
74- if (!SHA224_Update (& sha256_ctx , data , sizeof (data )))
75- return 0 ;
76- if (!SHA224_Final (md , & sha256_ctx ))
77- return 0 ;
78- break ;
79- case SHA256_ALG :
80- if (!SHA256_Init (& sha256_ctx ))
81- return 0 ;
82- for (i = 0 ; i < update_times ; i ++ )
83- if (!SHA256_Update (& sha256_ctx , data , sizeof (data )))
84- return 0 ;
85- if (!SHA256_Final (md , & sha256_ctx ))
58+ if (!SHA1_Init (& sha_ctx ))
59+ return 0 ;
60+ for (i = 0 ; i < update_times ; i ++ )
61+ if (!SHA1_Update (& sha_ctx , data , sizeof (data )))
8662 return 0 ;
87- break ;
88- case SHA384_ALG :
89- if (!SHA384_Init (& sha512_ctx ))
63+ if (!SHA1_Final (md , & sha_ctx ))
64+ return 0 ;
65+
66+ return 1 ;
67+ }
68+
69+ int hash_sha224_deprecated ()
70+ {
71+ int i ;
72+ SHA256_CTX sha256_ctx ;
73+ unsigned char md [EVP_MAX_MD_SIZE ];
74+
75+ if (!SHA224_Init (& sha256_ctx ))
76+ return 0 ;
77+ for (i = 0 ; i < update_times ; i ++ )
78+ if (!SHA224_Update (& sha256_ctx , data , sizeof (data )))
9079 return 0 ;
91- for (i = 0 ; i < update_times ; i ++ )
92- if (!SHA384_Update (& sha512_ctx , data , sizeof (data )))
93- return 0 ;
94- if (!SHA384_Final (md , & sha512_ctx ))
80+ if (!SHA224_Final (md , & sha256_ctx ))
81+ return 0 ;
82+
83+ return 1 ;
84+ }
85+
86+ int hash_sha256_deprecated ()
87+ {
88+ int i ;
89+ SHA256_CTX sha256_ctx ;
90+ unsigned char md [EVP_MAX_MD_SIZE ];
91+
92+ if (!SHA256_Init (& sha256_ctx ))
93+ return 0 ;
94+ for (i = 0 ; i < update_times ; i ++ )
95+ if (!SHA256_Update (& sha256_ctx , data , sizeof (data )))
9596 return 0 ;
96- break ;
97- case SHA512_ALG :
98- if (!SHA512_Init (& sha512_ctx ))
97+ if (!SHA256_Final (md , & sha256_ctx ))
98+ return 0 ;
99+
100+ return 1 ;
101+ }
102+
103+ int hash_sha384_deprecated ()
104+ {
105+ int i ;
106+ SHA512_CTX sha512_ctx ;
107+ unsigned char md [EVP_MAX_MD_SIZE ];
108+
109+ if (!SHA384_Init (& sha512_ctx ))
110+ return 0 ;
111+ for (i = 0 ; i < update_times ; i ++ )
112+ if (!SHA384_Update (& sha512_ctx , data , sizeof (data )))
99113 return 0 ;
100- for (i = 0 ; i < update_times ; i ++ )
101- if (!SHA512_Update (& sha512_ctx , data , sizeof (data )))
102- return 0 ;
103- if (!SHA512_Final (md , & sha512_ctx ))
114+ if (!SHA384_Final (md , & sha512_ctx ))
115+ return 0 ;
116+
117+ return 1 ;
118+ }
119+
120+ int hash_sha512_deprecated ()
121+ {
122+ int i ;
123+ SHA512_CTX sha512_ctx ;
124+ unsigned char md [EVP_MAX_MD_SIZE ];
125+
126+ if (!SHA512_Init (& sha512_ctx ))
127+ return 0 ;
128+ for (i = 0 ; i < update_times ; i ++ )
129+ if (!SHA512_Update (& sha512_ctx , data , sizeof (data )))
104130 return 0 ;
105- break ;
106- default :
131+ if (!SHA512_Final (md , & sha512_ctx ))
107132 return 0 ;
108- }
109133
110134 return 1 ;
111135}
112136
137+
113138int hash_evp (EVP_MD_CTX * mctx , const EVP_MD * evp_md )
114139{
115140 int i ;
@@ -128,50 +153,34 @@ int hash_evp(EVP_MD_CTX *mctx, const EVP_MD *evp_md)
128153 return 1 ;
129154}
130155
131- void do_hash (size_t num )
156+ void do_hash_deprecated (size_t num )
132157{
133158 OSSL_TIME time ;
134- EVP_MD_CTX * mctx = NULL ;
135- const EVP_MD * evp_md = NULL ;
136159
137- counts [num ] = 0 ;
138-
139- if (!deprecated_api ) {
140- switch (hash_algorithm ) {
141- case SHA1_ALG :
142- evp_md = EVP_sha1 ();
143- break ;
144- case SHA224_ALG :
145- evp_md = EVP_sha224 ();
146- break ;
147- case SHA256_ALG :
148- evp_md = EVP_sha256 ();
149- break ;
150- case SHA384_ALG :
151- evp_md = EVP_sha384 ();
152- break ;
153- case SHA512_ALG :
154- evp_md = EVP_sha512 ();
155- break ;
156- default :
160+ do {
161+ if (!hash_func_deprecated ()) {
157162 err = 1 ;
158163 return ;
159164 }
160165
161- if ((mctx = EVP_MD_CTX_new ()) == NULL )
162- return ;
163- }
166+ counts [num ]++ ;
167+ time = ossl_time_now ();
168+ } while (time .t < max_time .t );
169+ }
170+
171+ void do_hash_evp (size_t num )
172+ {
173+ OSSL_TIME time ;
174+ EVP_MD_CTX * mctx = EVP_MD_CTX_new ();
175+
176+ if (mctx == NULL )
177+ return ;
164178
165179 do {
166- if (deprecated_api ) {
167- if (!hash_deprecated ())
168- err = 1 ;
169- } else if (!hash_evp (mctx , evp_md )) {
180+ if (!hash_evp (mctx , evp_md )) {
170181 err = 1 ;
171- }
172-
173- if (err )
174182 goto err ;
183+ }
175184
176185 counts [num ]++ ;
177186 time = ossl_time_now ();
@@ -197,7 +206,7 @@ int main(int argc, char *argv[])
197206 OSSL_TIME duration ;
198207 size_t total_count = 0 ;
199208 double av ;
200- int terse = 0 ;
209+ int terse = 0 , deprecated_api = 0 , hash_algorithm = -1 ;
201210 int j , opt , rc = EXIT_FAILURE ;
202211
203212 while ((opt = getopt (argc , argv , "htx" )) != -1 ) {
@@ -258,15 +267,57 @@ int main(int argc, char *argv[])
258267
259268 max_time = ossl_time_add (ossl_time_now (), ossl_seconds2time (RUN_TIME ));
260269
261- counts = OPENSSL_malloc (sizeof (size_t ) * threadcount );
270+ counts = OPENSSL_zalloc (sizeof (size_t ) * threadcount );
262271 if (counts == NULL ) {
263272 fprintf (stderr , "Failed to create counts array\n" );
264273 goto out ;
265274 }
266275
267- if (!perflib_run_multi_thread_test (do_hash , threadcount , & duration )) {
268- fprintf (stderr , "Failed to run the test\n" );
269- goto out ;
276+ if (deprecated_api ) {
277+ switch (hash_algorithm ) {
278+ case SHA1_ALG :
279+ hash_func_deprecated = hash_sha1_deprecated ;
280+ break ;
281+ case SHA224_ALG :
282+ hash_func_deprecated = hash_sha224_deprecated ;
283+ break ;
284+ case SHA256_ALG :
285+ hash_func_deprecated = hash_sha256_deprecated ;
286+ break ;
287+ case SHA384_ALG :
288+ hash_func_deprecated = hash_sha384_deprecated ;
289+ break ;
290+ case SHA512_ALG :
291+ hash_func_deprecated = hash_sha512_deprecated ;
292+ break ;
293+ default :
294+ err = 1 ;
295+ goto out ;
296+ }
297+ err = !perflib_run_multi_thread_test (do_hash_deprecated , threadcount , & duration ) || err ;
298+ } else {
299+ switch (hash_algorithm ) {
300+ case SHA1_ALG :
301+ evp_md = EVP_sha1 ();
302+ break ;
303+ case SHA224_ALG :
304+ evp_md = EVP_sha224 ();
305+ break ;
306+ case SHA256_ALG :
307+ evp_md = EVP_sha256 ();
308+ break ;
309+ case SHA384_ALG :
310+ evp_md = EVP_sha384 ();
311+ break ;
312+ case SHA512_ALG :
313+ evp_md = EVP_sha512 ();
314+ break ;
315+ default :
316+ err = 1 ;
317+ goto out ;
318+ }
319+
320+ err = !perflib_run_multi_thread_test (do_hash_evp , threadcount , & duration ) || err ;
270321 }
271322
272323 if (err ) {
0 commit comments