diff options
Diffstat (limited to 'recipes-kernel/cryptodev/sdk_patches/0038-extend-sha_speed.c-to-test-CIOCHASH.patch')
-rw-r--r-- | recipes-kernel/cryptodev/sdk_patches/0038-extend-sha_speed.c-to-test-CIOCHASH.patch | 143 |
1 files changed, 143 insertions, 0 deletions
diff --git a/recipes-kernel/cryptodev/sdk_patches/0038-extend-sha_speed.c-to-test-CIOCHASH.patch b/recipes-kernel/cryptodev/sdk_patches/0038-extend-sha_speed.c-to-test-CIOCHASH.patch new file mode 100644 index 0000000..eb8bf19 --- /dev/null +++ b/recipes-kernel/cryptodev/sdk_patches/0038-extend-sha_speed.c-to-test-CIOCHASH.patch @@ -0,0 +1,143 @@ +From 65704ea24e80647e8c5f938300f51cb70af50c1c Mon Sep 17 00:00:00 2001 +From: Cristian Stoica <cristian.stoica@nxp.com> +Date: Thu, 21 Jan 2016 17:30:59 +0200 +Subject: [PATCH 38/38] extend sha_speed.c to test CIOCHASH + +Signed-off-by: Cristian Stoica <cristian.stoica@nxp.com> +--- + tests/sha_speed.c | 90 +++++++++++++++++++++++++++++++++++++++++++++++++++++++ + 1 file changed, 90 insertions(+) + +diff --git a/tests/sha_speed.c b/tests/sha_speed.c +index 5f694bd..d731c66 100644 +--- a/tests/sha_speed.c ++++ b/tests/sha_speed.c +@@ -133,6 +133,62 @@ int hash_data(struct session_op *sess, int fdc, int chunksize, int alignmask) + return 0; + } + ++int digest_data(struct session_op *sess, int fdc, int chunksize, int alignmask) ++{ ++ struct hash_op_data hash_op; ++ char *buffer; ++ static int val = 23; ++ struct timeval start, end; ++ double total = 0; ++ double secs, ddata, dspeed; ++ char metric[16]; ++ uint8_t mac[AALG_MAX_RESULT_LEN]; ++ ++ if (alignmask) { ++ if (posix_memalign((void **)&buffer, alignmask + 1, chunksize)) { ++ printf("posix_memalign() failed!\n"); ++ return 1; ++ } ++ } else { ++ if (!(buffer = malloc(chunksize))) { ++ perror("malloc()"); ++ return 1; ++ } ++ } ++ ++ printf("\tEncrypting in chunks of %d bytes: ", chunksize); ++ fflush(stdout); ++ ++ memset(buffer, val++, chunksize); ++ ++ must_finish = 0; ++ alarm(BUFFER_TEST_TIME); ++ ++ gettimeofday(&start, NULL); ++ do { ++ memset(&hash_op, 0, sizeof(hash_op)); ++ hash_op.mac_op = sess->mac; ++ hash_op.len = chunksize; ++ hash_op.src = (unsigned char *)buffer; ++ hash_op.mac_result = mac; ++ ++ if (ioctl(fdc, CIOCHASH, hash_op) != 0) { ++ perror("ioctl(CIOCHASH)"); ++ return 1; ++ } ++ total += chunksize; ++ } while(must_finish == 0); ++ gettimeofday(&end, NULL); ++ ++ secs = udifftimeval(start, end)/ 1000000.0; ++ ++ value2human(1, total, secs, &ddata, &dspeed, metric); ++ printf ("done. %.2f %s in %.2f secs: ", ddata, metric, secs); ++ printf ("%.2f %s/sec\n", dspeed, metric); ++ ++ free(buffer); ++ return 0; ++} + + #ifdef CIOCGSESSINFO + int get_alignmask(struct session_op *sess, int fdc) +@@ -154,6 +210,20 @@ int get_alignmask(struct session_op *sess, int fdc) + #endif + + ++int ciochash_session(struct session_op *sess, int fdc) ++{ ++ int i; ++ int err = 0; ++ ++ err = 0; ++ for(i = 0; (err == 0) && (buffer_lengths[i] != 0); i++) { ++ err = digest_data(sess, fdc, buffer_lengths[i], 0); ++ } ++ ++ return err; ++} ++ ++ + int hash_session(struct session_op *sess, int fdc) + { + int i; +@@ -193,6 +263,15 @@ int test_sha1(struct session_op *sess, int fdc) + } + + ++int test_sha1_ciochash(struct session_op *sess, int fdc) ++{ ++ fprintf(stderr, "Testing SHA1 CIOCHASH: \n"); ++ memset(sess, 0, sizeof(sess)); ++ sess->mac = CRYPTO_SHA1; ++ return ciochash_session(sess, fdc); ++} ++ ++ + int test_sha256(struct session_op *sess, int fdc) + { + fprintf(stderr, "Testing SHA256 Hash: \n"); +@@ -202,6 +281,15 @@ int test_sha256(struct session_op *sess, int fdc) + } + + ++int test_sha256_ciochash(struct session_op *sess, int fdc) ++{ ++ fprintf(stderr, "Testing SHA256 CIOCHASH: \n"); ++ memset(sess, 0, sizeof(sess)); ++ sess->mac = CRYPTO_SHA2_256; ++ return ciochash_session(sess, fdc); ++} ++ ++ + int main(void) + { + int fd; +@@ -227,7 +315,9 @@ int main(void) + + /* run all tests but return an eventual error */ + err |= test_sha1(&sess, fdc); ++ err |= test_sha1_ciochash(&sess, fdc); + err |= test_sha256(&sess, fdc); ++ err |= test_sha256_ciochash(&sess, fdc); + + close(fdc); + close(fd); +-- +2.7.0 + |