| OLD | NEW |
| 1 /* Copyright (c) 2010 The Chromium OS Authors. All rights reserved. | 1 /* Copyright (c) 2010 The Chromium OS Authors. All rights reserved. |
| 2 * Use of this source code is governed by a BSD-style license that can be | 2 * Use of this source code is governed by a BSD-style license that can be |
| 3 * found in the LICENSE file. | 3 * found in the LICENSE file. |
| 4 */ | 4 */ |
| 5 | 5 |
| 6 #include <stdio.h> | 6 #include <stdio.h> |
| 7 #include <stdlib.h> | 7 #include <stdlib.h> |
| 8 | 8 |
| 9 #include "sha.h" | 9 #include "sha.h" |
| 10 #include "timer_utils.h" | 10 #include "timer_utils.h" |
| 11 #include "utility.h" | 11 #include "utility.h" |
| 12 | 12 |
| 13 #define NUM_HASH_ALGORITHMS 3 | 13 #define NUM_HASH_ALGORITHMS 3 |
| 14 #define TEST_BUFFER_SIZE 4000000 | 14 #define TEST_BUFFER_SIZE 4000000 |
| 15 | 15 |
| 16 /* Table of hash function pointers and their description. */ | 16 /* Table of hash function pointers and their description. */ |
| 17 typedef uint8_t* (*Hashptr) (const uint8_t*, int, uint8_t*); | 17 typedef uint8_t* (*Hashptr) (const uint8_t*, int, uint8_t*); |
| 18 typedef struct HashFxTable { | 18 typedef struct HashFxTable { |
| 19 Hashptr hash; | 19 Hashptr hash; |
| 20 char* description; | 20 char* description; |
| 21 } HashFxTable; | 21 } HashFxTable; |
| 22 | 22 |
| 23 HashFxTable hash_functions[NUM_HASH_ALGORITHMS] = { | 23 HashFxTable hash_functions[NUM_HASH_ALGORITHMS] = { |
| 24 {SHA1, "SHA1"}, | 24 {SHA1, "sha1"}, |
| 25 {SHA256, "SHA256"}, | 25 {SHA256, "sha256"}, |
| 26 {SHA512, "SHA512"} | 26 {SHA512, "sha512"} |
| 27 }; | 27 }; |
| 28 | 28 |
| 29 int main(int argc, char* argv[]) { | 29 int main(int argc, char* argv[]) { |
| 30 int i; | 30 int i; |
| 31 double speed; | 31 double speed; |
| 32 uint32_t msecs; | 32 uint32_t msecs; |
| 33 uint8_t* buffer = (uint8_t*) Malloc(TEST_BUFFER_SIZE); | 33 uint8_t* buffer = (uint8_t*) Malloc(TEST_BUFFER_SIZE); |
| 34 uint8_t* digest = (uint8_t*) Malloc(SHA512_DIGEST_SIZE); /* Maximum size of | 34 uint8_t* digest = (uint8_t*) Malloc(SHA512_DIGEST_SIZE); /* Maximum size of |
| 35 * the digest. */ | 35 * the digest. */ |
| 36 ClockTimerState ct; | 36 ClockTimerState ct; |
| 37 | 37 |
| 38 /* Iterate through all the hash functions. */ | 38 /* Iterate through all the hash functions. */ |
| 39 for(i = 0; i < NUM_HASH_ALGORITHMS; i++) { | 39 for(i = 0; i < NUM_HASH_ALGORITHMS; i++) { |
| 40 StartTimer(&ct); | 40 StartTimer(&ct); |
| 41 hash_functions[i].hash(buffer, TEST_BUFFER_SIZE, digest); | 41 hash_functions[i].hash(buffer, TEST_BUFFER_SIZE, digest); |
| 42 StopTimer(&ct); | 42 StopTimer(&ct); |
| 43 | 43 |
| 44 msecs = GetDurationMsecs(&ct); | 44 msecs = GetDurationMsecs(&ct); |
| 45 speed = ((TEST_BUFFER_SIZE / 10e6) | 45 speed = ((TEST_BUFFER_SIZE / 10e6) |
| 46 / (msecs / 10e3)); /* Mbytes/sec */ | 46 / (msecs / 10e3)); /* Mbytes/sec */ |
| 47 | 47 |
| 48 fprintf(stderr, "# %s Time taken = %u ms, Speed = %f Mbytes/sec\n", | 48 fprintf(stderr, "# %s Time taken = %u ms, Speed = %f Mbytes/sec\n", |
| 49 hash_functions[i].description, msecs, speed); | 49 hash_functions[i].description, msecs, speed); |
| 50 fprintf(stdout, "%s:%f\n", | 50 fprintf(stdout, "mbytes_per_sec_%s:%f\n", |
| 51 hash_functions[i].description, speed); | 51 hash_functions[i].description, speed); |
| 52 } | 52 } |
| 53 | 53 |
| 54 Free(digest); | 54 Free(digest); |
| 55 Free(buffer); | 55 Free(buffer); |
| 56 return 0; | 56 return 0; |
| 57 } | 57 } |
| OLD | NEW |